Características del lenguaje mql5, sutilezas y técnicas - página 71

 

fxsaber:

Discusión del artículo "Visualización de la optimización de la estrategia comercial en MetaTrader 5"

fxsaber, 2018.02.22 08:39

En el modo marco, OnInit, OnDeinit, OnTick, OnTrade, OnTradeTransaction y OnTimer se ignoran. Sólo funciona OnChartEvent.

Por supuesto, debido a OnChartEvent requiere una comprobación obligatoria de la bandera de modo de cuadro.

¿De dónde has sacado esa confianza implícita? :-)

 
Dennis Kirichenko:

¿Cómo puedes estar tan seguro? :-)

De la práctica, por supuesto.

 

Una pregunta entonces. ¿Es el modo marco un modo que generalmente se refiere a las pruebas o no?

 
Dennis Kirichenko:

Una pregunta entonces. ¿Es el modo marco un modo que se aplica generalmente a las pruebas o no?

Indirectamente, lo es. Sólo que en este modo el Asesor Experto puede ser iniciado en la Terminal sólo por el Probador.

 

DE ACUERDO. Y si el Asesor Experto tiene el manejador OnTick(), entonces qué, ¿no funcionará en modo marco?

Imho, debemos aclarar aquí que los manejadores de marco son ejecutados por el propio Terminal, mientras que todo lo que es habitual para las pruebas (OnTick(), OnTrade(), etc.) se pasa a los agentes de pruebas. ), se transmiten a los agentes de control. Por lo tanto, el modo marco es un modo de prueba compuesto especial, en el que los Agentes interactúan con el Terminal.

Así que es así...


Foro sobre comercio, sistemas de comercio automatizados y pruebas de estrategias

Características del lenguaje mql5, sutilezas y trucos

fxsaber, 2018.02.22 09:22

Indirectamente, se aplica. Sólo que en este modo, el EA sólo puede ser ejecutado en la Terminal por el propio Probador.


¿Y por qué indirectamente? Por ejemplo, la optimización normal también puede ejecutarse sólo en el Probador.

 
Dennis Kirichenko:

DE ACUERDO. Y si el Asesor Experto tiene el manejador OnTick(), entonces qué, ¿no funcionará en modo marco?

Imho, debemos aclarar aquí que los manejadores de marco son ejecutados por el propio Terminal, mientras que todo lo que es habitual para las pruebas (OnTick(), OnTrade(), etc.) se pasa a los agentes de pruebas. ), se transmiten a los agentes de control. Por lo tanto, el modo marco es un modo de prueba compuesto especial, en el que los Agentes interactúan con el Terminal.

Es así.



¿Y por qué indirectamente? Por ejemplo, la optimización normal sólo puede ejecutarse en el Probador.

Porque es un Asesor Experto en combate incluso en el modo de cuadro. Por eso es necesario comprobar el indicador de marco en OnChartEvent, de lo contrario puede ocurrir este tipo de problemas

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);
}


Parece que es la primera vez que se expresa esto. Lo que significa que Market Products crea una desagradable vulnerabilidad... Y esta vulnerabilidad es muy difícil de sortear. Y es muy difícil detectarlo.

 
fxsaber:

Porque es un EA de combate incluso en el modo de cuadro. Esta es la razón por la que es necesario comprobar el indicador de marco en OnChartEvent, de lo contrario este tipo de problemas pueden ocurrir

Parece que es la primera vez que se expresa esto. Lo que significa que Market Products crea una desagradable vulnerabilidad... Y esta vulnerabilidad es muy difícil de sortear. Detectarlo es igualmente difícil.

Sin embargo... Si es cierto, entonces, imho, es la operación incorrecta de la EA en el modo de prueba...

¡Bien hecho por ti por notarlo!

 

Foro sobre trading, sistemas de trading automatizados y pruebas de estrategias de trading

Bichos, errores, preguntas

fxsaber, 2018.02.27 08:01

Conclusión sobre los EA en OBJ_CHART

  • Funcionan OnInit, OnDeinit, constructor/destructor global y OnChartEvent.
  • OnTimer, OnTick y OnBookEvent no funcionan.
  • Sólo se capturan los eventos CHARTEVENT_CHART_CHANGE y los eventos personalizados.
  • A través de OnChartEvent+EventChartCustom EA es posible crear "eventos" para OnTimer y OnTick, pero nopara OnBookEvent.

Por lo tanto, es posible hacer que cualquier Asesor Experto en comercio sea completo - para hacer que funcione (OnTimer + OnTick) en cualquier tipo de gráfico mediante la inclusión del indicador apropiado(ejemplo).

Lf OBJ_CHART está definido por CHART_IS_OBJECT.

 

Foro sobre trading, sistemas de trading automatizados y pruebas de estrategias de trading

Debate sobre "Optimización gestionada: el método de recocido"

fxsaber, 2018.02.28 08:45

El archivo tester sólo se lee si existía (el contenido no importa) en el momento de la compilación.

Si se compila mq5 cuando no existía el archivo correspondiente, incluso su existencia posterior no se percibirá en EX5.

Por lo tanto, si genera un archivo para tester_file en OnTesterInit, asegúrese de compilar el Asesor Experto con al menos un archivo pasado vacío.

Si la directiva tester_file está presente, las cachés del optimizador no funcionan.

 
Y no puede incluir archivos de la carpeta Files_Common a través de tester_file...
Razón de la queja: