Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 254

 
Alexey Kozitsyn:
Через файл, например...

если вас не затруднит,чуть чуть поподробней

 
виталик:

если вас не затруднит,чуть чуть поподробней

Для того, чтобы вытащить котировки, воспользуйтесь Copy-функциями:

https://www.mql5.com/ru/docs/series

Далее https://www.mql5.com/ru/docs/files - это ссылка на файловые операции.

Документация по MQL5: Файловые операции
Документация по MQL5: Файловые операции
  • www.mql5.com
Файловые операции - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Добрый вечер! Делаю паттерн "рельсы", но у меня ничего не выходит....посмотрите что не так? Заранее благодарен
Файлы:
jzogyr2.mq4  6 kb
 
sviter-pro:
Добрый вечер! Делаю паттерн "рельсы", но у меня ничего не выходит....посмотрите что не так? Заранее благодарен

int OnInit()
  {

   SetIndexBuffer(0,BuyTrain); SetIndexStyle(0,DRAW_ARROW,EMPTY,RazmerStrelok,coloru); SetIndexArrow(0,159); SetIndexEmptyValue(0,EMPTY_VALUE);
   SetIndexBuffer(1,SelTrain); SetIndexStyle(1,DRAW_ARROW,EMPTY,RazmerStrelok,colord); SetIndexArrow(1,159); SetIndexEmptyValue(1,EMPTY_VALUE);

   return(INIT_SUCCEEDED);
  }

А эти условия никогда не будут выполняться

   double high2=0.0,high3=0.0,high4=0.0,high5=0.0,high6=0.0,high7=0.0,size1=0.0,size2=0.0,body1=0.0,body2=0.0;

      if(Close1<Open1 && Close2>Open2
         && MathAbs(High1-High2)<=5*Point
         && high3<high2
         && high4<high2
         && high5<high2
         && high6<high2
         && high7<high2
         && body1 >= size1 * 0.7
         && body2 >= size2 * 0.7
         && size1 >= 20 * Point && size2 >= 20 * Point)
        {
         BuyTrain[i]=low[i]-OtstupStrelok*Point;
        }
      if(Close1>Open1
         && Close2<Open2
         && MathAbs(Low1-Low2)>=5*Point
         && high3>high2
         && high4>high2
         && high5>high2
         && high6>high2
         && high7>high2
         && body1 <= size1 * 0.7
         && body2 <= size2 * 0.7
         && size1 <= 20 * Point
         && size2 <= 20 * Point)
        {
         SelTrain[i]=high[i]-OtstupStrelok*Point;
        }
 

Добрый день! Задача такая - нужно определить сколько бар будет до ближайшего 01.00 часа. Я это пока сделал с циклом, но может правильнее это как-то делать с iBarShift? Может это правильнее вообще по другому, делается?

      int ShiftBar=0;
      for(int cnt=0; cnt<100; cnt++)
        {
         int hour=TimeHour(iTime(Symbol(),PERIOD_M30,cnt));
         if(hour==1)
           {
            ShiftBar=cnt;
            break;
           }
        }
        Print("ShiftBar= ",ShiftBar);
 
Nauris Zukas:

Добрый день! Задача такая - нужно определить сколько бар будет до ближайшего 01.00 часа. Я это пока сделал с циклом, но может правильнее это как-то делать с iBarShift? Может это правильнее вообще по другому, делается?

Для более безболезненного перехода в будущем на mql5 лучше сразу использовать функции применяемые в обоих языках. Для поиска количества баров лучше использовать

int  Bars(
   string           symbol_name,     // имя символа
   ENUM_TIMEFRAMES  timeframe,       // период
   datetime         start_time,      // с какой даты
   datetime         stop_time        // по какую дату
   );

А в принципе и iBarShift() справится с этой задачей лучше чем цикл.

Bars - Доступ к таймсериям и индикаторам - Справочник MQL4
Bars - Доступ к таймсериям и индикаторам - Справочник MQL4
  • docs.mql4.com
Bars - Доступ к таймсериям и индикаторам - Справочник MQL4
 
Alexey Viktorov:

Для более безболезненного перехода в будущем на mql5 лучше сразу использовать функции применяемые в обоих языках. Для поиска количества баров лучше использовать

А в принципе и iBarShift() справится с этой задачей лучше чем цикл.

Да, но проблема в найти ближайшего 01.00 часа. Как вы это определите?
int  iBarShift(
   string           symbol,          // символ
   int              timeframe,       // период
   datetime         time,            // время ?????????
   bool             exact=false      // режим
   );
 
Nauris Zukas:
Да, но проблема в найти ближайшего 01.00 часа. Как вы это определите?
int  iBarShift(
   string           symbol,          // символ
   int              timeframe,       // период
   datetime         time,            // время ?????????
   bool             exact=false      // режим
   );

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Любые вопросы новичков по MQL4, помощь и обсуждение по алгоритмам и кодам

Alexey Viktorov, 2017.07.27 13:54

Для более безболезненного перехода в будущем на mql5 лучше сразу использовать функции применяемые в обоих языках. Для поиска количества баров лучше использовать

int  Bars(
   string           symbol_name,     // имя символа
   ENUM_TIMEFRAMES  timeframe,       // период
   datetime         start_time,      // с какой даты
   datetime         stop_time        // по какую дату
   );

А в принципе и iBarShift() справится с этой задачей лучше чем цикл.

Вернёт количество баров между указанным временем и текущим, если в качестве stop_time указать время текущего бара.

Единственная проблема, я никогда не забиваю свою ячейку памяти такими ненужностями как чему будет равно полученное значение, с учётом бара с указанным временем или меньше на 1. Я просто каждый раз проверяю.

 
Alexey Viktorov:

Вернёт количество баров между указанным временем и текущим, если в качестве stop_time указать время текущего бара.

Единственная проблема, я никогда не забиваю свою ячейку памяти такими ненужностями как чему будет равно полученное значение, с учётом бара с указанным временем или меньше на 1. Я просто каждый раз проверяю.

Это я все понимаю, но попробуйте вникнуть в вопрос. Как найти указанное время - в моём случае надо найти ближайшего 01.00 час. Как вы это запишете?
 datetime         start_time,      // с какой даты ???

 
Nauris Zukas:

Это я все понимаю, но попробуйте вникнуть в вопрос. Как найти указанное время - в моём случае надо найти ближайшего 01.00 час. Как вы это запишете?
 datetime         start_time,      // с какой даты ???

 datetime t=StringToTime("01:00");
 int b=Bars(_Symbol, PERIOD_M30, t, TimeCurrent());
В текущее время 17:08 показывает 33. То-есть номер бара с временем 01:00 будет 32.
Причина обращения: