- Новый контент
- Книга Masterforex-V
-
Академия
- Как стать слушателем Академии
- ⇒ ТС Masterforex-V - Интенсивный Курс Онлайн
- ⇒ Факультет Форекс Скальпинга Magister
- ⇒ Факультет СРЕДНЕсрочной торговли и паттернов ГОСТ
- ⇒ Кафедра ДФВА
- ⇒ Кафедра Опционной Торговли
- ⇒ Факультет биржевой торговли "Futures Trade and Stock Exchange"
- ⇒ Факультет торговли объёмом"
- ⇒ Факультет Инвестиций
- ⇒ ФАКУЛЬТЕТ Пробой Флета, Автоматизация, Автотрейдинг
- ⇒ Кафедра Спектрального Анализа FOREX и ИНДЕКСОВ валют
- ⇒ Система раннего прогнозирования в ТС МФ на основе модернизации АО и WPR
- ⇒ Кафедра FMA_Sar
- ⇒ Кафедра синергетического объемно-волнового анализа (СОВА)
- ⇒Кафедра бинарных опционов
- Как продлить доступ в закрытую часть Академии?
- Форумы
- Галерея
- Блоги
- Скачать
- Контакты
- Личный кабинет
- Больше
Инвестиционные фонды NordFx: профессиональное управление и прозрачность
|
HELP!!! Торговый поток занят! Как с этим бороться?
Автор темы:
Shiko
, окт 23 2007 10:36
7 ответов в этой теме
#1
Опубликовано 23 Октябрь 2007 - 10:36
Вопрос ко всем, кто разбирается в написании советников в MQL.
Запустил советник на демо, по нескольким валютным парам - пыхтит, депозит увеличивает
Позже обнаружил, что часть ордеров, которые советник должен был закрыть по получению сигнала - открыты. Разбираюсь, оказывается в журнале есть записи о том, что советник то ордера закрывал, а Альпари их не приняло. Пишет что-то, типа "Торговый поток занят". Ну занят - так занят. А советник то продолжает торговать дальше, в минус. У него то, бары сменились и сигнала на закрытие он не помнит...
Плиз, кто может помочь в этом вопросе - подскажите что надо сделать. Может можно что то в коде советника прописать на этот случай...
Запустил советник на демо, по нескольким валютным парам - пыхтит, депозит увеличивает
Позже обнаружил, что часть ордеров, которые советник должен был закрыть по получению сигнала - открыты. Разбираюсь, оказывается в журнале есть записи о том, что советник то ордера закрывал, а Альпари их не приняло. Пишет что-то, типа "Торговый поток занят". Ну занят - так занят. А советник то продолжает торговать дальше, в минус. У него то, бары сменились и сигнала на закрытие он не помнит...
Плиз, кто может помочь в этом вопросе - подскажите что надо сделать. Может можно что то в коде советника прописать на этот случай...
#2
Опубликовано 23 Октябрь 2007 - 11:43
Один из вариантов перезагрузи комп
#3
Опубликовано 23 Октябрь 2007 - 11:51
Нужно создать статик массив, куда заносить номера ордеров, если они не были закрыты и каждый раз проверять закрытие этих ордеров. Разумеется, после закрытия - удалять из массива.
Удачи!
#4
Опубликовано 23 Октябрь 2007 - 04:10
кстати, очень желательно, чтобы советник помнил о том, что он должен сделать, но не сделал. случаи разные бывают, ДЦ тоже не ангелы, лучше страховаться!А советник то продолжает торговать дальше, в минус. У него то, бары сменились и сигнала на закрытие он не помнит...
не забывать и о том, что не сработавшие сигналы нельзя "тупо" выполнять, лучше делать анализ - и в том случае, если они остались актуальны, исполнять.
#5
Опубликовано 23 Октябрь 2007 - 04:33
Ну вообще глобально есть как минимум 2 пути.
1. Как выше подсказывалось - создаешь массив, который будет хранить информацию о том - надо ли закрывать ордер(а) или нет. Т.е. если условие на закрытие истинно, то не закрывать ордер - а менять в массиве соответствующую переменную - что надо закрыть ордер. А в блоке что закрывает ордера - при каждом тике проверять массив - и закрывать ордер согласно массива....
2. При каждом новом тике (т.е. при вызове start() ) проверять необходимость закрытия ордера - ну и закрывать.
Кстати судя по всему ты используешь кучу ордеров которые сразу пытаешься менять. Там у метаквокеров существует правило 2-х секунд - ордера чаще меняться (закрываться не могут - кроме как по тейку или стопу). Т.е. команды ордеров надо давать не чаще 1-й в 2 секунды.
1. Как выше подсказывалось - создаешь массив, который будет хранить информацию о том - надо ли закрывать ордер(а) или нет. Т.е. если условие на закрытие истинно, то не закрывать ордер - а менять в массиве соответствующую переменную - что надо закрыть ордер. А в блоке что закрывает ордера - при каждом тике проверять массив - и закрывать ордер согласно массива....
2. При каждом новом тике (т.е. при вызове start() ) проверять необходимость закрытия ордера - ну и закрывать.
Кстати судя по всему ты используешь кучу ордеров которые сразу пытаешься менять. Там у метаквокеров существует правило 2-х секунд - ордера чаще меняться (закрываться не могут - кроме как по тейку или стопу). Т.е. команды ордеров надо давать не чаще 1-й в 2 секунды.
#6
Опубликовано 24 Октябрь 2007 - 04:30
самый удобный метод.Ну вообще глобально есть как минимум 2 пути.
1. Как выше подсказывалось - создаешь массив, который будет хранить информацию о том - надо ли закрывать ордер(а) или нет. Т.е. если условие на закрытие истинно, то не закрывать ордер - а менять в массиве соответствующую переменную - что надо закрыть ордер. А в блоке что закрывает ордера - при каждом тике проверять массив - и закрывать ордер согласно массива....
здесь необходимо обязательно помнить о мелких форс-мажорах - закрытие терминала, снятие (случайное или нет) советника и восстановление работы его после этого и тому подобное. чтобы потеря сформированного на каком-то отрезке работы советника массива по закрытию (модификации) ордеров не привела к нарушению логики.
по возможности применяю этот метод. самый надёжный.2. При каждом новом тике (т.е. при вызове start() ) проверять необходимость закрытия ордера - ну и закрывать.
если правила сопровождения ордеров сложны, то обычно формирую свой "слепок" ситуации, которую хочу иметь по ордерам. а потом отдельный блок "синхронизирует" моё видение мира с реальностью. вернее, подстраивает реальность под меня!
кстати, именно поэтому достаточно осторожно отношусь к советникам, которые совершают по 1 операции за тик. реализуется просто (я и сам такое делаю), но на мой взгляд не всегда оптимально. если не лениво и работаем с реалом, лучше реализовать свою логику посылки ордеров. кстати, для разных ДЦ может иметь смысл провести отдельную подстройку.Кстати судя по всему ты используешь кучу ордеров которые сразу пытаешься менять. Там у метаквокеров существует правило 2-х секунд - ордера чаще меняться (закрываться не могут - кроме как по тейку или стопу). Т.е. команды ордеров надо давать не чаще 1-й в 2 секунды.
#7
Опубликовано 24 Октябрь 2007 - 08:24
Всем спасибо за проявленное участие в обсуждении. Однако вашими советами воспользоваться не могу, поскольку это для меня пока "высшая математика". Я только изучаю MQL.
Если кто сможет помочь - могу выслать советник.
P.S. Кстати, в нем совсем нет кучи ордеров, советник простенький, но (судя по тестам) довольно неплохой (если не вмешивается ДЦ ).
Если кто сможет помочь - могу выслать советник.
P.S. Кстати, в нем совсем нет кучи ордеров, советник простенький, но (судя по тестам) довольно неплохой (если не вмешивается ДЦ ).
#8
Опубликовано 24 Октябрь 2007 - 08:55
А ДЦ всегда вмешивается!....
Удачи!
Посетителей, читающих эту тему: 0
0 пользователей, 0 гостей, 0 анонимных пользователей