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? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.