Смотри, как бесплатно скачать роботов
Ищи нас в Facebook!
Ставь лайки и следи за новостями
Интересный скрипт?
Поставь на него ссылку - пусть другие тоже оценят
Понравился скрипт?
Оцени его работу в терминале MetaTrader 5
Библиотеки

CGoldSymbol - find the broker's gold and size the position correctly on it - библиотека для MetaTrader 5

Petr Kostal
Petr Kostal
  • Algorithmic trading developer (MQL5 / MQL4) в  Osvc
  • Чехия
  • 580
Петр Костал — разработчик алгоритмической торговли, Чехия.
Я сам торгую на реальных счетах, поэтому пишу советники так, как хотел бы запускать их сам.
Что я делаю:
• Советники и индикаторы для MetaTrader 4 и 5 (MQL4 / MQL5)
| Russian English 中文 Español Deutsch 日本語 Português 한국어 Français Italiano Türkçe
Просмотров:
21
Рейтинг:
(3)
Опубликован:
MQL5 Фриланс Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу

Золото — это инструмент, по поводу которого брокеры практически ни в чём не сходятся. Символом может быть XAUUSD, GOLD, XAUUSD.m, XAUUSDpro или GOLD#. Один контракт может составлять 100 унций, 10 унций или одну унцию. Цена может состоять из двух или трёх цифр. Советник, который рассчитывает размер лота на основе жестко запрограммированного значения «100 унций, два знака после запятой», у другого брокера не просто немного ошибается — он ошибается в десять раз, причем в сторону, которая опустошает счет.

Этот класс запрашивает информацию у терминала, а не делает допущения.

Обнаружение. Функция Detect() проходит по всем символам, предлагаемым счётом, и оценивает названия: таким образом, XAUUSD превосходит XAUUSD.m, который, в свою очередь, превосходит неточное совпадение, тогда как серебро, платина и палладий исключаются сразу — XAGUSD ни в коем случае не должен выигрывать поиск по золоту. Символ, уже присутствующий в «Market Watch», получает небольшой бонус. Если ваш брокер использует что-то необычное, функция Attach("YOURNAME") пропускает поиск.

Спецификация. ContractSize(), Digits(), Point(), TickSize(), TickValueLoss(), MinLot(), MaxLot(), LotStep(), StopsLevel() и FreezeLevel() берутся напрямую из терминала для данного символа.

Деньги. LossForDistance(lots, distance) показывает, во сколько вам обойдётся движение цены в невыгодную сторону в валюте счёта. LotForRisk(riskMoney, distance) — обратная функция, и именно она имеет значение: она производит преобразование через SYMBOL_TRADE_TICK_VALUE_LOSS, благодаря чему результат остается верным как для 10-унцового контракта, так и для счета в евро, а затем округляет результат в меньшую сторону до шага объема брокера и в пределы его минимального и максимального значений. Она возвращает ноль вместо «неявного» минимального лота, когда даже самый маленький объем подверг бы риску сумму, превышающую разрешённую вами — ситуация, в которой большинство кодов для расчёта размера позиции дают ошибку из-за округления в большую сторону.

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

На реальном счёте с контрактом на 100 унций, балансом в евро и стопом в 1500 пунктов 1 % от 10 000 евро составляет 0,07 лота, что соответствует риску в 90,42 евро. Тот же вызов для контракта на 10 унций даёт 0,70 лота, а для контракта на одну унцию — 7,00 лотов. Одинаковый риск, одинаковый стоп, стократная разница в объёме — именно в этом и заключается ошибка жёстко запрограммированной константы.

В пакет входит скрипт GoldSymbolDemo.mq5, который определяет символ золота, выводит отчет и преобразует процент от баланса в размер лота для нескольких расстояний до стопа. Запустите его на любом графике, чтобы увидеть, каким на самом деле является золото у вашего брокера.

Класс не открывает сделок и не изменяет позиций. Он дает ответы на вопросы.

Одинаковый риск и одинаковый стоп-ордер по трем разным контрактам на золото — стократная разница в размере лота

Перевод с английского произведен MetaQuotes Ltd.
Оригинальная публикация: https://www.mql5.com/en/code/77067

Trade Excursion Report: MFE and MAE of every closed trade, to CSV Trade Excursion Report: MFE and MAE of every closed trade, to CSV

Экспортирует по одной строке CSV на каждую закрытую сделку с данными, которых нет в выписке: максимальная нереализованная прибыль по сделке (MFE), максимальный нереализованный убыток, который удалось пережить (MAE), какая доля от MFE была фактически сохранена, сколько баров охватила сделка и как долго она удерживалась. Те же показатели, что и у индикатора Trade Excursion, только записываются в файл, а не отображаются на графике, поскольку эти данные позволяют задать вопросы, на которые график ответить не может: зависит ли коэффициент удержания от времени входа в сделку? Являются ли сделки, которые я закрываю раньше срока, теми, которые я удерживаю дольше всего? Достигают ли убыточные сделки по понедельникам другого значения MAE, чем по пятницам? Ответы на эти вопросы можно получить с помощью одной сводной таблицы, как только файл CSV будет готов. Результаты выводятся с разделителем «точка с запятой» и строкой заголовка в формате MQL5\Files; файл открывается в любой программе для работы с таблицами. Ограничение измерения: отклонения рассчитываются на основе максимумов и минимумов баров на выбранном таймфрейме; траектория движения внутри бара неизвестна. Столбец «бары» отражает разрешение, полученное для каждой сделки, а в сводке сделки, заключенные в пределах одного бара, учитываются отдельно, а не усредняются.

SessionReopenEA SessionReopenEA

На бирже CME для золота предусмотрен ежедневный перерыв на техническое обслуживание. В течение первого часа после его окончания цены растут в большей степени, чем можно объяснить случайностью, — и это наблюдается в каждом календарном году 11-летней выборки, в то время как в остальные часы дня цены остаются неизменными. Одна сделка за сессию, стоп-ордер на стороне сервера, масштабируемый по волатильности, без усреднения и сетки. Затем выяснилось, что моя модель расчета затрат была неверной. Бэктест на реальных тиках показал, что реальная стоимость кругового хода при возобновлении торгов составляет около 60 пунктов, а не 19, как показывали мои исследования — поле спреда для баров M1 представляет собой сводку по каждому бару и занижает значение примерно в три раза. Повторный прогон 11 лет с исправленной стоимостью: +3,34 базисных пункта, t 7,40, 59,3 % выигрышных сделок -> +1,60 базисных пункта, t 3,42, 50,8 % выигрышных сделок Преимущество сохраняется, хотя и составляет менее половины от первоначальной силы. Второе число — это реальное значение. Чего здесь нет: около +3,3% в год с просадкой 4,6%, примерно один из девяти лет убыточный. При размере позиции 0,01 лота это составляет ~130 в год — цифра, которая отражает размер позиции, а не стратегию.

OHLC Reality Check - at what stop distance does your backtest start lying? OHLC Reality Check - at what stop distance does your backtest start lying?

Открывает виртуальную сделку в скобках на каждом баре M1, прослеживает её по реальной истории тиков и выводит отчёт по различным значениям расстояний до стоп-ордеров о том, как часто при моделировании OHLC на 1-минутном графике сделка оценивается неверно.

YURAZ_MCCH YURAZ_MCCH

Индикатор рассчитывает % роста или падения относительно CLOSE, написан с применением ООП, и легко интегрируется в любой советник или иной индикатор.