Algorithmischer Handel für .NET und Python✦86+ Konnektoren · Börsen · Broker · Krypto✦S#.Designer · Backtest · optimieren · live gehen✦Eine Community von 31,458+ Tradern und Entwicklern✦Algorithmischer Handel für .NET und Python✦86+ Konnektoren · Börsen · Broker · Krypto✦S#.Designer · Backtest · optimieren · live gehen✦Eine Community von 31,458+ Tradern und Entwicklern✦
Потому, что в промежуток времени между созданием заявки и ее исполнением приходят тики, а позиция в этот промежуток еще не поменялась. Я сделал такой вариант:
cantrade = false;
// создаем рыночную заявку (так как на FORTS нет такого понятия как рыночная заявка, то будет использована встречная цена в стакане)
_order = this.CreateOrder(_dir, (decimal)Security.GetCurrentPrice(_dir), Volume);
this.AddInfoLog("Ордер {0}: цена {1} направление {2} кол-во {3}".Put(_order.Id, _order.Price, _order.Direction, _order.Volume));
_order
.WhenCanceled()
.Do(() =>
{
this.AddInfoLog("Заявка успешно отменена");
cantrade = true;
})
.Once()
.Apply(this)
.Name = "WhenCanceled";
_order
.WhenRegistered()
.Do((rule, o) =>
{
this.AddInfoLog("Заявка успешно зарегестрирована");
})
.Once()
.Apply(this)
.Name = "WhenRegistered";
_order
.WhenRegisterFailed()
.Do(() =>
{
this.AddInfoLog("Заявка не принята биржей");
cantrade = true;
})
.Once()
.Apply(this)
.Name = "WhenRegisterFailed";
_order
.WhenMatched()
.Do((rule, o) =>
{
cantrade = true;
this.AddInfoLog("Заявка полностью исполнена");
this.AddInfoLog("Удаляем все правила связанные с заявкой.");
// удаление всех правил связанных с order
Rules.RemoveRulesByToken(rule.Token, rule);
})
.Once()
.Apply(this)
.Name = "WhenMatched";
// отправляем на регистрацию
RegisterOrder(_order);
но все равно периодически срабатывает два раза подряд, пока не понял почему.
Возможно, у вас код, который обрабатывает событие не успевает обработать прошлое и запускается еще раз, поэтому 2 заявки летит.
Wir verwenden Cookies, um die beste Erfahrung auf unserer Website zu gewährleisten. Durch die weitere Nutzung unserer Seite stimmen Sie der Verwendung von Cookies zu.
Kommentare (7)
Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen
Посмотрите примеры, там всё это есть.
Вот как раз ответов не нашел, если не трудно, в каких конкретно примерах?
SampleSMA, например
1)можно так:
через трейдер:
2)```csharp
var order = new Order() ;
_trader.RegisterOrder(order);
Бесконечно открывает сделки, но первое условие явно должно ограничить, т.е. один раз открылся и все.
Потому, что в промежуток времени между созданием заявки и ее исполнением приходят тики, а позиция в этот промежуток еще не поменялась. Я сделал такой вариант:
но все равно периодически срабатывает два раза подряд, пока не понял почему.
Дык я пробовал делать просто флаг вначале, не связанный с биржей. Тож самое.
Возможно, у вас код, который обрабатывает событие не успевает обработать прошлое и запускается еще раз, поэтому 2 заявки летит.