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

xmc ea 1.00.mq5

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

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

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

О программе

Данный индикатор предназначен для мультивалютного анализа на основе золота в платформе MetaTrader 5. Он нормализует цены шести валютных пар с участием золота (XAUAUD, XAUCHF, XAUEUR, XAUGBP, XAUJPY, XAUUSD) к единому диапазону и отображает их на отдельном индикаторном окте.

Для каждой валютной пары рассчитывается относительное положение текущей цены в заданном диапазоне баров, что позволяет сравнивать динамику разных пар на единой шкале. Результат отрисовывается шестью цветными линиями в пределах от 0 до 100.

Индикатор предоставляет визуальное ранжирование валютных пар по силе с помощью легенды, а также отображает текущие значения на правой стороне графика с автоматической компенсацией наложения. Горизонтальные линии на уровнях 0, 50 и 100 служат ориентирами для оценки.

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

НастройкаОписание
Sym1 Символ первой валютной пары на основе золота
Sym2 Символ второй валютной пары на основе золота
Sym3 Символ третьей валютной пары на основе золота
Sym4 Символ четвёртой валютной пары на основе золота
Sym5 Символ пятой валютной пары на основе золота
Sym6 Символ шестой валютной пары на основе золота
Lookback Количество баров, используемых для расчёта нормализации цен
LineWidth Толщина линий индикатора на графике
ShowMidline Отображение горизонтальной линии на уровне 50
ShowLegend Отображение легенды с ранжированием валютных пар по силе
Получить полный код

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

#property strict

#property description " "
#property description "This EA is licensed for FREE Unlimited Private Use, and has been distributed at Telegram group FREE FOREX ROBOTS for members-only."
#property description " "
#property description "Instructions: any asset, any timeframe."
#property description " "
#property description "Risk Warning! Test this EA on Demo account first. Understand how this EA operates. Trading is risky and not suitable for every investor."

#property indicator_separate_window
#property indicator_minimum 0
#property indicator_maximum 100
#property indicator_buffers 6
#property indicator_color1 clrCoral
#property indicator_color2 clrTeal
#property indicator_color3 clrDodgerBlue
#property indicator_color4 clrMediumSeaGreen
#property indicator_color5 clrGold
#property indicator_color6 clrMediumPurple

input string Sym1         = "XAUAUD";
input string Sym2         = "XAUCHF";
input string Sym3         = "XAUEUR";
input string Sym4         = "XAUGBP";
input string Sym5         = "XAUJPY";
input string Sym6         = "XAUUSD";
input int    Lookback     = 100;
input int    LineWidth    = 2;
input bool   ShowMidline  = true;
input bool   ShowLegend   = true;

string g_sym[6];
color  g_clr[6] = {clrCoral, clrTeal, clrDodgerBlue, clrMediumSeaGreen, clrGold, clrMediumPurple};
int    g_win = -1;
int    g_sorted[6];
double g_vals[6];
bool   g_isValid[6];
int    g_period;
string g_shortName;

double g_cache[6][1000]; 

double buf0[], buf1[], buf2[], buf3[], buf4[], buf5[];

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

void OnDeinit(const int reason)
{
   for(int i = ObjectsTotal() - 1; i >= 0; i--)
   {
      string name = ObjectName(i);
      if(StringFind(name, "MCG_") == 0) ObjectDelete(0, name);
   }
}

