esper
|
Дата: 30.06.2011
|
|
|
|
Версия 3.2.2, ни StopLoss, ни TakeProfit у меня не срабатывают, хотя цена уходит за дельту. На основании каких данных эти стратегию принимают решение? Стратегия следующая: Код
sealed class VolumeStrategy : Strategy
{
private volatile Order _order;
public VolumeStrategy(ITrader trader)
{
base.Trader = trader;
base.NewMyTrades += OnNewMyTrades;
base.Volume = Settings.Volume;
base.Security = Trader.Securities.FirstOrDefault(s => s.Code == "SBER03");
base.Portfolio = Trader.Portfolios.FirstOrDefault(p => p.Name == "");
}
protected override void OnRunning()
{
this
.When(base.Security.SecurityNewTrades())
.Do(Process)
.MakePeriodical();
base.OnRunning();
}
protected override void DisposeManaged()
{
base.NewMyTrades -= OnNewMyTrades;
base.DisposeManaged();
}
private void Process()
{
if (_order != null)
{
return;
}
//определяем направление сделки
var direction = OrderDirections.Buy;
// создаем заявку
_order = base.CreateOrder(
direction,
Security.ShrinkPrice(direction == OrderDirections.Buy ? Security.BestBid.Price + Settings.SafeSpread : Security.BestAsk.Price - Settings.SafeSpread),
base.Volume);
// регистрируем ее
base.RegisterOrder(_order);
}
private void OnNewMyTrades(IEnumerable<MyTrade> trades)
{
// фильтруем сделки, чтобы найти те, которые произошли для заявки TargetOrder
trades = trades.Where(t => t.Order == _order);
// если не найдена ни одна сделка для заявки TargetOrder
if (trades.Count() == 0)
return;
// сама пакетная стратегия так же является параллельной, чтобы она не блокирована основной код робота
var batch = new BatchStrategy(BatchFinishModes.All);
// для каждой сделки добавляем для защиты по пакетной стратегии
batch.ChildStrategies.AddRange(trades.Select(CreateBatch).Cast<Strategy>());
base.ChildStrategies.Add(batch);
}
BatchStrategy CreateBatch(MyTrade t)
{
var s = new BatchStrategy(BatchFinishModes.First);
// выставляет тейк-профит в n пунктов
var takeProfit = new TakeProfitStrategy(t, new Unit(0.2m));
// выставляет стоп-лосс в m пунктов
var stopLoss = new StopLossStrategy(t, new Unit(0.2m));
s.ChildStrategies.Add(takeProfit);
s.ChildStrategies.Add(stopLoss);
return s;
}
}
Лог: Цитата:VS 30.06.2011 17:23:19.015 Стратегия запущена. VS 30.06.2011 17:23:21.312 [BS] Стратегия запущена. VS 30.06.2011 17:23:21.312 [BS] [BS] Стратегия запущена. VS 30.06.2011 17:23:21.328 [BS] [BS] [TPS] Стратегия запущена. VS 30.06.2011 17:23:21.328 [BS] [BS] [SLS] Стратегия запущена.
|
|
Спасибо:
|
|
|
|
|
esper
|
Дата: 30.06.2011
Отвечу сам себе, для работы защитных стратегий нужен экспорт стакана. Точнее, после добавления экспорта стакана, TakeProfit сработал, а вот StopLoss нет...
|
|
Спасибо:
|
|
|
|
|
Alexander
|
Дата: 01.07.2011
esper Отвечу сам себе, для работы защитных стратегий нужен экспорт стакана. Точнее, после добавления экспорта стакана, TakeProfit сработал, а вот StopLoss нет... Да, про необходимость запуска экспорта стакана указано в разделе Котирование в документации. Попробуйте установить IsParallel=true для TakeProfit \ StopLoss \ BatchStrategy
|
|
Спасибо:
|
|
|
|
|
esper
|
Дата: 01.07.2011
Alexander Да, про необходимость запуска экспорта стакана указано в разделе Котирование в документации. В разделе про котирование не сказано, что TakeProfit и StopLoss тоже стратегии котирования. Alexander Попробуйте установить IsParallel=true для TakeProfit \ StopLoss \ BatchStrategy Это свойство точно есть в версии 3.2.2?
|
|
Спасибо:
|
|
|
|
|
esper
|
Дата: 01.07.2011
Взял версию 3.2.3, стратегии стали срабатывать без IsParallel=true
|
|
Спасибо:
|
|
|
|
|
Alexander
|
Дата: 01.07.2011
esper Взял версию 3.2.3, стратегии стали срабатывать без IsParallel=true А где вы её достали? Мы её ещё не выкладывали... [rolleyes]
|
|
Спасибо:
|
|
|
|
|
esper
|
Дата: 01.07.2011
Alexander esper Взял версию 3.2.3, стратегии стали срабатывать без IsParallel=true А где вы её достали? Мы её ещё не выкладывали... [rolleyes] На codeplex в референсах[blush]
|
|
Спасибо:
|
|
|
|
|
Alexander
|
Дата: 01.07.2011
esper Alexander esper Взял версию 3.2.3, стратегии стали срабатывать без IsParallel=true А где вы её достали? Мы её ещё не выкладывали... [rolleyes] На codeplex в референсах[blush] :) подождите final 3.2.3, там ещё есть проблемы. Скоро будет. Я пока сам на 3.2.2 сижу. Я правильно понимаю, что все проблемы, которые в этом топике описаны - решены?
|
|
Спасибо:
|
|
|
|
|
esper
|
Дата: 01.07.2011
Из этого топика да, стратегии стали отрабатывать, но появились другие вопросы. Я правильно понимаю, что с переходом на событийную модель надобность в IsParallel отпала?
|
|
Спасибо:
|
|
|
|