Ciao a tutti. Ho bisogno di aiuto con il codice incollato di seguito. ?? un semplice cross alert medio mobile che ho modifio leggermente e aggiunto un avviso via email. Non sono sicuro che l'avviso email funzionerà man mano che continuo a ricevere 1 errore durante la compilazione. Ho incollato il codice qui sotto
Ho passato il codice più volte e non riesco a individuare il problema. Grazie in anticipo per tutto il tuo aiuto.
L'errore dice ... '\ end_of_program' - parentesi sinistra sbilanciata
// ----------------------------------------------- -------------------
//| MACrossEarlyAlert.mq4 |
//| Mariano Silva |
//| |
// ----------------------------------------------- -------------------
#proprietà copyright Mariano Silva
link #property
#property indior_chart_window
//---- parametri di input
extern bool EmailAlert = falso;
extern int FastMAPeriod = 50;
stringa esterna Tipo = 0-SMA, 1-EMA;
extern int FastMAType = 1;
extern int SlowMAPeriod = 1;
extern int SlowMAType = 0;
extern int EarlyPips = 15;
extern int ResetAlert = 20;
colore extern LineColor = Arancione;
// ----------------------------------------------- -------------------
//| Funzione di inizializzazione dell'indiore personalizzato |
// ----------------------------------------------- -------------------
int init ()
{
//---- indiori
//----
ritorno (0);
}
// ----------------------------------------------- -------------------
//| Funzione di deinitializzazione dell'indiore personalizzato |
// ----------------------------------------------- -------------------
int deinit ()
{
stringa LineName;
//----
LineName = StringConenate (FastMAPeriod,, SlowMAPeriod, MA Cross);
ObjectDelete (LineName);
//----
ritorno (0);
}
// ----------------------------------------------- -------------------
//| Funzione di iterazione dell'indiore personalizzato |
// ----------------------------------------------- -------------------
int start ()
{
//int counted_bars = IndiorCounted ();
doppio FastMALastBar, SlowMALastBar, PriceToCross, Cross, FastMATest, SlowMATest;
bool AlertEnabled = true;
string LineName = StringConenate (FastMAPeriod,, SlowMAPeriod, MA Cross);
//LineName = StringConenate (FastMAPeriod,, SlowMAPeriod, MA Cross);
//----
if (NewBar ())
{
FastMALastBar = iMA (NULL, 0, FastMAPeriod, 0, FastMAType, PRICE_CLOSE, 1);
SlowMALastBar = iMA (NULL, 0, SlowMAPeriod, 0, SlowMAType, PRICE_CLOSE, 1);
PriceToCross = aperto [0];
Croce = FastMALastBar-SlowMALastBar;
if (Crossgt; 0.0)
{
mentre (Crossgt; 0.0)
{
PriceToCross = PriceToCross-Point;
FastMATest = CalcMA (FastMAPeriod, FastMAType, PriceToCross, FastMALastBar);
SlowMATest = CalcMA (SlowMAPeriod, SlowMAType, PriceToCross, SlowMALastBar);
Croce = FastMATest-SlowMATest;
}
}
altro
{
mentre (Crosslt; 0.0)
{
PriceToCross = PriceToCross Point;
FastMATest = CalcMA (FastMAPeriod, FastMAType, PriceToCross, FastMALastBar);
SlowMATest = CalcMA (SlowMAPeriod, SlowMAType, PriceToCross, SlowMALastBar);
Croce = FastMATest-SlowMATest;
}
}
ObjectDelete (LineName);
drawLine (PriceToCross, LineName, LineColor, 0);
}
if (AlertEnabled)
{
if (MathAbs (Chiudi [0] -PriceToCross) lt; = EarlyPips * Point)
{
Avviso (vicino a, FastMAPeriod,, SlowMAPeriod, MA Cross on, Symbol (),, Period ());
se EmailAlert SendMail (Close to, FastMAPeriod,, SlowMAPeriod, MA Cross on, Symbol (),, Period ();
AlertEnabled = false;
}
}
altro
{
if (MathAbs (Chiudi [0] -PriceToCross) gt; = ResetAlert * Point)
{
AlertEnabled = true;
}
}
//----
ritorno (0);
}
// ----------------------------------------------- -------------------
doppio CalcMA (int MAPeriod, int MAType, double PriceTest, double LastMA)
{
doppio MA, pr;
Interruttore (MAType)
{
caso 0:
{
MA = ((* LASTMA MAPeriod) -Vicino [MAPeriod] PriceTest)MAPeriod;
rompere;
}
caso 1:
{
pr = 2.0(MAPeriod 1);
MA = PriceTest * pr LASTMA * (1-pr);
rompere;
}
}
ritorno (MA);
}
void drawLine (double lvl, nome stringa, col colore, tipo int)
{
ObjectCreate (name, OBJ_HLINE, 0, Time [0], lvl);/, Time [0], lvl);
se (tipo == 1)
ObjectSet (nome, OBJPROP_STYLE, STYLE_SOLID);
altro
ObjectSet (nome, OBJPROP_STYLE, STYLE_DOT);
ObjectSet (name, OBJPROP_COLOR, Col);
ObjectSet (nome, OBJPROP_WIDTH, 1);
ritorno;
}
bool NewBar () {
statetime datetime lastbar;
datetime curbar = Tempo [0];
if (lastbar! = Curbar)
{
lastbar = Curbar;
return (true);
}
altro {
tornare (false);
}
}