В общем суть следующая ищу варианты кода по поиску ордеров.
А Вы хотите мониторить действующие ордера?
MQL4 или MQL5?
А Вы хотите мониторить действующие ордера?
В общем суть следующая ищу варианты кода по поиску ордеров.
Задача стоит следующая:
1 :
Получать информацию о максимальном ордере по цене и по типу ордера ( Бай / Селл ) самый верхний
Получать информацию о минимальном ордере по цене и по типу ордера ( Бай / Селл ) самый нижний
Получать информацию о последнем ордере по времени и по типу ордера ( Бай / Селл )
Получать информацию о первом ордере по времени и по типу ордера ( Бай / Селл )
2 :
Получать информацию о предпоследнем максимальном ордере по цене и по типу ордера ( Бай / Селл )
Получать информацию о предпоследнем минимальном ордере по цене и по типу ордера ( Бай / Селл )
Получать информацию о предпоследнем ордере по времени и по типу ордера ( Бай / Селл )
Получать информацию о втором ордере по времени и по типу ордера ( Бай / Селл )
Под информацией подразумевается всё инфо о ордере (символ, лот, цена ......)
В процедурном стиле программирования данная задача решена давно, сейчас хочу упростить и сделать класс, но что то ничего путевого не приходит в голову, прошу подкинуть мыслишек ...
Да. Владимир - это ВЕЛИКАЯ задача! :-)
Вы подскажите куда си торговать?
Да только не все, а максимальные/минимальные по цене и первые и последние по времени, по 2 штуки, то есть последний и предпоследний..
Это не сложно, ведь вы устанавливаете ордера.
Вот и записывайте в память данные о двух последних BUY и двух последних Sell
И ничего не нужно будет искать.
struct MEM_ORDER { ulong ticket; long ord_type; double price; }; struct MEM_ORDERS { bool is_first_buy; bool is_first_sell; MEM_ORDER buy_oders[2]; MEM_ORDER sell_oders[2]; };
Это не сложно, ведь вы устанавливаете ордера.
Вот и записывайте в память данные о двух последних BUY и двух последних Sell
И ничего не нужно будет искать.
Я думал о таком решении, но меня не устроило то что в момент перезагрузки советника/терминала происходит перенициализация и все данные при прошлой работе будут утеряны.
Я считаю что надежным методом работы это сбор данных о окружении в момент работы советника.
Я думал о таком решении, но меня не устроило то что в момент перезагрузки советника/терминала происходит перенициализация и все данные при прошлой работе будут утеряны.
Я считаю что надежным методом работы это сбор данных о окружении в момент работы советника.
А что Вам мешает, при выходе из советника сохранять данные в файл, а при загрузке - загружать из файла?
//| Expert Load setings function | //+------------------------------------------------------------------+ void LoadSettings() { string file_name = _Symbol + ".dat"; int file_handle; //--- if ( FileIsExist( file_name, 0 ) ) { file_handle = FileOpen( file_name, FILE_READ|FILE_BIN ); if ( file_handle != INVALID_HANDLE ) { e_high = FileReadLong( file_handle ); a_profit = FileReadLong( file_handle ); e_low = FileReadLong( file_handle ); ord_delta_high = FileReadLong( file_handle ); ord_delta_low = FileReadLong( file_handle ); order_delta = FileReadLong( file_handle ); exit_delta = FileReadLong( file_handle ); FileClose( file_handle ); } } } //+------------------------------------------------------------------+ //| Expert Save settings function | //+------------------------------------------------------------------+ void SaveSettings() { string file_name = _Symbol + ".dat"; int file_handle; bool file_found = true; //--- if ( FileIsExist( file_name, 0 ) ) { if ( FileDelete( file_name, 0 ) ) file_found = false; } else { file_found = false; } //--- if ( ! file_found ) { file_handle = FileOpen( file_name, FILE_WRITE|FILE_BIN ); if ( file_handle != INVALID_HANDLE ) { FileWriteLong( file_handle, e_high ); FileWriteLong( file_handle, a_profit ); FileWriteLong( file_handle, e_low ); FileWriteLong( file_handle, ord_delta_high ); FileWriteLong( file_handle, ord_delta_low ); FileWriteLong( file_handle, order_delta ); FileWriteLong( file_handle, exit_delta ); FileClose( file_handle ); } } }
А что Вам мешает, при выходе из советника сохранять данные в файл, а при загрузке - загружать из файла?
Это конечно хорошо, но не надежно, так как за время перезагрузки окружение может измениться.
Закрывайте все ордера, перед выходом.
Это всё-равно нужно делать
Закрывайте все ордера, перед выходом.
Это всё-равно нудно делать
не предвиденные перезагрузки приведут к беде...
Я написал класс...
не предвиденные перезагрузки приведут к беде...
Я написал класс...
Не смешите народ....
Если будет что-то непредвиденное, никакие классы не спасут!
Если "рухнула" винда или терминал, то при инициализации советника заново,
я просто "смотрю" на активные ордера и закрываю их, т.к нет над ними контроля.

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
В общем суть следующая ищу варианты кода по поиску ордеров.
Задача стоит следующая:
1 :
Получать информацию о максимальном ордере по цене и по типу ордера ( Бай / Селл ) самый верхний
Получать информацию о минимальном ордере по цене и по типу ордера ( Бай / Селл ) самый нижний
Получать информацию о последнем ордере по времени и по типу ордера ( Бай / Селл )
Получать информацию о первом ордере по времени и по типу ордера ( Бай / Селл )
2 :
Получать информацию о предпоследнем максимальном ордере по цене и по типу ордера ( Бай / Селл )
Получать информацию о предпоследнем минимальном ордере по цене и по типу ордера ( Бай / Селл )
Получать информацию о предпоследнем ордере по времени и по типу ордера ( Бай / Селл )
Получать информацию о втором ордере по времени и по типу ордера ( Бай / Селл )
Под информацией подразумевается всё инфо о ордере (символ, лот, цена ......)
В процедурном стиле программирования данная задача решена давно, сейчас хочу упростить и сделать класс, но что то ничего путевого не приходит в голову, прошу подкинуть мыслишек ...