Caratteristiche del linguaggio mql5, sottigliezze e tecniche - pagina 71

 

fxsaber:

Discussione dell'articolo "Visualizzare l'ottimizzazione della strategia commerciale in MetaTrader 5".

fxsaber, 2018.02.22 08:39

In modalità frame, OnInit, OnDeinit, OnTick, OnTrade, OnTradeTransaction e OnTimer sono ignorati. Solo OnChartEvent funziona.

Naturalmente, a causa di OnChartEvent richiede un controllo obbligatorio per il flag della modalità di frame.

Da dove ha preso una fiducia così implicita? :-)

 
Dennis Kirichenko:

Come può essere così sicuro? :-)

Dalla pratica, ovviamente.

 

Una domanda allora. La modalità Frame è una modalità che si riferisce generalmente ai test o no?

 
Dennis Kirichenko:

Una domanda allora. La modalità Frame è una modalità che si applica generalmente ai test o no?

Indirettamente, lo è. È solo che in questa modalità l'Expert Advisor può essere avviato nel Terminale solo dal Tester.

 

OK. E se l'Expert Advisor ha il gestore OnTick(), allora cosa, non funzionerà in modalità frame?

Imho, dovremmo chiarire qui che i gestori di frame sono eseguiti dal terminale stesso, mentre tutto ciò che è usuale per i test (OnTick(), OnTrade(), ecc.) è passato agli agenti di test. ), vengono passati agli agenti di test. Quindi, la modalità frame è una speciale modalità di test composita, dove gli agenti interagiscono con il terminale.

Quindi va così...


Forum sul trading, sistemi di trading automatico e test di strategia

Caratteristiche del linguaggio mql5, sottigliezze e trucchi

fxsaber, 2018.02.22 09:22

Indirettamente, si applica. È solo che in questa modalità, l'EA può essere eseguito nel terminale solo dal Tester stesso.


E perché indirettamente? Per esempio, l'ottimizzazione normale può anche essere eseguita solo nel Tester.

 
Dennis Kirichenko:

OK. E se l'Expert Advisor ha il gestore OnTick(), allora cosa, non funzionerà in modalità frame?

Imho, dovremmo chiarire qui che i gestori di frame sono eseguiti dal terminale stesso, mentre tutto ciò che è usuale per i test (OnTick(), OnTrade(), ecc.) è passato agli agenti di test. ), vengono passati agli agenti di test. Quindi, la modalità frame è una speciale modalità di test composita, dove gli agenti interagiscono con il terminale.

Funziona così.



E perché indirettamente? Per esempio, l'ottimizzazione normale può essere eseguita solo nel Tester.

Perché è un Expert Advisor da combattimento anche in modalità frame. Ecco perché abbiamo bisogno di controllare il flag di frame in OnChartEvent, altrimenti questo tipo di problema può accadere

sinput uint Range = 100;

#define  SETRANGE(A, START, STEP, END) ParameterSetRange(#A, true, A, START, STEP, END)

void OnTesterInit() { SETRANGE(Range, 0, 1, Range); }

void OnTesterDeinit() {}

void OnChartEvent(const int id,const long& lparam,const double& dparam,const string& sparam)
{
  static const bool IsFrame = MQLInfoInteger(MQL_FRAME_MODE);
  
//  if (!IsFrame) // без этой проверки Терминал (не только Агент) начнет выставлять ордера на реальном счете во время запуска Оптимизации
    OrderSend(_Symbol, OP_BUY, 1, Ask, 100, 0, 0);
}


Questa sembra essere la prima volta che questo viene espresso. Il che significa che Market Products crea una brutta vulnerabilità... Ed è molto difficile aggirare questa vulnerabilità. Ed è molto difficile da rilevare.

 
fxsaber:

Perché è un combattimento EA anche in modalità frame. Questo è il motivo per cui è necessario controllare il flag di frame in OnChartEvent, altrimenti questo tipo di problema può accadere

Questa sembra essere la prima volta che questo viene espresso. Il che significa che Market Products crea una brutta vulnerabilità... E questa vulnerabilità è molto difficile da aggirare. Rilevarlo è altrettanto difficile.

Tuttavia! Se è vero, allora, imho, è un funzionamento scorretto dell'EA in modalità Test...

Complimenti a te per averlo notato!

 

Forum sul trading, sistemi di trading automatico e test di strategie di trading

Bug, bug, domande

fxsaber, 2018.02.27 08:01

Conclusione sugli EA su OBJ_CHART

  • OnInit, OnDeinit, costruttore/distruttore globale e OnChartEvent funzionano.
  • OnTimer, OnTick e OnBookEvent non funzionano.
  • Solo CHARTEVENT_CHART_CHANGE e gli eventi personalizzati vengono catturati.
  • Attraverso OnChartEvent+EventChartCustom EA è possibile creare "eventi" per OnTimer e OnTick, ma non OnBookEvent.

Pertanto, è possibile rendere qualsiasi Expert Advisor di trading a tutti gli effetti - farlo funzionare (OnTimer + OnTick) su qualsiasi tipo di grafico includendo l'indicatore appropriato(esempio).

Se OBJ_CHART è definito da CHART_IS_OBJECT.

 

Forum sul trading, sistemi di trading automatico e test di strategie di trading

Discussione su "Ottimizzazione gestita: il metodo di annealing"

fxsaber, 2018.02.28 08:45

Il file_tester viene letto solo se esisteva (il contenuto non ha importanza) al momento della compilazione.

Se mq5 viene compilato quando non c'era un file corrispondente, anche la sua ulteriore esistenza non sarà percepita in EX5.

Pertanto, se si genera un file per tester_file in OnTesterInit, assicuratevi di compilare l'Expert Advisor con almeno un file passato vuoto.

Se la direttiva tester_file è presente, le cache dell'ottimizzatore non funzionano.

 
E non si possono includere file dalla cartella Files_Common tramite tester_file...
Motivazione: