StopLossStrategy - как заставить ее работать как нужно мне?~/topic/2944/stoplossstrategy---kak-zastavit-ee-rabotat-kak-nuzhno-mne/Copyright @ StockSharp Platform LLC 2010 - 20242024-03-29T12:55:16Zhttps://stocksharp.ru/images/logo.pnghttps://stocksharp.ru/posts/m/20882/Попробовал UseQuoting = true. Получил в ответ что-то совсем непонятное: На кодеплексе лежит обновлен...2012-08-16T21:16:59Z2012-08-16T21:16:59ZMikhail Sukhovhttps://stocksharp.ru/users/201/info@stocksharp.ru<div class="quote"><span class="quotetitle">Oppositus <a href="https://stocksharp.ru/posts/m/20881/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote">Попробовал UseQuoting = true. Получил в ответ что-то совсем непонятное:<br /></div></div><br /><br />На кодеплексе лежит обновление.Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/20881/Попробовал UseQuoting = true. Получил в ответ что-то совсем непонятное: SLS_SRU2@RTS_SPBFUT00TE4 | 1...2012-08-16T18:32:24Z2012-08-16T18:32:24ZOppositushttps://stocksharp.ru/users/6212/info@stocksharp.ruПопробовал UseQuoting = true. Получил в ответ что-то совсем непонятное:<br /><br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:plain">
SLS_SRU2@RTS_SPBFUT00TE4 | 16.08.2012 22:27:06.919 | | Защита активирована.
SLS_SRU2@RTS_SPBFUT00TE4 | 16.08.2012 22:27:06.919 | | Регистрация защитного котирования.
SLS_SRU2@RTS_SPBFUT00TE4 | 16.08.2012 22:27:07.016 | Ошибка | System.InvalidOperationException: Используется автоматическая генерация имени стратегии. Ручное изменение не допускается.
в StockSharp.Algo.Strategies.StrategyNameGenerator.set_Value(String value)
в StockSharp.Algo.Strategies.Strategy.set_Name(String value)
в StockSharp.Algo.Strategies.ProtectiveStrategy.NeedQuoting(Decimal currentPrice, Decimal currentVolume, Decimal newPrice, Decimal newVolume)
в StockSharp.Algo.Strategies.QuotingStrategy.ProcessQuoting()
в StockSharp.Algo.Strategies.ProtectiveStrategy.ProcessQuoting()
в StockSharp.Algo.MarketRule`1.#=qeWNllB1BHhtz2GInOxEycnTnSVmHp5ACvmB$w$DQUPY=.#=q1VXoBNSvSzvqt4_pb0ULMQ==(#=q1ycMI7lUw5hzlD3SGIhOYw== #=qh4TdGntpoONIZD2YD9AC0Q==)
в StockSharp.Algo.MarketRule`1.#=qN4TsINan0AyUgxybdGMnecNkj_Rx103jZqKqgKdKco8=()
в StockSharp.Algo.Strategies.Strategy.#=q70DdGRFZcnVyo09EzshnClL8oFZ02wn6FqA_9G9qJIsMxk1js7YvrAHdZYys628ghxk5QYTlqCVIVFhozmja1g==(IMarketRule #=q3kKagJxuF5YY6xElZPebYQ==, Func`1 #=q7B59AEzS7WJDiwLD2kMU9A==)
SLS_SRU2@RTS_SPBFUT00TE4 | 16.08.2012 22:27:07.043 | Внимание | Заканчиваем котирование с неисполненным объемом равный 1.
SLS_SRU2@RTS_SPBFUT00TE4 | 16.08.2012 22:27:07.102 | | Стратегия останавливается.
SLS_SRU2@RTS_SPBFUT00TE4 | 16.08.2012 22:27:07.132 | | Ожидание снятия всех активных заявок.
SLS_SRU2@RTS_SPBFUT00TE4 | 16.08.2012 22:27:07.156 | | Нет активных или ожидаемых заявок на вход.
SLS_SRU2@RTS_SPBFUT00TE4 | 16.08.2012 22:27:07.189 | | Стратегия остановлена.
</pre>
</div></div><br /><br />Код такой:<br /><br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
MarketQuotingStrategy seller = new MarketQuotingStrategy(OrderDirections.Sell, Math.Min(base.Volume, m_depth.BestBid.Volume))
{
PriceType = MarketPriceTypes.Opposite
};
seller.NewMyTrades += (IEnumerable<MyTrade> trades) =>
{
foreach(MyTrade t in trades)
{
try
{
decimal stop = t.Trade.Price + 2;
this.AddWarningLog("Добавляем SL для сделки на ПРОДАЖУ по " + t.Trade.Price + " на уровне " + stop);
StopLossStrategy sl = new StopLossStrategy(t, new Unit(stop, UnitTypes.Limit))
{
UseQuoting = true
};
base.ChildStrategies.Add(sl);
}
catch(Exception e)
{
this.AddErrorLog("Ошибка при добавлении SL стратегии " + e.GetType() + "\n" + e.Message);
}
}
};
base.ChildStrategies.Add(seller);
</pre>
</div></div><br /><br />Как исправить?Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/20880/Здравствуйте. Помогите, пожалуйста, рассеять недоумение (документацию читал, ответа не нашел). Есть ...2012-08-16T18:08:07Z2012-08-16T18:08:07ZOppositushttps://stocksharp.ru/users/6212/info@stocksharp.ruЗдравствуйте. Помогите, пожалуйста, рассеять недоумение (документацию читал, ответа не нашел).<br /><br />Есть сделка - фьючерс на Сбер, продажа по цене 9384. На этот трейд ставится StopLossStrategy с абсолютной ценой 9386. И садимся наблюдать за логами и графиками.<br /><br />Код:<br /><br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
MarketQuotingStrategy seller = new MarketQuotingStrategy(OrderDirections.Sell, Math.Min(base.Volume, m_depth.BestBid.Volume))
{
PriceType = MarketPriceTypes.Opposite
};
seller.NewMyTrades += (IEnumerable<MyTrade> trades) =>
{
foreach(MyTrade t in trades)
{
decimal stop = t.Trade.Price + 2;
StopLossStrategy sl = new StopLossStrategy(t, new Unit(stop, UnitTypes.Limit)); // Указываем значение цены стопа, а не отступ
base.ChildStrategies.Add(sl);
}
};
base.ChildStrategies.Add(seller);
</pre>
</div></div><br /><br />Трейдер - эмулятор Квика.<br /><br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
m_trader = new RealTimeEmulationTrader<GuiTrader<QuikTrader>>(new QuikTrader().GuiSyncTrader());
</pre>
</div></div><br /><br />1. Во время жизни позиции было несколько сделок по цене 9386. <b>Стоп не сработал</b>. Стратегия начала работу только после сделки по цене 9387. С моей точки зрения это неправильно - <b>стоп должен срабатывать при сделке по заданной цене</b>, а не по цене выше.<br /><br />2. После срабатывания стопа, SL стратегия выставила ордер Buy по цене 9386. То есть по цене бида. Это уже совсем неправильно. Потому что дальше цена пошла вверх, и ордер висел до тех пор, пока цена не откатилась назад до 9386. А если бы не откатилась? <b>SL стратегия должна была выставить приказ по аску</b>, чтобы немедленно закрыть позицию, и в дальнейшем (если не все закрылось) - передвигать ордер по аскам выше, до закрытия позиции.<br /><br />Вот лог:<br /><br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:plain">
MQS_SRU2@RTS_SPBFUT00TE4 | 16.08.2012 21:23:28.587 | | Стратегия запущена.
MQS_SRU2@RTS_SPBFUT00TE4 | 16.08.2012 21:23:28.603 | | Котирование на Sell объема 1.
MQS_SRU2@RTS_SPBFUT00TE4 | 16.08.2012 21:23:28.618 | | Приостановка правил. _rulesSuspendCount 1.
MQS_SRU2@RTS_SPBFUT00TE4 | 16.08.2012 21:23:28.650 | | Возобновление правил. _rulesSuspendCount 0.
MQS_SRU2@RTS_SPBFUT00TE4 | 16.08.2012 21:23:28.665 | | Цена текущей NULL и лучшей 9384.
MQS_SRU2@RTS_SPBFUT00TE4 | 16.08.2012 21:23:28.665 | | Лучший бид 9384 и лучший аск 9386.
MQS_SRU2@RTS_SPBFUT00TE4 | 16.08.2012 21:23:28.681 | | Регистрация новой заявки на Sell с ценой 9384 и объемом 1.
MQS_SRU2@RTS_SPBFUT00TE4 | 16.08.2012 21:23:28.712 | | Заявка 76852280 на Sell отправлена с ценой 9384 объемом 1.
MQS_SRU2@RTS_SPBFUT00TE4 | 16.08.2012 21:23:28.712 | Внимание | Заявка 76852280 в процессе регистрации.
MQS_SRU2@RTS_SPBFUT00TE4 | 16.08.2012 21:23:28.728 | | Заявка 76852280 принята биржей.
FS_SRU2@RTS_SPBFUT00TE4 | 16.08.2012 21:23:28.759 | | Новая Sell сделка 1 по цене 9384 на 1 заявки 76852280.
FS_SRU2@RTS_SPBFUT00TE4 | 16.08.2012 21:23:28.774 | | Прибыль 0
MQS_SRU2@RTS_SPBFUT00TE4 | 16.08.2012 21:23:28.774 | | Новая Sell сделка 1 по цене 9384 на 1 заявки 76852280.
FS_SRU2@RTS_SPBFUT00TE4 | 16.08.2012 21:23:28.790 | Внимание | Добавляем SL для сделки на ПРОДАЖУ по 9384 на уровне 9386
SLS_SRU2@RTS_SPBFUT00TE4 | 16.08.2012 21:23:28.806 | | Стратегия запущена.
SLS_SRU2@RTS_SPBFUT00TE4 | 16.08.2012 21:23:28.852 | | Защита сделки 1 заявки 76852280.
SLS_SRU2@RTS_SPBFUT00TE4 | 16.08.2012 21:23:28.852 | | Котирование на Buy объема 1.
SLS_SRU2@RTS_SPBFUT00TE4 | 16.08.2012 21:23:28.884 | | Приостановка правил. _rulesSuspendCount 1.
SLS_SRU2@RTS_SPBFUT00TE4 | 16.08.2012 21:23:28.884 | | Возобновление правил. _rulesSuspendCount 0.
FS_SRU2@RTS_SPBFUT00TE4 | 16.08.2012 21:23:28.899 | | Новая позиция -1.
MQS_SRU2@RTS_SPBFUT00TE4 | 16.08.2012 21:23:28.915 | | Заявка 76852280 полностью исполнилась. Оставшийся объем 0.
MQS_SRU2@RTS_SPBFUT00TE4 | 16.08.2012 21:23:28.930 | | Заканчиваем котирование.
MQS_SRU2@RTS_SPBFUT00TE4 | 16.08.2012 21:23:28.946 | | Стратегия останавливается.
MQS_SRU2@RTS_SPBFUT00TE4 | 16.08.2012 21:23:28.962 | | Ожидание снятия всех активных заявок.
MQS_SRU2@RTS_SPBFUT00TE4 | 16.08.2012 21:23:28.977 | | Нет активных или ожидаемых заявок на вход.
MQS_SRU2@RTS_SPBFUT00TE4 | 16.08.2012 21:23:28.993 | | Стратегия остановлена.
SLS_SRU2@RTS_SPBFUT00TE4 | 16.08.2012 21:30:05.701 | | Защита активирована.
SLS_SRU2@RTS_SPBFUT00TE4 | 16.08.2012 21:30:05.701 | | Цена текущей NULL и лучшей 9386.
SLS_SRU2@RTS_SPBFUT00TE4 | 16.08.2012 21:30:05.701 | | Лучший бид 9386 и лучший аск 9387.
SLS_SRU2@RTS_SPBFUT00TE4 | 16.08.2012 21:30:05.701 | | Регистрация новой заявки на Buy с ценой 9386 и объемом 1.
SLS_SRU2@RTS_SPBFUT00TE4 | 16.08.2012 21:30:05.701 | | Заявка 76852281 на Buy отправлена с ценой 9386 объемом 1.
SLS_SRU2@RTS_SPBFUT00TE4 | 16.08.2012 21:30:05.748 | | Заявка 76852281 принята биржей.
FS_SRU2@RTS_SPBFUT00TE4 | 16.08.2012 21:41:28.173 | | Новая Buy сделка 2 по цене 9386 на 1 заявки 76852281.
</pre>
</div></div><br /><br />Отсюда вопросы.<br /><br />1. Как сделать, чтобы SL стратегия срабатывала именно тогда, когда происходит сделка по указанной цене. А не тогда, когда рынок уехал дальше.<br />2. Как сделать, чтобы SL стратегия выставляла заявки по правильным ценам - по аскам, если надо откупить, и по бидам, если надо продать. И при этом еще следила за стаканом, передвигая заявки до исполнения всего объема. В крайнем случае - как указать проскальзывание от цены стопа?<br /><br />Фактически я хочу, чтобы все работало как в Квике, а, если возможно, то и лучше.<br /><br />Спасибо.Copyright @ StockSharp Platform LLC 2010 - 2024