Обсуждение статьи "Оптимизация и тонкая настройка исходного кода для улучшения результатов тестирования на истории"
Пожалуйста, просветите меня, как работают CTick и PTick. Я вижу, что оба они объявлены вместе с Includes, но ни на один из них нет ссылок в других местах кода. Другими словами, что отслеживает CTick; и что отслеживает PTick?
(Я не могу найти ничего в документации по MQ).
The pursuit of reliable back-test results in algorithmic trading hinges not only on robust strategy logic but also on the efficiency and precision of the underlying code. Raw code optimization and tweaking are critical to ensuring that Expert Advisors (EAs) perform as intended, minimizing computational overhead while maximizing execution accuracy. Poorly optimized code can distort back-test outcomes through delayed order execution, incorrect signal detection, or resource exhaustion—issues that mask a strategy’s true potential.
В процессе разработки стратегии мы предпримем несколько ключевых шагов, чтобы советник был как функционально сильным, так и технически продуманным. Начнем с добавления пользовательских вспомогательных функций и логических блоков многократного использования, чтобы оптимизировать операции и избежать повторения кода. Затем мы введем хорошо структурированные переменные и константы, которые улучшат читаемость кода и упростят настройку параметров. Эти основополагающие изменения помогут поддерживать код в рабочем состоянии и улучшат общее время выполнения при большой нагрузке на бэк-тесты или тестировании с использованием нескольких символов.
Другая важная область улучшений связана с более эффективным использованием технических индикаторов. Вместо того чтобы вслепую рассчитывать индикаторы на каждом тике или баре, мы внедрим более разумную логику обновления, чтобы уменьшить нагрузку и задержку. Мы также поэкспериментируем с различными комбинациями индикаторов, чтобы поддержать более эффективное принятие решений в логике советника. Комбинируя структурную доработку кода, функции, учитывающие производительность, и оптимизацию индикаторов, мы сможем значительно повысить качество и скорость бэктестинга, приблизив нас к стабильно прибыльной и реализуемой стратегии.
Не хочу никого обидеть, но должен сказать, что эта статья провальная. Вот вышеприведенное вступление с множеством сильных утверждений, которые автор не смог реализовать.
Моим первоначальным намерением было показать проблемы с кодом, но их так много... поэтому я просто укажу на 2.
double sl_distance = StopLoss * point; double tp_distance = TakeProfit * point; double sl = (tradeType == ORDER_TYPE_BUY) ? price - sl_distance : price + sl_distance; double tp = (tradeType == ORDER_TYPE_BUY) ? price + tp_distance : price - tp_distance; trade.PositionOpen(_Symbol, tradeType, In_Lot, price, sl, tp, NULL);
Надежный код? Где проверка ошибок? Входы используются как есть без какой-либо проверки, стоплоссы не проверяются, маржа не проверяется, торговый запрос не проверяется...
// Проверьте наличие бычьего паттерна for (int j = i; j >= i - min_bullish_count + 1; j--) { if (iClose(symbol, timeframe, j) > iOpen(symbol, timeframe, j)) { bullish_count++; first_bullish_low = getLow(5); } else break; }
Производительность? Использование iClose/iOpen свеча за свечой? Эти функции медленнее всего работают с данными.
Кроме того, getLow(5) кажется ошибкой. Дальше проверять не стал.
Я не буду комментировать сам торговый алгоритм, я просто отметил, как автор удобно выбрал короткий период в истории, где советник дает хорошие результаты.
Статья очень плохая.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Опубликована статья Оптимизация и тонкая настройка исходного кода для улучшения результатов тестирования на истории:
Разработка нашей алгоритмической торговой стратегии начинается со структурированного, методического подхода к распознаванию паттернов и проверке сигналов. В своей основе стратегия имеет фреймворк, основанный на свечном анализе, предназначенный для выявления высоковероятных сценариев разворота. Для длинных позиций логика систематически обнаруживает три последовательные бычьи свечи, за которыми следуют одна или две корректирующие медвежьи свечи, достигающие кульминации в подтверждающей бычьей свече на индексе 1 (последний закрытый бар).
Наоборот, короткие позиции активируются обратным паттерном: три последовательные медвежьи свечи, за которыми следуют одна или две коррекционные бычьи свечи и завершаются подтверждающей медвежьей свечой с индексом 1. Такая конфигурация гарантирует, что сигналы подтверждаются только при формировании нового бара, согласуя исполнение с подтвержденным ценовым действием, а не с внутрибарными колебаниями.
Для практической реализации этой логики архитектура стратегии будет отдавать приоритет модульной разработке кода и вычислительной эффективности. Во-первых, будут реализованы вспомогательные функции для абстрагирования повторяющихся задач, таких как классификация японских свечей (определение бычьего/медвежьего тренда) и проверка последовательности (последовательная проверка паттернов свечей). Эти функции будут использовать нативные методы доступа к ценовым данным на MQL5, включая `iOpen()` и `iClose()`, минимизируя при этом избыточные вычисления за счет кэширования статических переменных.
Автор: Hlomohang John Borotho