Обсуждение статьи "Автоматизация торговых стратегий на MQL5 (Часть 7): Создание советника по сеточной торговле с динамическим масштабированием лотов"
//--- Получение цен последних баров для логики торговых сигналов double low1 = iLow(_Symbol, _Period, 1); double low2 = iLow(_Symbol, _Period, 2); double high1 = iHigh(_Symbol, _Period, 1); double high2 = iHigh(_Symbol, _Period, 2);
эти переменные не используются... почему такой код?
в коде ... где вы используете переменную low1?
В чем проблема с переменными? Какой-нибудь баг? Это функции, которые можно использовать в любом месте кода.
Если бы я объяснял дальше, я бы сказал, что нужно получить низкие и высокие цены для предыдущего бара и бара до + 1.
void ExecuteInitialTrade(double ask, double bid){ //--- Сигнал к покупке: минимум предыдущего бара выше MA и бар перед этим ниже MA if (iLow(_Symbol, _Period, 1) > maData[1] && iLow(_Symbol, _Period, 2) < maData[1]){ gridSize = ask - gridSize_Spacing; //--- Установите триггер сетки ниже текущего запроса TakeProfit = ask + takeProfitPts; //--- Установить TP для BUY if(obj_Trade.Buy(LotSize, _Symbol, ask, 0, TakeProfit,"Initial Buy")) Print("Initial BUY order executed at ", ask, " with LotSize: ", LotSize); else Print("Initial BUY order failed at ", ask); isTradeAllowed = false; } //--- Сигнал SELL: максимум предыдущего бара ниже MA и бар перед этим выше MA else if(iHigh(_Symbol, _Period, 1) < maData[1] && iHigh(_Symbol, _Period, 2) > maData[1]){ gridSize = bid + gridSize_Spacing; //--- Установите триггер сетки выше текущей ставки TakeProfit = bid - takeProfitPts; //--- Установите TP для SELL if(obj_Trade.Sell(LotSize, _Symbol, bid, 0, TakeProfit,"Initial Sell")) Print("Initial SELL order executed at ", bid, " with LotSize: ", LotSize); else Print("Initial SELL order failed at ", bid); isTradeAllowed = false; } }
Конкретно здесь. Вы можете переключиться на использование функций или удалить их, если они вам не нужны. Это проясняет ситуацию? Спасибо.
double low1 = iLow(_Symbol, _Period, 1);
например..... для сигнала на покупку вы использовали переменную iLow, а не Low1.
if (iLow(_Symbol, _Period, 1) > maData[1] && iLow(_Symbol, _Period, 2) < maData[1]){
это только для моего исследования, спасибо!!!
Эти четыре строки можно закомментировать
// double low1 = iLow(_Symbol, _Period, 1); // double low2 = iLow(_Symbol, _Period, 2); // double high1 = iHigh(_Symbol, _Period, 1); // double high2 = iHigh(_Symbol, _Period, 2);
это нормально..... лучший советник .
4 линии сбивают с толку новичка
прекрасная статья - спасибо вам большое... изучаю торговый подход буду ставить с правками у себя на торги на пользовательских символах хэджевых!
проверяю....
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Опубликована статья Автоматизация торговых стратегий на MQL5 (Часть 7): Создание советника по сеточной торговле с динамическим масштабированием лотов:
Сеточная торговля - это систематический подход, который заключается в размещении ордеров на покупку и продажу с заранее определенными ценовыми интервалами, позволяя трейдерам извлекать выгоду из колебаний рынка, не требуя точного прогнозирования тренда. Эта стратегия извлекает выгоду из волатильности рынка, постоянно открывая и закрывая сделки в пределах определенного ценового диапазона. Чтобы повысить его эффективность, мы внедрим динамическое масштабирование лотов, которое позволит корректировать размеры позиций в зависимости от заранее определенных условий, таких как баланс счета, волатильность или результаты предыдущих сделок. Наша система сеточной торговли будет работать со следующими ключевыми компонентами:
В двух словах, вот визуализация всего плана стратегии для простоты понимания.
Сочетая структурированную сетевую систему с адаптивным определением размера лота, мы создадим советника, который максимизирует доходность при эффективном управлении рисками. Далее мы реализуем эти концепции в MQL5.
Автор: Allan Munene Mutiiria