qualcuno può aiutarmi a mettere a punto un EA per favore
può fare meglio - tutto quello che vedo è comprare e vendere nei posti sbagliati
Vuoi spiegare la tua strategia? Dobbiamo controllare se è codificata secondo la strategia dichiarata prima di poterla mettere a punto.
Se i codici sono corretti e stiamo ottenendo trade scadenti dall'EA, allora la strategia è in difetto? La strategia funziona bene dal trading manuale?
Vuoi spiegare la tua strategia? Dobbiamo controllare se è codificata secondo la strategia dichiarata prima di poterla mettere a punto.
Se i codici sono corretti e stiamo ottenendo trade scadenti dall'EA, allora la strategia è in difetto? La strategia funziona bene dal trading manuale?
grazie per essere tornato
La strategia è - deve solo comprare o vendere quando le ema si incrociano. c'è un'impostazione che funziona bene e se compra e vende solo sugli incroci prenderà profitto
L'ho legata così com'è ma non compra sull'incrocio delle 2 ema
deve chiudere l'ordine aperto e comprare quando l'ema corta incrocia l'ema lunga e viceversa. in questa fase voglio che faccia solo questo.
Poi possiamo fare la 2a fase. nessuna gestione del denaro in questa fase. sono nuovo della programmazione ma voglio imparare di più
potete aiutarmi
così com'è fa il lavoro su eur/usd 15 e1h tf - ma non abbastanza
grazie per essere tornato
la strategia è - deve comprare o vendere solo quando le ema si incrociano. c'è un'impostazione che funziona bene e se compra e vende solo sugli incroci prenderà profitto
L'ho legata così com'è ma non compra sull'incrocio delle 2 ema
deve chiudere l'ordine aperto e comprare quando l'ema corta incrocia l'ema lunga e viceversa. in questa fase voglio che faccia solo questo.
Poi possiamo fare la 2a fase. nessuna gestione del denaro in questa fase. sono nuovo della programmazione ma voglio imparare di più
potete aiutarmi
così com'è fa il lavoro sull'eur/usd 15 e1h tf - ma non abbastanza
Ho il sospetto che sia così; per le croci EMA il tuo codice non è corretto
Ema=iMA(NULL,0,ShortEma,LongEma,MODE_EMA,PRICE_CLOSE,0);
hai bisogno di due iMA ciascuno per il longema e lo shortma
SEMA1=iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,1);
LEMA1=iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,1);
SEMA2=iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,2);
LEMA2=iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,2);
e per controllare l'incrocio
se (SEMA1>LEMA1 && SEMA2<LEMA2) invia ordine di acquisto
e per vendere
se (SEMA1<LEMA1 && SEMA2>LEMA2) invia un ordine di vendita
Ho il sospetto di sì; per gli incroci EMA il tuo codice non è corretto
Ema=iMA(NULL,0,ShortEma,LongEma,MODE_EMA,PRICE_CLOSE,0);
hai bisogno di due iMA ciascuno per il longema e lo shortma
SEMA1=iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,1);
LEMA1=iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,1);
SEMA2=iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,2);
LEMA2=iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,2);
e per controllare l'incrocio
se (SEMA1>LEMA1 && SEMA2<LEMA2) invia ordine di acquisto
e per vendere
se (SEMA1<LEMA1 && SEMA2>LEMA2) invia un ordine di vendita
ok quindi il
SEMA1=iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,1);
LEMA1=iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,1);
SEMA2=iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,2);
LEMA2=iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,2);
deve essere inserito nelle condizioni "controlla gli ordini aperti - sotto "ottieni media mobile"
e il "
if (SEMA1>LEMA1 && SEMA2<LEMA2) send buy order" dove ?
anche il LEMA1 e il LEMA2 devono essere definiti in alto
ancora nuovo in questo
il mio skype è delcor59 se volete contattarmi via skype
grazie per il vostro aiuto
ok quindi il
SEMA1=iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,1);
LEMA1=iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,1);
SEMA2=iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,2);
LEMA2=iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,2);
deve essere inserito nelle condizioni "controlla gli ordini aperti - sotto "ottieni media mobile"
e il "
if (SEMA1>LEMA1 && SEMA2<LEMA2) send buy order" dove ?
anche il LEMA1 e il LEMA2 devono essere definiti in alto
ancora nuovo in questo
il mio skype è delcor59 se volete contattarmi via skype
grazie per il vostro aiuto
qualcosa di simile a questo modificando i vostri codici ....
void CheckForOpen()
{
doppio Ema;
int res;
//---- andare a fare trading solo per i primi tik della nuova barra
if(Volume[0]>1) return;
//---- ottenere la media mobile
Ema=iMA(NULL,0,ShortEma,LongEma,MODE_EMA,PRICE_CLOSE,0);
double SEMA1=iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,1);
double LEMA1=iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,1);
double SEMA2=iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,2);
double LEMA2=iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,2);
//---- condizioni di vendita
// if(Open[1]>Ema && Close[1]<Ema)
se (SEMA1<LEMA1 && SEMA2>LEMA2)
{
res=OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,3,0,0,"",MAGICMA,0,Red);
return;
}
//---- condizioni di acquisto
// if(Open[1]<Ema && Close[1]>Ema)
se (SEMA1>LEMA1 && SEMA2<LEMA2)
{
res=OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,0,0,"",MAGICMA,0,Blue);
return;
}
//----
}
void CheckForClose()
{
doppio Ema;
//---- fare trading solo per i primi tik della nuova barra
if(Volume[0]>1) return;
//---- ottenere la media mobile
Ema=iMA(NULL,0,ShortEma,LongEma,MODE_EMA,PRICE_CLOSE,0);
double SEMA1=iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,1);
double LEMA1=iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,1);
double SEMA2=iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,2);
double LEMA2=iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,2);
//----
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==falso) break;
if(OrderMagicNumber()!=MAGICMA || OrderSymbol()!=Symbol()) continua;
//---- controllare il tipo di ordine
if(OrderType()==OP_BUY)
{
// se(Open[1]>Ema && Close[1]<Ema)
if (SEMA1<LEMA1 && SEMA2>LEMA2) OrderClose(OrderTicket(),OrderLots(),Bid,3,White);
break;
}
if(OrderType()==OP_SELL)
{
// se(Open[1]<Ema && Close[1]>Ema)
if (SEMA1>LEMA1 && SEMA2<LEMA2) OrderClose(OrderTicket(),OrderLots(),Ask,3,White);
break;
}
}
//----
}
qualcosa del genere modificando i propri codici ....
void CheckForOpen()
{
doppio Ema;
int res;
//---- andare a fare trading solo per i primi tik della nuova barra
if(Volume[0]>1) return;
//---- ottenere la media mobile
Ema=iMA(NULL,0,ShortEma,LongEma,MODE_EMA,PRICE_CLOSE,0);
double SEMA1=iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,1);
double LEMA1=iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,1);
double SEMA2=iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,2);
double LEMA2=iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,2);
//---- condizioni di vendita
// if(Open[1]>Ema && Close[1]<Ema)
se (SEMA1<LEMA1 && SEMA2>LEMA2)
{
res=OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,3,0,0,"",MAGICMA,0,Red);
return;
}
//---- condizioni di acquisto
// if(Open[1]<Ema && Close[1]>Ema)
se (SEMA1>LEMA1 && SEMA2<LEMA2)
{
res=OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,0,0,"",MAGICMA,0,Blue);
return;
}
//----
}
void CheckForClose()
{
doppio Ema;
//---- fare trading solo per i primi tik della nuova barra
if(Volume[0]>1) return;
//---- ottenere la media mobile
Ema=iMA(NULL,0,ShortEma,LongEma,MODE_EMA,PRICE_CLOSE,0);
double SEMA1=iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,1);
double LEMA1=iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,1);
double SEMA2=iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,2);
double LEMA2=iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,2);
//----
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==falso) break;
if(OrderMagicNumber()!=MAGICMA || OrderSymbol()!=Symbol()) continua;
//---- controllare il tipo di ordine
if(OrderType()==OP_BUY)
{
// se(Open[1]>Ema && Close[1]<Ema)
if (SEMA1<LEMA1 && SEMA2>LEMA2) OrderClose(OrderTicket(),OrderLots(),Bid,3,White);
break;
}
if(OrderType()==OP_SELL)
{
// if(Open[1]<Ema && Close[1]>Ema)
if (SEMA1>LEMA1 && SEMA2<LEMA2) OrderClose(OrderTicket(),OrderLots(),Ask,3,White);
break;
}
}
//----
}
grazie ancora
Quando faccio il back test dell'Ea, mostra solo acquisti e nessuna vendita.
grazie ancora
C'è qualcosa che non va. Quando faccio il back test dell'Ea mostra solo acquisti e nessuna vendita
ho notato che a seconda di quale ordine viene sparato per primo, cioè comprare o vendere, una volta che l'incrocio inizia si spara un ordine e quando l'incrocio opposto si chiude l'ordine; in yr start() quando si controlla l'esistenza di un ordine di mercato, si impedisce a quello del tipo di ordine di non sparare mai, cioè quando si inizia con comprare sarà sempre comprare; quando si inizia con un ordine vendere, sarà sempre un ordine vendere; togliere quella condizione di controllo
si è notato che a seconda di quale ordine viene sparato per primo, cioè comprare o vendere, una volta che inizia l'incrocio si spara un ordine e quando l'incrocio opposto si chiude l'ordine; in yr start() quando si controlla l'esistenza di un ordine di mercato, si impedisce che quello del tipo di ordine non venga mai sparato, cioè quando si inizia con comprare sarà sempre comprare; quando si inizia con un ordine vendere, sarà sempre un ordine vendere; togliere quella condizione di controllo
ti riferisci alla condizione di controllo nella parte inferiore dell'EA
//+------------------------------------------------------------------+//| Funzione di avvio |
//+------------------------------------------------------------------+
void start()
{
//---- controllare lo storico e il trading
if(Bars<100 || IsTradeAllowed()==false) return;
//---- calcolare gli ordini aperti per simbolo corrente
if(CalculateCurrentOrders(Symbol())==0) CheckForOpen();
else CheckForClose();
//----
}
perché c'è anche
void CheckForOpen()
void CheckForClose()
ti riferisci alla condizione di controllo in fondo all'EA
//+------------------------------------------------------------------+//|Funzione di avvio |
//+------------------------------------------------------------------+
void start()
{
//---- controlla la cronologia e il trading
if(Bars<100 || IsTradeAllowed()==false) return;
//---- calcola gli ordini aperti in base al simbolo corrente
if(CalculateCurrentOrders(Symbol())==0) CheckForOpen();
else CheckForClose();
//----
}
perché c'è anche
void CheckForOpen()
void CheckForClose()
Dimmi se c'è un sistema di test sulla programmazione EA per mostrarti passo per passo cosa succede quando questo EA viene eseguito
ti riferisci alla condizione di controllo in fondo all'EA
//+------------------------------------------------------------------+//| Iniziare la funzione |
//+------------------------------------------------------------------+
void start()
{
//---- controlla la cronologia e il trading
if(Bars<100 || IsTradeAllowed()==false) return;
//---- calcola gli ordini aperti in base al simbolo corrente
if(CalculateCurrentOrders(Symbol())==0) CheckForOpen();
else CheckForClose();
//----
}
perché c'è anche
void CheckForOpen()
void CheckForClose()
if(Bars<100 || IsTradeAllowed()==false) return;
//---- calcola gli ordini aperti in base al simbolo corrente
CheckForOpen();
CheckForClose();
//----
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Accetti la politica del sito e le condizioni d’uso
qualcuno può aiutarmi a mettere a punto un EA per favore
può fare meglio - tutto quello che vedo è comprare e vendere nei posti sbagliati