Добрый день!
Что-то не совсем понимаю.
Я сделал интрадэй робота на основе 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();
- то у меня выставится заявка и остановится стратегия, и если рынок уйдёт, заявка не исполнится.
Как мне правильно дожидаться окончания котирования?
Comentarios (5)
Iniciar sesión o Crear cuenta, Inicie sesión o regístrese para dejar un comentario
Можно смотреть изменение позиции, как она станет равна 0 - останавливать стратегию.
О, точно. Самое простое и не заметил!
Можно подписаться на изменение состояния стратегии котирования... вроде
strategy.ProcessStateChanged += strategy => { if(strategy.ProcessState == ProcessStates.Stopped) Stop(); }
Спасибо, по событию всё получилось!
Отлично