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

 
Artyom Trishkin:

Есть. PLOT_SHOW_DATA

Большое спасибо!

 
Подскажите аналог для MQL5 функции SetIndexDrawBegin() из MQL4.
 
The_Sheikh:
Подскажите аналог для MQL5 функции SetIndexDrawBegin() из MQL4.

https://www.mql5.com/ru/articles/81

void SetIndexDrawBegin(int index,
                       int begin)
bool PlotIndexSetInteger(index,PLOT_DRAW_BEGIN,begin)
SetIndexDrawBegin
Установка порядкового номера бара от начала данных, с которого должна начинаться отрисовка указанной линии индикатора.
PlotIndexSetInteger
Переход с MQL4 на MQL5
Переход с MQL4 на MQL5
  • www.mql5.com
Данная статья, построенная в форме справочника по функциям MQL4, призвана помочь переходу с MQL4 на MQL5. Для каждой функции языка MQL4 приведено описание и представлен способ ее реализации на MQL5, что позволит вам значительно ускорить перевод своих программ с MQL4 на MQL5. Для удобства функции разбиты на группы, как в документации по MQL4.
 
Есть возможность в MT5 отключить логи тестера стратегий? Лишних Print не имею, но за ночь набежало 20Гб, VPS заклинило. У меня стратегия работает на 7ми парах и по каждой до 10 сделок в сутки...
 
Evgeny Dyuka:
Есть возможность в MT5 отключить логи тестера стратегий? Лишних Print не имею, но за ночь набежало 20Гб, VPS заклинило. У меня стратегия работает на 7ми парах и по каждой до 10 сделок в сутки...

На VPS запущен мультивалютный советник? За какой-же период поставлен тест? Или запущено 7 тестеров?

 
Alexey Viktorov:

На VPS запущен мультивалютный советник? За какой-же период поставлен тест? Или запущено 7 тестеров?

Один мультивалютный на 7ми парах, 70-80 сделок в день, поставил на год, через 5 часов теста лог - больше 20Гб, VDS умер. Проблема с логами постоянная, бывает так, что если бот сливет депо тест не останавливается, а продолжает показывая загрузку депо 150% и если руками не остановить, то пишет лог пока VDS не зависнет. Эту проблему я решил программно - когда "Седства" меньше 10% стартового депо тестер останавливается, но это костыль. А вот с мультивалютным не знаю, что делать.

 

Изменение типа данных нарушает нормализацию:


      V=NormalizeDouble(size,2);
      closePrice=NormalizeDouble(partPrice,_Digits);

      Print("V = ",V, "","  closePrice = ",closePrice);
      Print("V = ",DoubleToString(V), "","  closePrice = ",DoubleToString(closePrice));


2019.05.05 20:04:29.483 _part_close (EURUSD,D1) V = 0.01  closePrice = 1.13456

2019.05.05 20:04:29.483 _part_close (EURUSD,D1) V = 0.01000000  closePrice = 1.13456000


Это нормально?

 
psyman:

Изменение типа данных нарушает нормализацию:

Это нормально?

в Вашем коде нет приведений типов, Вы просто использовали функцию https://www.mql5.com/ru/docs/convert/doubletostring

с параметром по умолчанию, соответственно и получили 8 знаков при выводе в Print()

Документация по MQL5: Преобразование данных / DoubleToString
Документация по MQL5: Преобразование данных / DoubleToString
  • www.mql5.com
[in]  Формат точности. Если значение digits лежит в диапазоне от 0 до 16, то будет получено строковое представление числа с указанным количество знаков после запятой. Если значение digits лежит в диапазоне от -1 до -16, то...
 

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

Не могу понять, в чем ошибка. Нужно получить все тики за текущую свечу.

При проверке, размер массива тиков не изменяется, и не равен текущему количеству тиков свечи.

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   ArraySetAsSeries(time,true);
   _R=__TIK__(time,0);
   return(rates_total);
  }
//+------------------------------------------------------------------+
bool __TIK__(const datetime &time[],int _i)
  {
   MqlTick tick_array[];   // массив для приема тиков 
   MqlTick lasttick;       // для получения данных последнего тика 

   ulong    from_msc=time[_i]*1000;  
   ulong    to_msc=time[_i+1]*1000;              

   CopyTicksRange(Symbol(),tick_array,COPY_TICKS_ALL,from_msc,to_msc);
   int __ArraySize=ArraySize(tick_array);
   Print((string)__ArraySize+"  "+(string)time[_i]+"  "+(string)time[_i+1]);


   return ( false );
  }
 

Как изменить цвет линии ордера или открытой позиции?

Сейчас они все одинаково зеленые, что вызывает путаницу, а найти их перебором не получается

   int obj_total=ObjectsTotal(0,0,-1);
   string name;
   for(int i=0;i<obj_total;i++)
    {
     name = ObjectName(0,i,-1,-1);
     Print(i," - объект ",name);
    }

Доступны только те объекты что были созданы пользователем.

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