Здравствуйте, можно ли задать переменную для стоп-лосса и тейк-профита? Спасибо!
Этот советник был придуман без стоп лосса и тейк профита.
Возможно, когда я захочу, это будет реализовано в ДРУГОМ советнике.
Здравствуйте, хороший советник для открытия торговли!
Но, например, позже, мы должны закрыть позицию вручную, или по трейлингу?
metaangel :
Здравствуйте, отличный советник для открытия торговли!
Но, например, потом надо закрывать позицию вручную, или по трейлингу?
Позиции закрываются при противоположном сигнале: например, появился сигнал на открытие BUY - тогда сначала закрываем позиции SELL, а потом открываем BUY.
Можете ли вы добавить к этому управление деньгами по сравнению с использованием фиксированных лотов?
Brian Sinclair :
Можете ли вы добавить к этому управление капиталом по сравнению с использованием фиксированных лотов?
Можете ли вы добавить к этому управление капиталом по сравнению с использованием фиксированных лотов?
Уточните свой вопрос.
Brian Sinclair :
Можете ли вы добавить к этому управление капиталом по сравнению с использованием фиксированных лотов?
Можете ли вы добавить к этому управление капиталом по сравнению с использованием фиксированных лотов?
Я выпустил версию 2: DoubleZigZag 2
Новое в версии 2:
- Управление деньгами: Лот ИЛИ Риск - подробнее в разделе Управление размером позиции (расчет лота)
- Значение для "Money management" - подробнее в разделе Управление размером позиции (расчет лота)
- Только одна позиция - на рынке всегда есть только одна позиция
- Reverse - разворот торгового сигнала
- Close opposite - закрытие позиций, противоположных торговому сигналу, причем сначала происходит гарантированное закрытие противоположной позиции и только потом открытие новой позиции в направлении сигнала
- На баре может быть только одна сделка "вход в рынок" (это внутренний параметр, он не выводится во входные параметры и не связан с параметром " Только одна позиция ").
Советники: DoubleZigZag 2
- 2020.02.08
- www.mql5.com
Статьи и техническая библиотека по автоматическому трейдингу: Советники: DoubleZigZag 2
//+------------------------------------------------------------------+ //|Hatorii_Total_Coverage.mq5 | //|Copyright 2026, MetaQuotes Ltd. | //| СИСТЕМА PRO: ДВОЙНОЙ ЗИГЗАГ + ПЕРЕРЫВ + СЛ В ТОЧКЕ ЗИГЗАГА | //+------------------------------------------------------------------+ #property copyright "Copyright 2026" #property version "1.50" #property strict #include <Trade\Trade.mqh> //--- ENUMS enum ENUM_DIRECTION { DIR_BOTH = 0, DIR_ONLY_BUY = 1, DIR_ONLY_SELL = 2 }; //--- INPUTS (меню на английском языке [цит. по: 2025-12-23]) input group "=== Оперативная конфигурация ===" input ENUM_DIRECTION InpTradeMode = DIR_BOTH; // Адрес input double InpLot = 0.1; // Партия input int InpMagic = 882025; // Магическое число input group "=== FILTROS DE ESTRUCTURA (ZIGZAG) ===" input bool InpUseMacroZZ = true; // Используйте ZigZag X8 (фильтр основных трендов) input bool InpSLatZZ = true; // Поместите точный SL в ZigZag Point [cite: 2026-01-02]. input group "=== FILTROS DE TENDENCIA (EMA) ===" input bool InpUseEMA = false; // Активировать фильтр EMA [cite: 2025-12-21]. input int InpEMAPeriod = 200; // Персонализированное значение EMA [cite: 2025-12-21]. input group "=== RUTA DEL INDICADOR ===" input string InpIndiPath = "nuevos\\hf"; // Обязательный маршрут [цит. по: 2025-12-24]. input int InpAmplitude = 2; // Амплитуда полутенденции //--- ГЛОБАЛЬНЫЙ CTrade trade; int handleHT, handleEMA, handleZZ_Fast, handleZZ_Macro; datetime lastTradeTime = 0; //+------------------------------------------------------------------+ int OnInit() { //--- Инициализация HalfTrend handleHT = iCustom(_Symbol, _Period, InpIndiPath, InpAmplitude); //--- Инициализация EMA handleEMA = iMA(_Symbol, _Period, InpEMAPeriod, 0, MODE_EMA, PRICE_CLOSE); //--- Инициализация ZigZags (ваш исправленный код внутри OnInit) handleZZ_Fast = iCustom(_Symbol, _Period, "Examples\\ZigZag", 13, 5, 3); handleZZ_Macro = iCustom(_Symbol, _Period, "Examples\\ZigZag", 13*8, 5*8, 3*8); if(handleHT == INVALID_HANDLE || handleZZ_Fast == INVALID_HANDLE || handleZZ_Macro == INVALID_HANDLE) { Alert("Error al cargar indicadores. Revisa la ruta: ", InpIndiPath); return(INIT_FAILED); } trade.SetExpertMagicNumber(InpMagic); return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ void OnTick() { double bufHT[], bufEMA[], bufMacroZZ[]; ArraySetAsSeries(bufHT, true); ArraySetAsSeries(bufEMA, true); ArraySetAsSeries(bufMacroZZ, true); if(CopyBuffer(handleHT, 7, 0, 1, bufHT) < 1) return; if(CopyBuffer(handleEMA, 0, 0, 1, bufEMA) < 1) return; if(CopyBuffer(handleZZ_Macro, 0, 0, 2, bufMacroZZ) < 1) return; double trendHT = bufHT[0]; double ask = SymbolInfoDouble(_Symbol, SYMBOL_ASK); double bid = SymbolInfoDouble(_Symbol, SYMBOL_BID); //--- 1. АГРЕССИВНОЕ ЗАКРЫТИЕ (Если цвет ВЧ изменился, закройте) GestionarCierres(trendHT); //--- 2. ВХОДНАЯ ЛОГИКА ПУТЕМ ВЗЛОМА if(!PositionExists() && iTime(_Symbol, _Period, 0) != lastTradeTime) { double highPrev = iHigh(_Symbol, _Period, 1); double lowPrev = iLow(_Symbol, _Period, 1); // Фильтры bool emaBuyOK = !InpUseEMA || (ask > bufEMA[0]); bool emaSellOK = !InpUseEMA || (bid < bufEMA[0]); // Макрофильтр "Зигзаг" (направление последней линии) bool macroBuyOK = true; bool macroSellOK = true; if(InpUseMacroZZ) { // Упрощенная логика: проверяем направление последней секции макроса ZigZag. // (Здесь вы можете добавить более сложную логику пиков) } //--- ПОКУПКА (Голубой ВЧ + прорыв предыдущего максимума) if(trendHT == 0.0 && InpTradeMode != DIR_ONLY_SELL && emaBuyOK && macroBuyOK) { if(ask > highPrev) { double sl = InpSLatZZ ? BuscarUltimoPuntoZZ(false) : 0; if(trade.Buy(InpLot, _Symbol, ask, sl, 0, "Ruptura + ZZ SL")) lastTradeTime = iTime(_Symbol, _Period, 0); } } //--- ПРОДАВАТЬ (красный HF + прорыв предыдущего минимума) if(trendHT == 1.0 && InpTradeMode != DIR_ONLY_BUY && emaSellOK && macroSellOK) { if(bid < lowPrev) { double sl = InpSLatZZ ? BuscarUltimoPuntoZZ(true) : 0; if(trade.Sell(InpLot, _Symbol, bid, sl, 0, "Ruptura + ZZ SL")) lastTradeTime = iTime(_Symbol, _Period, 0); } } } } //--- Функция для нахождения точной точки ZigZag для Stop Loss [cite: 2026-01-02]. double BuscarUltimoPuntoZZ(bool buscarAlto) { double zzVal[]; ArraySetAsSeries(zzVal, true); for(int i=1; i<100; i++) { if(CopyBuffer(handleZZ_Fast, 0, i, 1, zzVal) > 0) { if(zzVal[0] > 0) return zzVal[0]; } } return 0; } void GestionarCierres(double trend) { for(int i=PositionsTotal()-1; i>=0; i--) { ulong ticket = PositionGetTicket(i); if(PositionSelectByTicket(ticket) && PositionGetInteger(POSITION_MAGIC) == InpMagic) { if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY && trend == 1.0) trade.PositionClose(ticket); if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_SELL && trend == 0.0) trade.PositionClose(ticket); } } } bool PositionExists() { for(int i=PositionsTotal()-1; i>=0; i--) { if(PositionSelectByTicket(PositionGetTicket(i))) { if(PositionGetInteger(POSITION_MAGIC) == InpMagic && PositionGetString(POSITION_SYMBOL) == _Symbol) return true; } } return false; }
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
DoubleZigZag:
Для анализа использованы два индикатора ZigZag.
Автор: Vladimir Karputov