Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 1425

 
Alexey Viktorov #:

Скопировать тики за последние 20 секунд, получить разность крайних значений массива и сравнить с той самой константой.

Это должно осуществляться не единоразово, а как непрерывный цикл советника.

(Кусок кода, если можете...)

 
Alexey Viktorov #:

Скопировать тики за последние 20 секунд, получить разность крайних значений массива и сравнить с той самой константой.

Доброе утро, Алексей! А если сначала инициализировать таймер на 20 секунд и проверять разность крайних значений без массива? Такой вариант не проще?

С уважением, Владимир.

 
MrBrooklin #:

Доброе утро, Алексей! А если сначала инициализировать таймер на 20 секунд и проверять разность крайних значений без массива? Такой вариант не проще?

С уважением, Владимир.

Это всё, конечно, очень интересно, но хотелось бы посмотреть "шпаргалку" для двоечника 😁
 
vitaliy zamkovoy #:
Это всё, конечно, очень интересно, но хотелось бы посмотреть "шпаргалку" для двоечника 😁

Пока про шпаргалку говорить рано. Сам учусь программировать, поэтому и задаю вопросы. Может мне это тоже когда-нибудь пригодится.

С уважением, Владимир.

 
MrBrooklin #:

Доброе утро, Алексей! А если сначала инициализировать таймер на 20 секунд и проверять разность крайних значений без массива? Такой вариант не проще?

С уважением, Владимир.

Может и проще, но задача стоит не каждые 20 секунд проверять, а каждый тик от текущей цены на 20 секунд взад.

vitaliy zamkovoy #:

Это должно осуществляться не единоразово, а как непрерывный цикл советника.

(Кусок кода, если можете...)

В OnTick это будет выполняться каждый тик непрерывно.

Кусок кода могу, но это противоречит моим принципам. Я не пишу шпаргалки для двоечников. Одна шпаргалка на все случаи уже написана и находится тут.

 
Alexey Viktorov #:

Может и проще, но задача стоит не каждые 20 секунд проверять, а каждый тик от текущей цены на 20 секунд взад.

В OnTick это будет выполняться каждый тик непрерывно.

Кусок кода могу, но это противоречит моим принципам. Я не пишу шпаргалки для двоечников. Одна шпаргалка на все случаи уже написана и находится тут.

Я сейчас ещё раз попрошу помощи у знающих людей, но вы пожалуйста на меня не отвлекайтесь, - сохраняйте принципы!
 
Если от текущей цены отнять цену двадцатисекундной давности и сравнить с некой константой для последующего открытия ордера, - то как это прописать в советнике?
 
vitaliy zamkovoy #:
Я сейчас ещё раз попрошу помощи у знающих людей, но вы пожалуйста на меня не отвлекайтесь, - сохраняйте принципы!

ok. Ждите пожалуйста ответа.

 
vitaliy zamkovoy #:
Если от текущей цены отнять цену двадцатисекундной давности и сравнить с некой константой для последующего открытия ордера, - то как это прописать в советнике?

Посмотрите, этот код:

//+------------------------------------------------------------------+
//|                                                         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);
  }
//+------------------------------------------------------------------+
С уважением, Владимир.
 
MrBrooklin #:

Посмотрите, этот код:

С уважением, Владимир.
К сожалению, ближайшие два дня лишён возможности проверить, но примите мою благодарность!
Причина обращения: