Неизбежная 4108 - страница 2

 

после OrderSelect нужно обязательно делать проверку

if (OrderCloseTime()==0)
  {
  //операция с ордером
  }
 
Renat Akhtyamov:
ни разу не встречал такую ошибку ни на реале, ни на демо. Про тестер я вообще молчу - идеальнее торговли не бывает ).


Это действительно редкий случай. Но опять же, все зависит от алгоритма.

Чаще всего приходится делать трал на расстоянии заметно большем, чем позволяет StopLevel,

и в результате вероятность такой 4108 близка к нулю.

Но если тралить максимально плотно - 4108 вылазит даже в тестере, представьте себе.

 
Taras Slobodyanik:

после OrderSelect нужно обязательно делать проверку

if (OrderCloseTime()==0)
  {
  //операция с ордером
  }


Тоже хорошая идея.

Но я уже писал: в клиентском терминале абсолютно все данные старше, чем на сервере на время пинга,

и OrderCloseTime() в том числе.

 
Dmitriy Susloparov:


Это действительно редкий случай. Но опять же, все зависит от алгоритма.

Чаще всего приходится делать трал на расстоянии заметно большем, чем позволяет StopLevel,

и в результате вероятность такой 4108 близка к нулю.

Но если тралить максимально плотно - 4108 вылазит даже в тестере, представьте себе.

для трала скорее всего нужно учитывать и уровень заморозки, так называемую фрезу во избежание 4108... //MODE_FREEZELEVEL
 
Renat Akhtyamov:
для трала скорее всего вместо стоплевел нужно учитывать уровень заморозки, так называемую фрезу...

Видимо, я неточно выразился. Я имел ввиду подтяжку sl для рыночного, а не изменение цены для отложенного.
 
Renat Akhtyamov:
Видимо не совсем вникли в мой пост. Перечитайте внимательно.


А. Ну да. Но суть дела не меняется.

На практике я пользуюсь (Ask-Bid) плюс или минус еще какая-то дополнительная дистанция.

Если в результате получается достаточно далеко - тогда и 4108 не бывает.

А если максимально близко, то 130 все же нет, а 4108 иногда проскакивает.

 
Dmitriy Susloparov:


А. Ну да. Но суть дела не меняется.

На практике я пользуюсь (Ask-Bid) плюс или минус еще какая-то дополнительная дистанция.

Если в результате получается достаточно далеко - тогда и 4108 не бывает.

А если максимально близко, то 130 все же нет, а 4108 иногда проскакивает.

4108:   "Неверный номер тикета."

Не понял ???

Может быть ошибка совсем не в этом, а в том что с тикетом что то не то, всё-таки

Либо ордер не выбран, либо сначала закрыт(роботом, по стопу, тейку)/удален и следом его модифицировать/закрывать пробуете?

В таком случае - да, будет такая ошибка, хоть и редко

 
Renat Akhtyamov:

4108:   "Неверный номер тикета."

Не понял ???

Может быть ошибка совсем не в этом, а в том что с тикетом что то не то, всё-таки

Ошибка именно в том, что в момент, когда на сервер приходит OrderModify(), данный тикет

оказывается уже закрыт по sl, сервер справедливо возвращает 4108.

То есть, перед тем, как сделать OrderModify(), я делаю проверку, существует ли данный тикет

среди открытых ордеров. Но любой способ проверки оперирует данными, устаревшими

на время пинга. OrderModify() тоже идет на сервер не мгновенно. 

Конечно, если sl достаточно далеко, то почти невероятно, чтобы он успел сработать.

А если близко - есть такой риск: внутри терминала тикет числится открытым, но на сервере

уже закрыт.

 
Dmitriy Susloparov:

Ошибка именно в том, что в момент, когда на сервер приходит OrderModify(), данный тикет

оказывается уже закрыт по sl, сервер справедливо возвращает 4108.

То есть, перед тем, как сделать OrderModify(), я делаю проверку, существует ли данный тикет

среди открытых ордеров. Но любой способ проверки оперирует данными, устаревшими

на время пинга. OrderModify() тоже идет на сервер не мгновенно. 

Конечно, если sl достаточно далеко, то почти невероятно, чтобы он успел сработать.

А если близко - есть такой риск: внутри терминала тикет числится открытым, но на сервере

уже закрыт.

Поэтому в АТС-ках понятие стоп и тейк обычно отсутсвует.
 
Taras Slobodyanik:

после OrderSelect нужно обязательно делать проверку

Если ордер выбирается из списка открытых по индексу, у него никогда не будет OrderCloseTime() > 0 именно по той причине, что он ещё в списке открытых, действующих.

Эта проверка обязательна если ордер выбирать по тикету из переменной или массива.

Причина обращения: