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

 
double MinOpenBuy(int a = 1)
   {
   ulong tick = 0;
   datetime time = 0;
   double result=0,lot=0,profit=0,openprice=0,
          NewPrice, OldPrice = DBL_MAX;
   for(int i=OrdersTotal(); i>=0; i--)
   {
      if (a_position.SelectByIndex(i))
      {
         if (a_position.Symbol() == a_symbol.Name() && a_position.Magic() == Magic && a_position.PositionType() == POSITION_TYPE_BUY)
         {
            NewPrice = a_position.PriceOpen();
            if ( NewPrice < OldPrice)
            {
               OldPrice = NewPrice;
               profit = NormalizeDouble(a_position.Commission()+a_position.Swap()+a_position.Profit(),2);
               lot = a_position.Volume(); 
               time = POSITION_TIME; 
               tick = a_position.Ticket(); 
            }
         }
      }
   }
   if(a==1) 
	{result = OldPrice;} else
   if(a==2) 
	{result = profit;} else
   if(a==3) 
	{result = lot;} else
   if(a==4) 
	{result=(double)time;}else
   if(a==5) 
	{result=(double)tick;}else
   {result=0;}
   return(result);
  }
Доброе день.
Всех с праздниками.
Нужна помощь профессионалов.
Написал такой код, еще в MQL4, для поиска ордена с самой низкой ценой открытия и получения его данных
Сейчас пытаюсь перевести все на MQL5, но почему то не работает( 
Подскажите в чем ошибка?
 
Maksim Burov #:
for(int i=OrdersTotal(); i>=0; i--)

В суть кода не вникал, но что сразу бросилось в глаза, так это не верно заданное количество перебираемых ордеров. Должно быть так:

for(int i=OrdersTotal() - 1; i>=0; i--)

И ещё в цикле Вы перебираете ордера, а ищите свойства позиции. Это тоже не правильно. Предположу, что скорее всего Вам нужно перебирать позиции:

for(int i=PositionsTotal() - 1; i>=0; i--)

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

 
MrBrooklin #:

В суть кода не вникал, но что сразу бросилось в глаза, так это не верно заданное количество перебираемых ордеров. Должно быть так:

И ещё в цикле Вы перебираете ордера, а ищите свойства позиции. Это тоже не правильно. Предположу, что скорее всего Вам нужно перебирать позиции:

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

Спасибо большое. 
Пока до конца все не затестил, но часть уже работает корректно. 

 
Написал советник - симулятор для полуавтоматической торговли в Тестере в режиме с Визуализацией, для проверки торговых стратегий. Сделки открываются вручную на М5 и сопровождаются автоматически или вручную. Анализ рыночной ситуации должен проводиться вручную на H1 и D1, вопрос связан с этими таймфреймами. Нужно открывать два окна, в которых будут рисоваться свечи для указанных таймфреймов (без заглядывания в будущее). Какие существуют возможные варианты? Можно ли открывать графики в отдельных вкладках, в которых будут рисоваться свечи по мере продвижения по истории в самом Тестере?
 
grezky #:
Написал советник - симулятор для полуавтоматической торговли в Тестере в режиме с Визуализацией, для проверки торговых стратегий. Сделки открываются вручную на М5 и сопровождаются автоматически или вручную. Анализ рыночной ситуации должен проводиться вручную на H1 и D1, вопрос связан с этими таймфреймами. Нужно открывать два окна, в которых будут рисоваться свечи для указанных таймфреймов (без заглядывания в будущее). Какие существуют возможные варианты? Можно ли открывать графики в отдельных вкладках, в которых будут рисоваться свечи по мере продвижения по истории в самом Тестере?

Достаточно в OnInit запросить любое свойство графика, пусть цену открытия свечи, нужного ТФ и такой график будет открыт. Затем вручную можно поставить любой шаблон к этому графику. Средствами MQL не получится.

 
Alexey Viktorov #:

Достаточно в OnInit запросить любое свойство графика, пусть цену открытия свечи, нужного ТФ и такой график будет открыт. Затем вручную можно поставить любой шаблон к этому графику. Средствами MQL не получится.

Сейчас обнаружил что обратился в ветку по МТ5, а советника писал для МТ4...
А если написать индикатор который рисует МТФ свечи (для более высокого таймфрейма) в другом окне и из советника подключить его через iCustom - сработает?
Или через iCustom можно только получать значения из индикаторов, но не рисовать?
 
Alexey Viktorov #:

Достаточно в OnInit запросить любое свойство графика, пусть цену открытия свечи, нужного ТФ и такой график будет открыт. Затем вручную можно поставить любой шаблон к этому графику. Средствами MQL не получится.

Сейчас подумал - можно в Советнике во время работы в тестере указывать текущее время и это время передавать в глобальную/терминальную переменную. В другом окне будет бежать индикатор на Н1 или D1, который при отключенном от интернета терминале будет считывать указанное время и рисовать 'черный квадрат'? Этот черный квадрат будет закрывать бары правее указанного времени. Получится что-то типа как на картинке ниже.

Как заставить индикатор непрерывно проверять значения терминальной переменной, если МТ4 не подключен к интернету и не получает тиков?



Файлы:
BlackBox.jpg  83 kb
 
grezky #:

Как заставить индикатор непрерывно проверять значения терминальной переменной, если МТ4 не подключен к интернету и не получает тиков?
По таймеру.
 
grezky #:
Сейчас подумал - можно в Советнике во время работы в тестере указывать текущее время и это время передавать в глобальную/терминальную переменную. В другом окне будет бежать индикатор на Н1 или D1, который при отключенном от интернета терминале будет считывать указанное время и рисовать 'черный квадрат'? Этот черный квадрат будет закрывать бары правее указанного времени. Получится что-то типа как на картинке ниже.

Как заставить индикатор непрерывно проверять значения терминальной переменной, если МТ4 не подключен к интернету и не получает тиков?



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

 
Sergey Gridnev #:
По таймеру.
Т.е. в цикле внутри start() каждые несколько миллисекунд осуществлять проверку значения терминальной переменной?
В таком решении наверное плохо то что советник уже закончит работу, а индикатор продолжит грузить систему проверками?