Ema Cross! - pagina 55

 

Ema_cross_2

Caro codersguru,

Grazie per il tuo EA e il tuo concetto di controtendenza,

Anche per la prima volta, io e il mio amico siamo scettici su questo metodo in controtendenza, ma dopo aver studiato e testato il tuo EA, siamo rimasti sorpresi dai risultati

Stiamo ancora continuando a testare EMA_CROSS_2 con timeframe H1, ma abbiamo trovato qualcosa di interessante nella coppia EUR/USD 03 aprile 2006, dopo aver attraversato verso il basso, questo EA apre una posizione di vendita invece di comprare una posizione.... è un atto normale? (vedi allegato)

Grazie...

dedywind

 

7

Ciao floks,

Ho scritto 10 EAs per il concorso, ma erano troppi da testare.

Quindi, ne selezionerò 3 per il concorso e presenterò i 7 qui Stanno facendo profitti nei test futuri.

Spero che vi piacciano!

 

Codificatori,

Tornerò indietro e leggerò l'intero thread, ma non ricordo se questo è stato affrontato.

Quando si chiude la piattaforma, sia che si tratti di InterbanFX, MT4, ecc, ho notato che se non sono in una posizione, e ho l'ultimo MA EA attivo, questo eseguirà automaticamente un trade.

Come possiamo evitare che questo accada ogni volta che riapriamo il software.

grazie

 

Newbie ha bisogno di aiuto con MA cross EA...

codersguru:
amarnath,

Questo è il mio rapporto (allegato)!

E questa è la versione che ho usato (allegato)!

Penso che non si possa fare affidamento solo sul backtest. Ma nel mio test ho usato la data dal 2005/01/01 ad oggi!

Qualcuno ha testato in avanti il MoneyMaker?

Ciao CodersGuru,

Ho modificato un po' il tuo EA EMA_Cross originale per lavorare con un 5 EMA e un 10 LWMA incrociati con un filtro RSI e Stocastico. Mentre questo EA apre ordini LONG e SHORT e li chiude correttamente, non mi permette di chiudere simultaneamente una posizione e poi aprire immediatamente una nuova posizione nella direzione opposta (ad esempio: vera tecnica di trading "swing"). Così, perdo una grande quantità di potenziali operazioni di swing.

Inoltre, a volte le condizioni di incrocio di EMA1 > WMA1 e EMA2 < WMA2 possono non far scattare un acquisto se le due medie mobili per il periodo passato erano dello stesso valore o entro 1 o 2 pip l'una dall'altra. Così vorrei aggiungere nel codice per cercare quel tipo di condizione (che spesso accade) per innescare un'entrata.

Non sono un codificatore, quindi speravo che poteste aiutarmi a capire come fare questo.

Ho incluso il mio codice in linea qui sotto così come il file MQ4 come allegato. Qualsiasi aiuto sarebbe molto, molto apprezzato!

//+----------------------------------------------------------------------------------------+

//| 5/10 MA Cross con RSI e filtro Stoch

//| Ian Boersma - Copyright 2006 ||

//| |

//+----------------------------------------------------------------------------------------+

#proprietà copyright "Ian Boersma"

//---- parametri di input

extern double TakeProfit=100;

extern double Lots=1;

extern double TrailingStop=35;

extern int ShortEma = 5;

extern int LongWma = 10;;

extern int RSIPer = 14;

extern int StochK = 10;

extern int StochD = 3;

extern int StochSlow = 3;

//+------------------------------------------------------------------+

//| funzione di inizializzazione esperto |

//+------------------------------------------------------------------+

int init()

{

//----

//----

return(0);

}

//+------------------------------------------------------------------+

//| funzione di deinizializzazione esperto |

//+------------------------------------------------------------------+

int deinit()

{

//----

//----

return(0);

}

//+------------------------------------------------------------------+

//| funzione di inizio esperto +

//| Qui è dove inizializziamo le variabili interne per l'uso del programma + |

//+------------------------------------------------------------------+

int start()

{

//----

//LotCalc Dichiarazioni

int cnt, ticket, total;

//Dichiarazioni di variabili di tipo MA e filtro

doppio RSI;

doppio Stoch;

double EMA1,EMA2,WMA1,WMA2;

if(Bars<100)

{

Print("barre inferiori a 100");

return(0);

}

se(TakeProfit<10)

{

Print("TakeProfit inferiore a 10");

return(0); // controlla TakeProfit

}

//definizione delle variabili EMA e Filter

EMA1 = iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,0);

WMA1 = iMA(NULL,0,LongWma,0,MODE_LWMA,PRICE_CLOSE,0);

EMA2 = iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,1);

WMA2 = iMA(NULL,0,LongWma,0,MODE_LWMA,PRICE_CLOSE,1);

RSI = iRSI(NULL,0,RSIPer,PRICE_CLOSE,0);

Stoch = iStochastic(NULL,0,StochK,StochD,StochSlow,MODE_SMA,0,MODE_MAIN,0);

int isCrossed = 0;

se (EMA1 > WMA1 && EMA2 = 50 && Stoch < 80)

{isCrossed = 1;

}

se (EMA1 = WMA2 && RSI 20)

{isCrossed = 2;

}

//Controlliamo il terminale di trading per vedere se è vuoto

totale = OrdiniTotali();

if(total < 1) //Se il terminale di trading è vuoto...

{

if(isCrossed == 1) //se il cross indica uno swing LONG...

{

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,2,0,Ask+TakeProfit*Point, "My EA",12345,0,Yellow);

se(ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("Ordine BUY aperto : ",OrderOpenPrice());

}

else Print("Errore nell'apertura dell'ordine BUY: ",GetLastError());

return(0);

}

if(isCrossed == 2) //se il cross indica uno swing SHORT...

{

ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,2,0,Bid-TakeProfit*Point, "My EA",12345,0,Red);

if(ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("Ordine SELL aperto : ",OrderOpenPrice());

}

else Print("Errore nell'apertura dell'ordine SELL: ",GetLastError());

return(0);

}

return(0);

}

/Funzione di uscita dalla posizione...

for(cnt=0;cnt<totale;cnt++)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

OrderPrint();

if(OrderType()<=OP_SELL && OrderSymbol()==Symbol())

{

if(OrderType()==OP_BUY) // la posizione lunga è aperta

{

// Controlliamo se abbiamo una condizione di incrocio SHORT...

if(isCrossed == 2)

{

OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // chiude la posizione

return(0); // uscire

}

// controlliamo il nostro trailing stop per vedere se deve essere regolato

se(TrailingStop>0)

{

if(Bid-OrderOpenPrice()>Point*TrailingStop)

{

if(OrderStopLoss()<Bid-Point*TrailingStop)

{

OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);

return(0);

}

}

}

}

else // passa alla posizione short

{

// controlla se abbiamo una condizione di cross LONG...

if(isCrossed == 1)

{

OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // chiudere la posizione

return(0); // uscire

}

// controlliamo il nostro trailing stop per vedere se deve essere regolato

se(TrailingStop>0)

{

if((OrderOpenPrice()-Ask)>(Point*TrailingStop))

{

se((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0))

{

OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);

return(0);

}

}

}

}

}

}

return(0);

}

//+------------------------------------------------------------------+

 
iboersma:
Ciao CodersGuru,

Ho modificato un po' il tuo EA EMA_Cross originale per lavorare con un 5 EMA e un 10 LWMA incrociati con un filtro RSI e Stocastico. Mentre questo EA apre ordini LONG e SHORT e li chiude correttamente, non mi permette di chiudere simultaneamente una posizione e poi aprire immediatamente una nuova posizione nella direzione opposta (ad esempio: vera tecnica di trading "swing"). Così, perdo una grande quantità di potenziali operazioni di swing.

Inoltre, a volte le condizioni di incrocio di EMA1 > WMA1 e EMA2 < WMA2 possono non far scattare un acquisto se le due medie mobili per il periodo passato erano dello stesso valore o entro 1 o 2 pip l'una dall'altra. Così vorrei aggiungere nel codice per cercare quel tipo di condizione (che spesso accade) per innescare un'entrata.

Non sono un codificatore, quindi speravo che poteste aiutarmi a capire come fare questo. ....

Lo controllerò!

 
codersguru:
Lo controllerò!

Grazie per il vostro aiuto...

- Ian

 
codersguru:
Lo controllerò!

CodersGuru,

Ho allegato una nuova versione del mio EA in quanto ho individuato un problema con la determinazione della condizione 'isCrossed' (ho cercato di aggiungere i filtri RSI e Stoch alla condizione originale isCrossed piuttosto che aggiungerla come qualificatore solo per entrare in posizione.

Spero che questo abbia più senso...

- Ian

 
iboersma:
Grazie per il tuo aiuto... - Ian

Penso che il punto 1 stia funzionando (quando si chiude comprare aprire vendere e quando si chiude vendere aprire comprare) Guarda il test allegato.

File:
 
codersguru:
Penso che il punto 1 stia funzionando (quando si chiude comprare aprire vendere e quando si chiude vendere aprire comprare) Guarda il test allegato.

Forte. Questo sembra decisamente il sistema di tipo stope and reverse che sto cercando (anche se il profitto netto non sembra molto incoraggiante...:))

Sto usando questo sistema manualmente da circa una settimana e ho avuto dei risultati molto incoraggianti, quindi sarà interessante avere i numeri completi del backtesting per vedere se sono su qualcosa o sono solo fortunato...

- Ian

 
gody6000:
questa è la 2a settimana lolhttp://9q9q.com/March/1144348631.zip

Scusa, ma cos'è questo?