Selamat datang, trader! Hari ini kita akan membahas tentang DemoBufferPattern, sebuah indikator yang sangat berguna untuk analisis teknikal di MetaTrader 5. Indikator ini menggabungkan pelbagai elemen seperti lilin, fractals, dan zigzag untuk memberikan gambaran yang lebih jelas tentang pergerakan harga.
Berikut adalah gaya lukisan yang digunakan oleh indikator ini:
//+------------------------------------------------------------------+//| Fungsi inisialisasi indikator khusus |//+------------------------------------------------------------------+intOnInit() { //--- pemetaan buffer indikator SetIndexBuffer( 0,P1B1,INDICATOR_DATA); SetIndexBuffer( 1,P1B2,INDICATOR_DATA); SetIndexBuffer( 2,P1B3,INDICATOR_DATA); SetIndexBuffer( 3,P1B4,INDICATOR_DATA); SetIndexBuffer( 4,P1BC,INDICATOR_COLOR_INDEX); SetIndexBuffer( 5,P2B1,INDICATOR_DATA); SetIndexBuffer( 6,P3B1,INDICATOR_DATA); SetIndexBuffer( 7,P4B1,INDICATOR_DATA); SetIndexBuffer( 8,P4B2,INDICATOR_DATA); SetIndexBuffer( 9,P4BC,INDICATOR_COLOR_INDEX); SetIndexBuffer(10,P5B1,INDICATOR_DATA); SetIndexBuffer(11,P5BC,INDICATOR_COLOR_INDEX); //--- Buffer tambahan untuk pengiraan antara SetIndexBuffer(12,P4M1,INDICATOR_CALCULATIONS); SetIndexBuffer(13,P4M2,INDICATOR_CALCULATIONS); //--- Mereka harus diletakkan selepas semua buffer untuk dipaparkan, atau ... anda boleh mencubanya sendiri//--- ARROW PlotIndexSetInteger(1,PLOT_ARROW,217); PlotIndexSetInteger(2,PLOT_ARROW,218); PlotIndexSetInteger(1,PLOT_ARROW_SHIFT,-iArrowShift); PlotIndexSetInteger(2,PLOT_ARROW_SHIFT,iArrowShift); PlotIndexSetDouble(1,PLOT_EMPTY_VALUE,EMPTY_VALUE); PlotIndexSetDouble(2,PLOT_EMPTY_VALUE,EMPTY_VALUE); //--- ZIGZAG PlotIndexSetDouble(3,PLOT_EMPTY_VALUE,0.0); //--- MA maHandle=iMA(Symbol(),0,ExtPeriod,0,MODE_EMA,PRICE_CLOSE); return(0); } //+------------------------------------------------------------------+//| Fungsi iterasi indikator khusus |//+------------------------------------------------------------------+intOnCalculate(constint rates_total, constint prev_calculated, constdatetime& time[], constdouble& open[], constdouble& high[], constdouble& low[], constdouble& close[], constlong& tick_volume[], constlong& volume[], constint& spread[]) { //--- CalcCandles(rates_total,prev_calculated,open,high,low,close); CalcFractal(rates_total,prev_calculated,high,low,P2B1,P3B1); CalcZigzag (rates_total,prev_calculated,high,low,P4B1,P4B2,P4BC,P4M1,P4M2); CalcColorMA(rates_total,prev_calculated,P5B1,P5BC); //--- nilai kembali dari prev_calculated untuk panggilan seterusnya return(rates_total); }


Komen 0