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? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.