주문을 찾는 작업 - 페이지 14

 
Dmitry Fedoseev :
내가 아니라 OTC가 아닙니다. 테스터 또는 데모 계정의 주문에 대해 테스트하십시오.
OTK 란 무엇입니까?
 
먼저 가격으로 두 번째 주문이 있고 price_max에 기억된 다음 첫 번째 price_max가 교체되고 두 번째 주문이 손실되었다고 가정해 보겠습니다.
 
Vladimir Pastushak :
OTK 란 무엇입니까?
기술 통제 부서.
 
Vladimir Pastushak :

중복을 피하기 위해 99%의 경우 여전히 모든 코드를 수동으로 작성해야 합니다...

글쎄, 나는 적절한 균형에 대해 이야기하고 있지만 PORTABLE 코드에서 중복성을 완전히 피하는 것은 불가능합니다. 나는 3 구조의 그런 matryoshka에 정착했습니다.

 struct ORDER {
         double           d_Price;
         double           d_Lot;
         double           d_Profit;
         string           s_Comment;
         datetime         t_Time;
         int                              i_Ticket;
         int                              i_Op_Type;
};
struct ORDERS_GROUP {
         double   d_Lots_Total;            // сумма лотов
         double   d_Profit_Total;          // суммарная прибыль
         double   d_BreakEven_Price;       // уровень б/у
        ORDER           o_Lowest;        // параметры нижнего ордера
        ORDER           o_Highest;       // параметры верхнего ордера
        ORDER           o_Oldest;        // параметры старейшего ордера
        ORDER           o_Newest;        // параметры новейшего ордера
         int              i_Orders_Total;  // кол-во ордеров
};
struct ALL_ORDERS {
         int       i_Orders_Total;         // кол-во ордеров
         double    d_Lots_Total;           // сумма лотов
         double    d_Profit_Total;         // суммарная прибыль
         double    d_BreakEven_Price;      // уровень б/у
         double    d_One_Point_Price;      // прибыль одного пункта
         datetime  t_Data_Collected;       // время последнего обновления данных
         bool      b_Changed;              // была операция после последнего обновления данных?
        ORDERS_GROUP    o_Buy;           // сводка данных ордеров Buy
        ORDERS_GROUP    o_Sell;          // сводка данных ордеров Sell
        ORDERS_GROUP    o_Buy_Stop;     //  сводка данных ордеров BuyStop
        ORDERS_GROUP    o_Sell_Stop;     // сводка данных ордеров SellStop
        ORDERS_GROUP    o_Buy_Limit;     // сводка данных ордеров BuyLimit
        ORDERS_GROUP    o_Sell_Limit;   // сводка данных ордеров SellLimit
        ORDERS_GROUP    o_Market;        // сводка данных рыночных ордеров
        ORDERS_GROUP    o_Pendings;      // сводка данных отложенных ордеров
};
ALL_ORDERS go_Orders;

한 번에 채워지고 봇이 작업을 수행하거나 주문 수를 변경할 때 업데이트됩니다. 여기 내 IMHO에서 중복이 직전입니다. 90%의 경우 나에게 충분하지만 문제가 해결되지 않습니다. 별도의 기능이 필요합니다.

 
Dmitry Fedoseev :
먼저 가격으로 두 번째 주문이 있고 price_max에 기억된 다음 첫 번째 price_max가 교체되고 두 번째 주문이 손실되었다고 가정해 보겠습니다.

아니요, 우리는 두 번째 것을 잃지 않고 최대 한 것이 먼저 기록됩니다

                   if (op>price_max) // Самый верхний ордер
                    {
                     price_max=op;
                     m_tick_upper=tc;
                    }

두 번째 순서가 높으면 덮어쓰고 낮으면 두 번째 조건이 작동합니다.

                   if (tc!=m_tick_upper) // Предпоследний верхний ордер
                     if (op>price_max2)
                       {
                        price_max2=op;
                        m_tick_upper_=tc;
                       }

티켓을 확인하고 최대 티켓이 아니라 상위 티켓이면 최대 티켓 이전의 상위 티켓입니다..

 
Alexander Puzanov :

글쎄, 나는 적절한 균형에 대해 이야기하고 있지만 PORTABLE 코드에서 중복성을 완전히 피하는 것은 불가능합니다. 나는 3 구조의 그런 matryoshka에 정착했습니다.

한 번에 채워지고 봇이 작업을 수행하거나 주문 수를 변경할 때 업데이트됩니다. 내 IMHO에서 경계에 중복이 있습니다. 90%의 경우 나에게 충분하지만 문제가 해결되지 않습니다. 별도의 기능이 필요합니다.

그것은 당신이 세 번째에 두 개의 구조를 놓는 것으로 나타났습니다 ...

모든 구조를 채우는 방법이 흥미 롭습니다 ...

 
Dmitry Fedoseev :

어디에도 없습니다. 더 빨리 필요하면 고문의 전체 알고리즘에 대해 생각할 필요가 있습니다. 각 틱에서 두 개의 하단, 두 개의 상단을 찾는 필요성을 없앨 수 있습니다.
어떤 경우에는 당신의 주문 검색 방법이 저보다 더 안정적이라는 것을 인정해야 합니다. 지금 테스트를 하고 있고 주문을 여는 위치에 따라 당신의 방법이 오류 없이 작동합니다... 제 것은 잠시 동안 엉망이 됩니다. .
 
Vladimir Pastushak :
어떤 경우에는 당신의 주문 검색 방법이 저보다 더 안정적이라는 것을 인정해야합니다. 지금 테스트를하고 있으며 주문을 여는 위치에 따라 당신의 방법이 오류없이 작동합니다 ... 제 것은 잠시 동안 엉망이됩니다.. .

어제 나는 그것에 대해 썼습니다 . 개봉한 순서에 따라 다릅니다.

 
Dmitry Fedoseev :

어제 나는 그것에 대해 썼습니다 . 개봉한 순서에 따라 다릅니다.

예, 예, 예, 그러나 나는 이것에 어떤 중요성도 부여하지 않았습니다 ...