Light Style© by Fisana

Перейти к содержимому


Инвестиционные фонды NordFx: профессиональное управление и прозрачность


NordFX

Фотография
- - - - -

HELP!!! Торговый поток занят! Как с этим бороться?


  • Пожалуйста, авторизуйтесь, чтобы ответить
7 ответов в этой теме

#1 Shiko

Shiko

    пробегал

  • Пользователи
  • Pip
  • 2 сообщений

Опубликовано 23 Октябрь 2007 - 10:36

Вопрос ко всем, кто разбирается в написании советников в MQL.
Запустил советник на демо, по нескольким валютным парам - пыхтит, депозит увеличивает :wink:
Позже обнаружил, что часть ордеров, которые советник должен был закрыть по получению сигнала - открыты. Разбираюсь, оказывается в журнале есть записи о том, что советник то ордера закрывал, а Альпари их не приняло. Пишет что-то, типа "Торговый поток занят". Ну занят - так занят. А советник то продолжает торговать дальше, в минус. У него то, бары сменились и сигнала на закрытие он не помнит... :angry:

Плиз, кто может помочь в этом вопросе - подскажите что надо сделать. Может можно что то в коде советника прописать на этот случай...

#2 ceva

ceva

    прописался

  • Пользователи ST test (off)
  • PipPipPip
  • 74 сообщений

Опубликовано 23 Октябрь 2007 - 11:43

Один из вариантов перезагрузи комп

#3 Liv

Liv

    живет тут

  • Пользователи ST test (off)
  • PipPipPipPipPip
  • 162 сообщений

Опубликовано 23 Октябрь 2007 - 11:51

Нужно создать статик массив, куда заносить номера ордеров, если они не были закрыты и каждый раз проверять закрытие этих ордеров. Разумеется, после закрытия - удалять из массива.
Удачи!

#4 Shu

Shu

    Option Trader

  • Пользователи ST test (off)
  • PipPipPipPipPip
  • 1 897 сообщений

Опубликовано 23 Октябрь 2007 - 04:10

А советник то продолжает торговать дальше, в минус. У него то, бары сменились и сигнала на закрытие он не помнит... :angry:

кстати, очень желательно, чтобы советник помнил о том, что он должен сделать, но не сделал. случаи разные бывают, ДЦ тоже не ангелы, лучше страховаться!

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

#5 alexgomel

alexgomel

    Торгует
    и
    программирует

  • Пользователи ST test (off)
  • PipPipPipPipPip
  • 970 сообщений

Опубликовано 23 Октябрь 2007 - 04:33

Ну вообще глобально есть как минимум 2 пути.

1. Как выше подсказывалось - создаешь массив, который будет хранить информацию о том - надо ли закрывать ордер(а) или нет. Т.е. если условие на закрытие истинно, то не закрывать ордер - а менять в массиве соответствующую переменную - что надо закрыть ордер. А в блоке что закрывает ордера - при каждом тике проверять массив - и закрывать ордер согласно массива....

2. При каждом новом тике (т.е. при вызове start() ) проверять необходимость закрытия ордера - ну и закрывать.

Кстати судя по всему ты используешь кучу ордеров которые сразу пытаешься менять. Там у метаквокеров существует правило 2-х секунд - ордера чаще меняться (закрываться не могут - кроме как по тейку или стопу). Т.е. команды ордеров надо давать не чаще 1-й в 2 секунды.

#6 Shu

Shu

    Option Trader

  • Пользователи ST test (off)
  • PipPipPipPipPip
  • 1 897 сообщений

Опубликовано 24 Октябрь 2007 - 04:30

Ну вообще глобально есть как минимум 2 пути.

1. Как выше подсказывалось - создаешь массив, который будет хранить информацию о том - надо ли закрывать ордер(а) или нет. Т.е. если условие на закрытие истинно, то не закрывать ордер - а менять в массиве соответствующую переменную - что надо закрыть ордер. А в блоке что закрывает ордера - при каждом тике проверять массив - и закрывать ордер согласно массива....

самый удобный метод.

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

2. При каждом новом тике (т.е. при вызове start() ) проверять необходимость закрытия ордера - ну и закрывать.

по возможности применяю этот метод. самый надёжный.

если правила сопровождения ордеров сложны, то обычно формирую свой "слепок" ситуации, которую хочу иметь по ордерам. а потом отдельный блок "синхронизирует" моё видение мира с реальностью. вернее, подстраивает реальность под меня! :biggrin:

Кстати судя по всему ты используешь кучу ордеров которые сразу пытаешься менять. Там у метаквокеров существует правило 2-х секунд - ордера чаще меняться (закрываться не могут - кроме как по тейку или стопу). Т.е. команды ордеров надо давать не чаще 1-й в 2 секунды.

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

#7 Shiko

Shiko

    пробегал

  • Пользователи
  • Pip
  • 2 сообщений

Опубликовано 24 Октябрь 2007 - 08:24

Всем спасибо за проявленное участие в обсуждении. Однако вашими советами воспользоваться не могу, поскольку это для меня пока "высшая математика". Я только изучаю MQL.
Если кто сможет помочь - могу выслать советник.

P.S. Кстати, в нем совсем нет кучи ордеров, советник простенький, но (судя по тестам) довольно неплохой (если не вмешивается ДЦ :wink: ).

#8 Liv

Liv

    живет тут

  • Пользователи ST test (off)
  • PipPipPipPipPip
  • 162 сообщений

Опубликовано 24 Октябрь 2007 - 08:55

А ДЦ всегда вмешивается!....
Удачи!




Посетителей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных пользователей

Рейтинг брокеров форекс: кто лидер, кто аутсайдер и почему?




Masterforex-V NordFX

Rambler's Top100

Принимаем Z-Payment