Hull Moving Average: Panduan Lengkap untuk MetaTrader 5

Mike 2023.09.21 03:55 22 0 0
Lampiran

Hai rakan-rakan trader! Hari ini kita akan bercakap tentang satu indikator yang menarik, iaitu Hull Moving Average (HMA) dan bagaimana cara untuk menggunakannya dalam MetaTrader 5.

Saya tidak begitu memahami sumber implementasi HMA yang lain, jadi saya memutuskan untuk melaksanakannya sendiri. Indikator ini mempunyai empat parameter input yang perlu kita ketahui:

  1. InpHmaPeriod = 20
  2. InpColorKind = single_color
  3. InpColorIndex = color_index_3
  4. InpMaxHistoryBars = 240

Parameter ini agak jelas dan mudah untuk difahami. ENUM_COLOR_KIND membolehkan kita memilih antara warna tunggal atau pelbagai warna. Secara lalainya, ia adalah warna tunggal. Dalam mod pelbagai warna, HMA mempunyai warna berbeza untuk nilai yang naik dan turun. Jika kita menggunakan mod warna tunggal, ENUM_COLOR_INDEX menetapkan warna tunggal untuk HMA. Dalam mod pelbagai warna, warna lalai adalah kelabu. Jika HMA naik, warna akan menjadi hijau dan jika turun, ia menjadi merah. Anda boleh melihatnya dalam gambar di bawah:

Inputs

Available colors

Berikut adalah kod untuk indikator ini:

//+------------------------------------------------------------------+
//|                                                     MelzHull.mq5 |
//|                                       Copyright 2022, wm1@gmx.de |
//|                                                     https://melz.one |
//+------------------------------------------------------------------+
/*
  === Implementasi Hull Moving Average saya
  Dalam indikator saya, anda boleh memilih antara warna tunggal atau pelbagai untuk garis indikator.
*/

enum ENUM_COLOR_KIND {  // warna tunggal atau pelbagai
  single_color,
  multi_color
};

enum ENUM_COLOR_INDEX { // indeks warna indikator
  color_index_0,
  color_index_1,
  color_index_2,
  color_index_3,
  color_index_4,
  color_index_5,
  color_index_6
};

#property copyright   "Copyright 2022 oleh W. Melz, wm1@gmx.de"
#property link        "https://melz.one"
#property version     "1.00"
#property description "Implementasi Hull Moving Average saya"
//--- tetapan indikator
#property indicator_chart_window              // lukis dalam tetingkap carta
#property indicator_buffers 4                 // penampan untuk: fullWMA, halfWMA, vHull, cHull
#property indicator_plots   1                 // plot hanya satu garis
#property indicator_type1   DRAW_COLOR_LINE   // lukis sebagai garis berwarna
// indeks warna untuk dipilih dari:     0        1      2       3              4             5            6, sila tambah senarai sehingga 64 warna
#property indicator_color1  clrGray,clrGreen,clrRed,clrBlue,clrGreenYellow,clrDodgerBlue,clrFireBrick
#property indicator_width1  1                 // lebar garis
#property indicator_label1  "HMA"             // nama indikator

//--- parameter input
input int                 InpHmaPeriod        = 20;             // periode indikator, lalai 20
input ENUM_COLOR_KIND     InpColorKind        = single_color;   // jenis warna indikator, warna tunggal atau pelbagai
input ENUM_COLOR_INDEX    InpColorIndex       = color_index_3;  // set warna indikator warna tunggal
input int                 InpMaxHistoryBars   = 240;            // kira bar sejarah, lalai 240, tidak lebih

//--- penampan indikator
double valueBuffer[];           // simpan nilai indikator Hull
double colorBuffer[];           // simpan warna indikator Hull pada bar
double fullWMABuffer[];         // simpan pengiraan WMA penuh
double halfWMABuffer[];         // simpan pengiraan WMA separuh

//--- Pembolehubah global indikator
int hmaPeriod, fullPeriod, halfPeriod, sqrtPeriod, maxHistoryBars;  // simpan nilai input atau nilai lalai

//+------------------------------------------------------------------+
//| Fungsi inisialisasi indikator khusus                         |
//+------------------------------------------------------------------+
int OnInit() {
  ENUM_INIT_RETCODE result = checkInput();                // semak parameter input yang betul

  SetIndexBuffer(0,valueBuffer,INDICATOR_DATA);           // simpan pemetaan penampan indikator
  SetIndexBuffer(1,colorBuffer,INDICATOR_COLOR_INDEX);    // simpan warna lilin indikator
  SetIndexBuffer(2,fullWMABuffer,INDICATOR_CALCULATIONS); // simpan hasil pengiraan fullWMA
  SetIndexBuffer(3,halfWMABuffer,INDICATOR_CALCULATIONS); // simpan hasil pengiraan halfWMA
  IndicatorSetInteger(INDICATOR_DIGITS,_Digits);          // set angka indikator
  string shortName = StringFormat("HMA(%d)",hmaPeriod);   // nama untuk DataWindow dan label sub-tetingkap indikator
  IndicatorSetString(INDICATOR_SHORTNAME,shortName);
  PlotIndexSetString(0,PLOT_LABEL,shortName);

// mengira nilai global untuk indikator
  fullPeriod = hmaPeriod;                             // tempoh dari input
  halfPeriod = fullPeriod / 2;                        // kira separuh tempoh
  sqrtPeriod = (int)round(sqrt((double)fullPeriod));  // kira akar kuasa dua tempoh

  return(result);                                         // kejayaan atau kegagalan, inisialisasi selesai
}

Semoga anda menikmati penggunaan indikator ini!

Senarai
Komen 0