﻿<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type='text/css' href='https://stocksharp.ru/css/style.css'?>
<?xml-stylesheet type='text/css' href='https://stocksharp.ru/css/bbeditor.css'?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title type="html">Котирование по волатильности</title>
  <id>~/topic/1979/kotirovanie-po-volatilnosti/</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-04-07T23:58:24Z</updated>
  <logo>https://stocksharp.ru/images/logo.png</logo>
  <link href="https://stocksharp.ru/handlers/atom.ashx?category=topic&amp;id=1979" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.ru/posts/m/11948/</id>
    <title type="text">1) Обрабатывайте событие возникновения ошибки стратегии и поступайте как считаете нужным в зависимос...</title>
    <published>2011-10-05T12:03:22Z</published>
    <updated>2011-10-05T12:03:22Z</updated>
    <author>
      <name>Артем_2</name>
      <uri>https://stocksharp.ru/users/27723/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Alexander Mukhanchikov &lt;a href="https://stocksharp.ru/posts/m/11947/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;1) Обрабатывайте событие возникновения ошибки стратегии и поступайте как считаете нужным в зависимости от текста ошибки&lt;br /&gt;2) Переопределите OnWriteMessage&lt;br /&gt;3) Снимайте заявки через Trader.CancelOrders&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Спасибо, попробую!&lt;br /&gt;</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/11947/</id>
    <title type="text">1) Обрабатывайте событие возникновения ошибки стратегии и поступайте как считаете нужным в зависимос...</title>
    <published>2011-10-05T12:01:00Z</published>
    <updated>2011-10-05T12:01:00Z</updated>
    <author>
      <name>Alexander</name>
      <uri>https://stocksharp.ru/users/2826/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">1) Обрабатывайте событие возникновения ошибки стратегии и поступайте как считаете нужным в зависимости от текста ошибки&lt;br /&gt;2) Переопределите OnWriteMessage&lt;br /&gt;3) Снимайте заявки через Trader.CancelOrders</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/11945/</id>
    <title type="text">Добрый день! Пытаюсь организовать работу с заявками по волатильности, но никак не получается добитьс...</title>
    <published>2011-10-05T11:49:53Z</published>
    <updated>2011-10-05T11:55:46Z</updated>
    <author>
      <name>Артем_2</name>
      <uri>https://stocksharp.ru/users/27723/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">Добрый день!&lt;br /&gt;Пытаюсь организовать работу с заявками по волатильности, но никак не получается добиться более менее комфортной работы от &lt;b&gt;VolatilityQuotingStrategy&lt;/b&gt; для Quik. Библиотека S# 4.0 Попытаюсь систематизировать возникащие проблемы:&lt;br /&gt;&lt;br /&gt;1) &lt;u&gt;&lt;b&gt;Остановка по ошибке &lt;/b&gt;&lt;/u&gt;&lt;br /&gt;Сейчас в случае возникновения любой ошибки стратегия котирования останавливается или пытается продолжить работу пока не будет исчерпан лимит &lt;b&gt;MaxErrorCount&lt;/b&gt;. Но такое поведение не всегда подходит. &lt;br /&gt;&lt;br /&gt;Например, в случае ошибки: &lt;br /&gt;&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Цитата:&lt;/span&gt;&lt;div class="innerquote"&gt;. Причина &amp;#39;[FORTS] Премия по опциону вне лимитов. 12065.00000 - 12565.00000&amp;#39;. &lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;обоснована немедленная остановка стратегии, а в случае ошибок типа:&lt;br /&gt;&lt;br /&gt;не удается снять заявку&lt;br /&gt;&lt;br /&gt;хотелось бы, чтобы стратегия предприняла еще попытки отменить заявку. &lt;br /&gt;&lt;br /&gt;В связи с этим возникает вопрос... - Можно ли как-то определить типы исключений, по которым стратегия должна останавливаться, а по которым нет? Или может есть какой-то альтернативный механизм, при помощи которого можно организовать подобную логику?&lt;br /&gt;&lt;br /&gt;2) &lt;u&gt;&lt;b&gt;Логгирование&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;Сейчас логги стратегии котирования содержат огромное количество информации. И сам процесс перестановки заявок и все ошибки выводятся через событие Log. Очевидно, что в общем случае для пользователя такое количество информации является избыточным, нужно как-то фильтровать сообщения. Например, мне было бы достаточно выводить только ошибки, которые привели к остановке стратегии. Я пытаюсь фильтровать только message, где MessageState.Error Но тексте такой ошибки выводится StackTrace и Транзакция, которые очень сильно захламляют выводимое сообщение. &lt;br /&gt;Пример:  &lt;br /&gt;&lt;br /&gt;&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Цитата:&lt;/span&gt;&lt;div class="innerquote"&gt;System.ArgumentException: Транзакции &amp;#39;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;&amp;#39; не была зарегистрирована. Причина &amp;#39;[FORTS] Премия по опциону вне лимитов. 12065.00000 - 12565.00000&amp;#39;.&lt;br /&gt;Parameter name: transactionTxt&lt;br /&gt;   at #=qWPEZbaPXXnfu0dolel1ZCrOozOSaV9Evx8y5tzJ_qRg=.#=qUmjMMAjUTZss3dBE$Ew$fpc_JpVLlqt0ZmiB6BsvsdU=(String #=qL04X18_51q6kCgj6rYNY5g==, OrderStatus&amp;amp; #=qsrLj2ADhO$O_1gepTOivtA==, UInt32&amp;amp; #=qLxax_yvVk4z0qUc0dAQ32g==, Int64&amp;amp; #=qtjdK4awArO9TiFZTKitnBQ==, String&amp;amp; #=q2bRWR3jcDI1Bu7F20PAwxw==)&lt;br /&gt;   at StockSharp.Quik.QuikTrader.#=qNjNbkG4PfYKhxHndxWXTWF1Ov$hID1w11HFWHeJ2x5k=(Order #=qLe3cC9AUaUdkc1nayio1IA==, TransactionBuilder #=qI3zb3NAT7OuakeMqyKo6bw==)&lt;br /&gt;   at StockSharp.Quik.QuikTrader.OnRegisterOrder(Order order)&lt;br /&gt;   at StockSharp.Algo.BaseTrader.RegisterOrder(Order order)&lt;br /&gt;   at StockSharp.Algo.Strategies.Strategy.RegisterOrder(Order order)&lt;br /&gt;   at StockSharp.Algo.Strategies.QuotingStrategy.#=qUnRhFjJYBEJR2aX1ii4r3g==()&lt;br /&gt;   at StockSharp.Algo.Strategies.QuotingStrategy.#=qMLnz$QQgJVSunmZKGb$991wLpKURSLxlpEtBpES1NFI=.#=qmtxb5GB9904qysMgCjwVBQ==()&lt;br /&gt;   at StockSharp.Algo.Strategies.StrategyRule.#=qQrecZK95seh7eX31S0$L1c4z__sUsXGlZDSN84Xriek=.#=qhftCtuaqFJhzzRNZOlqGig==(Object #=qKbVbzSe0ZKnXvU43LzXRuw==)&lt;br /&gt;   at StockSharp.Algo.Strategies.Strategy.#=q1CfLqaNuJVblIvl$mfhRZQ==(StrategyRule #=qjNSQS_xTM$cIj4bTUzJoNQ==, Object #=qnC3HLgCCuWFncdxUk6AxAQ==)&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;3) &lt;u&gt;&lt;b&gt;Отмена заявок в VolatilityQuotingStrategy&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;Не получается чисто прервать работу VolatilityQuotingStrategy с отменой всех активных заявок:&lt;br /&gt;a) При вызове strategy.CancelActiveOrders() часто выдается исключение типа &amp;quot;Стратегия должна быть зарегистрирована&amp;quot;. Поэтому я проверяю сначала ProcessState &lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Код&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;
if (volaOrder.ProcessState == StockSharp.Algo.Strategies.ProcessStates.Started)
                {
                    volaOrder.CancelActiveOrders();
                }&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt; &lt;br /&gt;Но что делать, если стратегия остановлена(она остановилась по ошибке), а активные заявки остались?  &lt;br /&gt;&lt;br /&gt;b) В последней версии такого не замечал, но возможно по чистой случайности, поэтому напишу еще об одной проблеме. При попытке остановить стратегию VolatilityQuotingStrategy&lt;br /&gt;&lt;br /&gt; volaOrder.Stop()&lt;br /&gt;&lt;br /&gt;стратегия зависает в состоянии Stopping, начинает что-то пытаться делать, в логи валятся сообщения... Т.е. создается ощущение, что в OnStopping крутится какой-то код, который не дает перевестись стратегии в состояние Stopped. Приходится выводить volaOrder.Stop() в отдельный поток, чтобы не блокировать основной поток при таком зависании.</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
</feed>