Добрый день!
Что-то не совсем понимаю.
Я сделал интрадэй робота на основе SampleSMA. Хочу сделать так, чтобы, если что-то происходит, и P&L становится меньше заданного параметра, позиция ликвидируется, робот останавливается.
Но у меня заявки выставляются с помощью котирования, и если я просто сделаю:
if (PnLManager.PnL > 1600 || PnLManager.PnL < -100)
{
decimal Volume = System.Math.Abs(PositionManager.Position);
OrderDirections orderDirection = OrderDirections.Buy;
if (PositionManager.Position < 0) { orderDirection = OrderDirections.Buy; }
if (PositionManager.Position > 0) { orderDirection = OrderDirections.Sell; }
var order = this.CreateOrder(orderDirection, StockSharp.Algo.TraderHelper.GetMarketPrice(Security, orderDirection), Volume);
if (PositionManager.Position != 0)
{
var strategy = new MarketQuotingStrategy(order, new Unit(), new Unit());
ChildStrategies.Add(strategy);
}
PositionManager.Position = 0;
Stop();
- то у меня выставится заявка и остановится стратегия, и если рынок уйдёт, заявка не исполнится.
Как мне правильно дожидаться окончания котирования?
Комментарии (5)
Вход или Создать аккаунт, Войдите или зарегистрируйтесь, чтобы оставить комментарий
Можно смотреть изменение позиции, как она станет равна 0 - останавливать стратегию.
О, точно. Самое простое и не заметил!
Можно подписаться на изменение состояния стратегии котирования... вроде
strategy.ProcessStateChanged += strategy => { if(strategy.ProcessState == ProcessStates.Stopped) Stop(); }
Спасибо, по событию всё получилось!
Отлично