Ошибки, баги, вопросы - страница 989

 

Нет, все машины индивидуальны. Даже оси лицензионные, от хрюши до WS. У меня ощущение презумпции виновности... Надо отмазываться... Оправдываться... Логи, то, се...

А ставить колво лок агентов больше, чем ядер проца нужно запретить на законодательном уровне, и все! 

 
muallch:

...

А ставить колво лок агентов больше, чем ядер проца нужно запретить на законодательном уровне, и все! 

В общем-то логично.
 

Доброго времени суток. У меня вопрос к разработчикам. Идеальный цикл формирования сделки состоит из следующих этапов:

   1.Отправка запроса через OrderSend() с последующей проверкой того, что метод вернул true и корректный retcode.

   2.Далее необходимо отслеживать прохождение запроса на сервере через OnTradeTransaction(). Этот обработчик очень удобный и дает полный контроль за процессом.

        Однако, мы живем в реальном мире и, например, из-за падения коннекта или просто из-за того, что транзакция "потерялась при доставке", транзакции типа TRADE_TRANSACTION_REQUEST мы можем и не дождаться. Таким образом, цикл ожидания станет бесконечным и будет невозможно определить совершилась ли сделка по запросу или нет.

        Существует ли какая-либо УСТАВНАЯ процедура обработки таких аварийных ситуаций с однозначным получением логически корректного завершения процесса при любом форс-мажоре? Например, если мы не дождались TRADE_TRANSACTION_REQUEST в течение 20 (или 30, или 40) секунд, то переходим на более медленный, но верный алгоритм, а именно: сравниваем текущий объем по символу с объемом до OrderSend(), ищем в истории ордер и вычисляем его статус, определяем делать ли еще один запрос на открытие или пропустить сигнал. Для метода OrderSendAsync() задача еще более усложняется - надо иметь точный критерий того, что конкретный ордер не сработал и знать когда этот критерий начинать применять. Если я что-то не так понимаю, то прошу меня поправить.

   

 
M24:

 Для метода OrderSendAsync() задача еще более усложняется - надо иметь точный критерий того, что конкретный ордер не сработал и знать когда этот критерий начинать применять. Если я что-то не так понимаю, то прошу меня поправить.    

HistorySelectByPosition - по идее должно помочь, id выдается при отправки ордера.

 
Почему может пропадать  вертикальная ось в индикаторе вместе с отображением индикатора? В базовых индикаторах такого не бывает, а вот в созданном такая проблема есть. При некоторых горизонтальных так сказать значениях скролла и увеличивающих значениях лупы картинка пропадает.//Продублирую в сервисдеск
 

VanHelsing:

на системах 32х тоже Win7 уже начинаются проблемы в операциях с вещественными числами, на XP так вообще отказывается работать при передаче значений в библиотеку "wininet.dll".

а где в wininet вы передаете вещественные числа?
 
papaklass:

 1. Возьмите себе за правило, торговые приказы отправлять на текущем тике, а проверять их исполнение на следующем тике. Тогда у Вас не будет бесконечных циклов.

2. При проверке испонения отданных на предыдущем тике распоряжений, не заморачивайтесь всякими OnTrade()/ OnTradeTransaction(). Проверяйте изменение состояния своего счета, т.е. работайте с первоисточником. Ведь любое торговое располряжение имеет своей целью измененить состояние Вашего торгового счета. Так и проверяйте изменение этого состояния.

3. В зависимости от результатов проверки и делайте дальнейшую логику своего робота.

Прежде чем обращаться к таким функциям как OnTrade()/OnTradeTransaction() , определите что для Вас важнее:

а). добиться открытия/закрытия/модификации позиции при данных рыночных условиях;

б). тратить время на выяснения причины неисполнения Вашего торгового распоряжения и искать виноватых.

   Все-таки у меня осталось некоторое недопонимание. Если по результатам проверки на следующем тике мы НЕ получили изменения позиции, то что в этом случае делать. Причины отсутствия изменений могут быть совершенно разными. Как вариант:

ордер по запросу сформирован на сервере, но по каким-то причинам отклонен,

сервер перегружен - исполнение с задержкой,

на какое-то время пропал коннект.

Хотелось бы иметь точный критерий, того, что ордер не был исполнен. Привязка ко времени в асинхронной системе мне кажется не очень точной, допускающей неопределенность. Может быть есть смысл выбирать ордер из истории и проверять его статус или, как предложил sion, использовать HistorySelectByPosition. Я исхожу из того, что если разработчики спроектировали эту систему такой, то должны быть и "правильные" методы отработки таких ключевых операций.

 
M24:

Хотелось бы иметь точный критерий, того, что ордер не был исполнен

вам ведь уже пояснили, что


не заморачивайтесь всякими OnTrade()/ OnTradeTransaction().

работайте с первоисточником

поэтому выбирайте ордера и проверяйте их состояние
 

Всем привет!

Как сделать так, чтобы при старте скрипта все содержимое вкладки  "Experts" затиралось? (Вроде команды cls), а то бывает сложно разбирать где закончился вывод на печать с предыдущего запуска скрипта и с текущего.

Спасибо!! 

 
ns_k:

Всем привет!

Как сделать так, чтобы при старте скрипта все содержимое вкладки  "Experts" затиралось? (Вроде команды cls), а то бывает сложно разбирать где закончился вывод на печать с предыдущего запуска скрипта и с текущего.

Спасибо!! 

а вы добавьте в деинит скрипта строку

Print("===================== The End ===================")

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