ФОРТС: Быстрый доступ к ордерам

 

Привет!

Допустим, что я хочу в одном советнике работать с несколькими символами, каждый из которых

имеет несколько ордеров различных типов.

Как организовать быстрый доступ к ордерам?

 
prostotrader:

Привет!

Допустим, что я хочу в одном советнике работать с несколькими символами, каждый из которых

имеет несколько ордеров различных типов.

Как организовать быстрый доступ к ордерам?

//-- map<symbol, list<tikets>>
Dictionary<string, List<ulong>>;

Гу?

 
prostotrader:

Как организовать быстрый доступ к ордерам?

Хорошо бы сначала определиться с понятием "медленный доступ к ордерам".

 
fxsaber:

Хорошо бы сначала определиться с понятием "медленный доступ к ордерам".

И еще хорошо бы определится с количеством отслеживаемых ордеров. Если нужно отслеживать 10-15 ордеров одновременно - прямой перебор и не заморачиваться.

 
Vasiliy Sokolov:

И еще хорошо бы определится с количеством отслеживаемых ордеров. Если нужно отслеживать 10-15 ордеров одновременно - прямой перебор и не заморачиваться.

Даже если > 100, где могут быть тормоза?

 
fxsaber:

Даже если > 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-го символа.

Как их различать, перебирать имена?  

 
Vasiliy Sokolov:

Тормозов нет, просто если больше 100, то можно быстрее чем за линейное время.

Тогда тот же вопрос

Если и актуально, то, возможно, только на бэктестах.

 
prostotrader:

А для торговли парами (более одного символа), н-р, при срабатывании отложенного ордера 2-го символа, 

должен сработать рыночный ордер 3-го символа, а затем лимитный 1-го символа.

Как их различать, перебирать имена?  

У меня не получилось Вас понять.

 
Vasiliy Sokolov:

Гу?

Василий, Dictionary проверяли? Без багов?

 
Dmitriy Skub:

Василий, Dictionary проверяли? Без багов?

За несколько лет постоянного использования вычистил все баги. Dictionary, даю зуб, надежный. 

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