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

 
Alexey Viktorov #:

Copia los ticks de los últimos 20 segundos, obtén la diferencia de los valores extremos del array y compárala con la misma constante.

Buenos días, Alexey! ¿Y si primero inicializamos el temporizador durante 20 segundos y comprobamos la diferencia de los valores extremos sin un array? ¿No es esta opción más fácil?

Saludos, Vladimir.

 
MrBrooklin #:

Buenos días, Alexey! ¿Y si inicializamos primero el temporizador durante 20 segundos y comprobamos la diferencia de los valores extremos sin una matriz? ¿No sería más fácil?

Saludos, Vladimir.

Todo esto es muy interesante, por supuesto, pero me gustaría ver una "hoja de trucos" para un colonizador 😁.
 
vitaliy zamkovoy #:
Todo esto es muy interesante, por supuesto, pero me gustaría ver una "hoja de trucos" para el niño grande 😁.

Es muy pronto para hablar de la chuleta. Yo también estoy aprendiendo a programar, por eso hago las preguntas. Quizás algún día también me sea útil.

Saludos, Vladimir.

 
MrBrooklin #:

Buenos días, Alexey! ¿Y si inicializamos primero el temporizador durante 20 segundos y comprobamos la diferencia de los valores extremos sin una matriz? ¿No sería más fácil?

Saludos, Vladimir.

Puede ser más fácil, pero la tarea no es comprobar cada 20 segundos, sino cada tick desde el precio actual 20 segundos hacia atrás.

vitaliy zamkovoy #:

Esto debe hacerse no una vez, sino como un ciclo continuo del Asesor de Expertos.

(Un trozo de código si se puede ...)

En OnTick se ejecutará cada tick de forma continua.

Un trozo de código si se puede, pero va en contra de mis principios. No escribo hojas de trucos para dos personas. Una hoja de trucos para todos los casos ya ha sido escrito y se puede encontrar aquí.

 
Alexey Viktorov #:

Puede ser más fácil, pero la tarea no es comprobar cada 20 segundos, sino cada tick desde el precio actual 20 segundos hacia atrás.

En OnTick se ejecutará cada tick continuamente.

Puedo escribir un trozo de código, pero va en contra de mis principios. No escribo hojas de trucos para dos estudiantes. Una hoja de trucos para todos los casos ya se ha escrito y se puede encontrar aquí.

Ahora volveré a pedir ayuda a gente entendida, pero por favor no os distraigáis conmigo - ¡mantened los principios!
 
Si al precio actual le restamos el precio de hace veinte segundos y lo comparamos con una determinada constante para la posterior apertura de una orden, ¿cómo se puede escribir esto en el Asesor Experto?
 
vitaliy zamkovoy #:
Ahora voy a volver a pedir ayuda a gente entendida, pero tú por favor no te distraigas conmigo - ¡mantén los principios!

ok. Por favor, espere una respuesta.

 
vitaliy zamkovoy actual le restamos el precio de hace veinte segundos y lo comparamos con una determinada constante para la posterior apertura de una orden, ¿cómo se puede escribir esto en el Asesor Experto?

Mire este código:

//+------------------------------------------------------------------+
//|                                                         Test.mq5 |
//|                                  Copyright 2022, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"

//ВХОДНОЙ ПАРАМЕТР
input ushort Constanta=50; //Константа

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- create timer
   EventSetTimer(20);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- destroy timer
   EventKillTimer();
  }
//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
void OnTimer()
  {
//---
   double open_0=iOpen(_Symbol,PERIOD_CURRENT,0);
   if(open_0-SymbolInfoDouble(_Symbol,SYMBOL_BID)>Constanta*_Point)
      Print("Цена прошла вниз расстояние больше чем Константа, поэтому нужно открыть позицию SELL!");
   if(SymbolInfoDouble(_Symbol,SYMBOL_BID)-open_0>Constanta*_Point)
      Print("Цена прошла вверх расстояние больше чем Константа, поэтому нужно открыть позицию BUY!");
   Sleep(20000);
   if(open_0-SymbolInfoDouble(_Symbol,SYMBOL_BID)>Constanta*_Point)
      Print("Цена прошла вниз расстояние больше чем Константа, поэтому нужно открыть позицию SELL!");
   if(SymbolInfoDouble(_Symbol,SYMBOL_BID)-open_0>Constanta*_Point)
      Print("Цена прошла вверх расстояние больше чем Константа, поэтому нужно открыть позицию BUY!");
   Sleep(20000);
   if(open_0-SymbolInfoDouble(_Symbol,SYMBOL_BID)>Constanta*_Point)
      Print("Цена прошла вниз расстояние больше чем Константа, поэтому нужно открыть позицию SELL!");
   if(SymbolInfoDouble(_Symbol,SYMBOL_BID)-open_0>Constanta*_Point)
      Print("Цена прошла вверх расстояние больше чем Константа, поэтому нужно открыть позицию BUY!");
   Sleep(20000);
  }
//+------------------------------------------------------------------+
Saludos, Vladimir.
 
MrBrooklin #:

Mira este código:

Saludos, Vladimir.
Lamentablemente, los próximos dos días no podré comprobarlo, pero ¡acepta mi agradecimiento!
 
vitaliy zamkovoy #:
Desgraciadamente, no podré comprobarlo durante los próximos dos días, pero, por favor, ¡acepte mi agradecimiento!

Gracias, pero tenga en cuenta que esto no es un código listo, sino sólo la dirección de mi pensamiento. Puede estar equivocado. Tiene que comprobarlo. Puede considerar otra opción - eliminar OnTimer y probar el mismo código en OnTick(). En resumen, pruébalo.

Saludos, Vladimir.