Если бы добавили в МТ4 мультивалютное тестирование и тестирование по реальным тикам, то мне больше ничего и не нужно было бы. Согласны ли вы с таким утверждением? - страница 14

 
Сергей Матвеев:
  • Да, согласен. Если бы эти возможности добавили в МТ4, у меня потребности в МТ5 не было бы. (Я трейдер)
    39% (22)
  • Нет, не согласен. Если бы даже эти возможности добавили в МТ4, мне все равно нужен был бы МТ5. (Я трейдер)
    18% (10)
  • Да, согласен. Если бы эти возможности добавили в МТ4, у меня потребности в МТ5 не было бы. (Я программист)
    12% (7)
  • Нет, не согласен. Если бы даже эти возможности добавили в МТ4, мне все равно нужен был бы МТ5. (Я программист)
    32% (18)

Где пункт:

 - МТ4 отстой и туда добавить ничего не возможно ?

 
Sergey Chalyshev:

Где пункт:

 - МТ4 отстой и туда добавить ничего не возможно ?

мт5 отстой и зря туда что-то добавляют.

но почему ваши посты с критикой мт4 не бесят модераторов, а мои, с критикой мт5, бесят.



"меня никто не трогает - я никого не трогаю" ©

 
Igor Makanu:

- в МТ5 сложнее писать индикаторы, с буферами нужно работать как с обычными массивами, т.е. весь контроль за данными должен осуществлять программист, в МТ4 часть этой работы делалась автоматически (очистка буферов, логичная нумерация(индексация) баров/буферов)

А скажите зачем принудительно чистить буфер индикатора, если в процессе заполнения туда будут заноситься какие-то данные которые заменят имеющийся мусор своими значениями? Только ради замедления работы терминала?

Igor Makanu:

- еще пару лет назад, чтобы в МТ5 получить данные OHLC из эксперта нужно было прочитать и написать приличный размер кода который в МТ4 выполнялся банальными и понятными по смыслу Close[], Open[]


А чем вас не устраивает при написании индикатора сlose[], оpen[] или при написании советника iClose(), iOpen() или ещё лучше CopyRates

 
Alexey Viktorov:

А скажите зачем принудительно чистить буфер индикатора, если в процессе заполнения туда будут заноситься какие-то данные которые заменят имеющийся мусор своими значениями? Только ради замедления работы терминала?

увы, не прокатит, попробуйте написать индикатор под МТ5 который рисует стрелки, при переключении ТФ Вы будет удивленны если не произведете принудительную очистку значений буферов, в МТ4 можно было не очищать.... понятно, что все это мелочи, но я и написал, про дружелюбность платформы, а не про правильные стили программирования

Alexey Viktorov:

А чем вас не устраивает при написании индикатора сlose[], оpen[] или при написании советника iClose(), iOpen() или ещё лучше CopyRates

Вы не внимательно прочитали мое сообщение, я писал про доступ к данным OHLC из эксперта, и про то что в МТ5 не было ранее такого простого способа Close().... 

 
Igor Makanu:

увы, не прокатит, попробуйте написать индикатор под МТ5 который рисует стрелки, при переключении ТФ Вы будет удивленны если не произведете принудительную очистку значений буферов, в МТ4 можно было не очищать.... понятно, что все это мелочи, но я и написал, про дружелюбность платформы, а не про правильные стили программирования

Вы не внимательно прочитали мое сообщение, я писал про доступ к данным OHLC из эксперта, и про то что в МТ5 не было ранее такого простого способа Close().... 

Ну ведь полюбому при запуске индикатора идёт перебор всех баров и ничто не мешает обнулить ячейку буфера если там не должно быть значения.

В общем мне ничего не мешает. Я привык к новшествам и отличиям mql5 от mql4 и возвращаясь к mql4 уже раздражает его тупость.

 

Про пятерку, что мне очень не понравилось, но может я что не так делаю: OrderSend рапортует, что ордер/позицию брокер принял, вот его тикет ХХ. Если робот работает в OnTimer или в бесконечном цикле, то после после первого прохода его не находит в терминале среди открытых ордеров/позиций. Есть целый пласт советников, где это важно, т.к. нужно проверять для безопасности парность ордеров (при хедже, в копировщиках и т.п.) а так же где нужно действительно быстрая работа (арбитраж, HFT)

