1 Attachment (s) Saya mencoba untuk kode di MT4 tetapi indikator tidak beroperasi dengan benar. #property indior_chart_window #property indior_buffers 1 #property indior_plots 1/- plot Bagian #property indior_label1 Bagian #property indior_type1 DRAW_SECTION #property indior_color1 clrRed #property indior_style1 STYLE_SOLID #property indior_width1 1/- input parameter input int bars = 5;/Panjang bagian di bar masukan int N = 5;/Jumlah kutu untuk mengubah gaya bagian/- Penyangga indikator untuk plot ganda SectionBuffer [];/- Variabel tambahan untuk menghitung ujung bagian int pembagi;/- Array untuk menyimpan warna warna [] = clrRed, clrBlue, clrGreen;/- Array untuk menyimpan gaya garis ENUM_LINE_STYLE gaya [] = STYLE_SOLID, STYLE_DASH, STYLE_DOT, STYLE_DASHDOT, STYLE_DASHDOTDOT;/ ----------------------------------------------- ------------------- /| Fungsi inisialisasi indikator kustom |/ ----------------------------------------------- ------------------- int OnInit ()/- Mengikat array dan buffer indikator SetIndexBuffer (0, SectionBuffer, INDICATOR_DATA);/- Nilai 0 (kosong) akan mot berpartisipasi dalam menggambar PlotIndexSetDouble (0, PLOT_EMPTY_VALUE, 0);/- Periksa parameter indikator jika (barslt; = 0) PrintFormat (Nilai tidak valid dari bar parameter =% d, bar); kembali (INIT_PARAMETERS_INCORRECT); else divider = 2 * bar;/- return (INIT_SUCCEEDED);/ ----------------------------------------------- ------------------- /| Fungsi iterasi indikator kustom |/ ----------------------------------------------- ------------------- int OnCalculate (const int rates_total, const int prev_calculated, const waktu datetime [], const double open [], const double high [], const double low [], const double close [], const panjang tick_volume [], const panjang volume [], const int spread []) static int ticks = 0;/- Hitung kutu untuk mengubah gaya, warna dan lebar garis kutu ;/- Jika jumlah kritis kutu telah terakumulasi jika (ticksgt; = N)/- Jumlah bilah dari mana penghitungan nilai indikator mulai int mulai = 0;/- Jika indikator telah dihitung sebelumnya, kemudian atur start pada bar sebelumnya jika (prev_calculatedgt; 0) start = prev_calculated-1;/- Berikut adalah semua perhitungan nilai-nilai indikator untuk (int I = mulai; ilt; rates_total; I )/- Dapatkan sisa pembagian bilangan bar dengan 2 * bar int rest = I% divider ;/- Jika nomor bar habis dibagi 2 * bar jika (istirahat == 0)/- Atur bagian akhir pada harga Tinggi bar ini SectionBuffer [I] = Tutup [I];/- Jika Sisanyapembagian sama dengan bar, else/- Atur bagian akhir pada harga Tinggi dari bar ini jika (rest == bar) SectionBuffer [I] = Tutup [I];/- Jika tidak terjadi apa-apa, abaikan bar - set 0 lagi SectionBuffer [I] = 0;/- Kembalikan nilai prev_calculated untuk panggilan fungsi kembali berikutnya (rates_total);