Нужна подсказка про советник по ордерам

 
Всем здравствуйте. Может кто знает, подскажите, пожалуйста есть ли советник, который может ограничивать общее количество ордеров и по отдельности по тому или иному инструменту?
 

Советника, который делал бы полностью невозможным открытие новых ордеров и позиций, если их количество по заданным инструментам достигло заданного предела, скорее всего, нет. По крайней мере, мне такого не встречалось, и с ходу не вижу возможности такого написать.

Если речь идёт не про такой тотальный запрет, то что-то написать можно. Например, советник может выводить информацию на график, что по данному символу достигнут лимит. Это не остановит трейдера, если он вопреки запрету всё-таки захочет открыть позицию, но хоть защитит от открытия лишней позиции по ошибке.

Можно, конечно, ещё через использование функций операционной системы реализовать принудительное закрытие терминала при достижении лимита. Но это, на мой взгляд, принесёт больше проблем, чем устранит. 

 
Yuriy Bykov #:

Советника, который делал бы полностью невозможным открытие новых ордеров и позиций, если их количество по заданным инструментам достигло заданного предела, скорее всего, нет. По крайней мере, мне такого не встречалось, и с ходу не вижу возможности такого написать.

Если речь идёт не про такой тотальный запрет, то что-то написать можно. Например, советник может выводить информацию на график, что по данному символу достигнут лимит. Это не остановит трейдера, если он вопреки запрету всё-таки захочет открыть позицию, но хоть защитит от открытия лишней позиции по ошибке.

Можно, конечно, ещё через использование функций операционной системы реализовать принудительное закрытие терминала при достижении лимита. Но это, на мой взгляд, принесёт больше проблем, чем устранит. 

А в чём проблема написать-то? У нас же не бесконечное число торговых инструментов. Пишем код, который пройдёт по заранее заданному списку торговых инструментов и пересчитает их ордера (выведет суммарное их число). В старте советника делаем проверку, мол, если это число менее максимального, то флаг, разрешающий открытие новых ордеров установлен если больше или равно, то флаг снят. Делов то...
 
Yuriy Bykov #:

Советника, который делал бы полностью невозможным открытие новых ордеров и позиций, если их количество по заданным инструментам достигло заданного предела, скорее всего, нет. По крайней мере, мне такого не встречалось, и с ходу не вижу возможности такого написать.

Если речь идёт не про такой тотальный запрет, то что-то написать можно. Например, советник может выводить информацию на график, что по данному символу достигнут лимит. Это не остановит трейдера, если он вопреки запрету всё-таки захочет открыть позицию, но хоть защитит от открытия лишней позиции по ошибке.

Можно, конечно, ещё через использование функций операционной системы реализовать принудительное закрытие терминала при достижении лимита. Но это, на мой взгляд, принесёт больше проблем, чем устранит. 

Юрий, тут как раз поднялась тема интересная для меня

как думаете, можно обойтись таймаутом, т.е. после сделки копировать текущее время и проверять его на вход, если на том же сигнале проскочило проверку кол-во

или нужно обязательно использовать trade события? как думаете


интересует бывает ли такое что ордер завис и таймаут пропустит и отправит еще один ордер

или такое не возможно почти?


просто не известны как работает схемы работы клиента и сервера

 
lynxntech #:

интересует бывает ли такое что ордер завис и таймаут пропустит и отправит еще один ордер

или такое не возможно почти?

Бывали затыки, когда ордер (рыночный!) зависал на несколько минут.

OrderSend() возвращал

10012

TRADE_RETCODE_TIMEOUT

Запрос отменен по истечению времени

но реально ордер выставлялся.

Финам, фортс.

 
Vitaly Murlenko #:
А в чём проблема написать-то? У нас же не бесконечное число торговых инструментов. Пишем код, который пройдёт по заранее заданному списку торговых инструментов и пересчитает их ордера (выведет суммарное их число). В старте советника делаем проверку, мол, если это число менее максимального, то флаг, разрешающий открытие новых ордеров установлен если больше или равно, то флаг снят. Делов то...
Проблема, скорее всего, в разном понимании задачи. Я понял, что @Ильдар Гарипов хотел написать советник, который будет контролировать количество ордеров и позиций, открываемых другими советниками или трейдером вручную. И при необходимости не позволять выполнить открытие. Вы же имели ввиду контроль, осуществляемый внутри одного советника. С таковым действительно особых проблем нет.
 
