![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
I use below functions now, and it's usable across different brokers & instruments.
cheers, ~ cameo
Вот альтернативное решение проблемы, которое я использую...
Тогда просто используйте переменную SymPoint вместо переменной Point. Очень похоже на Cameo
Чтобы еще больше запутать ситуацию, BrocoTrader имеет ценные бумаги с 0 до 5 цифр для своих различных ценных бумаг...
Привет 7bit,
Я думаю, что вы правы, пытаясь создать пуленепробиваемый код......., но всегда будут ограничения.
Достаточно взглянуть на демо-фид для The Collective FX, где они тестируют объединенный независимый фид различных поставщиков ликвидности (в отличие от единого согласованного фида из нескольких источников), каждый со своим собственным суффиксом валютной пары (наконец-то мы нашли применение суффиксу?), чтобы осознать масштаб проблемы. Это означает, что в рамках одной платформы вы сможете выбрать EURUSD_fx, EURUSDm или EURUSD_dbfx. Уже одно это может проделать огромную дыру в вашей стратегии, поскольку некоторые из них имеют 4-значные цены, а другие - 5-значные.
Метод "if (Digits == 3 || Digits == 5)" является настолько всеобъемлющим, насколько вы можете найти, поскольку он работает на простой предпосылке, что у вас есть только 2 вида брокеров, т.е. те, которые имеют целые пункты и те, которые имеют 1/10 пунктов. Этот случай охватывает 2/3/4/5 валютных пар и брокеров.
Для моей же информации, видели ли вы какой-нибудь случай, который был бы исключением? В случае с золотом, это всегда была двузначная котировка, а новые брокеры с котировкой в 1/10 пункта котируют его как трехзначную, так что даже этот случай хорошо охвачен.
Я бы предложил просто рассматривать любые исключения, которые вы найдете, как таковые и, возможно, жестко кодировать этот конкретный вопрос, а не пытаться найти универсальное решение.
Когда заходит разговор об этом, я заметил одну вещь: люди говорят о суффиксе, но никогда о префиксе. Можно иметь и префикс. Я встречал брокера, у которого есть префикс.
Мои мысли по этому поводу согласуются с оригинальным плакатом здесь, я хочу, чтобы продукты были как можно более надежными для моих клиентов, я не хочу рисковать большим количеством кодирования, чтобы исправить это позже. Весь мой код может быть обернут вокруг этого одного изменения, и мне может стоить несколько часов работы разработчика, чтобы пройти через тысячи строк кода, чтобы изменить его. Так что если все сделать правильно с первого раза, то это снижает риск и расходы на возвращение и исправление. Я также согласен, что это ошибка, но не столько ошибка в нашем коде, сколько слабое место в MQL.
Однако я также обдумывал решение. Одно из моих решений заключалось в том, чтобы пройтись по списку символов и найти EURUSD, используя подстроку, чтобы добраться до него. Затем я получал значение ставки. Как только я получал значение ставки, я мог сделать doubletostr, затем найти способ подсчета символов в строке, например strlen или что-то в этом роде. Заноза в заднице, но это может дать мне 4 или 5 цифр, что было бы достаточно надежно. Исходя из этого, я мог бы создать основу для таких странностей, как Gold.
Это всего лишь теория, я еще не пробовал. Слишком занят, пытаясь разобраться с текущими проектами.
В моем советнике я использую этот код для расчета Pip - этот Pip я использую везде, где я имею дело с внешним bool, введенным в пунктах, как SL, TP, TS или я хочу видеть прибыль в пунктах ... проверено на 3 разных брокерах - без проблем на разных парах, DAX 1/2 десятичных чисел ... да, я знаю, что это выглядит похоже, как в постах раньше, но это работает вживую ...
В других индексах я тоже пытаюсь искать символ JPY... :-)
В моем советнике я использую этот код для расчета Pip - этот Pip я использую везде, где я имею дело с внешним bool, введенным в пунктах, как SL, TP, TS или я хочу видеть прибыль в пунктах ... проверено на 3 разных брокерах - без проблем на разных парах, DAX 1/2 десятичных чисел ... да, я знаю, что это выглядит похоже, как в постах раньше, но это работает вживую ...
В других моих индексах я тоже пытаюсь искать символ JPY... :-)
Вместо того, чтобы искать JPY, я хотел бы найти "точку" для каждой валюты. Это то, что я пробовал:
Итак, ожидается, что будет выдано соответствующее значение для пары, хранящейся в Pair01. Однако это возвращает только 0. Почему так? Pari01 в моем примере - это "AUDCAD", а индикатор прикреплен к графику EURUSD.
Экспериментируя дальше, я вижу, что это работает для некоторых валют, но не для других. Это сбивает с толку. Похоже, что MODE_DIGITS работает лучше. Как это может быть?
pi
В моем советнике я использую этот код для расчета Pip - этот Pip я использую везде, где я имею дело с внешним bool, введенным в пунктах, как SL, TP, TS или я хочу видеть прибыль в пунктах ... проверено на 3 разных брокерах - без проблем на разных парах, DAX 1/2 десятичных чисел ... да, я знаю, что это выглядит похоже, как в постах раньше, но это работает в реальном времени ...
Только потому, что у вас 5-значный брокер. На 4-х значном брокере PIP и Point - это одно и то же.
Что такое TICK?-MQL4 и MetaTrader 4 - Форум по программированию на MQL4
А у InstaForex для USDSEK и USDNOK - 4 цифры, а для EURUSD - 5.
Поэтому я думаю, что для каждой котируемой валюты нужно иметь массив с настройками, чтобы получать количество пунктов, а не тиков.