Эта ошибка возникла из за моей ошибки: робот начинает открывать очень
большое количество ордеров(это мой баг), соответственно в таблице "мои
сделки" очень много строк и из за этого возникает данная ошибка. Вот
код моей вредоносной процедуры(не исправленной)
Эту процедуру делал для закрытия ордеров к определенному времени, она
вызывается на каждом тике после заданного времени. И косяк здесь в
том, что пока робот открывает рыночный ордер, противоположный тому,
что сейчас есть в рынке, эта процедура заново вызывается и открывается
еще один противоположный и таким образом получается очень много
сделок, привод зависает, а когда заново его включаю и начинаю делать
дде вывод, то появляется вышеописанная ошибка.
Она же, я полагаю может появиться если просто будет очень много сделок
и сделаем заново вывод по дде.
private void CloseAllOrd()
{
for (int i = Limits.Count() - 1; i >= 0; i--)
{
Order ord = Limits;
if (ord.State == OrderStates.Active)
CancelOrder(ord);
}
for (int i = this.StopOrders.Count() - 1; i >= 0; i--)
{
Order ord = this.StopOrders;
if (ord.State == OrderStates.Active)
CancelOrder(ord);
}
count = 0;
foreach (MyOrderss x in Trades)
{
if (x.Direction == OrderDirections.Buy) count +=
x.Volume;
if (x.Direction == OrderDirections.Sell) count -=
x.Volume;
}
if (count > 0)
{
var order = new Order
{
Account = acc,
Volume = count,
Security = secur,
Price = secur.BestBid - otst *
secur.MinStepSize,
Direction = OrderDirections.Sell,
Type = OrderTypes.Limit,
};
this.Trader.RegisterOrder(order);
ВремяОтмены = DateTime.Now;
}
if (count < 0)
{
var order = new Order
{
Account = acc,
Volume = -count,
Security = secur,
Price = secur.BestAsk + otst *
secur.MinStepSize,
Direction = OrderDirections.Buy,
Type = OrderTypes.Limit,
};
this.Trader.RegisterOrder(order);
}
}