Чем в mql4 заменить OnTradeTransaction()? - страница 2

 
Ihor Herasko:

И наличие света, и интернета? Не говоря об обычных для сети пропаже пакетов. Крутые MetaQuotes стали - у всех все гарантируют! ))

Игорь, всё это решается просто или очень просто. Если бывают частые отключения электроэнергии, арендуйте VPS. Если и на VPS такие проблемы случаются, поменяйте контору предоставляющую услугу. Это-же касается и пропадания интернета со стороны пользователя. Только можно добавить возможность поменять провайдера интернета. Если-же проблемы возникают со стороны ДЦ... сами знаете как и куда послать их...
 
Ihor Herasko:

И наличие света, и интернета? Не говоря об обычных для сети пропаже пакетов. Крутые MetaQuotes стали - у всех все гарантируют! ))

Может быть у Вас и компьютера нет?

 
Alexey Viktorov:
Игорь, всё это решается просто или очень просто. Если бывают частые отключения электроэнергии, арендуйте VPS. Если и на VPS такие проблемы случаются, поменяйте контору предоставляющую услугу. Это-же касается и пропадания интернета со стороны пользователя. Только можно добавить возможность поменять провайдера интернета. Если-же проблемы возникают со стороны ДЦ... сами знаете как и куда послать их...

И все это рассказывать обычным пользователям, которые работают с экспертами? Пользователей не должны волновать такие моменты, иначе грош цена подобному ПО.

 
prostotrader:

Может быть у Вас и компьютера нет?

Да, в интернете я телепатически ))

 
Ihor Herasko:

Да, в интернете я телепатически ))

Понятно, но не делайте тогда невнятные заявления, которые могут ввести

участников форума в заблуждение.

 
prostotrader:

Понятно, но не делайте тогда невнятные заявления, которые могут ввести

участников форума в заблуждение.

Это утверждение ложно

Закладываться на отсутствие обрыва на VPS при торговле  - дополнительный фин. риск.

 
prostotrader:

Понятно, но не делайте тогда невнятные заявления, которые могут ввести

участников форума в заблуждение.

Никаких заблуждений. Если Вы разрабатываете ПО, то первое, что от него требуется - это правильность и надежность работы. Если эксперт для поддержки своих позиций и ордеров использует только OnTrade и OnTradeTransaction, то малейший сбой при получении информации от них приведет к искажению общей картины (нам неизвестно доподлинно, потерялся пакет от сервера или нет). Единственное более/менее надежное средство сбора такой информации - пройтись в цикле по списку позиций/ордеров. Даже если и в этом случае будут возникать потери пакетов, то они не могут быть постоянными. В конце концов (после двух-трех запросов) данные будут получены и общая картина придет в полное соответствие с реальностью.

При этом я не утверждаю, что использование OnTrade() и OnTradeTransaction() бессмысленно. Они могут быть использованы как альтернативный канал получения данных. Если уж пришла информация по этому каналу, то не делаем лишнюю проверку по спискам. 

 

Я пишу переносимый код. MT4/MT5 - благодаря MT4Orders.mqh от ув. fxsaber. И тестерный/боевой - благодаря условной компиляции.

Для тестера применяю OnTradeTransaction и запоминание состояния окружения в переменных, что очень ускоряет оптимизацию. Для реала - опрос сервера, скорость здесь не имеет значения.

 
Edgar Akhmadeev:

Для тестера применяю OnTradeTransaction и запоминание состояния окружения в переменных, что очень ускоряет оптимизацию.

Буду благодарен, если предоставите какой-нибудь воспроизводимый пример (без опроса торговой истории).

 

если нужно быстрое решение, то я бы в CArrayInt собрал все тикеты и потом по приходу нового тика сравнивал бы тикеты открытых ордеров с CArrayInt - там метод Search() есть, если нет тикета прекращаем сравнение  CArrayInt с тикетами открытых ордеров, сбрасываем CArrayInt  и записываем опять все тикеты в CArrayInt и выставляем глобально описанный флаг MyOnTradeTransaction - признак, что изменился список ордеров - код довольно компактный будет

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