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

FXI-CorrLines

fxi-corrlines.mq4
Вы автор или правообладатель?

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

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

О программе

FXI-CorrLines — это пользовательский индикатор для MetaTrader 4, который рассчитывает и отображает аналитические линии корреляции между двумя валютными парами. Индикатор строит два графика в отдельном окне, отражающих ценовые изменения текущего символа и заданной корреляционной пары в соответствующие моменты времени.

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

Поддерживаются различные типы ценовых данных для расчётов (Close, Open, High, Low) и настраиваемый таймфрейм анализа. Встроенная система авторизации проверяет регистрацию пользователя через внешние DLL-библиотеки и кэширует время входа для повторной валидации.

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

НастройкаОписание
Copyright Авторские права — Текстовый параметр, содержащий строку авторства индикатора.
Indicator Название индикатора — Текстовый параметр, содержащий название индикатора.
CorrPair Корреляционная пара — Символ (валютная пара), используемый для расчёта корреляции с текущим символом графика.
UseTimeFrame Таймфрейм анализа — Таймфрейм для анализа корреляции (M1, M5, M15, M30, H1, H4, D1, W1, MN1 и др.).
Mode Режим расчёта — Режим расчёта: 0 — Close, 1 — Open, 2 — High, 3 — Low.
DistanceLineColor Цвет линии расстояния — Цвет линии-разделителя при нормальном (не превышённом) расстоянии между двумя индикаторными линиями.
LabelColor Цвет метки — Цвет текста метки расстояния, отображаемой на графике.
AlertColor Цвет оповещения — Цвет линии-разделителя при превышении заданного расстояния между двумя индикаторными линиями.
DistanceForAlert Расстояние для оповещения — Пороговое расстояние в пунктах, при превышении которого линия-разделитель меняет цвет на цвет оповещения.
DistanceLineWidth Толщина линии расстояния — Толщина линии-разделителя на графике.
Получить полный код

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

/*
   Generated by EX4-TO-MQ4 decompiler V4.0.224.1 []
   Website: 
   E-mail : p******m*@gmail.com
*/

#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_color2 Green

#import "FXI.dll"
   string gGrab(string a0, string a1);
#import "corr_upd.dll"
   string returnReg(string a0, string a1);
   void runUpdater();
#import

extern string Copyright = "Copyright 2009 ForexImpact.com";
extern string Indicator = "FXI-CorrLines - 2 Currency Lines";
extern string CorrPair = "GBPUSD";
extern string UseTimeFrame = "D1";
extern int Mode = 0;
extern string modelbl = "0 - Close; 1 - Open; 2 - High; 3 - Low";
extern color DistanceLineColor = White;
extern color LabelColor = White;
extern color AlertColor = Red;
extern int DistanceForAlert = 20;
extern int DistanceLineWidth = 2;
int g_str2dbl_140 = 7;
double g_ibuf_144[];
double g_ibuf_148[];
int gi_unused_152 = 0;
double g_open_156;
double g_iopen_164;
double gd_172 = 0.0;
double gd_180 = 0.0;
bool gi_unused_188 = TRUE;
int gi_192;
int g_time_196 = -1;
int gi_200 = EMPTY;
double g_point_204;
int g_file_220;
bool gi_224 = FALSE;
double gda_unused_228[];
string gs_232;
double gd_240 = 1.3;

string StrToUpper(string as_0) {
   int li_8;
   for (int li_12 = 0; li_12 < StringLen(as_0); li_12++) {
      li_8 = StringGetChar(as_0, li_12);
      if (li_8 >= 'a' && li_8 <= 'z') as_0 = StringSetChar(as_0, li_12, li_8 - 32);
   }
   return (as_0);
}

int isPair(string a_symbol_0) {
   double l_bid_8 = MarketInfo(a_symbol_0, MODE_BID);
   double l_ask_16 = MarketInfo(a_symbol_0, MODE_ASK);
   double l_point_24 = MarketInfo(a_symbol_0, MODE_POINT);
   int l_digits_32 = MarketInfo(a_symbol_0, MODE_DIGITS);
   int l_spread_36 = MarketInfo(a_symbol_0, MODE_SPREAD);
   if (l_bid_8 <= 0.0 && l_ask_16 <= 0.0 && l_point_24 <= 0.0 && l_digits_32 <= 0 && l_spread_36 <= 0) return (0);
   return (1);
}

