Тестирование на истории. Buy Stop и Sell Stop не работают

Тестирование на истории. Buy Stop и Sell Stop не работают
Atom
28.03.2019
mikkei


Как установить отложенный ордер при тестировании на истории? Тестирую на Н1

    protected override void OnStarted()
    {
        _candleManager
            .WhenCandlesFinished(_series)
            .Do(ProcessCandle)
            .Apply(this);

        this
            .WhenNewMyTrade()
            .Do(ProcessNewTrade)
            .Apply(this);

        base.OnStarted();
    }

private void ProcessCandle(Candle candle) { ..Некоторое условие которое наступает на свече 29.01.2019 15:00:00 var order = this.CreateOrder(Sides.Buy, 211.50m, 1); order.Type = OrderTypes.Conditional; order.Condition = new EmulationOrderCondition ;

private void ProcessNewTrade(MyTrade trade) { ..Однако здесь сделка происходит по 209.83 на следующей свече (209.82 - цена открытия следующей свечи(16:00:00) + 0.01(SpreadSize) .. Но вход должен произойти только на 17:00:00 } }

Вот Лог: из него видно, что свеча перебивающая 211.50 только в 17:00:00

0001/01/01 00:00:00.000| |HistoryEmulationConnector|Connect 0001/01/01 00:00:00.000| |HistoryBasketMessageAdapter|Connecting 'EmulationMessageAdapter'. 0001/01/01 00:00:00.000| |HistoryBasketMessageAdapter|Connected to 'EmulationMessageAdapter'. 0001/01/01 00:00:00.000| |HistoryEmulationConnector|Lookup 'PortfolioLookup,T(L)=2019.01.01 00:00:00.000,Name=,TransId=1,Curr=,Board=,IsSubscribe=False' for 'EmulationMessageAdapter'. 0001/01/01 00:00:00.000| |HistoryEmulationConnector|Lookup 'OrderStatus,T(L)=2019.01.01 00:00:00.000,Sec=S#:@, Native:,Type:,OrderTransId=0,TransId=2,OrderId=,TransId=2' for 'EmulationMessageAdapter'. 0001/01/01 00:00:00.000| |HistoryBasketMessageAdapter|Connecting 'История (c 01.01.2019 0:00:00 +00:00 по 25.03.2019 0:00:00 +00:00)'. 0001/01/01 00:00:00.000| |HistoryBasketMessageAdapter|Connected to 'История (c 01.01.2019 0:00:00 +00:00 по 25.03.2019 0:00:00 +00:00)'. 2019/01/01 00:00:00.000| |HistoryEmulationConnector|Lookup 'SecurityLookup,T(L)=2019.01.01 00:00:00.000,Sec=S#:@, Native:,Type:,TransId=3,SecId=S#:@, Native:,Type:,Name=,SecType=,ExpDate=' for 'История (c 01.01.2019 0:00:00 +00:00 по 25.03.2019 0:00:00 +00:00)'. 2019/01/01 00:00:00.000| |HistoryEmulationConnector|Создан новый портфель test account. 2019/01/01 00:00:00.000|Debug |HS_SBER@TQBR_test account|Переход из состояния Stopped в Started. 2019/01/01 00:00:00.000| |HS_SBER@TQBR_test account|Стратегия Запущена. [0,-1]. Позиция 0. 2019/01/01 00:00:00.000| |HistoryMessageAdapter|Origin tf: 01:00:00 2019/01/01 00:00:00.000| |HistoryEmulationConnector|Изменение состояния эмуляции Stopped -> Starting 2019/01/01 00:00:00.000| |HistoryEmulationConnector|Изменение состояния эмуляции Starting -> Started 2019/03/28 12:28:39.363| |CachedBasketMarketDataStorage1|Loading 01.01.2019 0:00:00 .... 2019/03/28 12:28:39.499| |CachedBasketMarketDataStorage1|Loading 29.01.2019 0:00:00 .... 2019/01/29 11:00:00.000| |HS_SBER@TQBR_test account|Новая свеча 01/29/2019 10:00:00 +03:00: SBER@TQBR 209.71;209.71;207.50;207.72; объем 9204220 2019/01/29 12:00:00.000|Debug |HS_SBER@TQBR_test account|Правило 'Законченные свечи TimeFrameCandle_SBER@TQBR_01-00-00 (0x3F6A66A)'. Активация. 2019/01/29 12:00:00.000| |HS_SBER@TQBR_test account|Новая свеча 01/29/2019 11:00:00 +03:00: SBER@TQBR 207.75;208.89;206.91;208.84; объем 7600920 2019/01/29 13:00:00.000|Debug |HS_SBER@TQBR_test account|Правило 'Законченные свечи TimeFrameCandle_SBER@TQBR_01-00-00 (0x3F6A66A)'. Активация. 2019/01/29 13:00:00.000| |HS_SBER@TQBR_test account|Новая свеча 01/29/2019 12:00:00 +03:00: SBER@TQBR 208.84;209.65;208.60;209.50; объем 6430830 2019/01/29 14:00:00.000|Debug |HS_SBER@TQBR_test account|Правило 'Законченные свечи TimeFrameCandle_SBER@TQBR_01-00-00 (0x3F6A66A)'. Активация. 2019/01/29 14:00:00.000| |HS_SBER@TQBR_test account|Новая свеча 01/29/2019 13:00:00 +03:00: SBER@TQBR 209.49;210.53;209.00;210.17; объем 5241780 2019/01/29 15:00:00.000|Debug |HS_SBER@TQBR_test account|Правило 'Законченные свечи TimeFrameCandle_SBER@TQBR_01-00-00 (0x3F6A66A)'. Активация. 2019/01/29 15:00:00.000| |HS_SBER@TQBR_test account|Новая свеча 01/29/2019 14:00:00 +03:00: SBER@TQBR 210.15;210.40;209.50;210.40; объем 2324240 2019/01/29 16:00:00.000|Debug |HS_SBER@TQBR_test account|Правило 'Законченные свечи TimeFrameCandle_SBER@TQBR_01-00-00 (0x3F6A66A)'. Активация. 2019/01/29 16:00:00.000| |HS_SBER@TQBR_test account|Новая свеча 01/29/2019 15:00:00 +03:00: SBER@TQBR 210.36;210.52;209.63;209.82; объем 2880690 2019/01/29 16:00:00.000| |HS_SBER@TQBR_test account|Регистрация новой Conditional (0x2B7A1F2) заявки на Buy с ценой 211,50 и объемом 1. Buy Stop Enter 2019/01/29 16:00:00.000| |HistoryEmulationConnector|RegisterOrder: 0/ SBER@TQBR test account Покупка Цена=211.50 Объем=1 Сост=None Бал=0 Тип=Conditional 2019/01/29 16:00:00.000| |HistoryEmulationConnector|New order: 8/ SBER@TQBR test account Покупка Цена=211.50 Объем=1 Сост=Pending Бал=1 Тип=Conditional 2019/03/28 12:28:45.288| |SecurityMarketEmulator|Заявка 8 зарегистрирована. 2019/03/28 12:28:45.300| |SecurityMarketEmulator|Заявка 8. Исполнение объема 1 по цене 209,83. 2019/03/28 12:28:45.302| |SecurityMarketEmulator|Заявка 8 полностью исполнена. 2019/03/28 12:28:45.306| |SecurityMarketEmulator|Сделка 1 заявки 8 P=209,83 V=1. 2019/01/29 16:00:00.000| |HistoryEmulationConnector|Order changed: 8/1 SBER@TQBR test account Покупка Цена=211.50 Объем=1 Сост=Done Бал=0 Тип=Conditional 2019/01/29 16:00:00.000|Debug |HS_SBER@TQBR_test account|Правило 'Отмена заявки 8/1 (0xBF7771) OR Полное исполнение 8/1 (0xAE65B0) OR Ошибка регистрации. 8/1 (0x27B1BBF)'. Активация. 2019/01/29 16:00:00.000| |HS_SBER@TQBR_test account|Заявка 8 (0x2B7A1F2) больше не активна. 2019/01/29 16:00:00.000|Debug |HS_SBER@TQBR_test account|Правило 'Отмена заявки 8/1 (0xBF7771) OR Полное исполнение 8/1 (0xAE65B0) OR Ошибка регистрации. 8/1 (0x27B1BBF)'. Удаляется. 2019/01/29 16:00:00.000|Debug |HS_SBER@TQBR_test account|Правило 'Отмена заявки 8/1 (0xBF7771)'. Освободило ресурсы. 2019/01/29 16:00:00.000|Debug |HS_SBER@TQBR_test account|Правило 'Полное исполнение 8/1 (0xAE65B0)'. Освободило ресурсы. 2019/01/29 16:00:00.000|Debug |HS_SBER@TQBR_test account|Правило 'Ошибка регистрации. 8/1 (0x27B1BBF)'. Освободило ресурсы. 2019/01/29 16:00:00.000|Debug |HS_SBER@TQBR_test account|Правило 'Отмена заявки 8/1 (0xBF7771) OR Полное исполнение 8/1 (0xAE65B0) OR Ошибка регистрации. 8/1 (0x27B1BBF)'. Освободило ресурсы. 2019/01/29 16:00:00.000|Debug |HS_SBER@TQBR_test account|Правило 'Ошибка снятия заявки 8/1 (0x122DB4B)'. Удаляется. 2019/01/29 16:00:00.000|Debug |HS_SBER@TQBR_test account|Правило 'Ошибка снятия заявки 8/1 (0x122DB4B)'. Освободило ресурсы. 2019/01/29 16:00:00.000|Debug |HS_SBER@TQBR_test account|Правило 'Ошибка снятия заявки 8/1 (0x122DB4B)'. Удалено. 2019/01/29 16:00:00.000|Debug |HS_SBER@TQBR_test account|Правило 'Отмена заявки 8/1 (0xBF7771) OR Полное исполнение 8/1 (0xAE65B0) OR Ошибка регистрации. 8/1 (0x27B1BBF)'. Удаление. 2019/01/29 16:00:00.000|Debug |HS_SBER@TQBR_test account|Правило 'Ошибка снятия заявки 8/1 (0x122DB4B)'. Удаление. 2019/01/29 16:00:00.000|Error |HistoryEmulationConnector|System.InvalidOperationException: Сообщение 'Execution,T(L)=2019/01/29 16:00:00.000,T(S)=2019/01/29 16:00:00.000,(Transaction),Sec=S#:SBER@TQBR, Native:,Type:,Ord=1/0/8,Fail=,Price=0,OrdVol=,TrVol=,Bal=0,TId=,Pf=test account,TPrice=,UId=,State=Done' привело к ошибке обработки. ---> System.ArgumentException: Элемент с тем же ключом уже был добавлен. в System.ThrowHelper.ThrowArgumentException(ExceptionResource resource) в System.Collections.Generic.Dictionary2.Insert(TKey key, TValue value, Boolean add) в System.Collections.Generic.Dictionary2.Add(TKey key, TValue value) в Ecng.Collections.SynchronizedDictionary2.Add(TKey key, TValue value) в StockSharp.Algo.EntityCache.ProcessOrderMessage(Order order, Security security, ExecutionMessage message, Int64 transactionId, Tuple3& pfInfo) в StockSharp.Algo.Connector.ProcessOrderMessage(Order o, Security security, ExecutionMessage message, Int64 transactionId, Boolean isStatusRequest) в StockSharp.Algo.Connector.ProcessTransactionMessage(Order order, Security security, ExecutionMessage message, Int64 transactionId, Boolean isStatusRequest) в StockSharp.Algo.Connector.ProcessExecutionMessage(ExecutionMessage message) в StockSharp.Algo.Connector.OnProcessMessage(Message message) --- Конец трассировки внутреннего стека исключений --- 2019/01/29 16:00:00.000| |HistoryEmulationConnector|New own trade: 29.01.2019 16:00:00 +03:00 1 209,83 1 от заявки 8/1 SBER@TQBR test account Покупка Цена=211,50 Объем=1 Сост=Done Бал=0 Тип=Conditional 2019/01/29 16:00:00.000|Debug |HS_SBER@TQBR_test account|Правило 'Новые сделки стратегии HS_SBER@TQBR_test account (0x21CF1C8)'. Активация. 2019/01/29 16:00:00.000| |HS_SBER@TQBR_test account|Новая Buy сделка 1 по цене 209,83 на 1 заявки 8. 2019/01/29 17:00:00.000|Debug |HS_SBER@TQBR_test account|Правило 'Законченные свечи TimeFrameCandle_SBER@TQBR_01-00-00 (0x3F6A66A)'. Активация. 2019/01/29 17:00:00.000| |HS_SBER@TQBR_test account|Новая свеча 01/29/2019 16:00:00 +03:00: SBER@TQBR 209.82;211.20;209.81;210.96; объем 5350460 2019/01/29 18:00:00.000|Debug |HS_SBER@TQBR_test account|Правило 'Законченные свечи TimeFrameCandle_SBER@TQBR_01-00-00 (0x3F6A66A)'. Активация. 2019/01/29 18:00:00.000| |HS_SBER@TQBR_test account|Новая свеча 01/29/2019 17:00:00 +03:00: SBER@TQBR 210.96;213.30;210.96;212.94; объем 11824230

Может не так регистрирую стоп заявку?




Спасибо:




Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy