[¡Archivo!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no lo dejéis pasar. No podría ir a ningún sitio sin ti - 2. - página 359

 
sergeev:
todo el mundo
Me refiero a los normales.
 
drm1:
Me refiero a lo normal

¿Qué es lo normal?
 
Zhunko:
Lo estás expresando de una manera divertida... Muéstrame el código que funcionará con ticks, posiciones de apertura/cierre sin función de inicio. ¿El código de un EA completo sin la función strat?

En realidad, a juzgar por tu cartera, ¡no me corresponde a mí explicarte nada!) Permítanme primero explicar mi comprensión de la función start(), y por qué no me gusta la idea de organizar un ciclo en ella. Creo que la función start() es un procedimiento, asignado al usuario (o más bien a su programa - Expert) desde el sistema de interrupción interno del programa terminal. Y para hacer un bucle dentro de esta interrupción o para organizar su propio sistema de interrupción - bueno, probablemente no puedo hacerlo. Aunque, los especialistas en MQ escriben en la documentación, por favor - bucle while () en sus manos, bucle como desee en start(). Y quién nos impide hacer un bucle en init(), a través del mismo bucle vaille, ¡y nadie nos va a jalar desde fuera! Todas las variables y constantes son accesibles, todas las funciones funcionan de la misma manera. ¿Quiere obtener un presupuesto, con qué periodicidad? Bien, aquí hay un código de ejemplo, con una periodicidad de 5 segundos obtendrá una cotización fresca, obtenida del último tick y guardada en el array Close [0]:

//-------------------------------------------
int init()
{
bool end;
while(!end)
{
Sleep (5000);
Print ("Cotización = ", Close[0]);
}
return(0);
}
//--------------------------------------------
int start() {return(0);}
//--------------------------------------------
int deinit() {return(0);}
//--------------------------------------------

En MT5, por cierto, los desarrolladores ya han dado a los usuarios algunas interrupciones, ¡por lo que les doy las gracias humanamente! No puedo abstenerme de citar:

En MQL5 varios tipos de eventos pueden contener funciones de manejo predefinidas

OnTick - recepción de un nuevo tick;

OnTimer - evento del temporizador;

OnTrade es un evento comercial;

OnChartEvent - eventos de entrada de teclado y ratón, eventos de movimiento del objeto gráfico, evento de finalización de edición de texto en el campo de entrada del objeto LabelEdit;

OnBookEvent - evento de cambio de estado de la profundidad del mercado.


 
Vinin:

¿Qué es lo normal?
funcionar, el convertidor estándar no funciona de ninguna manera
 
drm1:
funcionar, el convertidor estándar no funciona de ninguna manera

Funciona para todos.
 
sergeev:

todo el mundo trabaja.
Menos mal que todo el mundo está trabajando, así que voy despacio.
 
Grein:

En realidad, a juzgar por tu cartera, ¡no me corresponde a mí explicarte algo!) Permítanme primero explicar mi comprensión de la función start(), y por qué no me gusta la idea de organizar un ciclo en ella. Creo que la función start() es un procedimiento, asignado al usuario (o más bien a su programa - Expert) desde el sistema de interrupción interno del programa terminal. Y para hacer un bucle dentro de esta interrupción o para organizar su propio sistema de interrupción - bueno, probablemente no puedo hacerlo. Aunque, los especialistas en MQ escriben en la documentación, por favor - bucle while () en sus manos, bucle como desee en start(). Y quién nos impide hacer un bucle en init(), a través del mismo bucle vaille, ¡y nadie nos va a jalar desde fuera! Todas las variables y constantes son accesibles, todas las funciones funcionan de la misma manera. ¿Quiere obtener un presupuesto, con qué periodicidad? Bien, aquí hay un código de ejemplo, con una periodicidad de 5 segundos obtendrá una cotización fresca, obtenida del último tick y guardada en el array Close [0]:

//-------------------------------------------
int init()
{
bool end;
while(!end)
{
Sleep (5000);
Print ("Котировка = ", Close[0]);
}
return(0);
}
//--------------------------------------------
int start() {return(0);}
//--------------------------------------------
int deinit() {return(0);}
//--------------------------------------------

Por último, léalo aquí. Sólo las funciones con periodo de espera funcionan en el Asesor Experto y en el inicio del script. Está estrictamente prohibido en todos los demás lugares.

Su código no se ajusta a los estándares de MQL4. Además, en alguna parte se escribió que el tiempo de espera en las funciones ininit y deinit durante una llamada al sistema está limitado a 2,5 segundos. Entonces, la función se termina forzosamente.

 

Expertos, ¡un consejo! ¿Cómo aplicar esto en la vida? Estoy trabajando con el indicador "Bandas de Bollinger", necesito activar el umbral después de cruzar la línea del medio.

1. Todo según la norma, si el precio es < la línea inferior, entonces Bay

2. Si > la línea superior, entonces Vender

Si el precio rompiera la línea del medio, entonces se activaría el TrailingStop

¡Atención a la pregunta! ¿Cómo asocio el umbral del trailing stop con la línea del medio?

 
Top2n:

Expertos, ¡un consejo! ¿Cómo aplicar esto en la vida? Estoy trabajando con el indicador "Bandas de Bollinger", necesito activar el umbral de disparo después de cruzar la línea del medio.

1. Todo según la norma, si el precio es < la línea inferior, entonces Bay

2. Si > la línea superior, entonces Vender

Si el precio rompiera la línea del medio, entonces se activaría el TrailingStop

¡Atención a la pregunta! ¿Cómo asocio el umbral del trailing stop con la línea del centro?


Lo primero que me vino a la mente:
Si la línea inferior está en 20 y la superior en 40, entonces la línea que está exactamente en el medio entre ambas, ¿en qué nivel se ubicará?

Estoy seguro de que responderá rápidamente, a nivel 30. Y ahora, con suerte, puedes encontrar cómo calcularlo todo. Aunque... tal vez encuentre otro método... :)

 
Top2n:

Expertos, ¡un consejo! ¿Cómo aplicar esto en la vida? Estoy trabajando con el indicador "Bandas de Bollinger", necesito activar el umbral de disparo después de cruzar la línea del medio.

1. Todo según la norma, si el precio es < la línea inferior, entonces Bay

2. Si > la línea superior, entonces Vender

Si el precio rompiera la línea del medio, entonces se activaría el TrailingStop

¡Atención a la pregunta! ¿Cómo se ajusta el umbral del trailing stop a la línea central?



1. "Todo de acuerdo con la norma, si el precio se puso < la línea de fondo, entonces Wow" - sí, y si se puso más alto, entonces comprar depósito... :-))) Para empezar, aprende a leer y escribir -Bay- que es del Aglitsky por ahora... De alguna manera, estoy seguro de que no es un error de imprenta...

2. Tienes por Bollinger - tienes acceso directo a sus límites superior e inferior... o más bien a sus valores... obtener esos valores.

"Si la línea inferior está en 20 y la superior en 40, la línea que está exactamente a medio camino entre ambas, ¿en qué nivel se situará?" -

como la gente ya le ha recomendado...

Suma estos valores y divídelos por dos - como resultado, tienes la línea media de este indicador - este es el valor y teje el umbral para encender la red de arrastre.

P.D. Artem, perdón por "corregir" el inicio de tu respuesta - me gustó demasiado ... y después de mi comentario sobre esta pregunta - necesitaba terminar este "umbral de trailing stop a la línea media ".