← К каталогу
Исходный код · ID 4365

XANDER Grid XAUUSD

xander_grid_xauusd.mq5
Вы автор или правообладатель?

Сообщите нам, если считаете, что материал размещён без разрешения.

Краткий обзор

О программе

XANDER Grid XAUUSD — это торговый советник для MetaTrader 5, предназначенный для торговли золотом (XAUUSD). Советник реализует двунаправленную сеточную стратегию, открывая позиции на покупку и продажу в зависимости от направления свечи.

Два режима закрытия позиций — Average TP (совокупный тейк-профит по лучшей и худшей позиции) и Partial Close (частичное закрытие худшей позиции) — обеспечивают гибкое управление прибылью. Встроенная защита через ежедневную цель прибыли и максимальный плавающий убыток позволяет контролировать риски.

Параметры сетки настраиваются: расстояние между уровнями, тейк-профит позиции, минимальная прибыль для закрытия. Управление лотами включает начальный и максимальный размер с автоматическим удвоением при построении сетки. Советник также скрывает стандартные элементы графика при загрузке и восстанавливает их при удалении.

Настройки программы

НастройкаОписание
sep0 Визуальный разделитель для группы настроек сетки.
sep1 Визуальный разделитель для группы настроек лотов.
xs_TakeProfit Тейк-профит на позицию в пунктах.
xs_GridStep Расстояние между уровнями сетки в пунктах.
xs_MinProfit Минимальная прибыль сетки в пунктах для закрытия.
sep2 Визуальный разделитель для группы настроек стратегии закрытия.
xs_StartLots Начальный размер лота.
xs_MaxLots Максимально допустимый размер лота.
sep3 Визуальный разделитель для группы настроек риск-protection.
xs_CloseType Метод закрытия позиций: Average TP — устанавливает общий тейк-профит на лучшую и худшую позицию, Partial Close — частично закрывает худшую позицию.
sep4 Визуальный разделитель для группы настроек эксперта.
xs_UseDailyTarget Включает ежедневную цель прибыли. При достижении целевой суммы все позиции закрываются.
xs_DailyTarget Цель ежедневной прибыли в долларах. При достижении всех позиции закрываются.
xs_UseMaxDrawdown Включает защиту от максимального плавающего убытка. При достижении лимита вход новых позиций приостанавливается.
xs_MaxDrawdown Максимальный плавающий убыток в долларах. При достижении вход новых позиций приостанавливается.
sep5 Визуальный разделитель для контактной информации.
xs_Magic Магический номер для идентификации позиций советника.
xs_Slippage Допустимое проскальзывание в пунктах.
sep_last Визуальный разделитель для контактной информации.
xs_freelance Контактная информация для заказа услуг и разработки.
Получить полный код

Поиск по коду файла

#property version     "1.00"
#property description "XANDER Grid XAUUSD — Bidirectional Grid EA for Gold"
#property description "Community: t.me/botmetatrader5"
#property description "Freelance & dev requests: mql5.com/en/users/09151993a"

#include <Trade\PositionInfo.mqh>
#include <Trade\Trade.mqh>

CPositionInfo m_position;
CTrade        trade;

enum ENUM_CLOSE_TYPE
  {
   AVERAGE_TP   = 0,  // Average TP — set shared TP on best + worst position
   PARTIAL_CLOSE = 1  // Partial Close — close worst position partially
  };

input string sep0             = "★ XANDER Grid XAUUSD";               // ══ XANDER Systems ══
input string sep1             = "══════ GRID SETTINGS ══════";   // ─────────────────────
input int    xs_TakeProfit    = 300;   // Take Profit per position (pips)
input int    xs_GridStep      = 390;   // Distance between grid levels (pips)
input int    xs_MinProfit     = 120;   // Minimum grid profit to close (pips)

input string sep2             = "══════ LOT SETTINGS ══════";    // ─────────────────────
input double xs_StartLots     = 0.01;  // Starting lot size
input double xs_MaxLots       = 0.04;  // Maximum lot size allowed

input string sep3             = "══════ CLOSE STRATEGY ══════";  // ─────────────────────
input ENUM_CLOSE_TYPE xs_CloseType = AVERAGE_TP; // Close method

input string sep4             = "══════ RISK PROTECTION ══════"; // ─────────────────────
input bool   xs_UseDailyTarget  = false; // Enable Daily Profit Target
input double xs_DailyTarget     = 10.0;  // Daily Profit Target ($) — closes all when reached
input bool   xs_UseMaxDrawdown  = false; // Enable Max Floating Drawdown
input double xs_MaxDrawdown     = 50.0;  // Max Floating Drawdown ($) — pauses new entries

input string sep5             = "══════ EXPERT SETTINGS ══════"; // ─────────────────────
input int    xs_Magic         = 2001;  // Magic Number
input int    xs_Slippage      = 30;    // Slippage (pips)

