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

omegatrend_v7.0.mq5

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

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

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

О программе

Данный файл представляет собой пользовательский индикатор для платформы MetaTrader 4, написанный на языке MQL4. Индикатор отображает на графике до 8 буферов данных: линии восходящего и нисходящего трендов, линии входов в длинную и короткую позицию, гистограммы и стрелки сигналов. Визуальное отображение каждого элемента управляется отдельными переключателями.

Для расчётов используется внешняя библиотека OmegaTrend.dll, а также стандартные функции технического анализа MQL4 (iMA, iATR, iHighest, iLowest). При инициализации индикатор проверяет доступность интернет-соединения и выполняет инициализацию сессии через функции этой библиотеки.

Индикатор поддерживает отправку уведомлений через Alert() и запись глобальных переменных терминала для отслеживания сигналов. Работа с ценовыми данными включает анализ баров, определение точек разворота и продолжение трендовых расчётов.

Важно: код содержит функцию прямой модификации памяти процесса (PatchZone с использованием WriteProcessMemory) и проверку разрешения импорта DLL, что указывает на наличие защитных механизмов.

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

НастройкаОписание
Show_Arrows Show_Arrows — Переключатель отображения стрелок сигналов на графике
Show_Histogram Show_Histogram — Переключатель отображения гистограмм на графике
Show_PivotLine Show_PivotLine — Переключатель отображения линий пивота на графике
Volatility_Period Volatility_Period — Целочисленный параметр, задающий период для расчёта индикатора волатильности ATR
Smooth_Factor Smooth_Factor — Целочисленный параметр сглаживания для расчёта скользящей средней (0 — без сглаживания)
Max_Width_Pips Max_Width_Pips — Целочисленный параметр, задающий максимальную ширину в пунктах для расчётов
Min_Follow_Pips Min_Follow_Pips — Целочисленный параметр, задающий минимальное расстояние в пунктах для продолжения тренда
Var_Prefix Var_Prefix — Текстовый параметр — префикс для имён глобальных переменных, используемых для уведомлений
TrendLine_Level TrendLine_Level — Числовой параметр, определяющий уровень для расчёта трендовых линий
PivotLine_Level PivotLine_Level — Числовой параметр, определяющий уровень для расчёта линии пивота
Bar_Acceleration Bar_Acceleration — Числовой параметр, используемый в расчётах продолжения трендовых линий
Profit_Acceleration Profit_Acceleration — Целочисленный параметр, влияющий на ускорение расчёта прибыли в трендовых расчётах
Max_Bars Max_Bars — Максимальное количество баров, обрабатываемых индикатором за один расчёт
Получить полный код

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

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

#property indicator_chart_window
#property indicator_buffers 8
#property indicator_color1 Aqua
#property indicator_color2 Fuchsia
#property indicator_color3 Aqua
#property indicator_color4 Fuchsia
#property indicator_color5 Aqua
#property indicator_color6 Fuchsia
#property indicator_color7 Aqua
#property indicator_color8 Fuchsia

#import "wininet.dll"
   int InternetOpenA(string a0, int a1, string a2, string a3, int a4);
   int InternetOpenUrlA(int a0, string a1, string a2, int a3, int a4, int a5);
   int InternetCloseHandle(int a0);
#import "OmegaTrend.dll"
   int SessionInit(int a0, int a1, int a2, int a3, string a4, int a5);
   int SessionDeinit(int a0, int a1, int a2, int a3, string a4);
   void TrueSleep(int a0);
   double InitLong(int a0, double a1, double a2, double a3, int a4, double a5, double a6);
   double InitShort(int a0, double a1, double a2, double a3, int a4, double a5, double a6);
   double CalcShort(int a0, double a1, double a2, int a3, double a4, double a5, double a6, double a7);
   double CalcLong(int a0, double a1, double a2, int a3, double a4, double a5, double a6, double a7);
   double ContLong(int a0, double a1, double a2, int a3, int a4, double a5, double a6, double a7, double a8, double a9);
   double ContShort(int a0, double a1, double a2, int a3, int a4, double a5, double a6, double a7, double a8, double a9);
#import "kernel32.dll"
   int  WriteProcessMemory(int handle, int address, int& buffer[], int size, int& written);
   int  LoadLibraryA(string file);
   int  GetCurrentProcess();
   int  GetModuleHandleA(int modName);
#import

void PatchZone(int address, int patch[]) {
   int mem[1];
   int out;
   int hproc = GetCurrentProcess();
   for (int i = 0; i < ArraySize(patch); i++) {
      mem[0] = patch[i];
      WriteProcessMemory(hproc, address + i, mem, 1, out);
   }
   return(0);
}

extern bool Show_Arrows = TRUE;
extern bool Show_Histogram = TRUE;
extern bool Show_PivotLine = TRUE;
extern int Volatility_Period = 24;
extern int Smooth_Factor = 0;
extern int Max_Width_Pips = 165;
extern int Min_Follow_Pips = 5;
extern string Var_Prefix = "Alert";
extern double TrendLine_Level = 3.4;
extern double PivotLine_Level = 1.25;
extern double Bar_Acceleration = 0.85;
extern int Profit_Acceleration = 0;
extern int Max_Bars = 500;
double gda_144[];
double gda_148[];
double gda_152[];
double gda_156[];
double gda_160[];
double gda_164[];
double gda_168[];
double gda_172[];
bool gi_176 = TRUE;
int gi_180 = -1;
bool gi_184 = FALSE;
int gi_188 = 0;
int gi_192 = 0;

