
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Я чего-то не понимаю. Если я открываю два графика, например, USDJPY H1, и добавляю экземпляр советника на каждый из них, то оба используют магическое число 9999033.
Да, эта опция не была встроена в советник, потому что я никогда не использовал ее. Единственная возможность отличить два одинаковых графика (которую я вижу) - это хэш в хэндле окна...
но тогда вы потеряете устойчивость при перезапуске и закрытии графика, и, следовательно, в результате могут или будут созданы ордера-сироты.
Так является ли терминальное приложение MT "контейнером" - с одним hWnd для <всего>?
Да. Это довольно типичное MDI-приложение. Есть окно верхнего уровня, которое содержит такие вещи, как панели инструментов, панели и клиентскую область MDI. Последняя затем содержит каждый график, и каждый график фактически состоит из двух окон: контейнер с областью рисования внутри него. Каждое из этих окон имеет свой собственный хэндл hWnd. Функция WindowHandle() возвращает хэндл области рисования, и поэтому, используя вызов API GetParent() три раза, вы получите hWnd окна верхнего уровня MT4.
fwiw, я использую нижеприведенный вариант и никогда не имел дубликатов. Один и тот же советник на 10 графиках [любого типа].
У меня нет ответа на вопрос о том, что хэш-функции передается слишком много хлама. Я просто запихал туда все, включая кухонную раковину, т.е. я не математик..., просто долбил и долбил, пока не получил ни одного повторения - даже при запуске терминала с профилем из 10 графиков с одним и тем же советником...
Очевидно, я хотел бы иметь лучший и более описываемый/логичный метод... так что начинайте рвать его на куски :O)
fwiw, я использую нижеприведенный вариант и никогда не имел дубликатов. Один и тот же советник на 10 графиках [любого типа].
У меня нет ответа на вопрос о том, что хэш-функции передается слишком много хлама. Я просто запихал туда все, включая кухонную раковину, т.е. я не математик..., просто долбил и долбил, пока не получил ни одного повторения - даже при запуске терминала с профилем из 10 графиков с одним и тем же советником...
Очевидно, я хотел бы иметь лучший и более описываемый/логичный метод... так что начинайте рвать его на куски :O)
Мне нравится. Особенно старый добрый хэш djb2.
Очень впечатляющий материал, ребята :)
Контейнеры MDI возвращают меня назад <вздох>.
Я по-прежнему считаю, что, ИМХО, магические числа слишком важны, чтобы применять их произвольно!
Я уверен, что CB подтвердит, что предсказуемое восстановление при перезагрузке является чрезвычайно важным элементом надежной системы...
FWIW
-BB-
С помощью этого кода советник может распознавать свои собственные ордера, если платформа выключается. Он использует глобальные переменные, поэтому если вы хотите сделать советника "невосприимчивым" к отключению ПК, его можно переписать, чтобы использовать файлы вместо глобальных переменных. Я также приложил пример, который открывает позицию в момент инициализации и закрывает ее на следующем баре, вы можете загрузить эксперта на 1M таймфрейме, выключить метатрейдер и затем открыть его снова, просто подождите следующего бара, чтобы увидеть, как советник закрывает свой ордер. Это не было доказано на нескольких графиках и не было обмануто несколькими ордерами, но что вы думаете об этом?
Мне нравится. Особенно старый добрый хэш djb2.
Спасибо - но я действительно чувствую себя виноватым за такой неосведомленный бит кодирования в makeexpertid...
Пока еще рано, но, возможно, кто-то заметит недостаток(и)... если они есть.
Очень впечатляющий материал, ребята :)
Контейнеры MDI возвращают меня назад <вздох>.
Я по-прежнему считаю, что, ИМХО, магические числа слишком важны, чтобы применять их произвольно!
Я уверен, что CB подтвердит, что предсказуемое восстановление при перезагрузке является чрезвычайно важным элементом надежной системы...
FWIW
-BB-
Я все еще говорю, что, ИМХО, магические числа слишком важны, чтобы применять их произвольно!
Конечно, ВВ, vip-данные. Я потратил слишком много времени, пытаясь найти уникальную точку отсчета, которую могли бы использовать несколько экземпляров советника. Эта точка отсчета должна была быть повторяемой, чтобы все открытые файлы могли быть отображены при восстановлении/перезапуске. Я хотел, чтобы любое количество экземпляров советника с одинаковыми ccy+первыми графиками могло "каким-то образом" открывать уникальное имя файла и при перезапуске волшебным образом открывать его заново...
Данные оконной ручки могут быть тем самым "фактором X"?
конечно, BB, vip-датумы. Я потратил слишком много времени, пытаясь найти уникальную точку отсчета, которую могли бы использовать несколько экземпляров советника. Эта точка отсчета должна была быть повторяемой, чтобы все открытые файлы могли быть отображены при восстановлении/перезапуске. Я хотел, чтобы любое количество одинаковых экземпляров советника ccy+per chart могло "каким-то образом" открывать уникальное имя файла и при перезапуске волшебным образом открываться снова...
Я не могу понять, как это возможно без того, чтобы MT4 или пользователь назначили ID каждому советнику. Или, точнее говоря, я не вижу ничего, что не включало бы в себя что-то очень неприятное, например, генерацию уникального ID, а затем модификацию .chr файла советника, чтобы сохранить ID как часть внешних параметров советника.
И, для общего развлечения, следующий способ не продвигает обсуждение, но он заменяет входные данные для хэша djb2 значением, которое гарантированно уникально (ценой необходимости вызова DLL). Я не знаю, насколько хорошо djb2 работает с такими вещами, как GUID, но я только что попробовал сгенерировать 1,000,000 идентификаторов без каких-либо коллизий. Но это все равно не решает проблему перезагрузки.
Данные ручки окна могут быть тем самым "фактором X"?
Если бы вы не закрывали частично ордера, вы могли бы использовать комментарий к ордеру для хранения информации об исходной паре/таймфрейме...?
Таким образом, советник при перезапуске мог бы выяснить, были ли у него предыдущие ордера и какое магическое число он должен был использовать?
NB
Держите комментарии на уровне < 25 и проверяйте LEFT(OrderComments(), 24), иначе [sl] или [tp] могут повлиять на ситуацию.
Предполагается, что <вся история> остается доступной на вкладке "История счета"!
FWIW
-BB-