input string sep_last         = "══════ CONTACT ══════";       // ─────────────────────
input string xs_community   = "";   // 🌐 Join our trading community
input string xs_freelance    = "mql5.com/en/users/09151993a";    // 💼 Freelance & dev requests — MQL5 only

datetime g_DayStart = 0;
double   g_DayProfit = 0.0;
bool     g_DailyTargetHit = false;

bool g_prev_Grid;
bool g_prev_Volume;
bool g_prev_TradeHistory;
bool g_prev_TradeLevels;
bool g_prev_BidLine;
bool g_prev_AskLine;

int OnInit()
  {
      // код доступен только после оплаты
   }

void OnDeinit(const int reason)
  {
   Comment("");

   ChartSetInteger(0, CHART_SHOW_GRID,          g_prev_Grid);
   ChartSetInteger(0, CHART_SHOW_VOLUMES,        g_prev_Volume);
   ChartSetInteger(0, CHART_SHOW_TRADE_HISTORY,  g_prev_TradeHistory);
   ChartSetInteger(0, CHART_SHOW_TRADE_LEVELS,   g_prev_TradeLevels);
   ChartSetInteger(0, CHART_SHOW_BID_LINE,       g_prev_BidLine);
   ChartSetInteger(0, CHART_SHOW_ASK_LINE,       g_prev_AskLine);
   ChartRedraw(0);
  }

void ResetDayIfNeeded()
  {
   datetime today = StringToTime(TimeToString(TimeCurrent(), TIME_DATE));
   if(today > g_DayStart)
     {
      g_DayStart        = today;
      g_DayProfit       = 0.0;
      g_DailyTargetHit  = false;
     }
  }

double GetFloatingProfit()
  {
   double total = 0.0;
   int count = PositionsTotal();
   for(int i = count - 1; i >= 0; i--)
      if(m_position.SelectByIndex(i))
         if(m_position.Symbol() == Symbol() && m_position.Magic() == xs_Magic)
            total += m_position.Profit() + m_position.Swap() + m_position.Commission();
   return total;
  }

void CloseAllPositions()
  {
   int count = PositionsTotal();
   for(int i = count - 1; i >= 0; i--)
      if(m_position.SelectByIndex(i))
         if(m_position.Symbol() == Symbol() && m_position.Magic() == xs_Magic)
            trade.PositionClose(m_position.Ticket(), xs_Slippage);
  }

void OnTick()
  {
      // код доступен только после оплаты
   }

   ResetDayIfNeeded();

   double floatingProfit = GetFloatingProfit();

   if(xs_UseDailyTarget && !g_DailyTargetHit)
     {
      g_DayProfit = floatingProfit; // simplified: current floating as daily proxy
      if(g_DayProfit >= xs_DailyTarget)
        {
         CloseAllPositions();
         g_DailyTargetHit = true;
         Print("[XANDER Grid XAUUSD] Daily target reached: $", DoubleToString(g_DayProfit, 2), " — trading paused for today.");
         return;
        }
     }

   if(g_DailyTargetHit)
      return;

   bool drawdownPaused = false;
   if(xs_UseMaxDrawdown && floatingProfit < -xs_MaxDrawdown)
     {
      drawdownPaused = true;
      Print("[XANDER Grid XAUUSD] Drawdown limit reached: $", DoubleToString(floatingProfit, 2), " — new entries paused.");
     }

   double BuyPriceMax=0, BuyPriceMin=0, BuyPriceMaxLot=0, BuyPriceMinLot=0;
   double SelPriceMin=0, SelPriceMax=0, SelPriceMinLot=0, SelPriceMaxLot=0;
   ulong  BuyPriceMaxTic=0, BuyPriceMinTic=0, SelPriceMaxTic=0, SelPriceMinTic=0;
   double op=0, lt=0, tp=0;
   ulong  tk=0;
   int    b=0, s=0;

   int total = PositionsTotal();
   for(int k = total - 1; k >= 0; k--)
      if(m_position.SelectByIndex(k))
         if(m_position.Symbol() == Symbol())
            if(m_position.Magic() == xs_Magic)
               if(m_position.PositionType() == POSITION_TYPE_BUY ||
                  m_position.PositionType() == POSITION_TYPE_SELL)
                 {
                  op = NormalizeDouble(m_position.PriceOpen(), Digits());
                  lt = NormalizeDouble(m_position.Volume(), 2);
                  tk = m_position.Ticket();

                  if(m_position.PositionType() == POSITION_TYPE_BUY)
                    {
                     b++;
                     if(op > BuyPriceMax || BuyPriceMax == 0) { BuyPriceMax = op; BuyPriceMaxLot = lt; BuyPriceMaxTic = tk; }
                     if(op < BuyPriceMin || BuyPriceMin

Показано первые 50% кода (символов: 9910)

Открыть по тарифу

Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.

Разовая покупка файла

На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.

Чтобы оформить заказ, введите email и перейдите к оплате.

Стоимость полного кода
991₽ ≈ $12.11