После регистрации заявки в методе 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)'. Активация.
Kommentare (11)
Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen
Для кода вместо 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 стратегии:
Спасибо! Был не в курсе, что защитные стратегии работают таким образом. Попробую в понедельник. Спасибо еще раз!