void SetupObjects()
{
   g_win = WindowFind(g_shortName);
   if(g_win < 0) return;

   datetime t2 = Time[0];

   CreateHLine("MCG_H100", 100, clrDarkSlateGray);
   CreateHLine("MCG_H0", 0, clrDarkSlateGray);

   if(ShowMidline) CreateHLine("MCG_H50", 50, clrGray);

   if(ShowLegend)
   {
      for(int i = 0; i < 6; i++)
      {
         int yPos = (5 - i) * 14 + 30; 
         CreateLabel("MCG_L" + IntegerToString(i), 10, yPos, CORNER_LEFT_LOWER);
         CreateLabel("MCG_V" + IntegerToString(i), 80, yPos, CORNER_LEFT_LOWER);
      }
   }

   for(int i = 0; i < 6; i++)
   {
      string rtName = "MCG_RT" + IntegerToString(i);
      ObjectDelete(0, rtName);
      ObjectCreate(0, rtName, OBJ_TEXT, g_win, t2, 50);
      ObjectSetString(0, rtName, OBJPROP_TEXT, "  " + g_sym[i]);
      ObjectSetInteger(0, rtName, OBJPROP_COLOR, g_clr[i]);
      ObjectSetInteger(0, rtName, OBJPROP_FONTSIZE, 7);
      ObjectSetString(0, rtName, OBJPROP_FONT, "Arial Bold");
      ObjectSetInteger(0, rtName, OBJPROP_ANCHOR, ANCHOR_LEFT);
      ObjectSetInteger(0, rtName, OBJPROP_SELECTABLE, false);
      ObjectSetInteger(0, rtName, OBJPROP_HIDDEN, true);
   }
}

void CreateHLine(string name, double price, color clr)
{
   ObjectDelete(0, name);
   ObjectCreate(0, name, OBJ_HLINE, g_win, 0, price);
   ObjectSetInteger(0, name, OBJPROP_COLOR, clr);
   ObjectSetInteger(0, name, OBJPROP_BACK, true);
   ObjectSetInteger(0, name, OBJPROP_SELECTABLE, false);
   ObjectSetInteger(0, name, OBJPROP_HIDDEN, true);
}

void CreateLabel(string name, int x, int y, int corner = CORNER_LEFT_UPPER)
{
   ObjectDelete(0, name);
   ObjectCreate(0, name, OBJ_LABEL, g_win, 0, 0);
   ObjectSetInteger(0, name, OBJPROP_CORNER, corner);
   ObjectSetInteger(0, name, OBJPROP_XDISTANCE, x);
   ObjectSetInteger(0, name, OBJPROP_YDISTANCE, y);
   ObjectSetInteger(0, name, OBJPROP_FONTSIZE, 8);
   ObjectSetString(0, name, OBJPROP_FONT, "Arial Bold");
   ObjectSetInteger(0, name, OBJPROP_SELECTABLE, false);
   ObjectSetInteger(0, name, OBJPROP_HIDDEN, true);
}

void UpdateDisplay()
{
   for(int i = 0; i < 6; i++) g_sorted[i] = i;
   for(int i = 0; i < 5; i++)
      for(int j = i + 1; j < 6; j++)
         if(g_vals[g_sorted[i]] < g_vals[g_sorted[j]])
         {
            int tmp = g_sorted[i];
            g_sorted[i] = g_sorted[j];
            g_sorted[j] = tmp;
         }

   if(ShowLegend && g_win >= 0)
   {
      for(int rank = 0; rank < 6; rank++)
      {
         int idx = g_sorted[rank];
         string rankStr = IntegerToString(rank);

         ObjectSetString(0, "MCG_L" + rankStr, OBJPROP_TEXT, "■ " + g_sym[idx]);
         ObjectSetInteger(0, "MCG_L" + rankStr, OBJPROP_COLOR, clrBlack);

         string valText = g_isValid[idx] ? DoubleToString(g_vals[idx], 1) : "N/A";
         ObjectSetString(0, "MCG_V" + rankStr, OBJPROP_TEXT, valText);
         ObjectSetInteger(0, "MCG_V" + rankStr, OBJPROP_COLOR, clrBlack);
      }
   }

   int rt_shift = 0; 
   datetime textTime = Time[rt_shift];
   if(textTime == 0) textTime = Time[0];

   double plot_y[6]; 
   ArrayInitialize(plot_y, 10.0);

   int s_idx[6]; 
   ArrayInitialize(s_idx, 0);

   double adj_y[6]; 
   ArrayInitialize(adj_y, 0.0);

   for(int i = 0; i < 6; i++) 
   {
 

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

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

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

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

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

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

Стоимость полного кода
842,40₽ ≈ $10.30