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

Forex Master Method

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

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

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

О программе

Индикатор «Currency Power Meter» для MetaTrader 4 отображает визуальную шкалу силы основных валют на графике. Он рассчитывает относительное положение текущей цены внутри дневного диапазона и внутри пользовательского периода, а затем преобразует эти значения в дискретные баллы, отображаемые в виде цветных графических объектов.

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

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

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

НастройкаОписание
note Текстовый параметр-заголовок для раздела настроек аутентификации
username Имя пользователя для аутентификации в системе
LowValue Пороговое значение балла, ниже которого срабатывает оповещение для выбранной валюты
MaxValue Пороговое значение балла, выше которого срабатывает оповещение для выбранной валюты
PairAlert Список валютных пар, для которых включены оповещения по порогам
AlertDelay Задержка в секундах между повторными оповещениями для одной и той же валюты
Hours Количество часов для расчёта минимума и максимума в пользовательском периоде
Corner Угол графика, в котором размещаются графические объекты индикатора
shiftY_rule Правило определения вертикального смещения в зависимости от выбранного угла размещения
shiftY Вертикальное смещение графических объектов в пикселях от базовой позиции
sOutput Список валют, для которых отображается шкала силы на графике
sPairs Список валютных пар, анализируемых индикатором для расчёта силы валют
cCurrency Цвет текста с названиями валют на графике
cScoreHigh Цвет отображения числового значения балла за дневной период
cScoreHour Цвет отображения числового значения балла за пользовательский период
Получить полный код

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

#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Black

/* #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 InternetReadFile(int a0, string a1, int a2, int& a3[]);
   int InternetCloseHandle(int a0);
#import 
*/

extern string note = " ======= Authentication SETTINGS ======";
extern string username = "";
extern string password = "";
extern double LowValue = 2.0;
extern double MaxValue = 8.0;
extern string PairAlert = "";
extern int AlertDelay = 30;
extern int Hours = 1;
extern int Corner = 1;
extern string shiftY_rule = "Corner=0 ???1:shiftY=40__Corner=2 ???3:shiftY=0";
extern int shiftY = 40;
extern string sOutput = "EUR,GBP,AUD,NZD,USD,CAD,CHF,JPY";
extern string sPairs = "EURUSD,EURGBP,EURCHF,EURJPY,EURAUD,EURNZD,GBPUSD,AUDUSD,NZDUSD,USDJPY,USDCHF,USDCAD,EURCAD,CADJPY,GBPJPY,GBPCHF";
extern color cCurrency = Lime;
extern color cScoreHigh = Aqua;
extern color cScoreHour = Orange;
string pairs[32];
string outputCurrencies[16];
int gia_168[8] = {40, 10, 160, 130, 190, 70, 220, 100,250,280,310,340};
int gia_172[] = {16612911, 16620590, 16702510, 15990063, 11206190, 5569869, 4193654, 3669164, 3407316, 3144445, 3144189, 3138813, 3069181, 3126526, 3046654, 3098621, 4207864, 4207864, 4207864, 4207864};
int distributionRanges[11] = {0, 4, 11, 23, 39, 50, 61, 78, 89, 96, 100};
int pairsNr = 32;
int outputCurrenciesNr = 16;

double resultstDailyTf[16];
double positiveDistributionDaily[32];
double negativeDistributionDaily[32];
double resultstMyPeriod[16];
double negativeDistributionMyPeriod[32];
double positiveDistributionMyPeriod[32];
int g_datetime_212 = 0;
int g_str2int_216 = 0;
bool authenticated = TRUE;
bool toCheckAuthentication = TRUE;
int gia_228[64] = {65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 43, 47};
int gi_232 = 1;
string gs_dummy_236;
int gi_244 = 0;
int gi_248 = 0;
int g_count_252 = 0;
string gs_256;
int gia_264[1];
string gs_272 = "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000";

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

int start() {
      // код доступен только после оплаты
   }
   string text_0;
   int countDailyTf;
   int countMyPeriod;
   string pair;
   double sumDaily;
   double sumMyPeriod;
   double dailyLow, currentLow, currentHigh;
   double priceRelativePosition;

   double bid;
   double dailyRange;

   if (toCheckAuthentication == TRUE && g_str2int_216 == 0) 
      {
         ObjectCreate("CPMerror", OBJ_LABEL, 0, 0, 0);
         ObjectSet("CPMerror", OBJPROP_CORNER, 0);
         ObjectSet("CPMerror", OBJPROP_COLOR, Red);
         ObjectSet("CPMerror", OBJPROP_XDISTANCE, 100);
         ObjectSet("CPMerror", OBJPROP_YDISTANCE, 30);
         text_0 = "Authentication ...";
         ObjectSetText("CPMerror", text_0, 16, "Verdana", Red);

         if (2 + 2 == 4) 
            {
               authenticated = TRUE;
               ObjectDelete("CPMerror");
            } 
         else 
            {
               text_0 = "CPM Auth FAILED email to s*****t*@forexmastermethod.com";
               authenticated = FALSE;
               if (g_str2int_216 == 0) text_0 = text_0 + " Err:021";
               if (g_str2int_216 == 4) text_0 = text_0 + " Err:024";
               ObjectSetText("CPMerror", text_0, 14, "Verdana", Red);
            }
         toCheckAuthentication = FALSE;
      }

   double pipValue = 0.01;
   if (authenticated == TRUE) 
      {
         for (int index_8 = 0; index_8 < pairsNr; index_8++) 
            {
               RefreshRates();
               pipValue = 0.0001;
               pair = pairs[index_8];
               if (StringSubstr(pair, 3, 3) == "JPY") pipValue = 0.01;
               dailyLow = MarketInfo(pair, MODE_LOW);
               dailyRange = MarketInfo(pair, MODE_HIGH) - dailyLow;
               bid = MarketInfo(pair, MODE_BID);
               priceRelativePosition = (bid - dailyLow) / MathMax(dailyRange, pipValue);
               positiveDistributionDaily[index_8] = CheckRatio(100.0 * priceRelativePosition);
               negativeDistributionDaily[index_8] = 9.9 - CheckRatio(100.0 * priceRelativePosition);

               currentLow = MyLowest(pair);
               currentHigh = MyHighest(pair);
               priceRelativePosition = (bid - currentLow) / MathMax(currentHigh - currentLow, pipValue);
               positiveDistributionMyPeriod[index_8] = CheckRatio(100.0 * priceRelativePosition);
               negativeDistributionMyPeriod[index_8] = 9.9 - CheckRatio(100.0 * priceRelativePosition);
            }

         for (int index_12 = 0; index_12 < outputCurrenciesNr; index_12++)
            {
               countDailyTf = 0;
               countMyPeriod = 0;
               sumDaily = 0;
               sumMyPeriod = 0;
               for (index_8 = 0; index_8 < pairsNr; index_8++) 
                  {
                     if (StringSubstr(pairs[index_8], 0, 3) == outputCurrencies[index_12]) 
                        {
                           sumDaily += positiveDistributionDaily[index_8];
                           countDailyTf++;
                           sumMyPeriod += positiveDistributionMyPeriod[index_8];
                           countMyPeriod++;
                        }

                    if (StringSubstr(pairs[index_8], 3, 3) == outputCurrencies[index_12]) 
                        {
                           sumDaily += negativeD

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

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

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

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

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

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

Стоимость полного кода
1 135,20₽ ≈ $13.87