Aprender y escribir juntos en MQL5 - página 21

 

потому что вы берете каждый раз новое время тика, и оно конечно не равно предыдущему.

En la última función tomaste la hora de inicio de la barra. así que aquí también, toma la hora de la barra, no la hora del tick.

Explícale a alguien que no entiende qué parámetro del código hay que cambiar por otro.

¿Cómo describir el tiempo de la barra y no el tiempo del tic?

 
Khomtchenko:

Explícale a alguien que no entiende qué parámetro del código hay que cambiar por otro.

¿Cómo describir la hora de la barra en lugar de la hora del tic?

Por ejemplo, https://www.mql5.com/ru/docs/series/copytime
Документация по MQL5: Доступ к таймсериям и индикаторам / CopyTime
Документация по MQL5: Доступ к таймсериям и индикаторам / CopyTime
  • www.mql5.com
Доступ к таймсериям и индикаторам / CopyTime - Документация по MQL5
 
Khomtchenko:

Explícale a alguien que no entiende qué parámetro del código hay que cambiar por otro.

¿Cómo describir el tiempo de una barra, no un tic?

Esta es una descripción popular del manejador de eventos "nueva barra"

En general, no tengas pereza de mirar a veces los artículos y el código base antes de hacer una pregunta

 

Вот тут все популярно описано Обработчик события "новый бар"

En general, no tengas pereza de mirar artículos y bases de código antes de hacer una pregunta.

Sí, he mirado allí. Empezaron por la salud y terminaron con un montón de archivos que hacen algo específico, pero yo sólo necesito una función y ya está. No pudieron darme el código del producto final. Hicieron un lío...
 

En mql4 podías averiguar en cinco líneas si la barra era nueva o no. Y ahora se han escrito un montón de archivos, no está claro dónde ponerlos, qué escribir dentro del programa...

En fin, si hay expertos, que me den un ejemplo de código, para que no sufra, y yo mismo pueda mandar a cualquiera a la biblioteca, electrónica o real.

Обработчик события "новый бар"
Обработчик события "новый бар"
  • 2010.10.04
  • Konstantin Gruzdev
  • www.mql5.com
Язык программирования MQL5 позволяет решать задачи на совершенно новом уровне. Даже те задачи, которые уже вроде имеют решения, благодаря объектно-ориентированному программированию могут подняться на качественно новый уровень. В данной статье специально взят простой пример проверки появления нового бара на графике, который был преобразован в достаточно мощный и универсальный инструмент. Какой? Читайте в статье.
 
Khomtchenko:
No lo dudo, pero lo pregunto sólo para comprobarlo: ¿alguien ha creado un mismo EA en mql4 y mql5 y ha comparado los resultados de las pruebas? Debería ser perfectamente similar si el código está bien transformado, ¿no? ¿O me equivoco?

Si la prueba es por barra y en mql5 la lógica se coloca en onTick, entonces será similar.

La única diferencia puede estar en los diferenciales. En el 5, la historia contiene los diferenciales. En la versión 4, la dispersión del probador es igual a la dispersión actual del terminal.

Si se comprueba "cada tic", parece que será aún menor, ya que los algoritmos de generación de tic son diferentes en las versiones.

 
Khomtchenko:

En mql4 podías averiguar en cinco líneas si la barra era nueva o no. Y ahora se han escrito un montón de archivos, no está claro dónde ponerlos, qué escribir dentro del programa...

En fin, si hay expertos, que me den un ejemplo de código, para que no sufra, y yo mismo pueda enviar a cualquiera a la biblioteca, ya sea a la electrónica o a la real.

Aquí, declare la variable lastbar como estática o globalmente, el array iTime globalmente

bool NewBar()
  {

   if(CopyTime(_Symbol,_Period,0,1,iTime)<1)return(false);

   if(lastbar!=iTime[0])
     {
      lastbar=iTime[0]];
      return(true);
     }
   else
     {
      return(false);
     }
  }
 

Hay un ejemplo en la página con la función isNewBar

https://www.mql5.com/ru/forum/2804/38752#comment_38752

Что меняет режим тестера "только цены открытия"?
Что меняет режим тестера "только цены открытия"?
  • www.mql5.com
Собственно, для советника работающего по onTick, в режиме "Только цены открытия" при тестировании все вычисления индикаторов и вызов функции OnTick() в экспертах происходит только один раз на бар.
 

1. No he preguntado nada sobre los resultados de probar las mismas estrategias en mql4 y mql5.

Solía entrar en el mercado en una nueva barra si las condiciones cumplen los requisitos de entrada y cerrar la posición si los indicadores muestran la señal contraria y entrar de nuevo en una nueva barra.

En mql4 he utilizado este procedimiento para entrar en una nueva barra:

void Fun_New_Bar() // Ф-ия обнаружения ..

{ // ... nueva barra

static datetime New_Time=0; // Hora de la barra actual

New_Bar=false; // no hay barra nueva

if(Nuevo_tiempo!=Tiempo[0]) // Compara los tiempos

{

New_Time=Time[0]; // Ahora la hora es

New_Bar=true; // Se captura la nueva barra

}

}

Este es el resultado de probar el robot en mql4 usando mi estrategia:

Resultados de las pruebas del EA mql4

Gracias por enviar los procedimientos para determinar el nuevo bar. Están trabajando. Hice un script que escribe Alerta en una nueva barra y lo probé en M1 para no esperar demasiado.

Pero la misma estrategia da resultados completamente diferentes (y los mismos) utilizando ambos procedimientos en mql5 Expert Advisor:

Resultados de las pruebas del asesor mql5

No me he desgarrado la camisa y pisado fuerte por nada. Quiero repetir los resultados, pero no coinciden.

Este es el aspecto aproximado de la función onStart en mql4

int inicio()

{

GetIns();

Fun_New_Bar();

si (Nueva_Barra==false) return(0);

si (Total()>0)

{

CloseSellEnd();

CloseBuyEnd();

}

si (Total()<1)

{

OpenBuy();

OpenSell();

}

return(0);

}

Lo mismo en mlq5:

void OnTick()

{

GetIns();

si (NewBar())

{

if (Total()>0) TryToClose();

si (Total()<1)

{

OpenBuy(Lots,10, "EUR/USD (Buy)",102406);

OpenSell(Lots,10, "EUR/USD (Sell)",102406);

}

}

}

GetIns para procesar los parámetros del indicador, y Total() - da el número de posiciones con la magia requerida para mql4 o con el símbolo requerido para mql5.

Ayuda.

 

Creo que he encontrado la razón de la discrepancia. No te lo vas a creer. La MT4 y la MT5 tienen un historial de cotizaciones diferente. ¡¡¡¡Parece ser ligeramente diferente y la estrategia se prueba con una gran diferencia!!!!

Aquí hay una parcela en diferentes terminales:

Si te fijas bien, hay una diferencia. ¿Una pequeña? ¿Y cuál es la diferencia entre los resultados de las pruebas de la estrategia, también pequeña?

Me pondré en contacto con los desarrolladores. ¡¡¡Qué beta!!!