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

 
Vladimir Karputov:

Ну хотя бы пример видео, которое не вставляется дадите?

Вот обычная ссылка.

https://www.youtube.com/watch?time_continue=5&v=bNxNrMK5T6Q

Вот ссылка в формате видео (через кнопку на панели инструментов со значком ютуба)


 
Sergey Savinkin:

Вот обычная ссылка.

https://www.youtube.com/watch?time_continue=5&v=bNxNrMK5T6Q

Вот ссылка в формате видео (через кнопку на панели инструментов со значком ютуба)




Вы точно делаете что-то не по инструкции.

 
Vladimir Karputov:

))))

Вот и я о том же. Может, проблема в браузере. Если кто-то с этой проблемой сталкивался - подскажет. )

 
Sergey Savinkin:

Вот обычная ссылка.

https://www.youtube.com/watch?time_continue=5&v=bNxNrMK5T6Q

Вот ссылка в формате видео (через кнопку на панели инструментов со значком ютуба)


Самая разжёванная инструкция: Как вставить видео на форум

 
Vladimir Karputov:

Самая разжёванная инструкция: Как вставить видео на форум

Умею я вставлять видео, но не все видео вставляются.


 
ISL:

Помогло)Спасибо!

Сейчас пересмотрел... оно точно помогло? )))

Функция считывает дату открытия / закрытия текущего дневного бара. Но при смене даты меняется бар. Значит, правильный код должен выглядеть так:

int Date_Last_Bar=0;   // дата последнего часового бара
MqlDateTime stime;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
void Time_00(int day,int Param)
  {
   Date_Last_Bar=day;
   double open=iOpen(NULL,PERIOD_D1,Param);
   double close=iClose(NULL,PERIOD_D1,Param);
   Print(open-close);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnInit()
  {
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
void OnTick()
  {
   TimeToStruct(TimeCurrent(),stime);
   if(stime.day!=Date_Last_Bar)
     {
      if(Date_Last_Bar==0) // это первый запуск или перезапуск, надо учесть
        {
         Time_00(stime.day,0); // смотрим текущий бар, от сегодняшнего 00:00.
         // здесь процедура первой инициализации, если нужно
        }
      else
        {
         Time_00(stime.day,1); // бар сменился, когда робот уже работал, т.е. наступило 00:00,
         // и нужно считывать открытие / закрытие вчерашнего бара
        }
     }
  }
 
Sergey Savinkin:

Сейчас пересмотрел... оно точно помогло? )))

Функция считывает дату открытия / закрытия текущего дневного бара. Но при смене даты меняется бар. Значит, правильный код должен выглядеть так:

Я так и сделал)

      open[i]=iOpen(Symbols[i],PERIOD_D1,1);
      close[i]=iClose(Symbols[i],PERIOD_D1,1);
      c_o[i]=(close[i]-open[i])/close[i];

Только не закидывал int Param

Сделал сразу вчера!

 

Здраствуйте

подскажите пожалуйста как можна правильно заменить выражение

trend[i] = (i<Bars-1) ? (price>amax[i+1]) ? 1 : (price<amin[i+1]) ? -1 : trend[i+1] : 0;

операторами (if и else)

спасибо

 
Mikhail Rudyk:

Здраствуйте

подскажите пожалуйста как можна правильно заменить выражение

trend[i] = (i<Bars-1) ? (price>amax[i+1]) ? 1 : (price<amin[i+1]) ? -1 : trend[i+1] : 0;

операторами (if и else)

спасибо

Вроде так

// trend[i] = (i<Bars-1) ? ( (price>amax[i+1]) ? 1 : (price<amin[i+1]) ? -1 : trend[i+1] ) : 0;
if(i<Bars-1) {
 if(price>amax[i+1]) 
  trend[i] = 1;
  else {
  if(price<amin[i+1])
   trend[i] = -1;
  else
   trend[i] = price<amin[i+1];
  }
} else {
  trend[i] = 0;
}
 
Mikhail Rudyk:

Здраствуйте

подскажите пожалуйста как можна правильно заменить выражение

trend[i] = (i<Bars-1) ? (price>amax[i+1]) ? 1 : (price<amin[i+1]) ? -1 : trend[i+1] : 0;

операторами (if и else)

спасибо

Никак. Потому, что это выражение написано с ошибкой.

Как читается оператор ?:

присвоить переменной при выполненном условии значение1 иначе значение2

Составной оператор выглядит так:

int x;
x = a == 3 ? 1 : a == 2 ? 7 : 9;
int x;
if(a == 3)
 x = 1;
else if(a == 2)
 x = 7;
else 
 x = 9;

При a==3 присвоить переменной х значение 1 иначе при а == 2 присвоить переменной х значение 7 во всех иных случаях присвоить переменной х значение 9;