Cделал я вот такой костыль (ордер открыт, но ждём пока он появится в списке терминала):

  if(ticket>0)
   {
    long timer=GetTickCount();
    while (timer+1000>=GetTickCount() && !PositionSelectByTicket(ticket)) Sleep(1);
   } 

Та же история со срабатывающими отложками (робот находит ордер и среди открытых, и среди отложек, что по логике, невозможно).

Может, я что-то не так делаю, но костыль этот решает вышеописанную проблему. Буду рад, если кто укажет на то, что я не так делаю (вероятно, я не один такой).

Пока с моей точки зрения, это похоже на пыль в глаза: открываем ордера быстрее! (жаль только, что "открыл!=готов_работать_с_позицией" на пару десятков милисекунд). К слову, в четверке не нужно ожидание, там, "позиция_открыта==терминал_готов_с_ней_работать".

Кстати, на домашнем компьютере это происходит редко (пинг больше 60мс), а вот на VPS, близком к брокеру - постоянно (пинг меньше 5мсек).

 
Igor Zakharov:

Про пятерку, что мне очень не понравилось, но может я что не так делаю: OrderSend рапортует, что ордер/позицию брокер принял, вот его тикет ХХ. Если робот работает в OnTimer или в бесконечном цикле, то после после первого прохода его не находит в терминале среди открытых ордеров/позиций. Есть целый пласт советников, где это важно, т.к. нужно проверять для безопасности парность ордеров (при хедже, в копировщиках и т.п.) а так же где нужно действительно быстрая работа (арбитраж, HFT)

Cделал я вот такой костыль (ордер открыт, но ждём пока он появится в списке терминала):

Та же история со срабатывающими отложками (робот находит ордер и среди открытых, и среди отложек, что по логике, невозможно).

Может, я что-то не так делаю, но костыль этот решает вышеописанную проблему. Буду рад, если кто укажет на то, что я не так делаю (вероятно, я не один такой).

Пока с моей точки зрения, это похоже на пыль в глаза: открываем ордера быстрее! (жаль только, что "открыл!=готов_работать_с_позицией" на пару десятков милисекунд). К слову, в четверке не нужно ожидание, там, "позиция_открыта==терминал_готов_с_ней_работать".

Кстати, на домашнем компьютере это происходит редко (пинг больше 60мс), а вот на VPS, близком к брокеру - постоянно (пинг меньше 5мсек).

А вы не используете OnTradeTransaction? Попробуйте вам понравится. В OnTradeTransaction кроме прочего, без труда отлавливается момент активации отложенного ордера, закрытие позиции по тейку/стопу...
 

Нет пункта "дополнительные таймфреймы и полноценное масштабирование графиков в МТ4, и МТ5 нафиг не нужен".

Хотя полноценного масштабирования нет и в пятёрке.

 
Alexey Viktorov:
А вы не используете OnTradeTransaction? Попробуйте вам понравится. В OnTradeTransaction кроме прочего, без труда отлавливается момент активации отложенного ордера, закрытие позиции по тейку/стопу...

Использую в "обычных" советниках, работающих по принципу сигнал-сделка-ждём_новый_сигнал, но в описанном мною выше случае не представляю как это сделать: например, копировщик сделок - позиция открылась в другом терминале, текущий прочитал об этом в области памяти и открывает сделку со своей стороны. Мониторинг в OnTimer(), с шагом, например 20мсек...

 
Igor Zakharov:

Использую в "обычных" советниках, работающих по принципу сигнал-сделка-ждём_новый_сигнал, но в описанном мною выше случае не представляю как это сделать: например, копировщик сделок - позиция открылась в другом терминале, текущий прочитал об этом в области памяти и открывает сделку со своей стороны. Мониторинг в OnTimer(), с шагом, например 20мсек...

Ну проверьте, не надо бояться экспериментов. Я копировщиков не писал, но ведь OnTradeTransaction работает по событию и не может проскочить не отработав. В любом случае OnTimer() выполняется быстрей 20мсек, следовательно есть время на перехват события.

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