int f0_0() {
   int li_20;
   bool li_0 = TRUE;
   string ls_4 = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461)";
   bool li_12 = FALSE;
   int li_16 = InternetOpenA(ls_4, li_12, "0", "0", 0);
   if (li_16 != 0) {
      li_20 = InternetOpenUrlA(li_16, "", "0", 0, -2080374528, 0);
      if (li_20 == 0) li_0 = FALSE;
      else InternetCloseHandle(li_20);
      InternetCloseHandle(li_16);
   } else li_0 = FALSE;
   return (li_0);
}

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

int deinit() {

   return (0);
}

int start() {
      // код доступен только после оплаты
   }
   double ld_24;
   double ld_32;
   int li_40;
   double ld_44;
   double ld_52;
   double ld_60;
   double ld_68;
   double ld_76;
   double ld_84;
   double ld_92;
   double ld_100;
   double ld_108;
   int li_116;
   double ld_120;
   double ld_128;
   double ld_136;
   double ld_144;
   double ld_152;
   double ld_160;
   string ls_0 = "*";
   int li_20 = IndicatorCounted();
   if (IsDllsAllowed() == FALSE) {
      Alert("Warning: Set Parameter **AllowDLL Imports** ON in menu Tools -> Options -> ExpertAdvisors.");
      TrueSleep(30000);
      return (-1);
   }

   if (gi_176) {
      gi_176 = FALSE;
      TrueSleep(500);
      gi_184 = f0_0();
      TrueSleep(500);
      if (!gi_184) gi_184 = f0_0();
      if (!gi_184) {
         gi_176 = TRUE;
         return (-1);
      }
   }
   if (gi_180 <= 0) {
      if (!gi_184) {
         gi_188++;
         if (gi_188 > 3 && gi_188 <= 10) Alert("Internet connection problem");
         TrueSleep(10000);
         return (-1);
      }
      if (AccountNumber() <= 0 || TimeCurrent() <= 0 || StringLen(Symbol()) < 1) {
         TrueSleep(1000);
         return (-1);
      }
      gi_180 = SessionInit(AccountNumber(), IsTesting(), IsDemo(), WindowHandle(Symbol(), Period()), StringSubstr(Symbol(), 0, 6), TimeCurrent());
      gi_180 = 1;
      if (gi_180 < 0) {
         gi_188++;
         if (gi_188 > 3 && gi_188 <= 10)
            if (MathMod(gi_188, 2) == 0.0) Alert("Online authentication failed! Error code: " + DoubleToStr(gi_180, 0));
         Comment("Online authentication failed! Error code: " + DoubleToStr(gi_180, 0));
         TrueSleep(1000);
         return (-1);
      }
   }

   gi_188 = 0;
   if (li_20 < 0) return (-1);
   if (li_20 > 0) li_20--;
   int li_16 = MathMin(Bars - li_20, Max_Bars);
   if (li_16 <= Bars - 1 && gda_144[li_16] > Point) ls_0 = "Long";
   else
      if (li_16 <= Bars - 1 && gda_148[li_16] > Point) ls_0 = "Short";
   for (int li_8 = li_16 - 1; li_8 >= 0; li_8--) {
      gda_148[li_8] = 0;
      gda_144[li_8] = 0;
      gda_156[li_8] = 0;
      gda_152[li_8] = 0;
      if (ls_0 == "*") {
         li_40 = 10;
         ld_44 = iHighest(NULL, 0, MODE_HIGH, li_40, li_8);
         ld_52 = iLowest(NULL, 0, MODE_LOW, li_40, li_8);
         ld_60 = iHigh(NULL, 0, ld_44);
         ld_68 = iLow(NULL, 0, ld_52);
         ld_76 = iClose(NULL, 0, li_8);
         if (ld_44 < ld_52) ls_0 = "Long";
         else {
            if (ld_44 > ld_52) ls_0 = "Short";
            else {
               if (ld_60 - ld_76 < ld_76 - ld_68) ls_0 = "Long";
               else ls_0 = "Short";
            }
         }
         ld_24 = 0;
         ld_32 = 0;
         if (ls_0 == "Long") {
            for (int li_12 = ld_44; li_12 <= li_8; li_12++) {
               if (Smooth_Factor <= 0) ld_60 = iHigh(NULL, 0, li_12);
               else ld_60 = iMA(NULL, 0, Smooth_Factor, 0, MODE_SMA, PRICE_HIGH, li_12 + 1);
               ld_84 = iATR(NULL, 0, Volatility_Period, li_12 + 1);
               ld_24 = InitLong(gi_180, ld_24, ld_60, ld_84, 1, TrendLine_Level, PivotLine_Level);
               ld_32 = InitLong(gi_180, ld_32, ld_60, ld_84, 2, TrendLine_Level, PivotLine_Level);
            }
            gda_144[li_8] = ld_24;
            gda_152[li_8] = ld_32;
         } else {
            for (li_12 = ld_52; li_12 <= li_8; li_12++) {
               if (Smooth_Factor <= 0) ld_68 = iLow(NULL, 0, li_12);

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

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

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

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

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

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

Стоимость полного кода
1 152,10₽ ≈ $14.08