Forex Currency Index
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «forexcurrencyindex.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Данный индикатор отображает на графике MetaTrader 5 визуальный «Forex Currency Index». Он анализирует 28 валютных пар на 7 таймфреймах (M5, M15, M30, H1, H4, D1, W1), группируя результаты по 8 основным валютам (USD, EUR, GBP, CHF, JPY, CAD, AUD, NZD). Для каждой пары и таймфрейма рассчитывается направленный индекс на основе нескольких технических индикаторов: скользящих средних (SMA 50, SMA 100, SMA 30, EMA 10), Awesome Oscillator, Parabolic SAR и ADX (PlusDI/MinusDI). Каждое сравнение вносит взвешенный прирост или убыток в кумулятивный балл.
Результаты отображаются в виде вертикальных столбцов на графике: 8 колонок (по одной на валюту) и 7 строк (по одной на таймфрейм). Цвет столбцов указывает направление — зелёный для бычьего, красный для медвежьего и серый для нейтрального. Дополнительная строка маркеров может сигнализировать о значительном отклонении текущих значений от предыдущих.
Индикатор обновляется при появлении каждого нового бара и перерисовывает все графические объекты. Конфигурация осуществляется через внутренние глобальные переменные, а не через входные параметры.
Поиск по коду файла
#property indicator_chart_window
#property indicator_minimum -10.0
#property indicator_maximum 10.0
int g_color_76 = Black;
int g_color_80 = LimeGreen;
int g_color_84 = Red;
int g_color_88 = DimGray;
int gi_92 = 16777215;
int gi_96 = 16777215;
int gi_100 = 6908265;
int gi_104 = 42495;
int gi_unused_108 = 3329330;
int gi_unused_112 = 255;
int gi_116 = 6908265;
int gi_unused_120 = 12632256;
int gi_124 = 44;
int gi_128 = 20;
int gi_unused_132 = 9;
int gi_136 = 20;
bool gi_140 = FALSE;
int gi_144 = 1;
double gd_148 = 0.5;
bool gi_156 = TRUE;
int gia_192[7] = {5, 15, 30, 60, 240, 1440, 10080};
string gsa_196[28];
string gsa_200[7] = {"M5", "M15", "M30", "H", "H4", "D", "W1"};
string gsa_204[8] = {"USD", "EUR", "GBP", "CHF", "JPY", "CAD", "AUD", "NZD"};
string gsa_208[28] = {"EURUSD", "GBPUSD", "USDCHF", "USDJPY", "USDCAD", "AUDUSD", "NZDUSD", "EURGBP", "EURCHF", "EURJPY", "EURCAD", "EURAUD", "EURNZD", "GBPCHF", "GBPJPY", "GBPCAD", "GBPAUD", "GBPNZD", "CHFJPY", "CADCHF", "AUDCHF", "NZDCHF", "CADJPY", "AUDJPY", "NZDJPY", "AUDCAD", "NZDCAD", "AUDNZD"};
int gia_212[56] = {1, 0, 2, 0, 0, 3, 0, 4, 0, 5, 6, 0, 7, 0, 1, 2, 1, 3, 1, 4, 1, 5, 1, 6, 1, 7, 2, 3, 2, 4, 2, 5, 2, 6, 2, 7, 3, 4, 5, 3, 6, 3, 7, 3, 5, 4, 6, 4, 7, 4, 6, 5, 7, 5, 6, 7};
double gda_216[8][7];
double gda_220[8][7];
double gda_224[8][7];
int gia_228[5][5];
int gi_232 = 0;
int gi_236 = 100;
int gi_unused_240 = 30;
int gi_unused_244 = 20;
int gi_248 = 60;
int g_index_252;
int g_index_256;
int g_index_260;
void initVLine(string as_0, string as_8, string as_16, int ai_24) {
objectCreate("V" + as_0 + "_10" + as_8, ai_24, 194);
objectCreate("V" + as_0 + "_9" + as_8, ai_24, 186);
objectCreate("V" + as_0 + "_8" + as_8, ai_24, 178);
objectCreate("V" + as_0 + "_7" + as_8, ai_24, 170);
objectCreate("V" + as_0 + "_6" + as_8, ai_24, 162);
objectCreate("V" + as_0 + "_5" + as_8, ai_24, 154);
objectCreate("V" + as_0 + "_4" + as_8, ai_24, 146);
objectCreate("V" + as_0 + "_3" + as_8, ai_24, 138);
objectCreate("V" + as_0 + "_2" + as_8, ai_24, 130);
objectCreate("V" + as_0 + "_1" + as_8, ai_24, 122);
objectCreate("V" + as_0 + as_8, ai_24 + 2, 134, as_16, 7, "Arial Narrow", gi_96);
objectCreate("V" + as_0 + "p" + as_8, ai_24 + 4, 125, DoubleToStr(9, 0), 8, "Arial Narrow", Blue);
objectCreate("V" + as_0 + "arrow" + as_8, ai_24 + 4, 114, "l", 8, "Wingdings", Green);
objectCreate("V" + as_0 + "_-1" + as_8, ai_24, 82);
objectCreate("V" + as_0 + "_-2" + as_8, ai_24, 74);
objectCreate("V" + as_0 + "_-3" + as_8, ai_24, 66);
objectCreate("V" + as_0 + "_-4" + as_8, ai_24, 58);
objectCreate("V" + as_0 + "_-5" + as_8, ai_24, 50);
objectCreate("V" + as_0 + "_-6" + as_8, ai_24, 42);
objectCreate("V" + as_0 + "_-7" + as_8, ai_24, 34);
objectCreate("V" + as_0 + "_-8" + as_8, ai_24, 26);
objectCreate("V" + as_0 + "_-9" + as_8, ai_24, 18);
objectCreate("V" + as_0 + "_-10" + as_8, ai_24, 10);
}
void initMeter(string as_0, string as_8, int ai_16) {
initVLine("1", as_8, "USD", ai_16);
initVLine("2", as_8, "EUR", ai_16 + 20);
initVLine("3", as_8, "GBP", ai_16 + 40);
initVLine("4", as_8, "CHF", ai_16 + 60);
initVLine("5", as_8, "JPY", ai_16 + 80);
initVLine("6", as_8, "CAD", ai_16 + 100);
initVLine("7", as_8, "AUD", ai_16 + 120);
initVLine("8", as_8, "NZD", ai_16 + 140);
objectCreate("line1" + as_8, ai_16 + 2, 26, "---------------------------------------", 10, "Arial", gi_100);
objectCreate("line2" + as_8, ai_16 + 2, 108, "---------------------------------------", 10, "Arial", gi_100);
objectCreate("line3" + as_8, ai_16 + 2, 139, "---------------------------------------", 10, "Arial", gi_100);
objectCreate("line4" + as_8, ai_16 + 2, 220, "---------------------------------------", 10, "Arial", gi_100);
objectCreate("V" + as_8 + "title", ai_16 + 50, 230, as_0, 10, "Arial", gi_92);
objectCreate("Header", ai_16 - 1020, 270, "Forex Currency Index", 12, "Arial Bold", gi_104);
}
void paintVLine(string as_0, string as_8, double ad_16, double ad_24) {
if (ad_16 > ad_24 + gd_148) ObjectSetText("V" + as_0 + "arrow" + as_8, CharToStr(233), 8, "Wingdings", g_color_80);
else {
if (ad_16 < ad_24 - gd_148) ObjectSetText("V" + as_0 + "arrow" + as_8, CharToStr(234), 8, "Wingdings", g_color_84);
else ObjectSetText("V" + as_0 + "arrow" + as_8, CharToStr(108), 8, "Wingdings", g_color_88);
}
ad_16 = MathRound(ad_16);
if (ad_16 > 9.0) ObjectSet("V" + as_0 + "_10" + as_8, OBJPROP_COLOR, g_color_80);
else ObjectSet("V" + as_0 + "_10" + as_8, OBJPROP_COLOR, g_color_76);
if (ad_16 > 8.0) ObjectSet("V" + as_0 + "_9" + as_8, OBJPROP_COLOR, g_color_80);
else ObjectSet("V" + as_0 + "_9" + as_8, OBJPROP_COLOR, g_color_76);
if (ad_16 > 7.0) ObjectSet("V" + as_0 + "_8" + as_8, OBJPROP_COLOR, g_color_80);
else ObjectSet("V" + as_0 + "_8" + as_8, OBJPROP_COLOR, g_color_76);
if (ad_16 > 6.0) ObjectSet("V" + as_0 + "_7" + as_8, OBJPROP_COLOR, g_color_80);
else ObjectSet("V" + as_0 + "_7" + as_8, OBJPROP_COLOR, g_color_76);
if (ad_16 > 5.0) ObjectSet("V" + as_0 + "_6" + as_8, OBJPROP_COLOR, g_color_80);
else ObjectSet("V" + as_0 + "_6" + as_8, OBJPROP_COLOR, g_color_76);
if (ad_16 > 4.0) ObjectSet("V" + as_0 + "_5" + as_8, OBJPROP_COLOR, g_color_80);
else ObjectSet("V" + as_0 + "_5" + as_8, OBJPROP_COLOR, g_color_76);
if (ad_16 > 3.0) ObjectSet("V" + as_0 + "_4" + as_8, OBJPROP_COLOR, g_color_88);
else ObjectSet("V" + as_0 + "_4" + as_8, OBJPROP_COLOR, g_color_76);
if (ad_16 > 2.0) ObjectSet("V" + as_0 + "_3" + as_8, OBJPROP_COLOR, g_color_88);
else ObjectSet("V" + as_0 + "_3" + as_8, OBJPROP_COLOR, g_color_76);
if (ad_16 > 1.0) ObjectSet("V" + as_0 + "_2" + as_8, OBJPROP_COLOR, g_color_88);
else ObjectSet("V" + as_0 + "_2" + as_8, OBJPROP_COLOR, g_color_76);
if (ad_16 > 0.0) ObjectSet("V" + as_0 + "_1" + as_8, OBJPROP_COLOR, g_color_88);
else ObjectSet("V" + as_0 + "_1" + as_8, OBJPROP_COLOR, g_color_76);
if (ad_16 > 0.0) ObjectSetText("V" + as_0 + "p" + as_8, DoubleToStr(ad_16, 0), 8, "Arial Narrow", g_color_80);
else ObjectSetText("V" + as_0 + "p" + as_8, DoubleToStr(ad_16, 0), 8, "Arial Narrow", g_color_84);
if (ad_16 < 0.0) ObjectSet("V" + as_0 + "_-1" + as_8, OBJPROP_COLOR, g_color_88);
else ObjectSet("V" + as_0 + "_-1" + as_8, OBJPROP_COLOR, g_color_76);
if (ad_16 < -1.0) ObjectSet("V" + as_0 + "_-2" + as_8, OBJPROP_COLOR, g_color_88);
else ObjectSet("V" + as_0 + "_-2" + as_8, OBJPROP_COLOR, g_color_76);
if (ad_16 < -2.0) ObjectSet("V" + as_0 + "_-3" + as_8, OBJPROP_COLOR, g_color_88);
else ObjectSet("V" + as_0 + "_-3" + as_8, OBJPROP_COLOR, g_color_76);
if (ad_16 < -3.0) ObjectSet("V" + as_0 + "_-4" + as_8, OBJPROP_COLOR, g_color_88);
else ObjectSet("V" + as_0 + "_-4" + as_8, OBJPROP_COLOR, g_color_76);
if (ad_16 < -4.0) ObjectSet("V" + as_0 + "_-5" + as_8, OBJPROP_COLOR, g_color_84);
else ObjectSet("V" + as_0 + "_-5" + as_8, OBJPROP_COLOR, g_color_76);
if (ad_16 < -5.0) ObjectSet("V" + as_0 + "_-6" + as_8, OBJPROP_COLOR, g_color_84);
else ObjectSet("V" + as_0 + "_-6" + as_8, OBJPROP_COLOR, g_color_76);
if (ad_16 < -6.0) ObjectSet("V" + as_0 + "_-7" + as_8, OBJPROP_COLOR, g_color_84);
else ObjectSet("V" + as_0 + "_-7" + as_8, OBJPROP_COLOR, g_color_76);
if (ad_16 < -7.0) ObjectSet("V" + as_0 + "_-8" + as_8, OBJPROP_COLOR, g_color_84);
else ObjectSet("V" + as_0 + "_-8" + as_8, OBJPROP_COLOR, g_color_76);
if (ad_16 < -8.0) ObjectSet("V" + as_0 + "_-9" + as_8, OBJPROP_COLOR, g_color_84);
else ObjectSet("V" + as_0 + "_-9" + as_8, OBJPROP_COLOR, g_color_76);
if (ad_16 < -9.0) {
ObjectSet("V" + as_0 + "_-10" + as_8, OBJPROP_COLOR, g_color_84);
return;
}
ObjectSet("V" + as_0 + "_-10" + as_8, OBJPROP_COLOR, g_color_76);
}
void paintMeter(string as_0, double ad_8, double ad_16, double ad_24, double ad_32, double ad_40, double ad_48, double ad_56, double ad_64, double ad_72, double ad_80, double ad_88, double ad_96, double ad_104, double ad_112, double ad_120, double ad_128) {
paintVLine("1", as_0, ad_8, ad_16);
paintVLine("2", as_0, ad_24, ad_32);
paintVLine("3", as_0, ad_40, ad_48);
paintVLine("4", as_0, ad_56, ad_64);
paintVLine("5", as_0, ad_72, ad_80);
paintVLine("6", as_0, ad_88, ad_96);
paintVLine("7", as_0, ad_104, ad_112);
paintVLine("8", as_0, ad_120, ad_128);
}
void initGraph() {
initMeter(" 5MIN", "M1", 10);
initMeter("15MIN", "M2", 180);
initMeter("30MIN", "M3", 350);
initMeter("1HOUR", "M4", 520);
initMeter("4HOURS", "M5", 690);
initMeter("DAILY", "M6", 860);
initMeter("WEEKLY", "M7", 1030);
}
void objectCreate(string a_name_0, int a_x_8, int a_y_12, string a_text_16 = "-", int a_fontsize_24 = 42, string a_fontname_28 = "Arial", color a_color_36 = -1) {
int l_window_40 = WindowOnDropped();
ObjectCreate(a_name_0, OBJ_LABEL, l_window_40, 0, 0);
ObjectSet(a_name_0, OBJPROP_CORNER, 2);
ObjectSet(a_name_0, OBJPROP_COLOR, a_color_36);
ObjectSet(a_name_0, OBJPROP_XDISTANCE, a_x_8);
ObjectSet(a_name_0, OBJPROP_YDISTANCE, a_y_12);
ObjectSetText(a_name_0, a_text_16, a_fontsize_24, a_fontname_28, a_color_36);
}
int init() {
// код доступен только после оплаты
}
int deinit() {
ObjectsDeleteAll();
return (0);
}
int start() {
// код доступен только после оплаты
}
color l_color_28;
string l_text_32;
int l_y_40;
if (gi_156) {
initGraph();
gi_156 = FALSE;
}
if (Time[0] == gi_232) return (0);
gi_232 = Time[0];
ArrayCopy(gda_220, gda_216, 0, 0, WHOLE_ARRAY);
ArrayInitialize(gda_216, 0);
ArrayInitialize(gda_224, 0);
for (g_index_256 = 0; g_index_256 <= 6; g_index_256++) for (g_index_252 = 0; g_index_252 <= 27; g_index_252++) SetCurrencyValue(gsa_196[g_index_252], gia_192[g_index_256], g_index_256);
for (g_index_256 = 0; g_index_256 <= 6; g_index_256++) for (g_index_252 = 0; g_index_252 <= 27; g_index_252++) SetCurrencyValuePrev(gsa_196[g_index_252], gia_192[g_index_256], g_index_256);
int li_12 = gi_236;
string l_dbl2str_16 = DoubleToStr(gda_216[g_index_260][g_index_256], 2);
int l_count_24 = 0;
for (l_count_24 = 0; l_count_24 < 7; l_count_24++) {
paintMeter("M" + DoubleToStr(l_count_24 + 1, 0), gda_216[0][l_count_24], gda_224[0][l_count_24], gda_216[1][l_count_24], gda_224[1][l_count_24], gda_216[2][l_count_24], gda_224[2][l_count_24], gda_216[3][l_count_24], gda_224[3][l_count_24], gda_216[4][l_count_24], gda_224[4][l_count_24], gda_216[5][l_count_24], gda_224[5][l_count_24], gda_216[6][l_count_24], gda_224[6][l_count_24], gda_216[7][l_count_24], gda_224[7][l_count_24]);
Print("CV : " + gda_216[0][l_count_24] + "," + gda_216[1][l_count_24] + "," + gda_216[2][l_count_24] + "," + gda_216[3][l_count_24] + "," + gda_216[4][l_count_24] +
"," + gda_216[5][l_count_24] + "," + gda_216[6][l_count_24] + "," + gda_216[7][l_count_24]);
Print("CV_PREV : " + gda_224[0][l_count_24] + "," + gda_224[1][l_count_24] + "," + gda_224[2][l_count_24] + "," + gda_224[3][l_count_24] + "," + gda_224[4][l_count_24] +
"," + gda_224[5][l_count_24] + "," + gda_224[6][l_count_24] + "," + gda_224[7][l_count_24]);
}
ObjectsRedraw();
if (gi_140) {
l_color_28 = gi_116;
l_text_32 = "";
l_y_40 = gi_248;
for (g_index_260 = 0; g_index_260 <= 7; g_index_260++) {
li_12 = gi_236;
for (g_index_256 = 0; g_index_256 <= 6; g_index_256++) {
if (gda_216[g_index_260][g_index_256] > gda_220[g_index_260][g_index_256] + 0.7) {
l_color_28 = LimeGreen;
l_text_32 = "l";
}
if (gda_216[g_index_260][g_index_256] < gda_220[g_index_260][g_index_256] - 0.7) {
l_color_28 = Red;
l_text_32 = "l";
}
if (gda_216[g_index_260][g_index_256] == gda_220[g_index_260][g_index_256]) l_color_28 = gi_116;
ObjectCreate("E" + g_index_260 + g_index_256, OBJ_LABEL, 0, 0, 0);
ObjectSetText("E" + g_index_260 + g_index_256, l_text_32, 7, "Wingdings", l_color_28);
ObjectSet("E" + g_index_260 + g_index_256, OBJPROP_XDISTANCE, li_12 + 15);
ObjectSet("E" + g_index_260 + g_index_256, OBJPROP_YDISTANCE, l_y_40);
li_12 += gi_124;
}
l_y_40 += gi_128;
Показано первые 50% кода (символов: 19750)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.