Как убрать выставление лишних заявок?
private void ProcessCandle(Candle candle)
{
lock(_mainlock)
{
var timeFrame = (TimeSpan)candle.Arg;
var time = timeFrame.GetCandleBounds(Security).Min - timeFrame;
_band.Process(new CandleIndicatorValue(candle) { IsFinal = true });
this.AddInfoLog("Новая свечка {0}, {1}, {2}, {3}, {4}", candle.HighPrice, candle.CloseTime, _band.LastValue, _band.PrevIndValue, _band.InitDirection);
if (candle.OpenTime >= time && _band.IsFormed )
{
if (_band.Direction == -1 && _band.LastValue < _band.PrevIndValue && Position >= 0 && _band.LevelHigh2 != 0)
{
//отменяем все ордера и выставляем новую заявку
CancelActiveOrders();
var order = this.CreateOrder(OrderDirections.Sell, Security.BestAsk.Price - 1m, this.Position + Volume);
RegisterOrder(order);
}
else
if (_band.Direction == 1 && _band.LastValue > _band.PrevIndValue && Position <= 0 && _band.LevelLow2 != 0)
{
//отменяем все ордера и выставляем новую заявку
CancelActiveOrders();
var order = this.CreateOrder(OrderDirections.Buy, Security.BestBid.Price + 1m, this.Position * -1m + Volume);
RegisterOrder(order);
}
else
if (_band.InitDirection == 2 && Position > 0)
{
//отменяем все ордера и выставляем новую заявку
CancelActiveOrders();
var order = this.CreateOrder(OrderDirections.Sell, Security.BestAsk.Price, this.Position);
RegisterOrder(order);
}
else
if (_band.InitDirection == -2 && Position < 0)
{
//отменяем все ордера и выставляем новую заявку
CancelActiveOrders();
var order = this.CreateOrder(OrderDirections.Buy, Security.BestBid.Price, this.Position * -1m);
RegisterOrder(order);
}
}
}
}
Это код, который выставляет заявки. Но в моменты высокой активности он начинает ставить "лишнее". Есть способы устранения?