La tarea de búsqueda de pedidos - página 14

 
Dmitry Fedoseev:
No soy OTK:) Pruebe con órdenes en el probador o en una cuenta demo.
¿Qué es GTC?
 
Supongamos que la segunda orden de precio más alto va primero, se recuerda en precio_máximo, luego la primera, se sustituye por precio_máximo, la segunda orden se pierde,
 
Vladimir Pastushak:
¿Qué es la garantía de calidad?
El Departamento de Control Técnico.
 
Vladimir Pastushak:

Resulta que para evitar la redundancia en el 99% de los casos hay que seguir escribiendo todo el código a mano...

Bueno, estoy hablando de un equilibrio adecuado, y no se puede evitar la redundancia en el código TRANSFORMADO en absoluto. Me detuve en una matrioska de 3 estructuras

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;

Se rellena durante una pasada, se actualiza cuando el bot hace una transacción o cambia el número de pedidos. Creo que aquí la redundancia está al límite. Para mí es suficiente en el 90% de los casos, pero no resuelve tu problema; necesitas una función aparte

 
Dmitry Fedoseev:
Supongamos que la segunda orden de precio más alto va primero, se almacena en precio_máximo, luego la primera orden es sobrescrita por precio_máximo y la segunda orden se pierde,

no, no perdemos el segundo orden; el orden máximo se escribe primero

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

Si el segundo orden es más alto, se sobrescribe si es más bajo, entonces funciona la segunda condición

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

se comprueba el billete, si no es el máximo sino el billete superior, entonces es el superior antes del máximo.

 
Alexander Puzanov:

Bueno, estoy hablando de un equilibrio adecuado, y no se puede evitar por completo la redundancia en el código TRANSFORMADO. Me decidí por una matriz de 3 estructuras de este tipo

Se rellena durante una pasada, se actualiza cuando el bot hace un trato o el número de pedidos cambia. La redundancia aquí es demasiado para mí en el 90% de los casos, pero no resuelve tu problema; necesitas una función separada

Así que, pones dos estructuras en una tercera ...

Su método de rellenar todas las estructuras es interesante...

 
Dmitry Fedoseev:

No hay manera más rápida. Si quieres más rápido, tienes que pensar en todo el algoritmo del EA, tal vez puedas deshacerte de la necesidad de buscar dos bajos, dos altos en cada tick.
Debo admitir que tu método de búsqueda de órdenes es más estable que el mío en algunos casos, ahora estoy haciendo pruebas y dependiendo de la posición de apertura de la orden tu método funciona sin errores... Mi método no funciona correctamente en algunos casos...
 
Vladimir Pastushak:
Debo admitir que tu método de búsqueda de órdenes es más estable que el mío en algunos casos, ahora estoy haciendo pruebas y dependiendo de la posición de apertura de la orden tu método funciona sin errores... Mi método no funciona correctamente en algunos casos...

Ayer escribí sobre esto. Depende de la orden que se haya abierto.

 
Dmitry Fedoseev:

Ayer escribí sobre esto. Depende del orden en que lo hayas abierto.

Sí, sí, sólo que no le presté mucha atención...