При старте стратегии добавляю правило обработки всех моих новых сделок.
Code
protected override void OnStarted()
{
_series.WhenCandlesFinished()
.Do(ProcessFinCandle)
.Apply(this);
this.WhenNewMyTrades().Do(OnNewOrderTrades).Apply(this);
// запоминаем текущее положение относительно друг друга
// _isShortLessThenLong = true;// ShortSma.GetCurrentValue() < LongSma.GetCurrentValue();
base.OnStarted();
}
На каждую сделку создаю стоплосс
Code
private void OnNewOrderTrades(IEnumerable<MyTrade> myTrades)
{
var protectiveStrategies = trades.Select(t =>
{
// выставляет стоп-лосс в deflevel пунктов
var stopLoss = new StopLossStrategy(t, deflevel);
stopLoss.IsTrailing = true;
return stopLoss;
});
//ChildStrategies.AddRange(protectiveStrategies);
foreach (var st in protectiveStrategies)
ChildStrategies.Add(st);
}
Кстати, вместо фора в примере из документации был метод AddRange, которого нет у ChildStrategies. Это нормально?
Лог файл:
Code
0001/01/01 00:00:00.000| |HistoryEmulationConnector|Connect
0001/01/01 00:00:00.000| |HistoryEmulationConnector|StartExport
2013/11/11 00:00:00.000| |HistoryEmulationConnector|Изменение состояния эмуляции Stopped -> Starting
2013/11/11 00:00:00.000| |HistoryEmulationConnector|Создан новый портфель test account.
2013/11/11 00:00:00.000| |HistoryEmulationConnector|Изменение состояния эмуляции Starting -> Started
2013/11/11 00:00:00.000| |RS_RIZ3@FORTS_test account|Стратегия запущена. [0,-1]. Позиция при старте 0.
2013/11/11 00:00:00.000| |HistoryEmulationConnector|Инструмент RIZ3@FORTS зарегистрирован на получение рыночных данных для Trades.
2014/02/20 22:46:36.015| |HistoryMessageAdapter|Loading 11.11.2013 0:00:00 Events: 0
2014/02/20 22:47:01.204| |HistoryMessageAdapter|Loading 12.11.2013 0:00:00 Events: 216755
2013/11/12 17:00:00.000| |RS_RIZ3@FORTS_test account|Регистрация новой Limit (0x2EF88D4) заявки на Buy с ценой 199682.000000000 и объемом 1.
2013/11/12 17:00:00.000| |HistoryEmulationConnector|RegisterOrder: 0/0 Покупка Цена=199682.000000000 Объем=1 Сост=None Бал=0
2013/11/12 17:00:00.000| |HistoryEmulationConnector|New order: 81994450/0 Покупка Цена=199682.000000000 Объем=1 Сост=Pending Бал=1
2014/02/20 22:47:20.756| |#=q2fRM7GzyJ0kaPhi$YJWwNpgrAk0q2mq7ulLgxePcsZw=|Заявка 81994450 зарегистрирована.
2013/11/12 17:00:00.000| |HistoryEmulationConnector|Order changed: 81994450/1 Покупка Цена=199682.000000000 Объем=1 Сост=Active Бал=1
2014/02/20 22:47:20.890| |#=q2fRM7GzyJ0kaPhi$YJWwNpgrAk0q2mq7ulLgxePcsZw=|Заявка 81994450. Исполнение объема 1 по цене 143520.000000000.
2014/02/20 22:47:20.890| |#=q2fRM7GzyJ0kaPhi$YJWwNpgrAk0q2mq7ulLgxePcsZw=|Заявка 81994450 полностью исполнена.
2014/02/20 22:47:20.893| |#=q2fRM7GzyJ0kaPhi$YJWwNpgrAk0q2mq7ulLgxePcsZw=|Сделка 1 заявки 81994450 P=81994450 V=143520.000000000.
2013/11/12 17:00:01.000| |HistoryEmulationConnector|Order changed: 81994450/1 Покупка Цена=199682.000000000 Объем=1 Сост=Done Бал=0
2013/11/12 17:00:01.000| |RS_RIZ3@FORTS_test account|Новая позиция: test account-RIZ3@FORTS=1.
2013/11/12 17:00:01.000| |RS_RIZ3@FORTS_test account|Заявка 81994450 больше не активна.
2013/11/12 17:00:01.000| |SLS_RIZ3@FORTS_test account|Стратегия запущена. [0,1]. Позиция при старте 0.
2013/11/12 17:00:01.000| |SLS_RIZ3@FORTS_test account|Защита сделки 1 заявки 81994450.
2013/11/12 17:00:01.000| |SLS_RIZ3@FORTS_test account|Котирование на Sell объема 1.
2013/11/12 17:00:01.000| |SLS_RIZ3@FORTS_test account|Приостановка правил. _rulesSuspendCount 1.
2013/11/12 17:00:01.000| |SLS_RIZ3@FORTS_test account|Возобновление правил. _rulesSuspendCount 0.
2013/11/12 17:00:01.000| |RS_RIZ3@FORTS_test account|Новая Buy сделка 1 по цене 143520.000000000 на 1 заявки 81994450.