Привет!
Допустим, что я хочу в одном советнике работать с несколькими символами, каждый из которых
имеет несколько ордеров различных типов.
Как организовать быстрый доступ к ордерам?
//-- map<symbol, list<tikets>> Dictionary<string, List<ulong>>;
Гу?
Как организовать быстрый доступ к ордерам?
Хорошо бы сначала определиться с понятием "медленный доступ к ордерам".
Хорошо бы сначала определиться с понятием "медленный доступ к ордерам".
И еще хорошо бы определится с количеством отслеживаемых ордеров. Если нужно отслеживать 10-15 ордеров одновременно - прямой перебор и не заморачиваться.
И еще хорошо бы определится с количеством отслеживаемых ордеров. Если нужно отслеживать 10-15 ордеров одновременно - прямой перебор и не заморачиваться.
Даже если > 100, где могут быть тормоза?
Даже если > 100, где могут быть тормоза?
Тормозов нет, просто если больше 100, то можно быстрее чем за линейное время.
Задумка такая (только начал писать).
Для каждого символа создаются несколько ордеров (по типам исполнения и направлению)
Ордеров может быть сколь угодно много
//+------------------------------------------------------------------+ //| Orders.mqh | //| Copyright 2018 prostotrader | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2018 prostotrader" #property link "https://www.mql5.com" //-------------------------------------------------------------------+ //| Class Order | //+------------------------------------------------------------------+ enum ORDER_DIRECTION { DIR_SHORT = -1, DIR_NONE = 0, DIR_LONG = 1 }; //--- enum ORDER_ASYNC { ASYNC_UNDEFINED = 0, ASYNC_NO = 1, ASYNC_YES = 2 }; //--- class COrder { private: ENUM_ORDER_TYPE ord_type; ORDER_DIRECTION ord_dir; //ORDER_DIRECTION ORDER_ASYNC async; //Orser send type public: COrder(void); ~COrder(void); string name; ulong ticket; //--- bool InitOrder(ORDER_DIRECTION a_dir, ENUM_ORDER_TYPE o_type, const string a_name, ORDER_ASYNC o_as); }; //+------------------------------------------------------------------+ // Constructor | //+------------------------------------------------------------------+ COrder::COrder(void) { name = ""; ord_dir = DIR_NONE; async = ASYNC_UNDEFINED; } //+------------------------------------------------------------------+ // Destructor | //+------------------------------------------------------------------+ COrder::~COrder(void) { //--- } //+------------------------------------------------------------------+ // Initialization order | //+------------------------------------------------------------------+ bool COrder::InitOrder(ORDER_DIRECTION a_dir, ENUM_ORDER_TYPE o_type, const string a_name, ORDER_ASYNC o_as) { if((a_dir != DIR_NONE) && (a_name != "") && (o_as != ASYNC_UNDEFINED)) { ord_dir = a_dir; name = a_name; ord_type = o_type; return(true); } return(false); }
А для торговли парами (более одного символа), н-р, при срабатывании отложенного ордера 2-го символа,
должен сработать рыночный ордер 3-го символа, а затем лимитный 1-го символа.
Как их различать, перебирать имена?
Тормозов нет, просто если больше 100, то можно быстрее чем за линейное время.
Тогда тот же вопрос
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Особенности языка mql5, тонкости и приёмы работы
fxsaber, 2018.09.21 15:23
Для чего нужна скорость?
Если и актуально, то, возможно, только на бэктестах.
А для торговли парами (более одного символа), н-р, при срабатывании отложенного ордера 2-го символа,
должен сработать рыночный ордер 3-го символа, а затем лимитный 1-го символа.
Как их различать, перебирать имена?
У меня не получилось Вас понять.
Гу?
Василий, Dictionary проверяли? Без багов?
Василий, Dictionary проверяли? Без багов?
За несколько лет постоянного использования вычистил все баги. Dictionary, даю зуб, надежный.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Привет!
Допустим, что я хочу в одном советнике работать с несколькими символами, каждый из которых
имеет несколько ордеров различных типов.
Как организовать быстрый доступ к ордерам?