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

gold house v2.0.mq5

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

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

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

О программе

Gold House V2.0 — торговый советник для MetaTrader 5, работающий на паре XAUUSD. Советник определяет уровни потолка и пола на текущем таймфрейме и размещает отложенные ордера BUY STOP и SELL STOP на заданном расстоянии от этих уровней. Поддерживается до восьми стратегий одновременно, пять из которых можно включать и отключать независимо.

Советник включает систему управления рисками: фильтрация по максимальному спреду, контроль максимальной и дневной просадки, резерв свободного маржа, предварительная проверка маржа перед открытием позиций. Доступны режим консервативной торговли и несколько вариантов расчёта размера лота — фиксированный, на баланс, на маржу, по фиксированному капиталу или по проценту риска на сделку.

Встроенный информационный дашборд отображает на графике текущие баланс, эквити, прибыль/убыток, спред, цены Bid и Ask, количество отложенных ордеров и открытых позиций, а также уровни потолка и пола. Предусмотрена автоматическая защита на выходные: остановка новых ордеров, удаление отложенных ордеров и закрытие позиций в заданное время в пятницу с возобновлением торговли в понедельник. Также доступен фильтр новостей для блокировки торговли вокруг высокоимпактных событий.

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

НастройкаОписание
Inp_0 Раздел «Общие» — Текстовый разделитель для группы общих настроек советника.
Inp_Note Примечание — Текстовое предупреждение о рекомендациях по включению стратегий при малом балансе.
[Strategy A] Enable (InpEnableA) Стратегия A — включить — Переключатель активации стратегии A для размещения отложенных ордеров BUY STOP.
[Strategy B] Enable (InpEnableB) Стратегия B — включить — Переключатель активации стратегии B для размещения отложенных ордеров SELL STOP.
[Strategy C] Enable (InpEnableC) Стратегия C — включить — Переключатель активации стратегии C для размещения отложенных ордеров BUY STOP.
[Strategy D] Enable (InpEnableD) Стратегия D — включить — Переключатель активации стратегии D для размещения отложенных ордеров SELL STOP.
[Strategy E] Enable (InpEnableE) Стратегия E — включить — Переключатель активации стратегии E для размещения отложенных ордеров BUY STOP.
Magic number (unique ID per EA instance) (InpMagic) Магический номер — Уникальный идентификатор ордеров и позиций данного экземпляра советника.
Order comment (InpComment) Комментарий к ордерам — Текстовый комментарий, добавляемый к каждому открываемому ордеру.
Max spread (points, 500 = 5.0 pips) (InpMaxSpread) Максимальный спред — Допустимый максимальный спред в пунктах; при превышении новые ордера не размещаются.
Delete pending orders when EA removed (InpDeleteOnRemove) Удалять ордера при удалении — Удалять все отложенные ордера советника при его удалении с графика.
Inp_1 Раздел «Консервативный режим» — Текстовый разделитель для группы настроек консервативного режима.
Conservative Mode (prioritizes capital safety over profit) (InpConservative) Консервативный режим — При включении приоритет отдаётся сохранению капитала, а не максимизации прибыли.
Inp_2 Раздел «Размер лота» — Текстовый разделитель для группы настроек расчёта размера лота.
Select mode, then set value in matching section below (InpLotMode) Режим расчёта лота — Выбор метода расчёта размера лота: фиксированный, на баланс, на маржу, по фиксированному капиталу или по проценту риска.
Fixed lot size per (InpFixedLot) Фиксированный лот — Размер лота при фиксированном режиме расчёта.
Lots per $2000 balance (InpLotBal) Лот на баланс — Количество лотов на каждые 2000 единиц баланса.
Lots per $2000 margin (Fixed Capital locked at startup) (InpLotMar) Лот на маржу — Количество лотов на каждые 2000 единиц маржи; фиксированный капитал рассчитывается при запуске.
Risk % per trade (auto calculated from SL distance) (InpRiskPct) Риск в процентах — Процент риска на одну сделку; размер лота рассчитывается автоматически на основе расстояния до стоп-лосса.
Inp_3 Разделитель — Текстовый разделитель внутри группы настроек размера лота.
Max lot size per order (0 = broker limit) (InpMaxLot) Максимальный лот — Ограничение максимального размера лота в одной сделке (0 — без ограничения, используется лимит брокера).
Auto exchange rate calculation (InpAutoRate) Авто-курс — Автоматический расчёт обменного курса для конвертации единиц.
Manual exchange rate (if AutoRate = false) (InpManualRate) Ручной курс — Ручное значение обменного курса, используется при отключённом автоматическом расчёте.
Inp_4 Раздел «Управление рисками» — Текстовый разделитель для группы настроек управления рисками.
Max drawdown % from peak equity (0 = disabled) (InpMaxDD) Максимальная просадка — Максимальная допустимая просадка от пикового эквити в процентах (0 — отключено).
Max daily drawdown % (0 = disabled) (InpMaxDailyDD) Максимальная дневная просадка — Максимальная допустимая просадка за текущий день в процентах (0 — отключено).
DD calculation: true = account equity; false = this EA's P/L on (InpDDType) Тип расчёта просадки — Источник для расчёта просадки: общий баланс счёта или только P/L данного советника.
Reserve % of balance as free margin buffer (0 = disabled) (InpReserve) Резерв маржа — Процент свободного маржа, который должен оставаться как буфер (0 — отключено).
Pre-check margin before placing orders (InpPreCheck) Предварительная проверка маржа — Проверка достаточности маржа перед размещением каждого ордера.
DD action: true = close ALL positions & pending on account; fal (InpDDAction) Действие при просадке — При достижении лимита просадки: закрыть все позиции и отложенные ордера на счёте.
Получить полный код

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

#property version   "2.12" 
#property description "tradingvisionx"
#property description " "
#property description "XAUUSD multi-strategy swing breakout EA"
#property description "Works on any timeframe (H1+ recommended)"
#property strict

#include <Trade/Trade.mqh>

enum ENUM_LOT_SELECTOR
{
   Lot_Fixed = 0, //Fixed Lot Size            
   Lot_PerBalance = 1,        //Lots Per Balance
   Lot_MarginBased = 2,       // Margin Based
   Lot_FixedCapital = 3,      // Fixed Capital (Margin Based Calculated at once)
   Lot_RiskPctPerTrade = 4    // Risk % Per Trade
};

input string Inp_0 = "----------------- General -----------------"; 
input string Inp_Note = "Not recommended to enable all strategies below $500";
input bool   InpEnableA = true;         // [Strategy A] Enable
input bool   InpEnableB = true;         // [Strategy B] Enable
input bool   InpEnableC = true;         // [Strategy C] Enable
input bool   InpEnableD = true;         // [Strategy D] Enable
input bool   InpEnableE = true;         // [Strategy E] Enable
input int    InpMagic = 1190;           // Magic number (unique ID per EA instance)
input string InpComment = "Gold House"; // Order comment
input double InpMaxSpread = 500.0;      // Max spread (points, 500 = 5.0 pips)
input bool   InpDeleteOnRemove = true;  // Delete pending orders when EA removed

input string Inp_1 = "========== Conservative Mode =========="; 
input bool   InpConservative = false;   // Conservative Mode (prioritizes capital safety over profit)

input string Inp_2 = "----------------- Lot Size -----------------"; 
input ENUM_LOT_SELECTOR InpLotMode = Lot_Fixed; // Select mode, then set value in matching section below
input double InpFixedLot = 0.01;        // Fixed lot size per
input double InpLotBal = 0.01;          // Lots per $2000 balance
input double InpLotMar = 0.01;          // Lots per $2000 margin (Fixed Capital locked at startup)
input double InpRiskPct = 0.5;          // Risk % per trade (auto calculated from SL distance)
input string Inp_3 = "---";
input double InpMaxLot = 0.0;           // Max lot size per order (0 = broker limit)
input bool   InpAutoRate = true;        // Auto exchange rate calculation
input double InpManualRate = 1.0;       // Manual exchange rate (if AutoRate = false)

