nrp indicator.mq4
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «nrp indicator.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Данный продукт представляет собой пользовательский индикатор для платформы MetaTrader 4 на языке MQL4. Он рассчитывает значения RSI и скользящей средней, сравнивает их между собой и отображает на графике стрелки вверх при бычьем пересечении и стрелки вниз при медвежьем пересечении.
Индикатор поддерживает выбор рабочего таймфрейма и интерполяцию значений для отображения данных с других таймфреймов на текущем графике. Цвета стрелок и идентификатор объектов настраиваются пользователем.
Встроена система уведомлений: звуковые оповещения, всплывающие сообщения, отправка по электронной почте и push-уведомления на мобильные устройства. Сигналы также сохраняются в CSV-файлы для последующего восстановления и отображения истории.
Продукт содержит механизм проверки лицензии с привязкой к номеру MT4-аккаунта и дате истечения, ограничивающий использование авторизованными пользователями.
Настройки программы
| Настройка | Описание |
|---|---|
| PERIODIC | Таймфрейм расчёта — Таймфрейм для расчёта индикатора (например, 240 — H4) |
| mt4 account ID (Licence_MT4ID) | Идентификатор MT4-аккаунта — Идентификатор MT4-аккаунта для привязки лицензии |
Поиск по коду файла
#property indicator_chart_window
#property indicator_buffers 2
#define FLINESIZE 14
extern string PERIODIC = "240";
int RsiPeriod = 7;
int MaType = 1;
int MaPeriod = 7;
bool Interpolate = false;
string arrowsIdentifier = "HARZADOUS";
color arrowsUpColor = Magenta;
color arrowsDnColor = Yellow;
bool alertsOn = TRUE;
bool alertsSound = TRUE;
bool alertsOnCurrent = FALSE;
bool alertsMessage = FALSE;
bool alertsEmail = FALSE;
bool push = true;
extern int Licence_MT4ID = 0; // mt4 account ID
string Licenced_Mail = "b************y*@gmail.com"; // mt4 account ID
string Serial_Number= "UNLIMITED";
double G_ibuf_136[];
double G_ibuf_140[];
double G_ibuf_144[];
string gs_148;
bool gi_156 = FALSE;
bool gi_160 = FALSE;
int g_timeframe_164;
string gs_nothing_168 = "nothing";
datetime g_time_176;
datetime lastArrTime = EMPTY;
datetime expiryDate = D'2040.1.30 23:59'; //change as per your requirement
int acc_number= 0;
string mail= "b************y*@gmail.com";
string Serial_Key= "UNLIMITED" ;
int init()
{
// код доступен только после оплаты
}
int deinit() {
f0_2();
return (0);
}
int start() {
// код доступен только после оплаты
}
int shift_0;
int datetime_4;
double Ld_8;
int Li_16;
int Li_32 = IndicatorCounted();
if (Li_32 < 0) return (-1);
if (Li_32 > 0) Li_32--;
int Li_36 = MathMin(Bars - Li_32, Bars - 1);
if (gi_160) {
G_ibuf_136[0] = Li_36 + 1;
return (0);
}
if (g_timeframe_164 > Period()) Li_36 = MathMax(Li_36, MathMin(Bars - 1, iCustom(NULL, g_timeframe_164, gs_148, "returnBars", 0, 0) * g_timeframe_164 / Period()));
if (gi_156) {
for (int Li_40 = 0; Li_40 < Li_36; Li_40++) G_ibuf_136[Li_40] = iRSI(NULL, 0, RsiPeriod, PRICE_CLOSE, Li_40);
for (Li_40 = 0; Li_40 < Li_36; Li_40++) G_ibuf_140[Li_40] = iMAOnArray(G_ibuf_136, 0, MaPeriod, 0, MaType, Li_40);
return (0);
}
int typeLastSignal = EMPTY;
if(TimeCurrent() > expiryDate ||(acc_number!=0 && acc_number!=AccountNumber())||(Licenced_Mail!=mail))
{
Alert("Account invalid or Licence expired contact @ b************y*@gmail.com" );
return(0);
}
else
{
for (Li_40 = Li_36; Li_40 >= 0; Li_40--) {
shift_0 = iBarShift(NULL, g_timeframe_164, Time[Li_40]);
G_ibuf_136[Li_40] = iCustom(NULL, g_timeframe_164, gs_148, "calculate", RsiPeriod, MaType, MaPeriod, 0, shift_0);
G_ibuf_140[Li_40] = iCustom(NULL, g_timeframe_164, gs_148, "calculate", RsiPeriod, MaType, MaPeriod, 1, shift_0);
G_ibuf_144[Li_40] = G_ibuf_144[Li_40 + 1];
if (G_ibuf_136[Li_40] > G_ibuf_140[Li_40]) G_ibuf_144[Li_40] = 1;
if (G_ibuf_136[Li_40] < G_ibuf_140[Li_40]) G_ibuf_144[Li_40] = -1;
if (G_ibuf_144[Li_40] != G_ibuf_144[Li_40 + 1]) {
if (G_ibuf_144[Li_40] == 1.0) { DrawArrowForBar(Li_40, arrowsUpColor, 217, 0); typeLastSignal = OP_BUY; }
if (G_ibuf_144[Li_40] == -1.0){ DrawArrowForBar(Li_40, arrowsDnColor, 218, 1); typeLastSignal = OP_SELL; }
}
if (g_timeframe_164 <= Period() || shift_0 == iBarShift(NULL, g_timeframe_164, Time[Li_40 - 1])) continue;
if (Interpolate) {
datetime_4 = iTime(NULL, g_timeframe_164, shift_0);
for (int Li_44 = 1; Li_40 + Li_44 < Bars && Time[Li_40 + Li_44] >= datetime_4; Li_44++) {
}
Ld_8 = 1.0 / Li_44;
for (int Li_48 = 1; Li_48 < Li_44; Li_48++) {
G_ibuf_136[Li_40 + Li_48] = Li_48 * Ld_8 * (G_ibuf_136[Li_40 + Li_44]) + (1.0 - Li_48 * Ld_8) * G_ibuf_136[Li_40];
G_ibuf_140[Li_40 + Li_48] = Li_48 * Ld_8 * (G_ibuf_140[Li_40 + Li_44]) + (1.0 - Li_48 * Ld_8) * G_ibuf_140[Li_40];
}
}
}
if (alertsOn) {
if (alertsOnCurrent) Li_16 = 0;
else Li_16 = 1;
if (G_ibuf_144[Li_16] != G_ibuf_144[Li_16 + 1]) {
if (G_ibuf_144[Li_16] == 1.0) f0_5("Trend UP");
if (G_ibuf_144[Li_16] == -1.0) f0_5("Trend DOWN");
}
}
datetime curTime = iTime(NULL, g_timeframe_164, 0);
string nameCurObj = arrowsIdentifier + ":" + iTime(NULL, g_timeframe_164, 0);
if( ObjectFind(nameCurObj) != EMPTY && curTime > lastArrTime )
{
if( typeLastSignal != EMPTY )
{
if( lastArrTime == EMPTY )
SaveSignal(curTime, typeLastSignal);
else
{
datetime minuts = iTime(NULL, PERIOD_M1, 0);
SaveSignal(curTime, typeLastSignal, minuts);
if( Period() < g_timeframe_164 )
Показано первые 50% кода (символов: 8834)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.