Кот Матроскин
|
Date: 4/27/2012
|
|
|
|
Здравствуйте! Возникла очень похожая проблемы. А именно: тестирую в EmulationTrader стратегию, решил поменять маркет-ордер на стоп-ордер (с исполнением по рынку), код такой: Code
_stopOrderOpenDeal = new Order
{
Portfolio = this.Portfolio,
Volume = 1m,
Security = this.Security,
Direction = _direction,
Type = OrderTypes.Conditional,
Price = 0,
ExpiryDate = DateTime.MaxValue,
StopCondition = new SmartStopCondition
{
StopPrice = _stopPrice,
},
};
RegisterOrder(_stopOrderOpenDeal);
Цена Price = 0, как в документации по Смарту. В итоге получил следующий Exception: Quote:00:00:00.000 | | EmulationTrader | Экспорт запущен. 00:00:00.000 | | ... | Стратегия запущена. 10:00:00.000 | Error | ... | System.BadImageFormatException: Невозможно загрузить файл или сборку "StockSharp.Smart, Version=4.0.23.0, Culture=neutral, PublicKeyToken=null" или один из зависимых от них компонентов. Была сделана попытка загрузить программу, имеющую неверный формат. Имя файла: "StockSharp.Smart, Version=4.0.23.0, Culture=neutral, PublicKeyToken=null" в SampleHistoryTesting.SmaStrategy.OnProcess() в StockSharp.Algo.Strategies.TimeFrameStrategy.#=qZHVfyKwI4vf7ONEp35cU8OHmGCK4F9lK_KFrfCPAFBg=() в StockSharp.Algo.Strategies.StrategyRule`1.#=quXXKfimi4hGCUUA2EBieBe40d1P3S0O01k7RpjQWc4Q=.#=qc5Q$2yznI4v7NUwkziu7eg==(StrategyRule`1 #=q8pU360yixOnyal56ySThxQ==, #=qYvW23FoN_bSucNDVd1djgg== #=qRnz$uUKk_OQJpdyJfGa8Vg==) в StockSharp.Algo.Strategies.StrategyRule`1.#=qxw3fSR$7BgRSk3lFnXHQPtLqr51eX9mDSwNA9yV$vaQ=.#=qslmG47QH3JqkLo3WYKyhrg==(#=qr72eow4hO9ArvO1OIY4FJQ== #=qZrZQCfhgUrmTFNWR9RAZfg==) в StockSharp.Algo.Strategies.StrategyRule`1.#=qBNAojy8xnqgcson6lOpxCT5wSiewuGJorSoAQXI$8wU=.#=qC$$koezZsR34GX$1egQpLfxbTuzJqRxr0SkdYQagKnY=() в StockSharp.Algo.Strategies.Strategy.#=qxo2T0sDreIkxakECYZYbbA==(IStrategyRule #=qV94l1yQlEBjJ4u0D0$xIQA==, Func`1 #=q2Ngt1CMo$4x1_NRoZYzWlw==)
Предупреждение: регистрация привязки сборок выключена. Чтобы включить регистрацию ошибок привязки сборок, установите значение параметра реестра [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) в 1. Примечание. Регистрация ошибок привязки сборок может привести к некоторому снижению производительности. Чтобы отключить эту функцию, удалите параметр реестра [HKLM\Software\Microsoft\Fusion!EnableLog].
10:00:00.000 | | ... | Стратегия останавливается. 10:00:00.000 | Error | EmulationTrader | System.BadImageFormatException: Невозможно загрузить файл или сборку "StockSharp.Smart, Version=4.0.23.0, Culture=neutral, PublicKeyToken=null" или один из зависимых от них компонентов. Была сделана попытка загрузить программу, имеющую неверный формат. Имя файла: "StockSharp.Smart, Version=4.0.23.0, Culture=neutral, PublicKeyToken=null" в SampleHistoryTesting.SmaStrategy.OnProcess() в StockSharp.Algo.Strategies.TimeFrameStrategy.#=qZ7PT1v9STzIIBySDYht1xJhX_1t7NIqAu0OWio95UGY=() в StockSharp.Algo.Strategies.Strategy.#=q8MiGfL3WivuJhedkH9mlpxw3NIibLyQ$271VPSAha9g=(ProcessStates #=q8$qI6ivL1iYvibB0_IvSBw==) в StockSharp.Algo.Strategies.Strategy.#=qxo2T0sDreIkxakECYZYbbA==(IStrategyRule #=qV94l1yQlEBjJ4u0D0$xIQA==, Func`1 #=q2Ngt1CMo$4x1_NRoZYzWlw==) в System.Action.Invoke() в StockSharp.Algo.Testing.EmulationTrader.#=qCGdM8sQLMNb9D_j8ZApFfQ==()
Предупреждение: регистрация привязки сборок выключена. Чтобы включить регистрацию ошибок привязки сборок, установите значение параметра реестра [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) в 1. Примечание. Регистрация ошибок привязки сборок может привести к некоторому снижению производительности. Чтобы отключить эту функцию, удалите параметр реестра [HKLM\Software\Microsoft\Fusion!EnableLog].
У меня три вопроса: 1. Это лечится? И если да, то как? 2. Если не лечится, то как иначе можно выставить стоп-ордер с исполнением по рынку. 3. Можно ли в Таймфрейм-стратегии выставлять правила типа this.When().Do();?
|
|
Thanks:
|
|
|
|
|
Mikhail Sukhov
|
Date: 4/27/2012
|
|
|
|
|
Кот Матроскин
|
Date: 4/27/2012
Хм... А если чтоб понятно было)))?
|
|
Thanks:
|
|
|
|
|
Кот Матроскин
|
Date: 4/28/2012
Поменял стоп-ордер с исполнением по рынку на стоп-лимит, вылезает то же самое исключение BadImageFormatException. Похоже, что вообще со стоп-ордерами какой-то непорядок...
|
|
Thanks:
|
|
|
|
|
esper
|
Date: 4/28/2012
Вероятно, что основное приложение у вас x64, а смартовский коннектор x86, поэтому вылетает это исключение. И тестер ранее не поддерживал стоп-заявки, скорее всего и сейчас не поддерживает.
|
|
Thanks:
|
|
|
|
|
Кот Матроскин
|
Date: 4/28/2012
А как-нибудь лечится?
|
|
Thanks:
|
|
|
|
|
esper
|
Date: 4/28/2012
Изменением Platform Target на x86 в свойствах проекта
|
|
|
|
|
Кот Матроскин
|
Date: 5/3/2012
|
|
|
|
Спасибо за подсказки! Ох и помаялся, пока нашел, где в Visual C# 2010 Express можно поменять AnyCPU на x86)))) BadImageFormatException больше не появляется. Но вылезла новая проблема: ArgumentException Quote:14:30:00.000 | | EmulationTrader | OnProcess: 28.04.2012 17:00:24.148 PnL = 0 14:30:00.000 | | EmulationTrader | RegisterOrder: TransactionId=61213539, Id=0, Price=0, Balance=1, Security=SBER@EQBR, State=None 14:30:00.990 | | EmulationTrader | New order: TransactionId=61213539, Id=1, Price=0, Balance=1, Security=SBER@EQBR, State=Active 14:30:00.990 | Error | EmulationTrader | System.ArgumentException: Стоп-заявки не могут иметь реализованный объем. Имя параметра: order в StockSharp.Algo.TraderHelper.GetMatchedVolume(Order order) в StockSharp.Algo.TraderHelper.GetPosition(Order order) в StockSharp.Algo.Testing.EmulationTrader.#=q_7aAU8b_zEypCQ8s7GI9rucncBvXzAN_LW7DIugCEGA=.#=q1Ehw5NVz5qQudEX$OPx_WI5IMzAHUYsMUkc9dR9UJ9E=(Position #=qT5lumkkYLnDIqrM8CbtkoQ==) в StockSharp.Algo.BaseTrader.GetPosition(Portfolio portfolio, Security security, Func`3 createPosition, Action`1 changePosition) в StockSharp.Algo.BaseTrader.GetPosition(Portfolio portfolio, Security security, Action`1 changePosition) в StockSharp.Algo.Testing.EmulationTrader.#=qKccLf2wuZwfZbL1C7cjImw==(Order #=qrTNaO4Nib9BUygvpQrDnUg==) в Ecng.Common.DelegateHelper.SafeInvoke[T](Action`1 handler, T arg) в StockSharp.Algo.Testing.MarketEmulator.#=qUhv25xUz4s7MvC8VgEsQvQ==(LinkedListNode`1 #=qmTTURhdw0uY5Y3xHDagFnQ==) И тут же в догонку вылезло следующее исключение: NotImplementedException Quote:14:30:01.000 | Error | EmulationTrader | System.NotImplementedException: Метод или операция не реализована. в StockSharp.BusinessEntities.StopCondition.TryActivate(MarketDepth depth) в StockSharp.Algo.Testing.MarketEmulator.#=qCAhc4yiwP_SZxXRczpuhqET6igMTZMTj5wR7r28M7zE=(Order #=qc2Wk9Bom9Xj1I5fl8ZjWEQ==) в StockSharp.Algo.Testing.MarketEmulator.#=qUhv25xUz4s7MvC8VgEsQvQ==(LinkedListNode`1 #=qmTTURhdw0uY5Y3xHDagFnQ==) Стал разбираться, и наткнулся на форуме, что класс EmulationTrader не поддерживает работу со стоп-заявками. Эти два исключения из-за этого? И предыдущие два вопроса еще актуальны: 2. Если не лечится, то как иначе можно выставить стоп-ордер с исполнением по рынку. 3. Можно ли в Таймфрейм-стратегии выставлять правила типа this.When().Do();?
|
|
Thanks:
|
|
|
|
|
alpha
|
Date: 5/16/2012
Alexander Mukhanchikov,
Почему появляются сообщения подобные "#=q_7aAU8b_zEypCQ8s7GI9rucncBvXzAN_LW7DIugCEGA=.#=q1Ehw5NVz5qQudEX$OPx_WI5IMzAHUYsMUkc9dR9UJ9E=" (интересует не причина, а само название)? вы сами дали такие названия? Как узнать что под собой подразумевают подобные "кодировки"?
|
|
Thanks:
|
|
|
|
|
Alexander
|
Date: 5/16/2012
alpha Alexander Mukhanchikov,
Почему появляются сообщения подобные "#=q_7aAU8b_zEypCQ8s7GI9rucncBvXzAN_LW7DIugCEGA=.#=q1Ehw5NVz5qQudEX$OPx_WI5IMzAHUYsMUkc9dR9UJ9E=" (интересует не причина, а само название)? вы сами дали такие названия? Как узнать что под собой подразумевают подобные "кодировки"? Да, нам такие названия понятнее. Удобнее находить ошибку. А зачем знать что под собой подразумевают данные названия? Вы с ними сталкиваться вообще не должны
|
|
Thanks:
|
|
|
|