JRandomTrader #:

Бывали затыки, когда ордер (рыночный!) зависал на несколько минут.

OrderSend() возвращал

10012

TRADE_RETCODE_TIMEOUT

Запрос отменен по истечению времени

но реально ордер выставлялся.

Финам, фортс.

интересно что в Терминале в это время, приходит обработка тиков или нет


интересует затуп в главной сфере, будет ли открыта вторая позиция или серия даже

 
lynxntech #:

Юрий, тут как раз поднялась тема интересная для меня

как думаете, можно обойтись таймаутом, т.е. после сделки копировать текущее время и проверять его на вход, если на том же сигнале проскочило проверку кол-во

или нужно обязательно использовать trade события? как думаете

Могу только сказать, что для себя уже довольно давно использую двухуровневую схему. Первый уровень (торговая стратегия) работает только с виртуальными ордерами и позициями, то есть не вникает ни в какие тонкости исполнения. Если надо в данный момент открыть позицию, то запоминается, что такая позиция успешно открыта по текущей цене. Цена дошла до стопа - значит виртуальная позиция закрылась по такой цене. И так далее. В этом случае сигнал на открытие всегда считается точно отработанным и не нуждается в каких-то дополнительных проверках.

Второй уровень - вывод суммарного объёма открытых виртуальных позиций на рынок. Если состав открытых виртуальных позиций изменился, то пересчитывается объём, который должен быть реально открыт. Если он оказался меньше уже открытого реального, то происходит закрытие на необходимую разницу. Если больше, то открывается дополнительная позиция. Если открыть или закрыть не получилось по любым причинам, то разница между необходимым и реально открытым объёмом выявляется на следующим тике и производится следующая попытка эту разницу устранить. Так продолжается до тех пор, пока виртуальный и реальный объёмы не придут в соответствие.

Следует сделать оговорку, что такой подход применим только для относительно неспешной и нескальперской торговли, так как подразумевает достаточно вольное отношение к тому, насколько точно и быстро происходит "копирование" виртуальных позиций на реал.

 
lynxntech #:
будет ли открыта вторая позиция или серия даже

Смотря что в коде. Мне пришлось у себя сделать специальную обработку этой ситуации.

У меня неттинг, позиция общая суммарная (каждый робот знает свою позицию), поэтому "вторая" позиция точно не откроется, а вот объём - да, может быть в разы больше запланированного, если не принять специальных мер..

 
Yuriy Bykov #:

Могу только сказать, что для себя уже довольно давно использую двухуровневую схему. Первый уровень (торговая стратегия) работает только с виртуальными ордерами и позициями, то есть не вникает ни в какие тонкости исполнения. Если надо в данный момент открыть позицию, то запоминается, что такая позиция успешно открыта по текущей цене. Цена дошла до стопа - значит виртуальная позиция закрылась по такой цене. И так далее. В этом случае сигнал на открытие всегда считается точно отработанным и не нуждается в каких-то дополнительных проверках.

Второй уровень - вывод суммарного объёма открытых виртуальных позиций на рынок. Если состав открытых виртуальных позиций изменился, то пересчитывается объём, который должен быть реально открыт. Если он оказался меньше уже открытого реального, то происходит закрытие на необходимую разницу. Если больше, то открывается дополнительная позиция.

Следует сделать оговорку, что такой подход применим только для относительно неспешной и нескальперской торговли, так как подразумевает достаточно вольное отношение к тому, насколько точно и быстро происходит "копирование" виртуальных позиций на реал.

Надо будет покопать в эту сторону.
 
JRandomTrader #:

Смотря что в коде. Мне пришлось у себя сделать специальную обработку этой ситуации.

У меня неттинг, позиция общая суммарная (каждый робот знает свою позицию), поэтому "вторая" позиция точно не откроется, а вот объём - да, может быть в разы больше запланированного, если не принять специальных мер..

откуда знать позицию если она только отправлена, и еще не обновилась, 

у меня после отправки ордера идет таймаут по символу, это пинг+оффсет

потом уже проверка кол-ва позиций по символу, если таблица в Терминале не успела обновиться по позициям, то попадает на таймер. И вот в нем вопрос, не проблема ли это