Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 970

 
Amici. Insieme abbiamo lavorato per scrivere l'algoritmo Expert Advisor che avevo in mente,
e grazie mille. Si può dire che l'abbiamo fatto tutti)
Funziona, i risultati sono quelli attesi e possiamo andare avanti.
---
Domanda sul test in modalità OHLC M1.
È realistico programmare l'Expert Advisor in modo che i risultati del test su OHLC M1 siano vicini a quelli su "tutti i tick"?
Ho cercato in tutto il forum, ci sono spiegazioni chiare sul perché il modo OHLC M1 con generazione di 4 punti di riferimento non coincide
con le modalità basate sul tick.

Ma non ho trovato nessuna raccomandazione, esempi come programmare questa condizione per essere simile a OHLC M1, ed è possibile?

Mi piace la modalità OHLC M1 solo per la velocità dei calcoli.
Specifiche dell'EA. (Se è importante)
Imposta ordini di stop con SL e TP fissi, molte volte modifica gli ordini a nuovi livelli di prezzo, in attesa dell'attivazione.
Non ci sono indicatori, solo contatori di prezzo.
Se non è possibile simulare la modalità "OHLC M1", forse sarebbe meglio usare la modalità "By opening prices"?
Alla fine, vorrei capire quale modalità è ragionevole usare, in modo che i calcoli siano veloci e
Vorrei capire cosa dovrei usare per rendere i calcoli veloci e per minimizzare la divergenza tra le modalità tutte tecniche.

Finora ho ottenuto la seguente divergenza sullo stesso tipo di impostazioni.

"OHLC M1 ; 8 anni; 1681 scambi. (inizialmente ho usato questo metodo)

OHLC M1

"Prezzi di apertura" ; 8 anni; 1655 scambi.

Solo prezzi di apertura

"Tutte le zecche" 8 anni; 1676 scambi.

tutti i tic

L'algoritmo sembra essere robusto, e potrei anche essere in grado di migliorare i risultati di ogni metodo separatamente,

ma perderebbe versatilità e apparirebbe ridondante.




 
vladzeit:


In breve, come esempio, se hai posizioni di acquisto TP impostate a 1,16000, allora "tutti i tick" chiuderanno a circa questo prezzo. OHLC chiuderà a quel prezzo sopra 1,16000 e questa può essere una grande differenza, quindi sempre OHLC mostrerà risultati migliori. Stessa storia con "A prezzi di apertura".

 
Nauris Zukas:

Brevemente, come esempio, se le posizioni di acquisto TP sono impostate a 1,16000, "tutti i tick" chiuderanno a circa questo prezzo. OHLC chiuderà al prezzo che era sopra 1.16000 questo e può essere abbastanza una grande differenza, così sempre OHLC mostrerà risultati migliori. Stessa storia con "A prezzi di apertura".

Nauris, grazie. Capisco (posso intuire) perché i risultati differiscono da metodo a metodo. Ma quello che voglio capire è questo:

Se il tester ha simulato il metodo "OHLC M1", allora come ripetere lo stesso metodo nell'Expert Advisor programmaticamente.

Il tester l'ha riprodotto in qualche modo...

 
vladzeit:

Nauris, grazie. Capisco (posso intuire) perché i risultati differiscono da metodo a metodo. Ma quello che voglio capire è questo:

Se il tester ha simulato il metodo "OHLC M1", allora come ripetere lo stesso metodo nell'Expert Advisor programmaticamente.

Il tester l'ha riprodotto in qualche modo...

Fidati, non hai bisogno di tanta precisione, ottimizza il risultato e fallo girare su tutti i tick, l'opzione migliore...

Se non sei a 3-4 pip di distanza, non farebbe molta differenza se chiudesse con due pip in più o in meno...

Riprodurre qualcosa nell'Expert Advisor non farà andare più veloce il tuo tempo, ma al contrario, lo rallenterà...

 
xxz:

Credetemi, non avete bisogno di tale precisione, ottimizzate il risultato ed eseguitelo su tutti i tick, l'opzione migliore...

