Как получить цену от 5 секунд назад? - страница 4

 
MrBrooklin #:

Сейчас нужно было просто ответить, что без использования массива ничего не получится и на этом точка!


Можно и без массива, но какая-нибудь коллекция по-любому потребуется.
 
Alexey Viktorov #:

Нельзя пропустить. Задача поставлена так, что цена нужна здесь и сейчас не имея никаких прошлых данных…

Как нельзя?  Какая разница когда запущен МТ5.

Он же делает это для скальпера, а не HFT торговли.

 
Sergey Gridnev #:

Можно и без массива, но какая-нибудь коллекция по-любому потребуется.

Сергей, так автору данной темы и требуется, чтобы без массива. Можете код показать, как это реализовать? А то все говорят, что можно, но никто код ещё не показал.

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

 
MrBrooklin #:

Валерий, мне это очень интересно в целях самообучения. А можете код показать?

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

Если про текстовые переменные, то лучше у Федосеева статью прочитать.

А сдвиг, как  Владислав предложил, А0=Bid;  A1=A0; A2=A1;

Когда малая размерность действий иногда пользую, хотя это считается плохим тоном))) 

Вообще, если без условий, то конечно, 5 секундный таймер и ОнТик

В ОнТик Pr=Bid;

В ОнТаймер Pr5sBack=Pr;

Переменные глобальные. Но в 4ке мы время этой цены не узнаем, в 5ке да, или нужно еще и время запоминать в ОнТик.

И мы каждые 5 секунд будем знать последнюю цену. Ну или с 5ю, вернее с 6ю переменными каждую секунду.

Основы программирования на MQL5 - Строки
Основы программирования на MQL5 - Строки
  • www.mql5.com
В статье рассматривается всё, что можно делать со строками в языке MQL5. Статья должна быть интересна в первую очередь новичкам, приступившим к изучению программирования на MQL5. Опытным программистам представляется хорошая возможность подытожить, обобщить и систематизировать свои знания.
 
Valeriy Yastremskiy #:

Последнюю цену не получить никак, не запоминая все) Мы не знаем какая цена будет последней) Цена в переменной И событие таймера мы поймаем последнюю цену, но это  не 5 секунд назад точно. И что делать если пропуск 12 секунд) 

Это школьная задача, запоминаем старую цену, получаем текущую(последнюю) цену. Используем старую цену и присваиваем новую.

Если цена не меняется в течение 5сек. то они будут равны. 

 
Petros Shatakhtsyan #:

Как нельзя?  Какая разница когда запущен МТ5.

Он же делает это для скальпера, а не HFT торговли.

Нельзя согласно поставленной задаче в первом сообщении темы.

Я посмотрел его предыдущую тему, да если в советнике то можно, вот так. 

/************************Expert tick function************************/
void OnTick()
 {
  MqlTick tick;
  static datetime time = 0;
  static double oldPrice = 0.0;
  SymbolInfoTick(_Symbol, tick);
  if(tick.time-time >= 5)
   {
    oldPrice = tick.bid;
    time = tick.time;
   }
  Comment(time, "\n",
          "p =  ", DoubleToString(tick.bid-oldPrice, _Digits), "\n",
          "\n"
         );
 }/******************************************************************/
 
Alexey Viktorov #:

Нельзя согласно поставленной задаче в первом сообщении темы.

Я посмотрел его предыдущую тему, да если в советнике то можно, вот так. 

Прелесть программирования в том, что бывают много возможностей.

А я предлагаю так:

   double oldbid, newbid;
   bool begin=true; 

int OnInit()
{
   EventSetTimer(5);

   return(INIT_SUCCEEDED);
  }
void OnTick()
  {
   
  }
//+------------------------------------------------------------------+
void OnTimer()
{
  newbid=SymbolInfoDouble(_Symbol,SYMBOL_BID);
  
  if(begin) { oldbid=newbid; begin=false; return; }
  
  // используем oldbid
  
 //Print(oldbid,"   ", newbid, "   ", TimeCurrent());
  
  oldbid=newbid;
    
}
 

Нужна цена на 5 сек назад в любой момент времени или дискретно?

Если дискретно - таймер годится. Если непрерывно - массив (кольцевой буфер) или копирование тиков.

 
Petros Shatakhtsyan #:

:)

А почему все думают что в течение 5 сек. цена должна меняться хоть один раз. Она может не меняться и в течение минуты. 

И поэтому самый простой и быстрый вариант предлагал Ivan Butko  2022.11.10 04:46  

Благодарю от души. Очень сильная мотивация изучать язык дальше)

 
JRandomTrader #:

Нужна цена на 5 сек назад в любой момент времени или дискретно?

Если дискретно - таймер годится. Если непрерывно - массив (кольцевой буфер) или копирование тиков.

Правильно. Если надо получить после каждого (очередного) тика, то это другой пример.

Прежде чем использовать какой-то метод, надо и еще выяснить  с точки зрения торговли какой метод повышает прибыльность ?  

Причина обращения: