После регистрации заявки в методе ProcessCandle я подписываюсь на событие возникновения сделки:
Trader
.WhenNewMyTrades()
.Do(OnNewMyTrades)
.Apply(this);
Обработчик события:
protected override void OnNewMyTrades(IEnumerable<MyTrade> trades)
{
//Для каждой сделки добавляем защитную стоп-лосс стратегию
var myTrades = trades as List<MyTrade> ?? trades.ToList();
var protectiveStrategies = myTrades.Select(t =>
{
_stopLoss = t.Trade.Price * _stopLossPercent / 100;
//Выставляем стоп-лосс 2% от цены входа
var stopLossStrategy = new AutoProtectiveStrategy
{
StopLossLevel = _stopLoss,
TakeProfitTimeOut = TimeSpan.FromMinutes(_timeFrame.Minutes*2)
};
return stopLossStrategy;
});
ChildStrategies.AddRange(protectiveStrategies);
base.OnNewMyTrades(myTrades);
}
Но в реале после возникновения сделки ничего не происходит.
Я правильно понимаю, что исходя из моего кода: а) должен сразу ставиться стоп на уровень _stopLoss от цены закрытия и я его должен видеть в Квике? б) если стоп не сработает через двойной таймфрейм позиция закроется автоматически?
Log.Debug:
RS_SRM3@RTS_SPBFUT007r0 | 27.03.2013 22:02:57.656 | | Правило 'Отмена заявки 79320322/10214113300 (0x31E27EC) OR Полное исполнение 79320322/10214113300 (0xEF627A) OR Ошибка регистрации заявки 79320322/10214113300 (0x26A85D1)'. Активация.
RS_SRM3@RTS_SPBFUT007r0 | 27.03.2013 22:02:57.658 | | Правило 'Отмена заявки 79320322/10214113300 (0x31E27EC) OR Полное исполнение 79320322/10214113300 (0xEF627A) OR Ошибка регистрации заявки 79320322/10214113300 (0x26A85D1)'. Удаляется.
RS_SRM3@RTS_SPBFUT007r0 | 27.03.2013 22:02:57.662 | | Правило 'Отмена заявки 79320322/10214113300 (0x31E27EC)'. Освободило ресурсы.
RS_SRM3@RTS_SPBFUT007r0 | 27.03.2013 22:02:57.663 | | Правило 'Полное исполнение 79320322/10214113300 (0xEF627A)'. Освободило ресурсы.
RS_SRM3@RTS_SPBFUT007r0 | 27.03.2013 22:02:57.664 | | Правило 'Ошибка регистрации заявки 79320322/10214113300 (0x26A85D1)'. Освободило ресурсы.
RS_SRM3@RTS_SPBFUT007r0 | 27.03.2013 22:02:57.664 | | Правило 'Отмена заявки 79320322/10214113300 (0x31E27EC) OR Полное исполнение 79320322/10214113300 (0xEF627A) OR Ошибка регистрации заявки 79320322/10214113300 (0x26A85D1)'. Освободило ресурсы.
RS_SRM3@RTS_SPBFUT007r0 | 27.03.2013 22:02:57.664 | | Правило 'Отмена заявки 79320322/10214113300 (0x31E27EC) OR Полное исполнение 79320322/10214113300 (0xEF627A) OR Ошибка регистрации заявки 79320322/10214113300 (0x26A85D1)'. Удаление.
APS_SRM3@RTS_SPBFUT007r0 | 27.03.2013 22:02:57.794 | | Переход из состояния Stopped в Started.
RS_SRM3@RTS_SPBFUT007r0 | 27.03.2013 22:02:57.816 | | Правило 'Новые сделки (0x1771B73)'. Активация.
APS_SRM3@RTS_SPBFUT007r0 | 27.03.2013 22:02:58.006 | | Переход из состояния Stopped в Started.
RS_SRM3@RTS_SPBFUT007r0 | 27.03.2013 22:03:04.397 | | Правило 'Законченные свечки TimeFrameCandle_SRM3@RTS_00-01-00 (0x2442922)'. Активация.
RS_SRM3@RTS_SPBFUT007r0 | 27.03.2013 22:03:05.972 | | Правило 'Полное исполнение 79320324/10214114904 (0x21128C3)'. Подписалось на события.
RS_SRM3@RTS_SPBFUT007r0 | 27.03.2013 22:03:05.972 | | Правило 'Отмена заявки 79320324/10214114904 (0x3F19E1D)'. Подписалось на события.
RS_SRM3@RTS_SPBFUT007r0 | 27.03.2013 22:03:05.972 | | Правило 'Ошибка регистрации заявки 79320324/10214114904 (0x25EE953)'. Подписалось на события.
RS_SRM3@RTS_SPBFUT007r0 | 27.03.2013 22:03:06.145 | Ошибка | Заявка 79320322 не была отменена по причине StockSharp.Quik.ApiException: Код ошибки Failed Сообщение Вы не можете снять данную заявку.
RS_SRM3@RTS_SPBFUT007r0 | 27.03.2013 22:04:03.973 | | Правило 'Законченные свечки TimeFrameCandle_SRM3@RTS_00-01-00 (0x2442922)'. Активация.
RS_SRM3@RTS_SPBFUT007r0 | 27.03.2013 22:04:05.295 | | Правило 'Полное исполнение 79320326/0 (0x2308F08)'. Подписалось на события.
RS_SRM3@RTS_SPBFUT007r0 | 27.03.2013 22:04:05.295 | | Правило 'Отмена заявки 79320326/0 (0x3D8C971)'. Подписалось на события.
RS_SRM3@RTS_SPBFUT007r0 | 27.03.2013 22:04:05.295 | | Правило 'Ошибка регистрации заявки 79320326/0 (0xD1713E)'. Подписалось на события.
RS_SRM3@RTS_SPBFUT007r0 | 27.03.2013 22:04:05.583 | | Правило 'Отмена заявки 79320324/10214114904 (0x3F19E1D) OR Полное исполнение 79320324/10214114904 (0x21128C3) OR Ошибка регистрации заявки 79320324/10214114904 (0x25EE953)'. Активация.
RS_SRM3@RTS_SPBFUT007r0 | 27.03.2013 22:04:05.583 | | Правило 'Отмена заявки 79320324/10214114904 (0x3F19E1D) OR Полное исполнение 79320324/10214114904 (0x21128C3) OR Ошибка регистрации заявки 79320324/10214114904 (0x25EE953)'. Удаляется.
RS_SRM3@RTS_SPBFUT007r0 | 27.03.2013 22:04:05.583 | | Правило 'Отмена заявки 79320324/10214114904 (0x3F19E1D)'. Освободило ресурсы.
RS_SRM3@RTS_SPBFUT007r0 | 27.03.2013 22:04:05.583 | | Правило 'Полное исполнение 79320324/10214114904 (0x21128C3)'. Освободило ресурсы.
RS_SRM3@RTS_SPBFUT007r0 | 27.03.2013 22:04:05.583 | | Правило 'Ошибка регистрации заявки 79320324/10214114904 (0x25EE953)'. Освободило ресурсы.
RS_SRM3@RTS_SPBFUT007r0 | 27.03.2013 22:04:05.583 | | Правило 'Отмена заявки 79320324/10214114904 (0x3F19E1D) OR Полное исполнение 79320324/10214114904 (0x21128C3) OR Ошибка регистрации заявки 79320324/10214114904 (0x25EE953)'. Освободило ресурсы.
RS_SRM3@RTS_SPBFUT007r0 | 27.03.2013 22:04:05.583 | | Правило 'Отмена заявки 79320324/10214114904 (0x3F19E1D) OR Полное исполнение 79320324/10214114904 (0x21128C3) OR Ошибка регистрации заявки 79320324/10214114904 (0x25EE953)'. Удаление.
RS_SRM3@RTS_SPBFUT007r0 | 27.03.2013 22:04:57.418 | | Правило 'Отмена заявки 79320326/10214117804 (0x3D8C971) OR Полное исполнение 79320326/10214117804 (0x2308F08) OR Ошибка регистрации заявки 79320326/10214117804 (0xD1713E)'. Активация.
评论 (11)
登录 或 创建账户, 登录或注册以发表评论
Для кода вместо BB тегов
надо использовать
Для текста логов
Подправил. Так намного лучше. Буду впредь оформлять таким образом.
Не могу заснуть :) Ну помогите кто-нибудь!
Тейк-профит и стоп-лосс
В очередной раз прочитал в документации про тейк-профит и стоплосс. Но такое впечатление, что "смотрю в книгу - вижу фигу" или я чего-то не понимаю. Так как работаю через Quik - добавил в таблицу "Инструменты" - максимальную и минимальную цены сделки. Делаю, вроде как, также но после исполнения заявки ничего не происходит. Никаких стоп-заявок не появляется. И из сделки по TakeProfitTimeOut не выходит.
Стратегия:
DebugLog с момента исполнения заявки:
Помогите, пожалуйста.
Вроде так:
Если stop_price конкретное значение цены то нужно как наверху, если разница в пунктах от цены по которой прошла сделка то можно просто var _stopLoss=new Unit(stop_price).
Это вообще не надо:
Update: В вашем случае var _stopLoss=new Unit(stop_price)
Сделал, как вы показали. К сожалению не помогло 😭 После входа в сделку, ни стоп-заявки, ни выхода по TakeProfitTimeOut.
DebugLog:
Так:
Подставил ваш код. Судя по логам что-то поменялось. Но на деле ничего опять же не произошло. Ни стоп заявки в Quik'e, ни выхода по TakeProfitTimeOut.
Выкладываю DebugLog с момента входа в сделку. Видно что какое-то котирование запустилось, но мне трудно разобрать, что значат некоторые строки. Может вы сможете что сказать?
Спасибо.
Стоп-заявки в quik и не будут выкидываться. Защитные стратегии используют алгоритм котирования для защиты сделок. Когда цена отойдет на расстояние которое вы указали в StopLossLevel тогда защитная стратегия начнет по Volume (в вашем случае по 1 ) контракту выкидывать заявки, постепенно закрывая позицию.
Сам я AutoProtectiveStrategy не использую.
Update:
Блин сам же сказал что защитные стратегии используют алгоритм котирования. У вас стаканы запущены??? Если нет то впихните например в OnStarted стратегии:
Спасибо! Был не в курсе, что защитные стратегии работают таким образом. Попробую в понедельник. Спасибо еще раз!