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

 
Вопрос, есть ли возможность определить программно что запущен тестер в МТ5 ?
 
Maksim Mihajlov:
Вопрос, есть ли возможность определить программно что запущен тестер в МТ5 ?
Информация о запущенной MQL5-программе – свойства mql5-программы, которые помогают дополнительно управлять ее поведением;
Документация по MQL5: Константы, перечисления и структуры / Состояние окружения / Информация о запущенной MQL5-программе
Документация по MQL5: Константы, перечисления и структуры / Состояние окружения / Информация о запущенной MQL5-программе
  • www.mql5.com
Константы, перечисления и структуры / Состояние окружения / Информация о запущенной MQL5-программе - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Здравствуйте. Не знаю у кого спросить, куда написать. Есть ли возможность торговать через МТ5 в Interactive Brokers? Я задал им вопрос, но они в ответе кинули ссылку на контакты  https://www.metaquotes.net/ru/company/contacts, так это форма для юридического лица. Вроде есть какой-то программный мост между МТ5 и TWS, подскажите пожалуйста что-нибудь об этом. Или вообще есть ли возможность купить котировки с американских бирж с трансляцией в МТ5, чтобы видеть график конкретного инструмента и соответственно пользоваться индикаторами МТ5, а сделки уже совершать через TWS. Если вопрос не по назначению, подскажите пожалуйста, куда написать, спросить.
Контакты представительств компании MetaQuotes
Контакты представительств компании MetaQuotes
  • www.metaquotes.net
По вопросам приобретения торговой платформы MetaTrader 5 вы можете обратиться к нашим представителям:
 
akarustam:

Замучился понимать причину постоянной разницы в оптимизации хорошего советника в МТ5... На одной и той же валютной паре, одним и тем же советником, при одних и тех же параметрах оптимизации, получается разница в результатах оптимизации... Т.е. гоняю постоянно одно и тоже, ожидались одинаковые результаты, но по фактам они разные...

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

СПАСИБО.

 чаще всего неинициализированные принудительно переменные или обращение к глобальным переменным (те что в терминале)

 

Подскажите, свечной индикатор

#property tester_everytick_calculate
#property indicator_separate_window
#property indicator_buffers 4
#property indicator_plots   1
//--- plot newCandles
#property indicator_label1  "newCandles"
#property indicator_type1   DRAW_CANDLES
#property indicator_color1  clrWhite
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
//--- indicator buffers
double   newCandles_Open[];
double   newCandles_High[];
double   newCandles_Low[];
double   newCandles_Close[];
int      newCandles_index  = 0;
//--- цены формирующейся свечи
double   candle_Open    = -1.0;
double   candle_High    = -1.0;
double   candle_Low     = -1.0;
double   candle_Close   = -1.0;

int OnInit()
{
//--- indicator buffers mapping
   SetIndexBuffer(0, newCandles_Open,  INDICATOR_DATA);
   SetIndexBuffer(1, newCandles_High,  INDICATOR_DATA);
   SetIndexBuffer(2, newCandles_Low,   INDICATOR_DATA);
   SetIndexBuffer(3, newCandles_Close, INDICATOR_DATA);
//+---------------------
   PlotIndexSetDouble(0, PLOT_EMPTY_VALUE, 0.0);
//+---------------------
   PlotIndexSetString(0,PLOT_LABEL,"newCandles("+IntegerToString(in_Candle_Size_Point)+", "+TimeToString(in_Start_Time,TIME_DATE)+")");
   IndicatorSetString(INDICATOR_SHORTNAME,"newCandles("+IntegerToString(in_Candle_Size_Point)+", "+TimeToString(in_Start_Time,TIME_DATE)+")");
//+---------------------
   ArrayInitialize(newCandles_Open,0.0);
   ArrayInitialize(newCandles_High,0.0);
   ArrayInitialize(newCandles_Low,0.0);
   ArrayInitialize(newCandles_Close,0.0);

//+---------------------
   return(INIT_SUCCEEDED);
}

В OnCalculate проходит расчёт и при выполнении условий заполняются буфера INDICATOR_DATA

      newCandles_Open[newCandles_index]      = candle_Open;
      newCandles_High[newCandles_index]      = candle_High;
      newCandles_Low[newCandles_index]       = candle_Low;
      newCandles_Close[newCandles_index++]   = candle_Close;

Я думал, что при заполнении этих буферов должна отрисоваться свеча. Но не отрисовывается. Почему?

 
Сергей Таболин:

Подскажите, свечной индикатор

В OnCalculate проходит расчёт и при выполнении условий заполняются буфера INDICATOR_DATA

Я думал, что при заполнении этих буферов должна отрисоваться свеча. Но не отрисовывается. Почему?

Где полный код? Непонятно, что именно Вы делает в OnCalculate. Как пример - используйте справку DRAW_CANDLES.

И что это за свеча с отрицательными ценами?
 
Vladimir Karputov:

Где полный код? Непонятно, что именно Вы делает в OnCalculate. Как пример - используйте справку DRAW_CANDLES.

И что это за свеча с отрицательными ценами?

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

MQ5::Вопрос по свечному индикатору.

Сергей Таболин, 2020.08.05 18:17

Эдгар, спасибо, но это мне понятно. Не понятно почему нет тиков ранее 2019 года?


Теперь вопрос основной -

Почему не рисуются свечи в индикаторе?  Где я не прав?

Источник в открытом доступе ))))

Это просто инициализация для начала отсчёта. Цены считаются правильно.
Файлы:
newCandles.mq5  21 kb
 
Сергей Таболин:
Это просто инициализация для начала отсчёта. Цены считаются правильно.

В отладке пройдитесь и проверьте, в каких случаях Ваше условие будет выполняться?


 
Vladimir Karputov:

В отладке пройдитесь и проверьте, в каких случаях Ваше условие будет выполняться?


Я понимаю, что это, возможно, не правильно. Но!

Это работает. Условие выполняется при запуске индикатора. Один раз. Цены принтуются. Далее считаются тики. Тоже принтуются.

2020.08.06 14:27:31.101 newCandles (USDJPY,H1)  2020.08.05 21:31:16 >>> Свеча 03623 >> open = 105.638 hihg = 105.675 low = 105.473 close = 105.473 > Сформирована за 07539 тиков.
2020.08.06 14:27:31.101 newCandles (USDJPY,H1)  2020.08.06 03:14:33 >>> Свеча 03624 >> open = 105.473 hihg = 105.635 low = 105.395 close = 105.635 > Сформирована за 19034 тика.
2020.08.06 14:27:31.102 newCandles (USDJPY,H1)  2020.08.06 10:54:42 >>> Свеча 03625 >> open = 105.635 hihg = 105.695 low = 105.471 close = 105.471 > Сформирована за 08861 тик.
2020.08.06 14:27:31.102 newCandles (USDJPY,H1)  ~~~~ Предварительный расчёт индикатора закончен.
2020.08.06 14:27:31.102 newCandles (USDJPY,H1)  Расчёт на тике 00872 Бар 03626
2020.08.06 14:27:31.102 newCandles (USDJPY,H1)  Расчёт на тике 00873 Бар 03626
2020.08.06 14:27:31.102 newCandles (USDJPY,H1)  Расчёт на тике 00874 Бар 03626

Но меня интересует почему свечи не отрисовываются?

 
Сергей Таболин:

Я понимаю, что это, возможно, не правильно. Но!

Это работает. Условие выполняется при запуске индикатора. Один раз. Цены принтуются. Далее считаются тики. Тоже принтуются.

Но меня интересует почему свечи не отрисовываются?

Сначала научитесь строить индикатор на базе DRAW_CANDLES. При этом нужно думать, что такое свеча с индексом '0'. 

То есть пока к тикам даже близко подходить нельзя.


Чтобы нарисовать свечу, нужно ВСЕ четыре буфера заполнять. Вы этого не делаете - пропускаете и newCandles_Close и ....

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