Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 970

 
Amigos. Juntos hemos trabajado para escribir el algoritmo del Asesor Experto que tenía en mente,
y muchas gracias. Se podría decir que todos lo hicimos)
Funciona, los resultados son los esperados y podemos seguir adelante.
---
Pregunta sobre las pruebas en el modo OHLC M1.
¿Es realista programar el Asesor Experto para que los resultados de la prueba en OHLC M1 se acerquen a los de "todos los ticks"?
He buscado en todo el foro, hay explicaciones claras de por qué no coincide el modo OHLC M1 con la generación de 4 puntos de referencia
con los modos basados en el tic.

Pero no he encontrado ninguna recomendación, ejemplos de cómo programar esta condición para que sea similar a OHLC M1, y ¿es posible en absoluto?

Me gusta el modo OHLC M1 únicamente por la velocidad de los cálculos.
Características específicas de la EA. (Si es importante)
Establece órdenes de stop con SL y TP fijos, muchas veces modifica las órdenes a nuevos niveles de precios, esperando que se activen.
No hay indicadores, sólo contadores de precios.
Si no es posible simular el modo "OHLC M1", ¿quizás sería mejor utilizar el modo "Por precios de apertura"?
Al final, me gustaría entender qué modo es razonable utilizar, para que los cálculos sean rápidos y
Me gustaría saber qué debo utilizar para hacer los cálculos con rapidez y minimizar las divergencias entre los modos técnicos.

Hasta ahora he obtenido la siguiente divergencia en el mismo tipo de configuración.

"OHLC M1"; 8 años; 1681 operaciones. (inicialmente utilicé este método)

OHLC M1

"Precios de apertura"; 8 años; 1655 operaciones.

Sólo precios de apertura

"Todas las garrapatas" 8 años; 1676 operaciones.

todos los tics

El algoritmo parece ser robusto, e incluso podría mejorar los resultados de cada método por separado,

pero perdería versatilidad y parecería redundante.




 
vladzeit:


En resumen, como ejemplo, si usted tiene posiciones de compra TP establecidas en 1,16000, entonces "todos los ticks" se cerrarán aproximadamente a este precio. OHLC cerrará en ese precio por encima de 1,16000 y eso puede ser una diferencia bastante grande, por lo que OHLC siempre mostrará mejores resultados. La misma historia con "A precios de apertura".

 
Nauris Zukas:

Brevemente, como ejemplo, si las posiciones de compra TP se establecen en 1,16000, "todos los ticks" se cerrarán aproximadamente a este precio. OHLC cerrará en el precio que estaba por encima de 1,16000 esto y puede ser una diferencia bastante grande, por lo que siempre OHLC mostrará mejores resultados. La misma historia con "A precios de apertura".

Nauris, gracias. Entiendo (puedo adivinar) por qué los resultados difieren de un método a otro. Pero lo que quiero entender es esto:

Si el probador simuló el método "OHLC M1", entonces cómo repetir el mismo método en el Asesor Experto programáticamente.

El probador lo reprodujo de alguna manera...

 
vladzeit:

Nauris, gracias. Entiendo (puedo adivinar) por qué los resultados difieren de un método a otro. Pero lo que quiero entender es esto:

Si el probador simuló el método "OHLC M1", entonces cómo repetir el mismo método en el Asesor Experto programáticamente.

El probador lo ha reproducido de alguna manera...

Créeme, no necesitas tanta precisión, optimiza el resultado y ejecútalo en todos los ticks, la mejor opción...

Si no está a 3-4 pips de distancia, no habría mucha diferencia si cerrara con dos pips más o menos...

Reproducir algo en el Asesor Experto no hará que tu tiempo vaya más rápido, sino al contrario, lo ralentizará...

 
xxz:

Créeme, no necesitas tanta precisión, optimiza el resultado y ejecútalo en todos los ticks, la mejor opción...

Si no estás a 3-4 pips, entonces no hay gran diferencia si cerraste con dos pips más o menos...

Reproducir algo en el Asesor Experto no acelerará el tiempo, sino que, por el contrario, lo ralentizará...

Gracias. Si nadie va a continuar la forma de aplicar el método"OHLC M1", sólo voy a ser condenado a utilizar su consejo)))

 
vladzeit:

Gracias. Si nadie va a continuar el método de"OHLC M1" voy a estar condenado a utilizar su consejo))))

Si no se te ocurre una idea especialmente brillante, la diferencia está en el sentido de los ticks, en el trading real en los ticks la vela puede abrir, bajar, subir, cerrar, y si la vela es grande, puedes comprar en la parte inferior y tomar un beneficio en el cierre, en la simulación la vela forma una apertura, superior, inferior, cierre, digamos que la apertura y la parte superior coinciden con la parte inferior y el cierre también, entonces en una vela así, puedes comprar pero no tomar un beneficio, y si el mercado ha bajado, entonces aquí tienes una orden de pérdida colgante ...

... de ahí la divergencia...

 
vladzeit:

Gracias. Si nadie continúa en la forma de aplicar el método"OHLC M1", sólo voy a ser condenado a tomar su consejo)))

El método habla por sí mismo. Utilice sólo los precios OHLC de todas las barras de minutos incluidas en la barra actual en su EA.
 
vladzeit:

Gracias. Si nadie continúa sobre cómo implementar el método"OHLC M1", sólo estaré condenado a seguir su consejo)))

Abrir/cerrar en el Asesor Experto no por niveles de precio sino por Apertura. Hay una señal de apertura/cierre, espera a la siguiente vela de 1M y abre/cierra.

 
Artyom Trishkin:
El método habla por sí mismo. Utilice en su EA sólo los precios OHLC de todas las barras de minutos incluidas en la barra actual.

Artyom, lo he probado. En todas las condiciones, apertura y modificación de órdenes he puesto una condición "en el nacimiento de una nueva barra" a través de la función booleanaisNewBar()

así:

if (Buys==true )
   {
   int count_buy_stops=0;   int count_pos_buy=0;
   CalOrders_Buy(count_buy_stops);   CalPosition_Buy(count_pos_buy);
   if(count_buy_stops==0 && count_pos_buy==0) && isNewBar())
   {
   BuyStop();
   }
   }

La propia funciónisNewBar( )de los artículos de ejemplos y code.base.

bool isNewBar()
  {
//--- в статической переменной будем помнить время открытия последнего бара
   static datetime last_time=0;
//--- текущее время
   datetime lastbar_time=(datetime)SeriesInfoInteger(Symbol(),Period(),SERIES_LASTBAR_DATE);
   if(last_time==0)//--- если это первый вызов функции
   {
   last_time=lastbar_time;    //--- установим время и выйдем 
   return(false);
   }
   if(last_time!=lastbar_time)//--- если время отличается
   {
   last_time=lastbar_time;    //--- запомним время и вернем true
   return(true);
   }
//--- дошли до этого места - значит бар не новый, вернем false
   return(false);
  }

Parece que funciona y coloca las órdenes y las modifica sólo en un nuevo bar, pero por alguna razón hay una discrepancia.

Hay una discrepancia entreOHLC en M1 que he aplicado sinisNewBar() y "todos los ticks" con la funciónisNewBar().

Esperaba que al aplicarisNewBar() en "todos los ticks" obtendría el mismo resultado queOHLC en los precios actuales.

Entonces, no entiendo si debo haber metido la pata en el código o bien no entiendo correctamente el modoOHLC y espero que sea imposible.

No sé dónde cavar.

Artyom, cuéntame más, si no es difícil.

La orden puede establecerse y modificarse en una nueva barra, pero el SL y el TP (en el probador) funcionarán de todos modos dentro de la barra antigua?

 
Intentado y fallado en el intento de convertir de lote fijo a lote porcentual. ¿Alguien puede aconsejar sobre el código completo?
Archivos adjuntos:
Experiment.mq5  38 kb