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

 
Buenas tardes a todos. No soy un buen programador, así que no entiendo algunas cosas sencillas. Tengo este problema: tengo que elegir entre las órdenes cerradas en mi EA la última cerrada por SL.
 
Igor Makanu:

no se pueden complicar las tareas sencillas ... dijo Me, que envolvió ociosamente la nueva función de definición de la barra en una clase ))))

al grano:


la idea es clara, pero es más correcta >= con toda probabilidad

if((timer1++)>=Timer1) { timer1 = 0; Print("Timer №1"); }
if((timer2++)>=Timer2) { timer2 = 0; Print("Timer №2"); }
 
leonerd:

la idea es clara, sólo que más correcta >= con toda probabilidad

no lo comprobó, desimprima las variables inmediatamente ver si por 1 error, entonces o su versión, o no cero, y asignar valores =1 a los contadores timer1 y timer2

como opción, también puedes probarlo así:


if((++timer1)>=Timer1) { timer1 = 0; Print("Timer №1"); }
if((++timer2)>=Timer2) { timer2 = 0; Print("Timer №2"); }
 
Igor Makanu:

no lo comprobó, desanclar las variables inmediatamente ver si por 1 error, entonces o su versión o no cero, y asignar valores =1 a los contadores timer1 y timer2

Sin embargo, el método no garantiza una periodicidad determinada. La ejecución del código en un temporizador puede superar el tiempo del otro temporizador.

 
leonerd:

Sin embargo, el método no garantiza una periodicidad determinada. La ejecución del código en un temporizador puede superar el tiempo de otro temporizador.

¿Dónde se consigue un temporizador en tiempo real garantizado en los sistemas Windows? - Si el sistema está sobrecargado, habrá retrasos.

en MQL - si sobrecargas OnTick() con cálculos complejos, entonces hasta que no se ejecute el evento OnTimer() no ocurrirá.

Es decir, incluso MT4 es suficiente para cálculos complejos, si no entonces MT5 - realmente funciona a nivel de C++, pero la falta de rendimiento suele estar relacionada con un mal algoritmo de cálculo - usa el perfilador, no hagas cálculos cada tick donde no hay nada que calcular hasta que aparezca una nueva barra, no calcules todo el historial, si usas señales en las últimas 1 a 3 barras - calcula sólo 100 barras ... hay muchas variantes

HH: trabajar con objetos gráficos ralentiza todo, trabajar con cadenas también reduce el rendimiento - en teoría, pero últimamente no lo he notado, al igual que trabajar con funciones de conversión de tiempo - se ve inequívocamente en el perfilador, donde se gasta mucho tiempo - intentamos usar este fragmento de código con menos frecuencia

Профилирование кода - Разработка программ - MetaTrader 5
Профилирование кода - Разработка программ - MetaTrader 5
  • www.metatrader5.com
Профилирование — это сбор характеристик программы во время ее выполнения. При профилировании замеряется время выполнения и количество вызовов отдельных функций и строк в коде программы. При помощи этого инструмента программист может найти наиболее медленные участки кода и провести их оптимизацию. Профилирование можно проводить на обычном...
 
Igor Makanu:

y ¿dónde se puede garantizar un temporizador en tiempo real en los sistemas Windows? - si el sistema está sobrecargado, habrá retrasos

lo mismo en MQL - si has cargado cálculos complejos con OnTick(), entonces hasta que no se ejecute el evento OnTimer() no ocurrirá.

Es decir, incluso MT4 es suficiente para cálculos complejos, si no entonces MT5 - realmente funciona a nivel de C++, pero la falta de rendimiento suele estar relacionada con un mal algoritmo de cálculo - utilice el perfilador, no haga cálculos cada tick donde no hay nada que calcular hasta que aparezca una nueva barra, no calcule todo el historial, si utiliza señales en las últimas 1 a 3 barras - calcule sólo 100 barras ... hay muchas variantes

HH: trabajar con objetos gráficos ralentiza todo, trabajar con cadenas también reduce el rendimiento - en teoría, pero últimamente no lo he notado, al igual que trabajar con funciones de conversión de tiempo también es un dolor - claramente todo en el perfilador es visible, donde se gasta mucho tiempo - tratamos de utilizar esta parte del código con menos frecuencia

De acuerdo, el temporizador estándar tampoco garantiza nada. Bueno, gracias, lo intentaremos.

 

Buenas tardes, queridos amigos.

¿Pueden decirme si es posible en MKL4 fijarla apertura de una posición para un símbolo en el momento de abrir una posición para otro símbolo? Tal vez tal pregunta ya se discutió, entonces dame un enlace.

Gracias.

 
novichok2018:

Buenas tardes, queridos amigos.

¿Pueden decirme si es posible en MKL4 fijarla apertura de una posición para un símbolo en el momento de abrir una posición para otro símbolo? Tal vez tal pregunta ya se discutió, entonces dame un enlace.

Gracias.

La cuestión no está totalmente formulada.
Pero en general, se puede. Pero no simultáneamente, sino secuencialmente en cualquiera de los dos casos.
 
Artyom Trishkin:
La pregunta no está formulada completamente.
Pero en general, se puede. Pero no al mismo tiempo, sino consecutivamente en cualquier caso.

Eso es genial. ¿Cómo lo describo en el código? Por ejemplo, si las condiciones son correctas y abro una posición de compra en GBP a las 9:00, abro también una posición de compra en EUR (a las 9:00).

 
novichok2018:

Genial. ¿Cómo se describe esto en el código? Por ejemplo, si las condiciones se han desarrollado a las 9:00 y se abre una COMPRA en la libra, entonces también se abre una COMPRA en el euro (a las 9:00).

¿Cómo se abre? ¿Cuál es el motivo de la apertura?
Razón de la queja: