Котирование по волатильности~/topic/1979/kotirovanie-po-volatilnosti/Copyright @ StockSharp Platform LLC 2010 - 20242024-03-29T06:55:34Zhttps://stocksharp.ru/images/logo.pnghttps://stocksharp.ru/posts/m/11948/1) Обрабатывайте событие возникновения ошибки стратегии и поступайте как считаете нужным в зависимос...2011-10-05T12:03:22Z2011-10-05T12:03:22ZАртем_2https://stocksharp.ru/users/27723/info@stocksharp.ru<div class="quote"><span class="quotetitle">Alexander Mukhanchikov <a href="https://stocksharp.ru/posts/m/11947/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote">1) Обрабатывайте событие возникновения ошибки стратегии и поступайте как считаете нужным в зависимости от текста ошибки<br />2) Переопределите OnWriteMessage<br />3) Снимайте заявки через Trader.CancelOrders</div></div><br /><br />Спасибо, попробую!<br />Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/11947/1) Обрабатывайте событие возникновения ошибки стратегии и поступайте как считаете нужным в зависимос...2011-10-05T12:01:00Z2011-10-05T12:01:00ZAlexanderhttps://stocksharp.ru/users/2826/info@stocksharp.ru1) Обрабатывайте событие возникновения ошибки стратегии и поступайте как считаете нужным в зависимости от текста ошибки<br />2) Переопределите OnWriteMessage<br />3) Снимайте заявки через Trader.CancelOrdersCopyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/11945/Добрый день! Пытаюсь организовать работу с заявками по волатильности, но никак не получается добитьс...2011-10-05T11:49:53Z2011-10-05T11:55:46ZАртем_2https://stocksharp.ru/users/27723/info@stocksharp.ruДобрый день!<br />Пытаюсь организовать работу с заявками по волатильности, но никак не получается добиться более менее комфортной работы от <b>VolatilityQuotingStrategy</b> для Quik. Библиотека S# 4.0 Попытаюсь систематизировать возникащие проблемы:<br /><br />1) <u><b>Остановка по ошибке </b></u><br />Сейчас в случае возникновения любой ошибки стратегия котирования останавливается или пытается продолжить работу пока не будет исчерпан лимит <b>MaxErrorCount</b>. Но такое поведение не всегда подходит. <br /><br />Например, в случае ошибки: <br /><div class="quote"><span class="quotetitle">Цитата:</span><div class="innerquote">. Причина '[FORTS] Премия по опциону вне лимитов. 12065.00000 - 12565.00000'. </div></div><br /><br />обоснована немедленная остановка стратегии, а в случае ошибок типа:<br /><br />не удается снять заявку<br /><br />хотелось бы, чтобы стратегия предприняла еще попытки отменить заявку. <br /><br />В связи с этим возникает вопрос... - Можно ли как-то определить типы исключений, по которым стратегия должна останавливаться, а по которым нет? Или может есть какой-то альтернативный механизм, при помощи которого можно организовать подобную логику?<br /><br />2) <u><b>Логгирование</b></u><br />Сейчас логги стратегии котирования содержат огромное количество информации. И сам процесс перестановки заявок и все ошибки выводятся через событие Log. Очевидно, что в общем случае для пользователя такое количество информации является избыточным, нужно как-то фильтровать сообщения. Например, мне было бы достаточно выводить только ошибки, которые привели к остановке стратегии. Я пытаюсь фильтровать только message, где MessageState.Error Но тексте такой ошибки выводится StackTrace и Транзакция, которые очень сильно захламляют выводимое сообщение. <br />Пример: <br /><br /><div class="quote"><span class="quotetitle">Цитата:</span><div class="innerquote">System.ArgumentException: Транзакции 'ACCOUNT=SPBFUT00021; CLIENT_CODE=SPBFUT00021; TRANS_ID=53588440; CLASSCODE=SPBOPT; SECCODE=RI125000BX1; QUANTITY=1; OPERATION=B; TYPE=L; ACTION=NEW_ORDER; PRICE=15055; EXECUTION_CONDITION=PUT_IN_QUEUE;' не была зарегистрирована. Причина '[FORTS] Премия по опциону вне лимитов. 12065.00000 - 12565.00000'.<br />Parameter name: transactionTxt<br /> at #=qWPEZbaPXXnfu0dolel1ZCrOozOSaV9Evx8y5tzJ_qRg=.#=qUmjMMAjUTZss3dBE$Ew$fpc_JpVLlqt0ZmiB6BsvsdU=(String #=qL04X18_51q6kCgj6rYNY5g==, OrderStatus& #=qsrLj2ADhO$O_1gepTOivtA==, UInt32& #=qLxax_yvVk4z0qUc0dAQ32g==, Int64& #=qtjdK4awArO9TiFZTKitnBQ==, String& #=q2bRWR3jcDI1Bu7F20PAwxw==)<br /> at StockSharp.Quik.QuikTrader.#=qNjNbkG4PfYKhxHndxWXTWF1Ov$hID1w11HFWHeJ2x5k=(Order #=qLe3cC9AUaUdkc1nayio1IA==, TransactionBuilder #=qI3zb3NAT7OuakeMqyKo6bw==)<br /> at StockSharp.Quik.QuikTrader.OnRegisterOrder(Order order)<br /> at StockSharp.Algo.BaseTrader.RegisterOrder(Order order)<br /> at StockSharp.Algo.Strategies.Strategy.RegisterOrder(Order order)<br /> at StockSharp.Algo.Strategies.QuotingStrategy.#=qUnRhFjJYBEJR2aX1ii4r3g==()<br /> at StockSharp.Algo.Strategies.QuotingStrategy.#=qMLnz$QQgJVSunmZKGb$991wLpKURSLxlpEtBpES1NFI=.#=qmtxb5GB9904qysMgCjwVBQ==()<br /> at StockSharp.Algo.Strategies.StrategyRule.#=qQrecZK95seh7eX31S0$L1c4z__sUsXGlZDSN84Xriek=.#=qhftCtuaqFJhzzRNZOlqGig==(Object #=qKbVbzSe0ZKnXvU43LzXRuw==)<br /> at StockSharp.Algo.Strategies.Strategy.#=q1CfLqaNuJVblIvl$mfhRZQ==(StrategyRule #=qjNSQS_xTM$cIj4bTUzJoNQ==, Object #=qnC3HLgCCuWFncdxUk6AxAQ==)</div></div><br /><br />3) <u><b>Отмена заявок в VolatilityQuotingStrategy</b></u><br /><br />Не получается чисто прервать работу VolatilityQuotingStrategy с отменой всех активных заявок:<br />a) При вызове strategy.CancelActiveOrders() часто выдается исключение типа "Стратегия должна быть зарегистрирована". Поэтому я проверяю сначала ProcessState <br /><br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
if (volaOrder.ProcessState == StockSharp.Algo.Strategies.ProcessStates.Started)
{
volaOrder.CancelActiveOrders();
}</pre>
</div></div><br /> <br />Но что делать, если стратегия остановлена(она остановилась по ошибке), а активные заявки остались? <br /><br />b) В последней версии такого не замечал, но возможно по чистой случайности, поэтому напишу еще об одной проблеме. При попытке остановить стратегию VolatilityQuotingStrategy<br /><br /> volaOrder.Stop()<br /><br />стратегия зависает в состоянии Stopping, начинает что-то пытаться делать, в логи валятся сообщения... Т.е. создается ощущение, что в OnStopping крутится какой-то код, который не дает перевестись стратегии в состояние Stopped. Приходится выводить volaOrder.Stop() в отдельный поток, чтобы не блокировать основной поток при таком зависании.Copyright @ StockSharp Platform LLC 2010 - 2024