Se non sei a 3-4 pips, allora non c'è grande differenza se hai chiuso con due pips in più o in meno...

Riprodurre qualcosa nell'Expert Advisor non accelererà il tempo, ma al contrario, lo rallenterà...

Grazie. Se nessuno continuerà il modo di implementare il metodo"OHLC M1", allora sarò condannato a usare i vostri consigli)))

 
vladzeit:

Grazie. Se nessuno continuerà il metodo di"OHLC M1" sarò condannato ad usare il vostro consiglio))))

Se non vi viene in mente un'idea particolarmente brillante, la differenza è nella direzione dei ticks, nel trading reale sui ticks la candela può aprirsi, scendere, salire, chiudersi, e se la candela è grande, potete comprare al fondo e prendere un profitto alla chiusura, nella simulazione la candela forma un'apertura, cima, fondo, chiusura, diciamo che l'apertura e la cima coincidono anche con il fondo e la chiusura, allora su una tale candela, potete comprare ma non prendere un profitto, e se il mercato è andato giù, allora qui avete un ordine hanging loss ...

... da qui la divergenza...

 
vladzeit:

Grazie. Se nessuno continua su come implementare il metodo"OHLC M1", sarò condannato a seguire i vostri consigli)))

Il metodo parla da solo. Usa solo i prezzi OHLC di tutte le barre di minuti incluse nella barra corrente nel tuo EA.
 
vladzeit:

Grazie. Se nessuno continua su come implementare il metodo"OHLC M1", sarò condannato a seguire i vostri consigli)))

Aprire/chiudere in Expert Advisor non per livelli di prezzo ma per Open. C'è un segnale di apertura/chiusura, aspetta la prossima candela 1M e apri/chiudi.

 
Artyom Trishkin:
Il metodo parla da solo. Usa nel tuo EA solo i prezzi OHLC di tutte le barre di minuti incluse nella barra corrente.

Artyom, l'ho provato. Su tutte le condizioni, apertura e modifica degli ordini ho messo una condizione "sulla nascita di una nuova barra" attraverso la funzione booleanaisNewBar()

come questo:

if (Buys==true )
   {
   int count_buy_stops=0;   int count_pos_buy=0;
   CalOrders_Buy(count_buy_stops);   CalPosition_Buy(count_pos_buy);
   if(count_buy_stops==0 && count_pos_buy==0) && isNewBar())
   {
   BuyStop();
   }
   }

La stessa funzioneisNewBar() dagli esempi e dagli articoli di code.base.

bool isNewBar()
  {
//--- в статической переменной будем помнить время открытия последнего бара
   static datetime last_time=0;
//--- текущее время
   datetime lastbar_time=(datetime)SeriesInfoInteger(Symbol(),Period(),SERIES_LASTBAR_DATE);
   if(last_time==0)//--- если это первый вызов функции
   {
   last_time=lastbar_time;    //--- установим время и выйдем 
   return(false);
   }
   if(last_time!=lastbar_time)//--- если время отличается
   {
   last_time=lastbar_time;    //--- запомним время и вернем true
   return(true);
   }
//--- дошли до этого места - значит бар не новый, вернем false
   return(false);
  }

Sembra funzionare e piazza gli ordini e li modifica solo ad una nuova barra, ma per qualche motivo c'è una discrepanza.

C'è una discrepanza traOHLC su M1 che ho applicato senzaisNewBar() e "tutti i tick" con la funzioneisNewBar().

Mi aspettavo che applicandoisNewBar() su "tutti i tick" avrei ottenuto lo stesso risultato diOHLC sui prezzi correnti.

Quindi, non capisco se devo aver sbagliato il codice o se non capisco correttamente il modoOHLC e mi aspetto che sia impossibile.

Non so dove scavare.

Artyom, dimmi di più, se non è difficile.

L'ordine può essere impostato e modificato su una nuova barra, ma SL e TP (nel tester) funzioneranno comunque all'interno della vecchia barra?

 
Provato e fallito nel tentativo di convertire da lotto fisso a lotto percentuale. Qualcuno può consigliare il codice completo?
File:
Experiment.mq5  38 kb
Motivazione: