﻿<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type='text/css' href='https://stocksharp.com/css/style.css'?>
<?xml-stylesheet type='text/css' href='https://stocksharp.com/css/bbeditor.css'?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title type="html">Сработавшая стоп заявка не изменяет, Position стратегии.</title>
  <id>~/topic/4592/srabotavshaya-stop-zayavka-ne-izmenyaet-position-strategii_/</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-06-18T11:29:39Z</updated>
  <logo>https://stocksharp.com/images/logo.png</logo>
  <link href="https://stocksharp.com/handlers/atom.ashx?category=topic&amp;id=4592" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.com/posts/m/30956/</id>
    <title type="text">viosee: Попробуй что-нибудь из этого: Order.WhenActivated - правило на событие активации стоп-заявки...</title>
    <published>2014-06-28T19:08:56Z</published>
    <updated>2014-06-28T19:08:56Z</updated>
    <author>
      <name>chulman</name>
      <uri>https://stocksharp.com/users/6409/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(30953)" rel="nofollow" target="_blank"&gt;viosee&lt;/a&gt;:&lt;/strong&gt;
Попробуй что-нибудь из этого:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Order.WhenActivated - правило на событие активации стоп-заявки.&lt;/li&gt;
&lt;li&gt;Использовать StopLossStrategy.&lt;/li&gt;
&lt;li&gt;Организовать стоп-лосс собственноручно с помощью Security.WhenNewTrades и маркет ордеров.&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;
&lt;p&gt;спасибо, тоже подумал о этом.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/30953/</id>
    <title type="text">Попробуй что-нибудь из этого: Order.WhenActivated - правило на событие активации стоп-заявки. Исполь...</title>
    <published>2014-06-27T23:06:01Z</published>
    <updated>2014-06-27T23:06:01Z</updated>
    <author>
      <name>Валентин Лебедев</name>
      <uri>https://stocksharp.com/users/50045/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Попробуй что-нибудь из этого:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Order.WhenActivated - правило на событие активации стоп-заявки.&lt;/li&gt;
&lt;li&gt;Использовать StopLossStrategy.&lt;/li&gt;
&lt;li&gt;Организовать стоп-лосс собственноручно с помощью Security.WhenNewTrades и маркет ордеров.&lt;/li&gt;
&lt;/ol&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/30951/</id>
    <title type="text">Сделал так, решил считать вручную позицию, подписался на событие новый трейдов. protected override v...</title>
    <published>2014-06-27T18:14:45Z</published>
    <updated>2014-06-27T18:17:00Z</updated>
    <author>
      <name>chulman</name>
      <uri>https://stocksharp.com/users/6409/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Сделал так, решил считать вручную позицию, подписался на событие новый трейдов.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
 protected override void OnStarted()
        {

            _series = this.GetCandleManager().GetSeries&amp;lt;CandleFoot&amp;gt;(this.Security, 10);
            _series
                .WhenCandlesFinished()
                .Do(ProcessCandle)
                .Apply(this);

            this.WhenNewMyTrades()
                .Do(ProcessPosition)
                .Apply(this);
         
            Pos = 0;
            base.OnStarted();
        }


 private void ProcessPosition(IEnumerable&amp;lt;MyTrade&amp;gt; trades)
        {
            
            var t = trades.FirstOrDefault();
            var buyDir = t.Order.Direction == Sides.Buy;
            if (buyDir)
            {
                Pos = Pos + t.Trade.Volume;
            }
            else
            {
                Pos = Pos - t.Trade.Volume;
            }
            string text = &amp;quot;&amp;quot;;
            text = text + &amp;quot;позиция &amp;quot; + Pos.ToString();
            System.IO.File.WriteAllText(@&amp;quot;f:\footText.txt&amp;quot;, text);
        }

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;итог следующий , WhenNewMyTrades не вызывается при срабатывании стоп заявки, файл не переписывается. Даже если тут есть логические ошибки, в файл должно что то записаться, но время файла остается временем основного ордера, при котором выставляется стоп заявка.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/30945/</id>
    <title type="text">Михаил Сухов: Было недавно про стоп заявки и был фикс. Смотрите в релиз нотес. Скачал новую сборку п...</title>
    <published>2014-06-27T12:35:24Z</published>
    <updated>2014-06-27T13:07:04Z</updated>
    <author>
      <name>chulman</name>
      <uri>https://stocksharp.com/users/6409/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(30944)" rel="nofollow" target="_blank"&gt;Михаил Сухов&lt;/a&gt;:&lt;/strong&gt;
Было недавно про стоп заявки и был фикс. Смотрите в релиз нотес.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Скачал новую сборку поменял все dll в references которые начинаются с StockSharp и Ecng, сделал ребилд проекта
, все осталось по прежнему ((&lt;/p&gt;
&lt;p&gt;Ребят помогите пож-та, я уже все попробовал, не получается никак. Хоть куда нибудь ткните, чтоб я пошел читать или смотреть.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/30944/</id>
    <title type="text">Было недавно про стоп заявки и был фикс. Смотрите в релиз нотес. </title>
    <published>2014-06-27T11:50:28Z</published>
    <updated>2014-06-27T11:50:28Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.com/users/201/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Было недавно про стоп заявки и был фикс. Смотрите в релиз нотес.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/30943/</id>
    <title type="text">devruss: Position обновляется очень медленно в некоторых случаях, там есть глюк с ощутимой задержкой...</title>
    <published>2014-06-27T10:57:25Z</published>
    <updated>2014-06-27T11:42:09Z</updated>
    <author>
      <name>chulman</name>
      <uri>https://stocksharp.com/users/6409/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(30942)" rel="nofollow" target="_blank"&gt;devruss&lt;/a&gt;:&lt;/strong&gt;
Position обновляется очень медленно в некоторых случаях, там есть глюк с ощутимой задержкой после срабатывания ордера. Мне с этим было лень разбираться, так как намного проще и надежнее реализовать подсчет позиции внутри стратегии самому.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Я думаю проблема в другом, на финише свечи я пишу значение Position в текстовый файл и смотрю его, типа отладка такая, таймфрейм не меньше минуты, да даже 10 минут я пробовал, все равно по срабатыванию стопа Position не меняется. Т.е через 10 минут после активации стопа все так же остается.&lt;/p&gt;
&lt;p&gt;Я в стоп заявку даже такое пытался вкорячить.&lt;/p&gt;
&lt;p&gt;orStopOrder
.WhenNewTrades()
.Do(ProcessPosition)
.Apply(this);&lt;/p&gt;
&lt;p&gt;и потом ручками отнять&lt;/p&gt;
&lt;p&gt;private void ProcessPosition(IEnumerable&amp;lt;MyTrade&amp;gt; trades)
{
var t = trades.FirstOrDefault();
Position = Position - t.Trade.Volume;
}&lt;/p&gt;
&lt;p&gt;но отладчик не заходит в ProcessPosition&lt;/p&gt;
&lt;p&gt;только что пробовал так,&lt;/p&gt;
&lt;p&gt;orStopOrder
.WhenMatched()
.Do(() =&amp;gt;
{
Position = Position - orStopOrder.Volume;
})
.Apply(this);&lt;/p&gt;
&lt;p&gt;Position зараза не меняется.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/30942/</id>
    <title type="text">Position обновляется очень медленно в некоторых случаях, там есть глюк с ощутимой задержкой после ср...</title>
    <published>2014-06-27T10:51:08Z</published>
    <updated>2014-06-27T10:51:08Z</updated>
    <author>
      <name>devruss</name>
      <uri>https://stocksharp.com/users/50604/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Position обновляется очень медленно в некоторых случаях, там есть глюк с ощутимой задержкой после срабатывания ордера. Мне с этим было лень разбираться, так как намного проще и надежнее реализовать подсчет позиции внутри стратегии самому.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/30941/</id>
    <title type="text">StockSharp_4.2.3.7_Sources Создаю Ордер и подписываюсь на его событие WhenNewTrades var order = this...</title>
    <published>2014-06-27T10:45:30Z</published>
    <updated>2014-06-27T10:46:39Z</updated>
    <author>
      <name>chulman</name>
      <uri>https://stocksharp.com/users/6409/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;StockSharp_4.2.3.7_Sources&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Создаю Ордер и подписываюсь на его событие WhenNewTrades&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;
  var order = this.BuyAtLimit(pLevel + this.Security.PriceStep); //открываем лонг
                    order
                        .WhenNewTrades()
                        .Do(ProcessOrder)
                        .Apply(this);

                    this.RegisterOrder(order);


&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;далее создаю связанную стоп заявку,&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
private void ProcessOrder(IEnumerable&amp;lt;MyTrade&amp;gt; trades)
        {
          
            var t = trades.FirstOrDefault();
            var BuyDir = t.Order.Direction == Sides.Buy;
                var orStopOrder = new Order
                {
                    Type = OrderTypes.Conditional,
                    Volume = t.Trade.Volume,
                    Price = BuyDir ? (t.Order.Price - 350) : (t.Order.Price + 350),  //цена исполнения стопа
                    Portfolio = Portfolio,
                    Security = Security,
                    Direction = BuyDir ? Sides.Sell : Sides.Buy,
                    Comment = &amp;quot;Placed by TradingTrainer&amp;quot;,
                    ExpiryDate = DateTime.MaxValue,
                    Condition = new QuikOrderCondition()
                    {
                        Type = QuikOrderConditionTypes.LinkedOrder,
                        LinkedOrderPrice = BuyDir ? (t.Order.Price + 300) : (t.Order.Price - 300), //лимит
                        LinkedOrderCancel = false,
                        StopPrice = BuyDir ? (t.Order.Price - 150) : (t.Order.Price + 150),      //стоп цена
                        ActiveTime = null,
                    },
                };
            
                this.RegisterOrder(orStopOrder);

        }

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Значит, стопы ставятся прекрасно, но при срабатывании стопа Position стратегии не изменяется.
Получается что фактически позиции нет, а Position == осталось тем же.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
</feed>