int loginStart() {
   int l_str2int_0;
   bool li_4;
   int li_8;
   int li_16;
   string ls_20;
   double l_str2dbl_28;
   g_file_220 = FileOpen("fxi_c.bin", FILE_CSV|FILE_READ);
   if (g_file_220 < 1) li_4 = FALSE;
   else {
      l_str2int_0 = StrToInteger(FileReadString(g_file_220));
      FileClose(g_file_220);
      li_4 = TRUE;
   }
   if (TimeLocal() - l_str2int_0 >= 259200 || li_4 == FALSE) {
      li_8 = doLogin();
      switch (li_8) {
      case 0:
         Alert("The Correlation Code -- Logged In");
         g_file_220 = FileOpen("fxi_c.bin", FILE_WRITE, 8);
         if (g_file_220 < 1) {
            Print("Cannot open password cache!");
            return (0);
         }
         FileWrite(g_file_220, TimeLocal());
         FileClose(g_file_220);
         /*
         li_16 = StringFind(gs_232, "-", 0);
         if (li_16 == -1) return (0);
         ls_20 = StringSubstr(gs_232, li_16 + 1);
         l_str2dbl_28 = StrToDouble(ls_20);
         Print("Global Version -- ", gd_240);
         Print("Retrieved Version -- ", l_str2dbl_28);
         if (gd_240 != l_str2dbl_28) dlVersions();
         */
         break;
      case 1:
         Alert("Invalid key provided!! Please re-install the software with the correct key.");
         gi_224 = TRUE;
         break;
      case 4:
         Alert("Your account has been disabled! Please contact s*****t*@fximpact.com");
         gi_224 = TRUE;
         break;
      case 5:
         Alert("Server error!! Please make sure you are connected to the Internet and try again.");
         gi_224 = TRUE;
         break;
      case 6:
         Alert("No key found in your registry (bad install)! Please re-install the product.");
         gi_224 = TRUE;
      }
   }
   return (0);
}

int doLogin() {
/*
   string ls_unused_0;
   string ls_unused_8;
   string ls_unused_16;
   string ls_24 = returnReg("Software\\FXI\\Correlation", "key");
   if (ls_24 == "") return (6);
   string ls_32 = "key=" + ls_24;
   string ls_40 = gGrab("", ls_32);
   if (StringSubstr(ls_40, 0, 1) == "0") {
      gs_232 = ls_40;
      return (0);
   }
   if (StringSubstr(ls_40, 0, 1) == "1") return (1);
   if (StringSubstr(ls_40, 0, 1) == "4") return (4);
   return (5);
   */
   return(0);
}
/*
void dlVersions() {
   string ls_0 = "";
   string ls_8 = gGrab(ls_0, "");
   int l_file_16 = FileOpen("corr_update.txt", FILE_CSV|FILE_WRITE, ",");
   if (l_file_16 < 1) Print("Can NOT load the versions.txt file! Not updating indicators...");
   FileWrite(l_file_16, ls_8);
   FileClose(l_file_16);
   runUpdater();
}
*/

int init() {
      // код доступен только после оплаты
   }
   loginStart();
   if (gi_224) return (0);
   IndicatorShortName("Correlation Lines -- " + Symbol() + " / " + CorrPair);
   SetIndexBuffer(0, g_ibuf_144);
   SetIndexStyle(0, DRAW_LINE);
   SetIndexBuffer(1, g_ibuf_148);
   SetIndexStyle(1, DRAW_LINE);
   if (!isPair(CorrPair)) Print("Invalid Pair! -- " + CorrPair);
   setTimeFrame(UseTimeFrame);
   if (g_str2dbl_140 < 1 || g_str2dbl_140 > 10) {
      Alert("Timeframe must be between 1 and 10");
      gi_unused_188 = FALSE;
      return (0);
   }
   if (Period() == PERIOD_M5 && g_str2dbl_140 <= 1) {
      Alert("Timeframe must be above 1 on a 5M chart -- Defaulting To \'2\'");
      g_str2dbl_140 = 2;
   }
   if (Period() == PERIOD_M15 && g_str2dbl_140 <= 2) {
      Alert("Timeframe must be above 2 on a 15M chart -- Defaulting To \'3\'");
      g_str2dbl_140 = 3;
   }
   if (Period() == PERIOD_M30 && g_str2dbl_140 <= 3) {
      Alert("Timeframe must be above 3 on a 30M chart -- Defaulting To \'4\'");
      g_str2dbl_140 = 4;
   }
   if (Period() == PERIOD_H1 && g_str2dbl_140 <= 4) {
      Alert("Timeframe must be above 4 on a 1H chart -- Defaulting To \'5\'");
      g_str2dbl_140 = 5;
   }
   if (Period() == PERIOD_H4 && g_str2dbl_140 <= 5) {
      Alert("Timeframe must be above 5 on a 4H chart -- Defaulting To \'6\'");
      g_str2dbl_140 = 6;
   }
   if (Period() == PERIOD_D1 && g_str2dbl_140 <= 6) {
      Alert("Timeframe must be above 6 on a Daily chart -- Defaulting To \'7\'");
      g_str2dbl_140 = 7;
   }
   if (Period() == PERIOD_W1 && g_str2dbl_140 <= 7) {
      Alert("Timeframe must be above 7 on a Weekly chart -- Defaulting To \'8\'");
      g_str2dbl_140 = 8;
   }
   if (Period() == PERIOD_MN1 && g_str2dbl_140 <= 8) {
      Alert("Timeframe must be above 8 on a Monthly chart -- Defaulting To \'9\'");
      g_str2dbl_140 = 9;
   }
   if (g_str2dbl_140 == 1) gi_192 = 1;
   if (g_str2dbl_140 == 2) gi_192 = 5;
   if (g_str2dbl_140 == 3) gi_192 = 15;
   if (g_str2dbl_140 == 4) gi_192 = 30;
   if (g_str2dbl_140 == 5) gi_192 = 60;
   if (g_str2dbl_140 == 6) gi_192 = 240;
   if (g_str2dbl_140 == 7) gi_192 = 1440;
   i

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

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

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

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

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

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

Стоимость полного кода
953,60₽ ≈ $11.65