Проблема с регистрацией заявки
Добрый день.
Лига добра, помогите нубу. Смысл в том, что я пытаюсь поставить заявку в боте.
Соответствующий код:
Code
Action<decimal, decimal> DoTrade = ((pos, price) =>
{
if (pos != 0)
{
CancelActiveOrders();
this.ChildStrategies.ToList().ForEach(s =>
{
s.SuspendRules();
s.Stop();
});
var newOrderDirection = pos > 0 ? Sides.Buy : Sides.Sell;
var newPositionToOpen = this.CreateOrder(newOrderDirection, price, Math.Abs(pos));
newPositionToOpen.WhenNewTrades().Do(OnNewOrderTrades).Apply(this);
RegisterOrder(newPositionToOpen);
}
});
...
if (trendIndicator.IsDetected && trendIndicator.IsThisFuckingIndicatorReallyFormed)
{
var buyPosition = Position > 0 ? 0 : Math.Abs(Position) + 1;
var sellPosition = Position < 0 ? 0 : -(Math.Abs(Position) + 1);
if (candle.ClosePrice < (decimal)trendIndicator.NextValue)
DoTrade(buyPosition, candle.ClosePrice + candle.Security.StepPrice * 10);
else
DoTrade(sellPosition, candle.ClosePrice - candle.Security.StepPrice * 10);
}
А далее начинаются чудеса. Первая сделка по покупке 1 контракта проходит сразу, на следующей свечке генерируется сделка по продаже 2-х контрактов - по ней заявка висит в статусе "Регистрация". На следующей свечке та же петрушка (система видит сигнал на продажу, видит, что позиция положительная, следовательно, опять пытается продать 2 контракта). Так 5 заявок шпарит - не проходят они, потом сразу кидает их в статус "Отменена". Причём, отменяются заявки тоже не сразу. Скрины прикрепил.
Подскажите, люди добрые, откуда ноги растут у этой проблемы, и как её побороть можно?
В OnStarted для стратегии имеем следующее:
Code
protected override void OnStarted()
{
_series
.WhenCandlesFinished()
.Do((candle) =>
{
kalmanSeries.Process(candle);
trendIndicator.Process(candle);
upperBandExt.Process(candle);
lowerBandExt.Process(candle);
CancelActiveOrders();
ProcessCandle(candle);
})
.Apply(this);
base.OnStarted();
}
Всем заранее спасибо.