Hallo zusammen. Ich brauche Hilfe mit dem unten eingefügten Code. Es ist ein einfacher Cross-Alert mit beweglichem Durchschnitt, den ich ein wenig optimiert und eine E-Mail-Benachrichtigung hinzugefügt habe. Ich bin mir nicht sicher, ob die E-Mail-Benachrichtigung funktioniert, da ich beim Kompilieren immer einen Fehler erhalte. Ich habe den folgenden Code eingefügt
Ich habe den Code mehrmals durchgegangen und kann das Problem nicht genau lokalisieren. Vielen Dank im Voraus für Ihre Hilfe.
Der Fehler sagt ... '\ end_of_program' - unsymmetrische linke Klammer
// ----------------------------------------------- -------------------
//| MACrossEarlyAlert.mq4 |
//| Mariano Silva |
//| |
// ----------------------------------------------- -------------------
#eigenschaft copyright Mariano Silva
#Eigenschaftslink
#property indior_chart_window
//---- Eingabeparameter
extern bool EmailAlert = false;
extern int FastMAPeriod = 50;
externer String Typ = 0-SMA, 1-EMA;
extern int FastMAType = 1;
extern int SlowMAPeriod = 1;
extern int SlowMAType = 0;
extern int EarlyPips = 15;
extern int ResetAlert = 20;
Externe Farbe LineColor = Orange;
// ----------------------------------------------- -------------------
//| Benutzerdefinierte Indikatorinitialisierungsfunktion |
// ----------------------------------------------- -------------------
int init ()
{
//---- Indikatoren
//----
Rückkehr (0);
}
// ----------------------------------------------- -------------------
//| Benutzerdefinierte Indikator Deinitialisierungsfunktion |
// ----------------------------------------------- -------------------
int deinit ()
{
Zeichenfolge Leitungsname;
//----
LineName = StringConenate (FastMAPeriod,, SlowMAPeriod, MA Cross);
ObjectDelete (LinienName);
//----
Rückkehr (0);
}
// ----------------------------------------------- -------------------
//| Benutzerdefinierte Indikatoriterationsfunktion |
// ----------------------------------------------- -------------------
int start ()
{
//int gezählte_leisten = IndiorCounted ();
Double FastMALastBar, SlowMALastBar, PriceToCross, Cross, FastMATest, SlowMATest;
bool AlertEnabled = Wahr;
Zeichenfolge LineName = StringConenate (FastMAPeriod,, SlowMAPeriod, MA Cross);
//LineName = StringConenate (FastMAPeriod,, SlowMAPeriod, MA-Kreuz);
//----
if (NewBar ())
{
FastMALastBar = iMA (NULL, 0, FastMAPeriod, 0, FastMAType, PRICE_CLOSE, 1);
SlowMALastBar = iMA (NULL, 0, SlowMAPeriod, 0, SlowMAType, PRICE_CLOSE, 1);
PriceToCross = Öffnen [0];
Cross = FastMALastBar-SlowMALastBar;
if (Kreuzgt; 0.0)
{
während (Crossgt; 0.0)
{
PriceToCross = PriceToCross-Point;
FastMATest = CalcMA (FastMAPeriod, FastMAType, PriceToCross, FastMALastBar);
SlowMATest = CalcMA (SlowMAPeriod, SlowMAType, PriceToCross, SlowMALastBar);
Cross = FastMATest-SlowMATest;
}
}
sonst
{
während (Crosslt; 0.0)
{
PriceToCross = PriceToCross Point;
FastMATest = CalcMA (FastMAPeriod, FastMAType, PriceToCross, FastMALastBar);
SlowMATest = CalcMA (SlowMAPeriod, SlowMAType, PriceToCross, SlowMALastBar);
Cross = FastMATest-SlowMATest;
}
}
ObjectDelete (LinienName);
Zeichnungslinie (PriceToCross, LineName, LineColor, 0);
}
if (AlertEnabled)
{
if (MatheAbs (Close [0] -PriceToCross) lt; = EarlyPips * Point)
{
Alert (in der Nähe von FastMAPeriod,, SlowMAPeriod, MA Cross on, Symbol (),, Periode ());
wenn EmailAlert SendMail (Fast, FastMAPeriod,, SlowMAPeriod, MA Cross on, Symbol (),, Period ();
AlertEnabled = false;
}
}
sonst
{
if (MatheAbs (Close [0] -PriceToCross) gt; = ResetAlert * Point)
{
AlertEnabled = Wahr;
}
}
//----
Rückkehr (0);
}
// ----------------------------------------------- -------------------
Doppel-CalcMA (int MAPeriod, int MAType, doppelter PriceTest, double LastMA)
{
Doppel MA, pr;
wechseln (MAType)
{
Fall 0:
{
MA = ((LastMA * MAPeriod) -Schliessen [MAPeriod] PriceTest)MAPeriod;
Unterbrechung;
}
Fall 1:
{
pr = 2,0(MAPeriode 1);
MA = Preisfest * pr LastMA * (1-pr);
Unterbrechung;
}
}
Rückkehr (MA);
}
void drawLine (double lvl, Stringname, Farbe Col, int type)
{
ObjectCreate (Name, OBJ_HLINE, 0, Zeit [0], lvl);/, Zeit [0], lvl);
if (Typ == 1)
ObjectSet (Name, OBJPROP_STYLE, STYLE_SOLID);
sonst
ObjectSet (Name, OBJPROP_STYLE, STYLE_DOT);
ObjectSet (Name, OBJPROP_COLOR, Col);
ObjectSet (Name, OBJPROP_WIDTH, 1);
Rückkehr;
}
bool NewBar () {
statische Datetime-Lastleiste;
datetime curbar = Zeit [0];
if (lastbar! = curbar)
{
lastbar = Curbar;
zurück (wahr);
}
sonst {
falsch zurückgeben);
}
}