input string Inp_4 = "========== Risk Management =========="; 
input double InpMaxDD = 0.0;            // Max drawdown % from peak equity (0 = disabled)
input double InpMaxDailyDD = 0.0;       // Max daily drawdown % (0 = disabled)
input bool   InpDDType = true;          // DD calculation: true = account equity; false = this EA's P/L on
input double InpReserve = 5.0;          // Reserve % of balance as free margin buffer (0 = disabled)
input bool   InpPreCheck = true;        // Pre-check margin before placing orders
input bool   InpDDAction = false;       // DD action: true = close ALL positions & pending on account; fal
input int    InpCooldownAfterSL = 15;   // Cooldown minutes after SL hit (0 = disabled)

input string Inp_5 = "---------- Weekend Protection ----------";
input bool   InpWkEnable = false;       // Enable weekend auto-close
input int    InpWkStop = 19;            // Friday: stop new orders after this hour (0 = off)
input int    InpWkDelete = 21;          // Friday: delete pending orders after this hour (0 = off)
input int    InpWkClose = 23;           // Friday: close positions after this hour (0 = off)
input int    InpWkResume = 1;           // Monday: resume trading after this hour (0 = no delay)

input string Inp_6 = "---------- News Filter ----------";
input bool   InpNewsEnable = false;     // Enable news filter (high-impact only)
input int    InpNewsBefore = 60;        // Block minutes before news event
input int    InpNewsAfter = 30;         // Block minutes after news event
input bool   InpNewsDelete = true;      // Delete pending orders during news window

input string Inp_7 = "----------------- Display -----------------"; 
input bool   InpShowDash = true;        // Show on-chart info panel
input color  InpUpperColor = clrGold;   // Color of Upper boundary line
input color  InpLowerColor = clrAqua;   // Color of Lower boundary line

CTrade         trade;
double         g_ceiling = 0, g_floor = 0;
datetime       g_last_bar = 0;
color          c_main = clrCyan, c_gold = clrGold, c_pink = C'255,105,180';

bool ActivePos(string l, ENUM_ORDER_TYPE ot, int magic) 
{ 
   ENUM_POSITION_TYPE pt = (ot == ORDER_TYPE_BUY_STOP) ? POSITION_TYPE_BUY : POSITION_TYPE_SELL;
   for(int i=0; i<PositionsTotal(); i++) 
   { 
      ulong t=PositionGetTicket(i); 
      if(PositionSelectByTicket(t) && PositionGetInteger(POSITION_MAGIC)==magic && PositionGetInteger(POSITION_TYPE)==pt)
         if(StringFind(PositionGetString(POSITION_COMMENT), l)>=0) return true; 
   }
   return false;
}

ulong GetO(string l, ENUM_ORDER_TYPE ot, int magic) 
{ 
   for(int i=0; i<OrdersTotal(); i++) 
   { 
      ulong t=OrderGetTicket(i); 
      if(OrderSelect(t) && OrderGetInteger(ORDER_MAGIC)==magic && OrderGetInteger(ORDER_TYPE)==ot)
         if(StringFind(OrderGetString(ORDER_COMMENT), l)>=0) return t; 
   } 
   return 0; 
}

void DeleteGrid(int magic) 
{ 
   for(int i=OrdersTotal()-1; i>=0; i--) 
   { 
      ulong t=OrderGetTicket(i); 
      if(OrderSelect(t) && OrderGetInteger(ORDER_MAGIC)==magic) trade.OrderDelete(t); 
   } 
}

void UpdateLevels()
{

   int hi = iHighest(_Symbol, PERIOD_CURRENT, MODE_HIGH, 400, 1);
   int lo = iLowest(_Symbol, PERIOD_CURRENT, MODE_LOW, 400, 1);
   g_ceiling = NormalizeDouble(iHigh(_Symbol, PERIOD_CURRENT, hi), _Digits);
   g_floor = NormalizeDouble(iLow(_Symbol, PERIOD_CURRENT, lo), _Digits);
   if(ObjectFind(0, "GH_Ceiling") < 0) ObjectCreate(0, "GH_Ceiling", OBJ_HLINE, 0, 0, g_ceiling);
   else ObjectSetDouble(0, "GH_Ceiling", OBJPROP_PRICE, g_ceiling);
   ObjectSetInteger(0, "GH_Ceiling", OBJPROP_COLOR, InpUpperColor);
   if(ObjectFind(0, "GH_Floor") < 0) ObjectCreate(0, "GH_Floor", OBJ_HLINE, 0, 0, g_floor);
   else ObjectSetDouble(0, "GH_Floor", OBJPROP_PRICE, g_floor);
   ObjectSetInteger(0, "GH_Floor", OBJPROP_COLOR, InpLowerColor);
}

void CreateRect(string name, int x, int y, int w, int h, color bg, color border, int corner=CORNER_LEFT_UPPER)
{
   if(ObjectFind(0, name) < 0) ObjectCreate(0, name, OBJ_RECTANGLE_LABEL, 0, 0, 0);
   ObjectSetInteger(0, name, OBJPROP_XDISTANCE, x);
   ObjectSetInteger(0, name, OBJPROP_YDISTANCE, y);
   ObjectSetInteger(0, name, OBJPROP_XSIZE, w);
   ObjectSetInteger(0, name, OBJPROP_YSIZE, h);
   ObjectSetInteger(0, name, OBJPROP_BGCOLOR, bg);
   ObjectSetInteger(0, name, OBJPROP_BORDER_COLOR, border);
   ObjectSetInteger(0, name, OBJPROP_BORDER_TYPE, BORDER_FLAT);
   ObjectSetInteger(0, name, OBJPROP_CORNER, corner);
   ObjectSetInteger(0, name, OBJPROP_BACK, false);
}

void CreateLabel(string name, string text, int x, int y, color col, int size=9, int corner=CORNER_LEFT_UPPER, int anchor=ANCHOR_LEFT_UPPER)
{
   if(ObjectFind(0, name) < 0) ObjectCreate(0, name, OBJ_LABEL, 0, 0, 0);
   ObjectSetString(0, name, OBJPROP_TEXT, text);
   ObjectSetInteger(0, name, OBJPROP_XDISTANCE, x);
   ObjectSetInteger(0, name, OBJPROP_YDISTANCE, y);
   ObjectSetInteger(0, name, OBJPROP_COLOR, col);
   ObjectSetInteger(0, name, OBJPROP_FONTSIZE, size);
   ObjectSetString(0, name, OBJPROP_FONT, "Segoe UI Semibold");
   ObjectSetInteger(0, name, OBJPROP_CORNER, corner);
   ObjectSetInteger(0, name, OBJPROP_ANCHOR, anchor);
}

int CountPending(ENUM_ORDER_TYPE ot)
{
   int count = 0;
   for(int i=0; i<OrdersTotal(); i++)
   {
      ulong t = OrderGetTicket(i);
      if(OrderSelect(t))
         if(OrderGetInteger(ORDER_MAGIC) == InpMagic && OrderGetInteger(ORDER_TYPE) == ot)
            count++;
   }
   return count;
}

void DrawLowerPanel()
{
   if(!InpShowDash) { ObjectsDeleteAll(0, "GH_B_"); return; }
   long chartW = ChartGetInteger(0, CHART_WIDTH_IN_PIXELS), chartH = ChartGetInteger(0, CHART_HEIGHT_IN_PIXELS);
   int w = 550, h = 85, x = (int)(chartW - w) / 2, y = (int)chartH - h - 30;
   color bgColor = C'5,10,16', borderColor = C'20,30,40', aqua = clrAqua, pink = C'255,20,147', grey = C'70,80,90';
   CreateRect("GH_B_BG", x, y, w, h, bgColor, borderColor, CORNER_LEFT_UPPER);
   double ask = SymbolInfoDouble(_Symbol, SYMBOL_ASK), bid = SymbolInfoDouble(_Symbol, SYMBOL_BID);
   double pipsBuy = (g_ceiling - ask) / _Point * 0.1, pipsSell = (bid - g_floor) /

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

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

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

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

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

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

Стоимость полного кода
1 354,90₽ ≈ $16.56