
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
Variabile Dema impostata in modo errato
Non riesco a impostare correttamente la sezione delle variabili DEMA, le sue sintassi. I codici DEMA1, DEMA2, DEMA3 sono corretti.
Per favore aiutatemi a correggere la sezione delle variabili DEMA.
se (TradeOrAlert) {
se (DEMA1)>(DEMA2) {CLOSESHORT(Symbol()) ;}
if (DEMA1)<(DEMA2) {CLOSELONG(Symbol()) ;}
if ((DEMA1)>(DEMA2)) && ((DEMA2)>(DEMA3)) {BUY(Symbol(), B_Symbol_LS_0, B_Symbol_TP_0, B_Symbol_SL_0, B_Symbol_TS_0, "if ((DEMA1)>(DEMA2)) && ((DEMA2)>(DEMA3))";}
if ((DEMA1)<(DEMA2)) && ((DEMA2)<(DEMA3)) {SELL(Symbol(), S_Symbol_LS_0, S_Symbol_TP_0, S_Symbol_SL_0, S_Symbol_TS_0, "if ((DEMA1)<(DEMA2)) && ((DEMA2)<(DEMA3))";}
CheckTrailingStop(Symbol(), 0, MagicNumberLong, B_Symbol_TS_0);
CheckTrailingStop(Symbol(), 1, MagicNumberShort, S_Symbol_TS_0);
} else {
if (DEMA1)>(DEMA2) {MyAlert("if (DEMA1)>(DEMA2)", "CLOSESHORT(Symbol(),0.1,100,15,17)", Symbol());}
se (DEMA1)<(DEMA2) {MyAlert("if (DEMA1)<(DEMA2)", "CLOSELONG(Symbol(),0.1,100,15,17)", Symbol());}
se ((DEMA1)>(DEMA2)) && ((DEMA2)>(DEMA3)) {MyAlert("if ((DEMA1)>(DEMA2)) && ((DEMA2)>(DEMA3))", "BUY(Symbol(),0.1,100,15,17)", Symbol();}
if ((DEMA1)<(DEMA2)) && ((DEMA2)<(DEMA3)) {MyAlert("if ((DEMA1)<(DEMA2)) && ((DEMA2)<(DEMA3))", "SELL(Symbol(),0.1,100,15,17)", Symbol();}
}
g_bars_276 = Bars;
return (0);
}
//----DEMA VARIABILI----Non è impostato correttamente, serve aiuto-----
int init() {
double DEMA1 = (iMA(NULL,NULL,4,0,MODE_EMA,PRICE_CLOSE,0))*2 - (iMA(NULL,NULL,4,0,MODE_EMA,iMA(NULL,NULL,4,0,MODE_EMA,PRICE_CLOSE,0),0));
return(DEMA1);
}
int start() {
double DEMA2 = (iMA(NULL,NULL,6,0,MODE_EMA,PRICE_CLOSE,0))*2 - (iMA(NULL,NULL,6,0,MODE_EMA,iMA(NULL,NULL,6,0,MODE_EMA,PRICE_CLOSE,0),0));
return(DEMA2);
}
int start() {
double DEMA3 = (iMA(NULL,NULL,12,0,MODE_EMA,PRICE_CLOSE,0))*2 - (iMA(NULL,NULL,12,0,MODE_EMA,iMA(NULL,NULL,12,0,MODE_EMA,PRICE_CLOSE,0),0));
return(DEMA3);
}
//
Variabile Dema impostata in modo errato
Sto affrontando il problema di impostare correttamente le sintassi nella sezione "DEMA VARIABLES" del codice sottostante.
Inoltre dite cosa includere dopo la sezione "#include " per quanto riguarda le variabili Dema.
Ottengo gli errori
'DEMA1' - variabile non definita.
DEMA2' - variabile non definita.
DEMA3' - variabile non definita.
Per favore aiutatemi.
se (TradeOrAlert) {
se (DEMA1)>(DEMA2) {CLOSESHORT(Symbol()) ;}
if (DEMA1)<(DEMA2) {CLOSELONG(Symbol()) ;}
if ((DEMA1)>(DEMA2)) && ((DEMA2)>(DEMA3)) {BUY(Symbol(), B_Symbol_LS_0, B_Symbol_TP_0, B_Symbol_SL_0, B_Symbol_TS_0, "if ((DEMA1)>(DEMA2)) && ((DEMA2)>(DEMA3))";}
if ((DEMA1)<(DEMA2)) && ((DEMA2)<(DEMA3)) {SELL(Symbol(), S_Symbol_LS_0, S_Symbol_TP_0, S_Symbol_SL_0, S_Symbol_TS_0, "if ((DEMA1)<(DEMA2)) && ((DEMA2)<(DEMA3))";}
CheckTrailingStop(Symbol(), 0, MagicNumberLong, B_Symbol_TS_0);
CheckTrailingStop(Symbol(), 1, MagicNumberShort, S_Symbol_TS_0);
} else {
if (DEMA1)>(DEMA2) {MyAlert("if (DEMA1)>(DEMA2)", "CLOSESHORT(Symbol(),0.1,100,15,17)", Symbol());}
se (DEMA1)<(DEMA2) {MyAlert("if (DEMA1)<(DEMA2)", "CLOSELONG(Symbol(),0.1,100,15,17)", Symbol());}
se ((DEMA1)>(DEMA2)) && ((DEMA2)>(DEMA3)) {MyAlert("if ((DEMA1)>(DEMA2)) && ((DEMA2)>(DEMA3))", "BUY(Symbol(),0.1,100,15,17)", Symbol();}
if ((DEMA1)<(DEMA2)) && ((DEMA2)<(DEMA3)) {MyAlert("if ((DEMA1)<(DEMA2)) && ((DEMA2)<(DEMA3))", "SELL(Symbol(),0.1,100,15,17)", Symbol();}
}
g_bars_276 = Bars;
return (0);
}
//----DEMA VARIABILI----Non è impostato correttamente, serve aiuto-----
int start() {
double DEMA1 = (iMA(NULL,NULL,4,0,MODE_EMA,PRICE_CLOSE,0))*2 - (iMA(NULL,NULL,4,0,MODE_EMA,iMA(NULL,NULL,4,0,MODE_EMA,PRICE_CLOSE,0),0));
return(DEMA1);
}
int start() {
double DEMA2 = (iMA(NULL,NULL,6,0,MODE_EMA,PRICE_CLOSE,0))*2 - (iMA(NULL,NULL,6,0,MODE_EMA,iMA(NULL,NULL,6,0,MODE_EMA,PRICE_CLOSE,0),0));
return(DEMA2);
}
int start() {
double DEMA3 = (iMA(NULL,NULL,12,0,MODE_EMA,PRICE_CLOSE,0))*2 - (iMA(NULL,NULL,12,0,MODE_EMA,iMA(NULL,NULL,12,0,MODE_EMA,PRICE_CLOSE,0),0));
return(DEMA3);
}
//
Allarme MA+Stoch...per favore
potete aiutarmi a costruire un indicatore: MA+stoch con allarme
stoch(5,3,3);MA(8);MA(15);MA(30)....
allarme quando MA(8)>MA(15)>MA(30) e %K incrocia sopra %D ma meno del livello 50
allarme quando MA(8)<MA(15)<MA(30) e %D incrocia sopra %K ma più del livello 50
grazie mille
il mio inglese è una lingua straniera
simpaticamente!
potete aiutarmi a costruire un indicatore: MA+stoch con allarme
stoch(5,3,3);MA(8);MA(15);MA(30)....
allarme quando MA(8)>MA(15)>MA(30) e %K incrocia sopra %D ma meno del livello 50
allarme quando MA(8)<MA(15)<MA(30) e %D incrocia sopra %K ma più del livello 50
grazie mille
il mio inglese è una lingua straniera
simpaticamente!Ciao,
il codice è tratto da uno dei miei indici, devi adattarlo alle tue esigenze:
extern bool AlertON=false;
extern bool EmailON=true;
extern bool SoundON=falso;
extern bool VoiceON=falso;
extern bool SMSON=falso;
extern string ExtSoundFileName = "";//richiesto il file audio esterno, poi cancellarlo
FastMA = fastMAnow;
SlowMA = slowMAnow;
if ((fastMAnow >= slowMAnow) && (fastMAprevious < slowMAprevious))
{
if (i == 1 && flagval1==0)
{
flagval1=1;
flagval2=0;
if (AlertON==true) Alert("BUY signal at Ask=",Ask,"\n Bid=",Bid,"\n Time=",TimeToStr(CurTime(),TIME_DATE)," ",TimeHour(CurTime()),":",TimeMinute(CurTime()),"\n Symbol=",Symbol()," Period=",Period();
if (EmailON==true) SendMail("2754 BUY-ALP EUR", "segnale BUY a Ask="+DoubleToStr(Ask,4)+", Bid="+DoubleToStr(Bid,4)+", Date="+TimeToStr(CurTime(),TIME_DATE)+""+TimeHour(CurTime())+":"+TimeMinute(CurTime())+" Symbol="+Symbol()+" Period="+Period());
if (SMSON==true) SendMail("2754 BUY-ALP EUR", "segnale BUY a Ask="+DoubleToStr(Ask,4)+", Bid="+DoubleToStr(Bid,4)+", Date="+TimeToStr(CurTime(),TIME_DATE)+""+TimeHour(CurTime())+":"+TimeMinute(CurTime())+" Symbol="+Symbol()+" Period="+Period());
se (SoundON==true) PlaySound(ExtSoundFileName);//peep etc
if (VoiceON==true) PlaySound(ExtSoundFileName);// il proprio wav vocale
}
CrossUp = Low - Range*0.5;
}
else if ((fastMAnow slowMAprevious))
{
if (i == 1 && flagval2==0)
{
flagval2=1;
flagval1=0;
if (AlertON==true) Alert("SELL signal at Ask=",Ask,"\n Bid=",Bid,"\n Date=",TimeToStr(CurTime(),TIME_DATE)," ",TimeHour(CurTime()),":",TimeMinute(CurTime()),"\n Symbol=",Symbol()," Period=",Period();
if (EmailON==true) SendMail("2754 SELL-ALP EUR", "Segnale SELL a Ask="+DoubleToStr(Ask,4)+", Bid="+DoubleToStr(Bid,4)+", Date="+TimeToStr(CurTime(),TIME_DATE)+""+TimeHour(CurTime())+":"+TimeMinute(CurTime())+" Symbol="+Symbol()+" Period="+Period());
if (SMSON==true) SendMail("2754 SELL-ALP EUR", "Segnale SELL a Ask="+DoubleToStr(Ask,4)+", Bid="+DoubleToStr(Bid,4)+", Date="+TimeToStr(CurTime(),TIME_DATE)+""+TimeHour(CurTime())+":"+TimeMinute(CurTime())+" Symbol="+Symbol()+" Period="+Period());
if (SoundON==true) PlaySound(ExtSoundFileName);//peeps etc
if (VoiceON==true) PlaySound(ExtSoundFileName);// il proprio wav vocale
}
CrossDown = High + Range*0.5;
}
}
return(0);
}
Allarme MA+Stoch...per favore
Ciao,
snippet di codice da uno dei miei indis, dovete adattarlo alle vostre esigenze:
extern bool AlertON=false;
extern bool EmailON=true;
extern bool SoundON=false;
extern bool VoiceON=falso;
extern bool SMSON=falso;
extern string ExtSoundFileName = "";//richiesto il file audio esterno, poi cancellarlo
FastMA = fastMAnow;
SlowMA = slowMAnow;
if ((fastMAnow >= slowMAnow) && (fastMAprevious < slowMAprevious))
{
if (i == 1 && flagval1==0)
{
flagval1=1;
flagval2=0;
if (AlertON==true) Alert("BUY signal at Ask=",Ask,"\n Bid=",Bid,"\n Time=",TimeToStr(CurTime(),TIME_DATE)," ",TimeHour(CurTime()),":",TimeMinute(CurTime()),"\n Symbol=",Symbol()," Period=",Period();
if (EmailON==true) SendMail("2754 BUY-ALP EUR", "segnale BUY a Ask="+DoubleToStr(Ask,4)+", Bid="+DoubleToStr(Bid,4)+", Date="+TimeToStr(CurTime(),TIME_DATE)+""+TimeHour(CurTime())+":"+TimeMinute(CurTime())+" Symbol="+Symbol()+" Period="+Period());
if (SMSON==true) SendMail("2754 BUY-ALP EUR", "segnale BUY a Ask="+DoubleToStr(Ask,4)+", Bid="+DoubleToStr(Bid,4)+", Date="+TimeToStr(CurTime(),TIME_DATE)+""+TimeHour(CurTime())+":"+TimeMinute(CurTime())+" Symbol="+Symbol()+" Period="+Period());
se (SoundON==true) PlaySound(ExtSoundFileName);//peep etc
if (VoiceON==true) PlaySound(ExtSoundFileName);// il proprio wav vocale
}
CrossUp = Low - Range*0.5;
}
else if ((fastMAnow slowMAprevious))
{
if (i == 1 && flagval2==0)
{
flagval2=1;
flagval1=0;
if (AlertON==true) Alert("SELL signal at Ask=",Ask,"\n Bid=",Bid,"\n Date=",TimeToStr(CurTime(),TIME_DATE)," ",TimeHour(CurTime()),":",TimeMinute(CurTime()),"\n Symbol=",Symbol()," Period=",Period();
if (EmailON==true) SendMail("2754 SELL-ALP EUR", "Segnale SELL a Ask="+DoubleToStr(Ask,4)+", Bid="+DoubleToStr(Bid,4)+", Date="+TimeToStr(CurTime(),TIME_DATE)+""+TimeHour(CurTime())+":"+TimeMinute(CurTime())+" Symbol="+Symbol()+" Period="+Period());
if (SMSON==true) SendMail("2754 SELL-ALP EUR", "Segnale SELL a Ask="+DoubleToStr(Ask,4)+", Bid="+DoubleToStr(Bid,4)+", Date="+TimeToStr(CurTime(),TIME_DATE)+""+TimeHour(CurTime())+":"+TimeMinute(CurTime())+" Symbol="+Symbol()+" Period="+Period());
if (SoundON==true) PlaySound(ExtSoundFileName);//peeps etc
if (VoiceON==true) PlaySound(ExtSoundFileName);// il proprio wav vocale
}
CrossDown = High + Range*0.5;
}
}
return(0);
}Grazie mille...ixbone
Scrivo il codice molto male...Quindi, non riesco a capire il tuo codice.... puoi aiutarmi a costruire l'indicatore(.mq4) per usarlo
se è così, ti ringrazio molto
ti auguro una buona giornata di lavoro!
Come faccio a controllare se la barra attuale è più alta di 2 pip rispetto alla barra precedente?
Scusa, posto sbagliato per questa domanda.
Si prega di cancellare questo admin.
Grazie!
Chiusura parziale di un ordine
Salve,
Sto cercando di codificare un EA che prenderà profitti a due livelli. Per fare ciò voglio dividere l'ordine originale in modo che "x" lotti siano tolti al primo obiettivo di profitto e i lotti rimanenti siano tolti al secondo obiettivo di profitto. Per fare questo sto usando due funzioni OrderClose().
La prima funzione OrderClose() funziona perfettamente ma sembra anche chiudere l'ordine esistente e generare un nuovo ticket per i lotti rimanenti.
Qualcuno potrebbe darmi qualche indicazione su come gestire questo "nuovo" ticket/ordine in modo che possa essere elaborato dalla seconda funzione CloseOrder()?
Saluti
Jim
Ciao,
Sto cercando di codificare un EA che prenderà profitti a due livelli. Per fare ciò voglio dividere l'ordine originale in modo che "x" lotti siano tolti al primo obiettivo di profitto e i lotti rimanenti siano tolti al secondo obiettivo di profitto. Per fare questo sto usando due funzioni OrderClose().
La prima funzione OrderClose() funziona perfettamente ma sembra anche chiudere l'ordine esistente e generare un nuovo ticket per i lotti rimanenti.
Qualcuno potrebbe darmi qualche indicazione su come gestire questo "nuovo" ticket/ordine in modo che possa essere elaborato dalla seconda funzione CloseOrder()?
Saluti
JimSolo un'idea. Puoi provare a usare due trade invece di uno se la chiusura parziale per profitto è più difficile da ottenere. E gestire questi trade in base al loro tempo di apertura.
Ciao,
Sto cercando di codificare un EA che prenderà i profitti a due livelli. Per fare ciò voglio dividere l'ordine originale in modo che "x" lotti siano tolti al primo obiettivo di profitto e i lotti rimanenti siano tolti al secondo obiettivo di profitto. Per fare questo sto usando due funzioni OrderClose().
La prima funzione OrderClose() funziona perfettamente ma sembra anche chiudere l'ordine esistente e generare un nuovo ticket per i lotti rimanenti.
Qualcuno potrebbe darmi qualche indicazione su come gestire questo "nuovo" ticket/ordine in modo che possa essere elaborato dalla seconda funzione CloseOrder()?
Saluti
JimLe persone hanno riferimenti diversi, a me piace usare la chiusura parziale perché ci sono meno scambi da gestire per il broker.
Ogni volta che la chiusura parziale ha luogo, il broker agirà come se l'ordine rimanente fosse un nuovo ordine, quindi assegnerà un nuovo ticket. Ma non ha molta importanza, a patto che il tuo prossimo passo il metodo per identificare le operazioni non sia basato sul ticket d'ordine, può essere basato sui lotti dell'ordine, o puoi assegnare una variabile per indicare all'EA in quale fase si trova.
La chiusura parziale è un po' difficile da gestire in modo completamente corretto se esiste la seguente situazione:
1. I vostri ordini possono avere lotti diversi a causa di MM.
2. Hai più ordini esistenti allo stesso tempo di diverse dimensioni del lotto.
Se il tuo EA ha le situazioni di cui sopra e se non sei esperto di codifica, penso che tu possa usare l'approccio dell'ordine multiplo.
Una soluzione rapida per un problema semplice. Grazie : )
Vorrei restituire le seguenti variabili:
1. Il prezzo di apertura della prima barra dell'ultimo lunedì registrato (Hour Bar).
2. Il prezzo di chiusura dell'ultima barra dell'ultimo mercoledì registrato (barra oraria).
Qualcuno sa come farlo? Ho provato ad ottenere le variabili come passano con :
//-------------------------------------------------------
if (currentday == 1 && currenttime == 0)
{
MondayOpenPrice = iOpen(Symbol(),PERIOD_H1,0);
}
//--------------------------------------------------------
Il problema con quanto sopra è che non posso sempre tenere il mio metatrader in funzione per tutta la settimana per mantenere queste variabili.
Quindi ho bisogno che l'EA guardi indietro nella storia per il primo prezzo aperto registrato il lunedì, ecc.
Grazie mille per il vostro tempo.