搜索订单的任务 - 页 14

 
Dmitry Fedoseev:
我不是OTK:)在测试器中或在模拟账户中测试订单。
什么是GTC?
 
假设第二个最高价格的订单先走,它被记在price_max中,然后第一个订单,被price_max取代,第二个订单就会丢失。
 
Vladimir Pastushak:
什么是QA?
技术控制部。
 
Vladimir Pastushak:

事实证明,为了在99%的情况下避免冗余,你仍然必须手动编写所有代码...

好吧,我说的是充分的平衡,你根本无法避免TRANSFORM代码中的冗余。我在这样一个由3个结构组成的玛特洛什卡上停了下来

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;

它是在一个过程中填写的,当机器人进行交易或订单数量发生变化时,它就会被更新。 我认为,这里的冗余是在边缘。 在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:

好吧,我说的是充分的平衡,你不可能完全避免TRANSFORMAL代码中的冗余。我确定了这样一个由3个结构组成的矩阵

它是在一个过程中填写的,当机器人进行交易或订单数量发生变化时进行更新。 在90%的情况下,这里的冗余对我来说太多,但它并不能解决你的问题;你需要一个单独的功能

所以,你把两个结构放在第三个......。

你填充所有结构的方法很有趣......

 
Dmitry Fedoseev:

没有更快捷的方法。如果你想更快,你需要考虑整个EA算法,也许你可以摆脱在每个tick上寻找两个低点、两个高点的需要。
我必须承认,你搜索订单的方法在某些情况下比我的更稳定,现在我正在进行测试,根据订单的开仓位置,你的方法工作起来没有错误...我的方法在某些情况下不能正确工作...
 
Vladimir Pastushak:
我必须承认,在某些情况下,你的找单方法比我的更稳定,现在我正在做测试,根据订单的开仓位置,你的方法没有错误地工作...我的方法在某些情况下不能正确工作...

昨天写了关于这个问题。取决于哪个订单被打开。

 
Dmitry Fedoseev:

昨天写了关于这个问题。取决于你打开的顺序。

是的是的,只是我没怎么注意......。