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

 
Alexey Petrov #:

Вы можете создать вакансию фрилансера и выбрать одного из разработчиков, претендующих на вашу работу

https://www.mql5.com/fr/job

Спасибо, я разместил свое объявление и надеюсь, что наконец-то найду решение :)
 

Здравствуйте!


Как в MQL5 выглядит код, который разрешает советнику торговать в определённые часы? Не могу портировать из MQL4.


void OnTick()

  {

   double PriceBid=MarketInfo(0,MODE_BID);

   double time = Hour() + Minute()*0.01;

   Comment("точка отсчёта   ",inpoint,

           "\n","шаг   ",iter,

           "\n","время  ",time,

           "\n","цена  ", Bid,

           "\n","цена  ",PriceBid);

   if(time <= Stop_work_time)

   {

   //if(Type==BUY || Type==ALL)newbuyorder();

   //if(Type==SELL || Type==ALL)newsellorder();

   in();

   takestop();

   stoporders();

   connected();

   delorders();

   }

   else 

   {

   takestop();

   delorders();

   }

  }

Файлы:
kachinmind.mq4  38 kb
 
EfremovSergey #:

Здравствуйте!


Как в MQL5 выглядит код, который разрешает советнику торговать в определённые часы? Не могу портировать из MQL4.


void OnTick()

  {

   double PriceBid=MarketInfo(0,MODE_BID);

   double time = Hour() + Minute()*0.01;

   Comment("точка отсчёта   ",inpoint,

           "\n","шаг   ",iter,

           "\n","время  ",time,

           "\n","цена  ", Bid,

           "\n","цена  ",PriceBid);

   if(time <= Stop_work_time)

   {

   //if(Type==BUY || Type==ALL)newbuyorder();

   //if(Type==SELL || Type==ALL)newsellorder();

   in();

   takestop();

   stoporders();

   connected();

   delorders();

   }

   else 

   {

   takestop();

   delorders();

   }

  }

Реализацию данной задачи в mq5 можно повторить с помощью 

MqlDateTime
 

Всем доброго утра и хорошего настроения!

Уважаемые специалисты!!! Подскажите, пожалуйста, что не так в этом коде (желтым цветом выделена та часть, на которой периодически проявляется ошибка):

//+------------------------------------------------------------------+
//|                                            Proba (version_1).mq5 |
//|                                  Copyright 2023, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2023, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//--- Global variables
MqlRates pArray[];
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   ArraySetAsSeries(pArray,true);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   if(!DownwardTrendline())
     {
      Print("Ошибка при создании линии DownwardTrendline!!! ", GetLastError());
      return;
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool DownwardTrendline()
  {
   int candles=(int)ChartGetInteger(0,CHART_FIRST_VISIBLE_BAR,0);
   double pHigh[];
   ArraySetAsSeries(pHigh,true);
   CopyHigh(_Symbol,_Period,0,candles,pHigh);
   int candleHigh = ArrayMaximum(pHigh,0,candles);
   int Data = CopyRates(_Symbol,_Period,0,candles,pArray);
   ObjectDelete(0,"DnwardTrendline");
   ObjectCreate(0,"DnwardTrendline",OBJ_TREND,0,pArray[candleHigh].time,
                pArray[candleHigh].high,pArray[0].time,pArray[0].high);
   ObjectSetInteger(0,"DnwardTrendline",OBJPROP_COLOR,Blue);
   ObjectSetInteger(0,"DnwardTrendline",OBJPROP_STYLE,STYLE_SOLID);
   ObjectSetInteger(0,"DnwardTrendline",OBJPROP_WIDTH,3);
   ObjectSetInteger(0,"DnwardTrendline",OBJPROP_RAY_RIGHT,true);
   return(true);
  }
//+------------------------------------------------------------------+

Почему периодически, то работает в тестере стратегий, то не работает и в журнале появляется вот такое сообщение:


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

 
MrBrooklin #:

Всем доброго утра и хорошего настроения!

Уважаемые специалисты!!! Подскажите, пожалуйста, что не так в этом коде (желтым цветом выделена та часть кода, на которой периодически проявляется ошибка):

Почему периодически, то работает в тестере стратегий, то не работает и в журнале появляется вот такое сообщение:


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

Поставь проверку после строки

   int Data = CopyRates(_Symbol,_Period,0,candles,pArray);

если Data < 1 чего-то, как-то крикнуть.

 
Alexey Viktorov #:

Поставь проверку после строки

если Data < 1 чего-то, как-то крикнуть.

Доброе утро, Алексей! Спасибо за подсказку! Сейчас попробую.

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

 

Вместо:

   int Data = CopyRates(_Symbol,_Period,0,candles,pArray);

вставил:

   if(CopyRates(_Symbol,_Period,0,candles,pArray)==-1)
     {
      Print("Ошибка копирования исторических данных в массив pArray[]!!!", GetLastError());
      return(false);
     }

 и всё заработало. Линию рисует стабильно и так, как надо, но только теперь при каждом новом запуске советника в тестере стратегий периодически появляются сообщения:

2023.01.20 11:23:37.064 2022.01.03 03:21:49   Ошибка копирования исторических данных в массив pArray[]!!!4003
2023.01.20 11:23:37.064 2022.01.03 03:21:49   Ошибка при создании линии DownwardTrendline!!! 4003

Это, потом будет как-то негативно влиять на работу кода или на это можно "забить"?

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

 
MrBrooklin #:

Вместо:

вставил:

 и всё заработало. Линию рисует стабильно и так, как надо, но только теперь при каждом новом запуске советника в тестере стратегий периодически появляются сообщения:

Это, потом будет как-то негативно влиять на работу кода или на это можно "забить"?

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

А что мешает сделать так 

bool .....()
{
if(Data>0)
{
..................
................

return true;
}
return false;
}
 
Vladimir Deryagin #:

А что мешает сделать так 

Здравствуйте, Владимир! Мешает возраст. Мозги уже не так гибко и быстро работают, как у молодых. )))

Спасибо за Ваш вариант.

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

P.S. Исправил. Всё отлично работает!!! Ещё раз всем БОЛЬШОЕ спасибо за содействие!
 
Кто сможет помочь, в эксперте хочу определить значение MACD D1 [1] если положительный или отрицательный придать определение двух переменных. Всё это в MQL5.
Причина обращения: