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

JMA z-score

jma z-score.mq5
Вы автор или правообладатель?

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

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

О программе

JMA z-score — это пользовательский индикатор для MetaTrader 5, который рассчитывает Z-score на основе сглаживания по алгоритму JMA (Jurik Moving Average). Индикатор отображает результат в отдельном окне в виде цветной линии: серый цвет — при отсутствии изменения, синий — при росте значения, розовый — при снижении.

Индикатор принимает четыре настраиваемых параметра: период сглаживания JMA, фаза JMA, период расчёта Z-score и тип цены. При заданном периоде Z-score меньше или равном 1 индикатор автоматически использует период JMA, а если значение окажется меньше 2, выводится предупреждение и инициализация завершается с ошибкой.

Внутренняя логика включает вспомогательные функции для расчёта сглаженной цены и статистического Z-score, однако пользователь видит только итоговый график без доступа к промежуточным вычислениям. Индикатор не выполняет торговых операций и не обрабатывает события сделок.

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

НастройкаОписание
JMA smooth period (inpPeriod) Период сглаживания JMA — Период сглаживания JMA. Определяет длину окна для расчёта сглаженной цены.
JMA phase (inpPhase) Фаза JMA — Фаза JMA. Числовой параметр, влияющий на форму сглаживающей кривой.
Z-score period (<=1 for same as JMA period) (inpZsPeriod) Период Z-score — Период расчёта Z-score. Если значение меньше или равно 1, используется период JMA. Если меньше 2, инициализация завершается с ошибкой.
Price (inpPrice) Тип цены — Тип цены, используемый для расчёта. Поддерживаются стандартные варианты: Close, Open, High, Low, Median, Typical, Weighted.
Получить полный код

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

#property description "JMA z-score"

#property indicator_separate_window
#property indicator_buffers 2
#property indicator_plots   1
#property indicator_label1  "Z-score"
#property indicator_type1   DRAW_COLOR_LINE
#property indicator_color1  clrDarkGray,clrDodgerBlue,clrDeepPink
#property indicator_width1  2

input int                inpPeriod   = 14;          // JMA smooth period
input double             inpPhase    = 0;           // JMA phase
input int                inpZsPeriod = 30;          // Z-score period (<=1 for same as JMA period)
input ENUM_APPLIED_PRICE inpPrice    = PRICE_CLOSE; // Price

double val[],valc[];
int _zsPeriod;

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

void OnDeinit(const int reason)
  {
  }

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
{
      // код доступен только после оплаты
   }

double workZs[];
double iZScore(double value, int period, int i,int bars)
{
   if (ArraySize(workZs)!=bars) ArrayResize(workZs,bars); workZs[i]=value;
   if (period<=1) return(0);
      double sumx=0,sumxx=0,mean=0; for(int k=0; k<period && (i-k)>=0; mean+=workZs[i-k], sumx+=workZs[i-k],sumxx+=workZs[i-k]*workZs[i-k],k++) {}
      double deviation = MathSqrt((sumxx-sumx*sumx/(double)period)/(double)period);
             mean /= (double)period;
      return(deviation!=0 ? (value-mean)/deviation : 0);
}

#define _smoothInstances     1
#define _smoothInstancesSize 10
#define _smoothRingSize      11
double workSmooth[_smoothRingSize][_smoothInstances*_smoothInstancesSize];
#define bsmax  5
#define bsmin  6
#define volty  7
#define vsum   8
#define avolty 9

double iSmooth(double price, double length, double phase, int i, int instance=0)
{
   int _indP = (i-1)%_smoothRingSize;
   int _indC = (i  )%_smoothRingSize;
   int _inst = instance*_smoothInstancesSize;

   if(i==0 || length<=1) { int k=0; for(; k<volty; k++) workSmooth[_indC][_in

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

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

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

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

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

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

Стоимость полного кода
461,60₽ ≈ $5.64