Как правильно открыть ордер по рынку? - страница 6

 
Gennady Mazur:

Про паузу Вам правильно посоветовали. Была уже тема на форуме, что после отправки ордера зачастую достаточно паузы в несколько миллисекунд, чтобы можно было продолжать работать с позицией. На OnTradeTransaction(), если это возможно, лучше не полагаться.

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

 
Alexey Kozitsyn:

 На OnTradeTransaction(), если это возможно, лучше не полагаться.


Интересно, почему?
 
prostotrader:
Интересно, почему?

1. Не факт, что придет;

2. Косячил раньше в тестере. Сейчас не знаю; 

Добавлено:

3. Некоторые параметры ордера или сделки (точно не помню) типа перечисления могут иметь "значения по умолчанию", которые таковыми не являются. Т.е. MQ сделали не WRONG_VALUE, а, например, ORDER_TYPE_BUY. Может ввести в заблуждение;

 
Alexey Kozitsyn:

Про паузу Вам правильно посоветовали. Была уже тема на форуме, что после отправки ордера зачастую достаточно паузы в несколько миллисекунд, чтобы можно было продолжать работать с позицией. На OnTradeTransaction(), если это возможно, лучше не полагаться.

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

В принципе так и делаю, но на Фортс часто ордер принят успешно...но на след тике еще позиции нет...
Вот тут и может проскочить доп открытие.... частично решаю вопрос так, если ордер принят, то увеличиваю инт переменную, а после увеличения уже немного другие условия для открытия, поэтому нового открытия не происходит, но....если ордер не принят переменная не увеличивается, а вот тут то и прикол... не правильно определил состояние и полезли лишние ордера.
 
Alexey Kozitsyn:

1. Не факт, что придет;

2. Косячил раньше в тестере. Сейчас не знаю; 

Вы наверное, не видели сообщение от разработчиков, что теперь, OnTradeTransaction() гарантировано.

Кроме того, транзакции могут потеряться при доставке от сервера к терминалу.
Что касается этой фразы.

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

 

Сколько ставить паузу? 1 сек 2, а может 10?

2016.12.14 22:01:41.371 Trades  'xxxxx': cancel order #49932961 buy limit 1.00 CHMF-6.17 at 92501 placed for execution in 64873.549 ms

Добавлено

Не забывайте, что Вы работаете с приложением КЛИЕНТ - СЕРВЕР (запрос-ответ) 

 
prostotrader:

Вы наверное, не видели сообщение от разработчиков, что теперь, OnTradeTransaction() гарантировано.

Кроме того, транзакции могут потеряться при доставке от сервера к терминалу.
Что касается этой фразы.

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

Сколько ставить паузу? 1сек 2, а может 10?

2016.12.14 22:01:41.371 Trades  'xxxxx': cancel order #49932961 buy limit 1.00 CHMF-6.17 at 92501 placed for execution in 64873.549 ms

Да, Вы правы, не видел фразу, как и трупы:)

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

 
Gennady Mazur:
В принципе так и делаю, но на Фортс часто ордер принят успешно...но на след тике еще позиции нет...
Вот тут и может проскочить доп открытие.... частично решаю вопрос так, если ордер принят, то увеличиваю инт переменную, а после увеличения уже немного другие условия для открытия, поэтому нового открытия не происходит, но....если ордер не принят переменная не увеличивается, а вот тут то и прикол... не правильно определил состояние и полезли лишние ордера.
В любом не понятном случае, как уже было предложено, используйте расширенное логирование, а не просто возврат да/нет. Тем более на этапе разработки.
 
Alexey Kozitsyn:

Да, Вы правы, не видел фразу, как и трупы:)

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

Алексей!

Достаточно ликвидный инструмент :)

2016.12.14 22:01:41.431 Trades  'xxxxx': cancel order #49931802 sell limit 1.00 GOLD-9.17 at 1190.2 placed for execution in 64926.078 ms

Дело не в инструменте (ликвидности), а в задержке, которая может быть на ЛЮБОМ инструменте.
 

Я активно торгую с помощью советников почти 4 года.

Ни в одном моём советнике нет никаких пауз (Кроме паузы ожидания подкачки данных с сервера в ИНДИКАТОРАХ ),

если Вы вводите паузу - это ВЕРНЫЙ признак того, что Вы не првильно создали алгоритм работы Ващего советника :( 

 
prostotrader:

Алексей!

Я активно торгую с помощью советников почти 4 года.

Ни в одном моём советнике нет никаких пауз (Кроме паузы ожидания подкачки данных с сервера в ИНДИКАТОРАХ ),

если Вы вводите раузу - это ВЕРНЫЙ признак того, что Вы не првильно создали алгоритм работы Ващего советника :( 

Михаил, если Вы чего-то не видели или не сделали - это не значит, что это невозможно или не нужно.
 
Alexey Kozitsyn:
Михаил, если Вы чего-то не видели или не сделали - это не значит, что это невозможно или не нужно.

Согласен полностью с Вами!

Каждый делает как хочет, или как может.