Стоп-лосс
Atom
21.07.2011
raf


Подскажите пожалуйста, как правильно будет описать стоп-лосс, чтобы при достижении цены стопа, выставлялась бы заявка с исполнением по рынку.

Теги:


Спасибо:


< 1 2 3  >
Кот Матроскин

Фотография
Дата: 27.04.2012
Ответить


Здравствуйте!
Возникла очень похожая проблемы. А именно: тестирую в EmulationTrader стратегию, решил поменять маркет-ордер на стоп-ордер (с исполнением по рынку), код такой:
Код
                _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:

Цитата:
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();?
Спасибо:

Mikhail Sukhov

Фотография
Дата: 27.04.2012
Ответить


Кот Матроскин


Несовпадение битности.
Спасибо: Кот Матроскин

Кот Матроскин

Фотография
Дата: 27.04.2012
Ответить


Хм... А если чтоб понятно было)))?
Спасибо:

Кот Матроскин

Фотография
Дата: 28.04.2012
Ответить


Поменял стоп-ордер с исполнением по рынку на стоп-лимит, вылезает то же самое исключение BadImageFormatException. Похоже, что вообще со стоп-ордерами какой-то непорядок...
Спасибо:

esper

Фотография
Дата: 28.04.2012
Ответить


Вероятно, что основное приложение у вас x64, а смартовский коннектор x86, поэтому вылетает это исключение. И тестер ранее не поддерживал стоп-заявки, скорее всего и сейчас не поддерживает.
Спасибо:

Кот Матроскин

Фотография
Дата: 28.04.2012
Ответить


А как-нибудь лечится?
Спасибо:

esper

Фотография
Дата: 28.04.2012
Ответить


Изменением Platform Target на x86 в свойствах проекта
Спасибо: Кот Матроскин

Кот Матроскин

Фотография
Дата: 03.05.2012
Ответить


Спасибо за подсказки! Ох и помаялся, пока нашел, где в Visual C# 2010 Express можно поменять AnyCPU на x86))))
BadImageFormatException больше не появляется. Но вылезла новая проблема: ArgumentException
Цитата:
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
Цитата:
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();?
Спасибо:

alpha

Фотография
Дата: 16.05.2012
Ответить


Alexander Mukhanchikov,

Почему появляются сообщения подобные "#=q_7aAU8b_zEypCQ8s7GI9rucncBvXzAN_LW7DIugCEGA=.#=q1Ehw5NVz5qQudEX$OPx_WI5IMzAHUYsMUkc9dR9UJ9E=" (интересует не причина, а само название)? вы сами дали такие названия? Как узнать что под собой подразумевают подобные "кодировки"?
Спасибо:

Alexander

Фотография
Дата: 16.05.2012
Ответить


alpha
Alexander Mukhanchikov,

Почему появляются сообщения подобные "#=q_7aAU8b_zEypCQ8s7GI9rucncBvXzAN_LW7DIugCEGA=.#=q1Ehw5NVz5qQudEX$OPx_WI5IMzAHUYsMUkc9dR9UJ9E=" (интересует не причина, а само название)? вы сами дали такие названия? Как узнать что под собой подразумевают подобные "кодировки"?


Да, нам такие названия понятнее. Удобнее находить ошибку.
А зачем знать что под собой подразумевают данные названия? Вы с ними сталкиваться вообще не должны
Спасибо:
< 1 2 3  >

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

loading
clippy