Un artículo muy interesante. Sonido y agradable concepto ... pero me temo que hay un error en el software distribuido, y no es bueno dejar errores alrededor.
MQL5 programs not only automate routine calculations, but also can create a full-featured graphical environment. The functions for creating truly interactive controls are now virtually the same rich, as those in classical programming languages. If you want to write a full-fledged stand-alone program in MQL5, use resources in them. Programs with resources are easier to maintain and distribute.
¿Por qué tengo que transferir los cálculos de un indicador a un Asesor Experto?
Muchas personas utilizan indicadores sin un Asesor Experto en absoluto.
Usted puede simplemente dividir los cálculos en etapas.
Por ejemplo, así:
Debido al hecho de que el mecanismo regular de indicadores funciona a través de un muñón, por ejemplo: https://www.mql5.com/ru/forum/372612 y esto se debe a su aplicación.
Con el aumento de la complejidad de los indicadores, mi Asesor Experto "empantanado". En el probador me di cuenta de muchos otros errores en el trabajo de los indicadores, pero yo no los describen, porque es inútil.
Debido a que el mecanismo indicador regular funciona a través del muñón , por ejemplo: https://www.mql5.com/ru/forum/372612 y esto se debe a su aplicación.
Con la creciente complejidad de los indicadores, mi Asesor Experto "se empantanó". En el probador, me di cuenta de muchos otros errores en el trabajo de los indicadores, pero yo no los describen, porque es inútil.
No entendí su idea.
Para empezar, su código no es del todo correcto.
Yo lo escribiría así:
intOnInit()
{int TicksTesterIndicatorHandle = INVALID_HANDLE;
bool InitComplite=false;
if(IndicatorInitialization() == false) return(INIT_FAILED);
return(INIT_SUCCEEDED);
}
voidOnDeinit(constint reason)
{
if(TicksTesterIndicatorHandle != INVALID_HANDLE) IndicatorRelease(TicksTesterIndicatorHandle);
}
voidOnTick() { //if(!InitComplite)
// {// IndicatorInitialisation();
// } } //+------------------------------------------------------------------+
bool IndicatorInitialization()
{ //---Get TicksTesterIndicator indicator handle
TicksTesterIndicatorHandle=iCustom(NULL, _Period, "OnInit_TestIndicator");
//--- Hay que comprobar si se han devuelto valores de Handle no válidosif(TicksTesterIndicatorHandle == INVALID_HANDLE)
{ Print("Error al crear el indicador TicksTesterIndicator - número de error: ",GetLastError(),"!!!");
}
else
{
Print("TicksTesterIndicator inicializado, handle: ", TicksTesterIndicatorHandle);
ArraySetAsSeries(Buf, true);
InitComplite=true;
return(true);
}
return(false);
}
Además, como las funciones de los indicadores deben ejecutarse con el mínimo retardo, los procesos complejos (carga de históricos, cálculos complejos, etc.)
se dividen en varias partes, volviendo a
OnCalculate
valor cero (return(0) ), es decir, el indicador está en la fase inicial hasta que realizamos todas las acciones necesarias con retrasos mínimos en cada fase.
В архитектуре MetaTrader 5 организован асинхронный доступ к значениям индикаторов. Иными словами, при получении хэндла индикатора он прикрепляется к графику. Далее этот индикатор производит свои расчеты вне потока советника. Они взаимодействуют лишь на этапе передачи данных, аналогично получению данных тайм-серий. Поэтому и время на выполнение этих операций сопоставимо.
¡¿Así que estás diciendo que será más rápido en la vida real?! -Porque en la realidad será así. Experto en una pista, indicador en otra (y tal vez incluso en diferentes núcleos). Esto es sólo si lo pones en el procesamiento en serie, resulta más lento - pero esto es sólo una limitación artificial debido a la estrategia probador.
No entendí del artículo, ¿el class-indicator tiene protección contra barras perdidas? Por ejemplo, hubo un corte de conexión de 5 barras, y luego se cargó el historial, ¿el class-indicator rellenará sólo el último valor en el taladro o hará un recálculo completo?
Para iniciar sesión y usar el sitio web MQL5.com es necesario permitir el uso de Сookies.
Por favor, active este ajuste en su navegador, de lo contrario, no podrá iniciar sesión.
Ha iniciado sesión. La autenticación de dos factores se ha desactivado. Vuelva a configurarla y escanee un nuevo código QR, o continúe con la autenticación de dos factores desactivada.
Decidí compartir Indicator.mqh, que fue modificado para mí, tal vez le ahorrará tiempo a alguien al traducir el indicador en una clase.
Se ha publicado el nuevo artículo Implementación de cálculos de indicadores en el código de un Asesor Experto:
Autor: Dmitriy Gizlyk
Una explosión del pasado aquí.
Un artículo muy interesante. Sonido y agradable concepto ... pero me temo que hay un error en el software distribuido, y no es bueno dejar errores alrededor.
Método GetData. El código distribuido es:
El código corregido debería ser:
El índice del array empieza en 0 y el último elemento tiene índice (m_data_len - 1) en vez de m_data_len, ¿no?
rf, sección Trabajar con indicadores personalizados de https://www.mql5.com/es/articles/261
Gracias por el artículo. Lo estoy estudiando para alejarme de los indicadores convencionales inestables.
Pero para mi es importante poder visualizar los indicadores en un gráfico. ¿Alguien lo ha implementado?
Se ha publicado el artículo Cómo transferir la parte de cálculo de cualquier indicador al código del Asesor Experto:
Autor: Dmitriy Gizlyk
¿Por qué es necesario transferir los cálculos de un indicador a un Asesor Experto?
Muchas personas utilizan indicadores sin EA en absoluto.
Usted puede simplemente dividir los cálculos en etapas.
Por ejemplo, así:
¿Por qué tengo que transferir los cálculos de un indicador a un Asesor Experto?
Muchas personas utilizan indicadores sin un Asesor Experto en absoluto.
Usted puede simplemente dividir los cálculos en etapas.
Por ejemplo, así:
Debido al hecho de que el mecanismo regular de indicadores funciona a través de un muñón, por ejemplo: https://www.mql5.com/ru/forum/372612 y esto se debe a su aplicación.
Con el aumento de la complejidad de los indicadores, mi Asesor Experto "empantanado". En el probador me di cuenta de muchos otros errores en el trabajo de los indicadores, pero yo no los describen, porque es inútil.
No he entendido su idea.
Debido a que el mecanismo indicador regular funciona a través del muñón , por ejemplo: https://www.mql5.com/ru/forum/372612 y esto se debe a su aplicación.
Con la creciente complejidad de los indicadores, mi Asesor Experto "se empantanó". En el probador, me di cuenta de muchos otros errores en el trabajo de los indicadores, pero yo no los describen, porque es inútil.
No entendí su idea.
Para empezar, su código no es del todo correcto.
Yo lo escribiría así:
Además, como las funciones de los indicadores deben ejecutarse con el mínimo retardo, los procesos complejos (carga de históricos, cálculos complejos, etc.)
se dividen en varias partes, volviendo a
OnCalculatevalor cero (return(0) ), es decir, el indicador está en la fase inicial hasta que realizamos todas las acciones necesarias con retrasos mínimos en cada fase.
В архитектуре MetaTrader 5 организован асинхронный доступ к значениям индикаторов. Иными словами, при получении хэндла индикатора он прикрепляется к графику. Далее этот индикатор производит свои расчеты вне потока советника. Они взаимодействуют лишь на этапе передачи данных, аналогично получению данных тайм-серий. Поэтому и время на выполнение этих операций сопоставимо.¡¿Así que estás diciendo que será más rápido en la vida real?! -Porque en la realidad será así. Experto en una pista, indicador en otra (y tal vez incluso en diferentes núcleos). Esto es sólo si lo pones en el procesamiento en serie, resulta más lento - pero esto es sólo una limitación artificial debido a la estrategia probador.