bisogno di aiuto per la codifica per favore - pagina 2

 

deVries, se smettessi di sproloquiare abbastanza a lungo per spiegare perché il codice con cui ho iniziato è così "cattivo", potrei capire cosa posso fare per sistemarlo. Rileggi la tua risposta e poi spiega come la tua risposta potrebbe aiutare qualcuno.

Grazie, RaptorUK, finalmente una risposta che posso usare.

Per aiutare a spiegare, voglio che questo EA esegua solo una coppia, un trade alla volta. Come ho detto prima "... e posizionato uno su ciascuno dei 5 grafici di coppia diversi, tutti sulla stessa piattaforma MT4 ..." dando 5 separati (?) grafici con questo EA su di essi. A questo punto non voglio o non ho bisogno di controllare i Magic Numbers, vero?

Per quanto riguarda il commento sulle barre, grazie.

Per quanto riguarda lo slippage, 4/5 broker ecc, in questa fase non ha importanza, vero? Lo sto usando per me stesso, sullo stesso broker ecc.

 
e ho dimenticato di aggiungere che non sto cercando una scorciatoia, solo un aiuto per superare un problema.
 
Mi dispiace, in qualche modo ho perso le altre risposte, quindi mi scuso per il commento 'rant'. e grazie per l'assistenza effettiva.

E l'ho testato, e funziona bene, nessun errore, nessun avvertimento. Allora perché non funziona su un grafico live? (Non ho ancora implementato i suggerimenti di cui sopra)
 
unclebigpete:

1. In questa fase non voglio o non ho bisogno di controllare i Magic Numbers, vero?

2. Per quanto riguarda lo slippage, 4/5 broker ecc, in questa fase non ha importanza, vero? Lo sto usando per me stesso, sullo stesso broker ecc.

1. Se non hai intenzione di piazzare un trade manuale su nessuna delle stesse coppie . . . allora puoi lavorare senza Magic Numbers . . . se ti dimentichi e ti capita di piazzare un trade manuale su una delle coppie su cui hai questo EA in esecuzione allora l'EA gestirà anche il tuo trade manuale . . . se lo codifichi correttamente allora questo non sarà un problema.

2. Per esempio, il codice che hai postato ha uno slippage di 3 ... su un broker a 5 cifre questo equivarrà a 0.3 pip di slippage ... se lo codifichi correttamente allora 3 significherà sempre 3 pip sia su un broker a 4 o 5 cifre e quindi avrai meno possibilità di errore. Non codificarlo correttamente è una scorciatoia che probabilmente vi costerà tempo nel lungo periodo...

 
unclebigpete:

E l'ho testato, e funziona bene, senza errori, senza avvertimenti. Allora perché non funziona su un grafico live? (Non ho ancora implementato i suggerimenti di cui sopra)
Dove l'hai testato? Nello Strategy Tester? Dove hai cercato gli errori?
 
Sì, testato nel tester di strategia e compilato, ottenendo larisposta 'nessun errore, nessun avvertimento'.
 

Al, ecco il mio:

Disciplina con la codifica, il primo parametro di iCustom è <stringa Symbol>, usa Symbol() o NULL invece di zero.

MetaEditor > Finestra di navigazione (Ctrl +D) > scheda dizionario > indicatore tecnico > iCustom

int QQE_4hr    = iCustom( Symbol(), 240, "c_QQEA",  SF,     RSI_Period,    DART_Factor,     0, 1 );
int QQE_4hr_2  = iCustom( Symbol(), 240, "c_QQEA",  SF,     RSI_Period,    DART_Factor,     0, 2 );

Se usi il turno 1 e 2 in un grafico di 4 ore, sarà molto lungo.

L'ordine di selezione che ho menzionato prima, scrivilo come questo.

MetaEditor > Finestra di navigazione (Ctrl +D) > scheda dizionario > Funzioni di trading > OrderSelect()

for(int i=0; i<Total; i++)
     {
      if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
      if(OrderType()<=OP_SELL && OrderSymbol()==Symbol())
        {

Scriverò di più su questa cosa di OrderSelect().

Ci sono 2 chiusure d'ordine, scrivile così, entrambe

MetaEditor > Finestra di navigazione (Ctrl +D) > scheda dizionario > Funzioni di trading > OrderClose()

OrderClose(OrderTicket(),
           OrderLots(),
           OrderClosePrice(),//Bid,
           Slippage,
           MediumSeaGreen);

E ho un approccio diverso da quello di RaptorUK, che però dà lo stesso risultato, ci sono 2 di questi, e devi cambiarli entrambi

if (Ticket > 0)
  {
  if(OrderSelect(Ticket,SELECT_BY_TICKET,MODE_TRADES))
     {
      Print("SELL order opened : ",
             OrderOpenPrice());
             if(SignalMail)
                SendMail("[Signal Alert]",
                         "["
                         +Symbol()
                         +"] "
                         +DoubleToStr(Bid,Digits)
                         +" Open Sell");
       } // if(Order... // ==>> moved from below 
     } // if(Ticket...   
     else
     {
     Print("Error opening SELL order : ",
           GetLastError());
     } // else
   } ==>> move this parenthesis up there

Buon divertimento

:)

 
unclebigpete:
Sì, l'ho testato nello Strategy Tester e compilato, ottenendo larisposta 'nessun errore, nessun avvertimento'.
Ok, quindi nessun errore in fase di compilazione... e gli errori quando l'hai eseguito nello Strategy Tester? Eseguilo di nuovo e guarda nella scheda Journal. . .
 

L'ho eseguito poco fa su audnzd dal 17/05 al 22/05, e ha aperto 3 operazioni, 2 acquisti che sono stati fermati, e una vendita che è stata chiusa alla fine del test.

Ecco le informazioni del Journal, prima la linea superiore.

2012.05.22 21:38:51 QQE-4hr_15min- testing-2205: caricato con successo

2012.05.22 21:38:53 QQE-4hr_15min- testing-2205 input: MagicNumber=0; Lots=1; Slippage=3; StopLoss=300; TakeProfit=1000; TrailingStop=300; Nbr_Period=10; Multiplier=3;

2012.05.22 21:38:53 2012.05.17 00:00 c_QQEA AUDNZD,H4: caricato con successo

2012.05.22 21:38:53 2012.05.17 00:00 c_QQEA AUDNZD,M15: caricato con successo

2012.05.22 21:39:13 2012.05.17 16:00 QQE-4hr_15min- testing-2205 AUDNZD,H4: aperto #1 comprare 1.00 AUDNZD a 1.29960 sl: 1.29660 ok

2012.05.22 21:39:13 2012.05.17 16:00 QQE-4hr_15min- testing-2205 AUDNZD,H4: ordine BUY aperto: 1.2996

2012.05.22 21:39:13 2012.05.17 18:32 Tester: stop loss #1 a 1.29660 (1.29660 / 1.29698)

2012.05.22 21:39:15 2012.05.18 20:00 QQE-4hr_15min- testing-2205 AUDNZD,H4: open #2 buy 1.00 AUDNZD at 1.30386 sl: 1.30086 ok

2012.05.22 21:39:15 2012.05.18 20:00 QQE-4hr_15min- testing-2205 AUDNZD,H4: ordine BUY aperto: 1,3039

2012.05.22 21:39:15 2012.05.18 23:09 Tester: stop loss #2 a 1.30086 (1.30083 / 1.30121)

2012.05.22 21:39:16 2012.05.21 16:00 QQE-4hr_15min- testing-2205 AUDNZD,H4: aprire #3 vendere 1.00 AUDNZD a 1.29739 sl: 1.30039 ok

2012.05.22 21:39:16 2012.05.21 16:00 QQE-4hr_15min- testing-2205 AUDNZD,H4: ordine SELL aperto: 1.2974

2012.05.22 21:39:17 2012.05.21 23:59 Tester: ordine #3 è chiuso

2012.05.22 21:39:17 2012.05.21 23:59 c_QQEA AUDNZD,M15: rimosso

 
Il tuo slippage potrebbe essere il problema. Il backtesting non usa mai lo slippage. Leggi Caratteristiche di test e limiti in MetaTrder4https://www.mql5.com/en/articles/1512