Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 1547

 
SGarnov:

Número de paradas seguidas en un par de divisas.

Creo que para entender el historial, el Asesor Experto etiquetó inicialmente las órdenes con ID, pero no las encontró en el historial, pensé que OrderMagikNumber() las buscaría. Tal vez, por el hecho de que en el historial, el EA deja de "ver" paradas de diferentes pares de divisas? No he tratado de trabajar con un par de divisas y será inútil.

¿Tengo que volver a exponer el código fuente? Todo lo que necesita hacer es corregir "la búsqueda de las operaciones de parada de la historia y hacer que se añade a la toma recién colocado".

Y si hay más de dos stops en un par, ¿cómo se reanuda el trabajo del EA en este par?

Y por cierto OrderMagicNumber() establece el EA y las órdenes colocadas manualmente sin un mago
 
MakarFX:

Y si hay más de dos stops en un par seguidos, ¿cómo se reactiva el EA en ese par?

Lo hago con un péndulo nuevo, que yo mismo pongo.
 
SGarnov:
Unnuevo péndulo, que puse yo mismo.
¿Tengo que sumarle los puntos de las pérdidas anteriores o un nuevo ciclo de conteo de pérdidas?
 
MakarFX:
¿Es necesario añadir puntos de pérdidas anteriores o de un nuevo ciclo de pérdidas?

No. No es necesario añadir los anteriores. sólo cuando el EA empieza a funcionar.

El Asesor Experto siempre implementará sólo 4 variantes de eventos, si el coeficiente de Stop Loss es 2.

A) Take profit + 1 stop, el Asesor Experto dejará de funcionar

B) Toma + 1 parada, el EA dejará de funcionar

C) La toma + 2 deja de funcionar el EA

D) 3 paradas EA deja de funcionar

 
SGarnov:

Buenas tardes. Ayuda con el EA. De acuerdo con la estrategia, si un stop se dispara, entonces el EA debería añadir (el número de puntos) a la siguiente toma establecida
del historial por ID, pero no lo hace por alguna razón.

¿Qué es lo que falla en el código?

Si se quiere asegurar un beneficio mínimo, basta con añadir el spread al stop y el take profit a algún valor. Más precisamente, la cantidad de series aritméticas * spread (cuántos spreads se pierden, por cuánto se aumenta). Eso sí, no aumente el rango mucho más que el diario.

La mejor opción - en OrderMagic o Comentario, guardar el valor inicial de la parada en puntos, o el número de fallos en una fila. En general, el Asesor Experto debería recordar todas sus órdenes/posiciones y no interrogar al terminal (y al servidor) innecesariamente

 
Maxim Kuznetsov:

Para que funcione con un beneficio mínimo, basta con añadir el spread tanto al stop como a la toma. Más precisamente, la cantidad de series aritméticas * spread (cuántos spreads se pierden, por cuánto se incrementan). Eso sí, no aumente el rango mucho más que el diario.

La mejor opción - en OrderMagic o Comentario, guardar el valor inicial de la parada en puntos, o el número de fracasos en una fila. En general, el Asesor Experto debería recordar todas sus órdenes/posiciones y no interrogar al terminal (y al servidor) innecesariamente

En cuanto al código, debería, pero no lo veo en el historial, ¿puedes ayudar?
 

Pido ayuda a la comunidad...
¿Cómo declarar y crear objetos globales MQL5 correctamente?

Si lo hago así:

int OnInit()
{
   CIsNewBar* NB_M1=new CIsNewBar(_Symbol,PERIOD_M1);  // Эта строка потом будет в цикле для разных символов
}

void OnTick()
{
    if (NB_M1.IsNewBar())  // (1) Если появился новый бар M1
        {....}
    ......
}

El compilador se queja de la línea en OnTick(): 'NB_M1' - identificador no declarado, lo cual es lógico, porque se crea una variable local en OnInit().

Si insertas la declaración global antes de OnInit():

CIsNewBar* NB_M1;

compila sin errores y funciona de forma experta. Parece que el objeto se crea dos veces - durante la declaración global y en OnInit().
Pero el compilador tiene esta advertencia

la declaración de 'NB_M1' oculta la variable global -> por línea en OnInit()

ver declaración anterior de 'NB_M1'

¿Significa que se crea una variable local (dentro de una función) en OnInit() que oculta una variable global con el mismo nombre?
Y si es así, ¿cómo puede esta variable local ser "vista" por otra función, OnTick() ?




 
SGarnov:

No. No es necesario añadir los anteriores. sólo cuando el EA empieza a funcionar.

El Asesor Experto siempre implementará sólo 4 opciones, si el valor del Stop Loss es igual a 2.

A) Tomar

B) Toma + 1 parada

C) Toma + 2 paradas

D) 3 paradas

el asesor deja de funcionar

Ya veo, lo intentaré.
 

Todavía no sé a quién va dirigido este mensaje. No puedo crear un panel opaco. Las funciones OBJ_BITMAP_LABEL, OBJ_RECTANGLE_LABEL están diseñadas para decorar o crear nuevos objetos. Pero no tienen una opción de no transparencia. Tal vez no he estudiado bien el idioma o es un defecto de los creadores. Los objetos que se crean en primer plano aparecen a través del panel de control. Se puede utilizar el camino inverso, pero sobrecargará el Procyc. Si alguien sabe cómo hacerlo por favor que me lo diga.

 
MakarFX:
Ya veo, lo probaré.

Para hacerlo más fácil coge mi código fuente, tiene una lógica que funciona, salvo el problema que he descrito, no lo entiendo del todo, me hierve la cabeza pero no consigo sacarle partido.

Razón de la queja: