Bagaimana cara menambahkan warna hijau merah pada histogram?
Results 1 to 6 of 6

Thread: Bagaimana cara menambahkan warna hijau merah pada histogram?

  1. #1
    1 Attachment (s) Halo teman-teman,

    Saya bukan ahli pembuat kode dan mengacaukan cara menambahkan warna hijau untuk mendapatkan histogram positif dan warna merah untuk histogram negatif dengan indikator ini.


    Kode indikator:
    Kode yang dimasukkan/ --------------------------------------------- --------------------- /| CandleAverage_v1. mq4 |/| Hak Cipta © 2006, Forex-TSD. Com |/| Disusun oleh IgorAD, igorad2003 @ yahoo.co.uk |/| http://finance.groups.yahoo.com/group/TrendLaboratory |/p ----------------------------------------------- ------------------- #property hak cipta Hak Cipta © 2006, Forex-TSD. Tautan #property com http://www.forex-tsd.com/#property indior_separate_window #property indior_buffers 1 #property indior_color1 DeepSkyBlue/- masukkan parameter ekstern int Panjang = 31; extern int H_period = 25; extern int L_period = 27; extern int C_period = 9;/- buffer dua CandleAvg # 91; # 93 ;; dual BarValue # 91; # 93 ;;/ ----------------------------------------------- ------------------- /| Fungsi inisialisasi indikator kustom |/ ----------------------------------------------- ------------------- int init ()/- indikator IndiorBuffers (2); SetIndexStyle (0, DRAW_HISTOGRAM); SetIndexBuffer (0, CandleAvg); SetIndexBuffer (1, BarValue);/- nama untuk DataWindow dan indikator subwindow label string short_name = CandleAverage ( Panjang ); IndiorShortName (short_name); SetIndexLabel (0, CandleAvg); SetIndexDrawBegin (0, Panjang);/- kembali (0);/ ----------------------------------------------- ------------------- /| Indikator kustomisasi iterasi melayani |/ ----------------------------------------------- ------------------- int begin () int change, limit, counted_bars = IndiorNilai (); dual UpDel, DnDel, H, L, C;/- if (counted_barslt; 0) return (-1); if (counted_bars == 0) limit = Bars-Length-1;/- bilah terhitung terakhir akan diceritakan jika (counted_barsgt; 0) limit = Bar-counted_bars; batasan - untuk (shift = batasan; shiftgt; = 0; ubah -) H = iMA (NULL, 0, H_period, 0, MODE_EMA, PRICE_HIGH, ubah); L = iMA (NULL, 0, L_period, 0, MODE_EMA, PRICE_LOW, ubah); C = iMA (NULL, 0, C_period, 0, MODE_EMA, PRICE_CLOSE, ubah); UpDel = H - C; DnDel = C - L; if (UpDel lt; DnDel) BarValue # 91; ubah # 93; = 1; if (UpDel gt; DnDel) BarValue # 91; ubah # 93; = -1; if (UpDel == DnDel) BarValue # 91; ubah # 93; = 0; untuk (shift = batasan; shiftgt; = 0; ubah -) CandleAvg # 91; ubah # 93; = iMAOnArray (BarValue, 0, Length, 0, MODE_SMA, ubah);/- kembali (0);/ ----------------------------------------------- ------------------- Saya mencoba mengubah kode seperti di bawah ini:

    Kode Tersisipkan #property indior_separate_window #property indior_buffers 2 #property indior_color1 DeepSkyBlue #property indior_color2 Red Tetapi tidak berfungsi karena nilai histogram disimpan hanya dalam 1 buffer, CandleAvg.

    Bagaimana cara memisahkan nilai negatif dan positif dari buffer CandleAvg dan menambahkan warna hijau merah?

    Tolong saran.

    Terima kasih untuk bantuannya.






  2. #2
    Sertakan dua buffer: CandleAvgPlus [], dan CandleAvgMinus [] dan atur nilainya untuk dikosongkan oleh keduanya. Kemudian gunakan pernyataan if dalam loop untuk memenuhi dua buffer baru ini. . Jika (CandleAvg [I] gt; = somenumber) CandleAvgPlus [I] = CandleAvg [I]; if (CandleAvg [I] lt; somenumber) CandleAvgMinus [I] = CandleAvg [I]; Sekarang hanya plot CandleAvgPlus dan CandleAvgMinus daripada CandleAve Jelas menyatakan mereka dengan benar dan menginisialisasi mereka dengan benar tetapi ini sebenarnya metode untuk memisahkan mereka di luar tanpa saya menulis kode untuk Anda di bawah. Pada atan yang berbeda saya menemukan sebagian besar pemrograman saya hanya dengan melihat kode dari orang lain. Dalam skenario ini file pada MACD warna akan menunjukkan seluruh item untuk Anda sangat cepat

  3. #3

    Quote Originally Posted by ;
    termasuk dua buffer lagi: [CandleAvgPlus [], dan CandleAvgMinus [] dan atur ke nilai kosong. Kemudian gunakan pernyataan if dalam loop untuk mengisi dua buffer baru ini. . Jika (CandleAvg [I] gt; = somenumber) CandleAvgPlus [I] = CandleAvg [I]; if (CandleAvg [I] lt; somenumber) CandleAvgMinus [I] = CandleAvg [I]; Sekarang hanya plot CandleAvgPlus dan CandleAvgMinus daripada CandleAve Jelas menyatakan mereka dengan benar dan menginisialisasi mereka dengan benar tetapi ini adalah metode untuk memisahkan mereka di luar tanpa saya menulis kode untuk Anda di bawah. Pada atan berbeda yang saya pelajari ...
    Terima kasih atas bantuan flyer415. Terima kasih juga atas kemauan Anda untuk menulis ulang kode untuk saya secara pribadi namun saya lebih memilih untuk mengungkapkannya sendiri dan belajar darinya. Saya agak baru di MQL coding dan harus mencari tahu banyak. Saya mencoba mengikuti saran Anda dan memodifikasi kode tetapi tidak berhasil. Saya mencoba berjam-jam dan tidak tahu alasannya tidak berhasil. Kode yang dimasukkan/ --------------------------------------------- --------------------- /| CandleAverage_v1. mq4 |/| Hak Cipta © 2006, Forex-TSD. Com |/| Disusun oleh IgorAD, igorad2003 @ yahoo.co.uk |/| http://finance.groups.yahoo.com/group/TrendLaboratory |/ ----------------------------------------------- ------------------- #property hak cipta Hak Cipta © 2006, Forex-TSD. Com #property hyperlink http://www.forex-tsd.com/#property indior_separate_window #property indior_buffers 4 #property indior_color1 DeepSkyBlue #property indior_color3 Hijau #property indior_color4 Merah/- parameter masukan Eksternal int Panjang = 31; extern int H_period = 25; extern int L_period = 27; extern int C_period = 9;/- buffer ganda CandleAvgNumber91; # 93 ;; ganda BarValue # 91; # 93 ;; double CandleAvgPlus # 91; # 93 ;; double CandleAvgMinus # 91; # 93 ;;/ ----------------------------------------------- ------------------- /| Fungsi inisialisasi indikator kustom |/ ----------------------------------------------- ------------------- int init ()/- indikator IndiorBuffers (4); SetIndexStyle (0, DRAW_NONE); SetIndexStyle (1, DRAW_NONE); SetIndexStyle (2, DRAW_HISTOGRAM); SetIndexStyle (3, DRAW_HISTOGRAM); SetIndexBuffer (0, CandleAvg); SetIndexBuffer (1, BarValue); SetIndexBuffer (2, CandleAvgPlus); SetIndexBuffer (3, CandleAvgMinus);/- nama untuk DataWindow dan indikator subwindow label string short_name = CandleAverage ( Panjang ); IndiorShortName (short_name); SetIndexLabel (0, CandleAvg); SetIndexDrawBegin (0, Panjang);/- kembali (0);/ ----------------------------------------------- ------------------- /| Indikator kustomisasi iterasi melayani |/ ----------------------------------------------- ------------------- int begin () int change, limitation, counted_bars = IndiorCounted (); double UpDel, DnDel, H, L, C;/- if (counted_barslt; 0) return (-1); if (counted_bars == 0) limit = Bars-Length-1;/- bilah terhitung terakhir akan diceritakan jika (counted_barsgt; 0) membatasi = Bar-counted_bars; batasan -; untuk (shift = batasan; shiftgt; = 0; ubah -) H = iMA (NULL, 0, H_period, 0, MODE_EMA, PRICE_HIGH, ubah); L = iMA (NULL, 0, L_period, 0, MODE_EMA, PRICE_LOW, ubah); C = iMA (NULL, 0, C_period, 0, MODE_EMA, PRICE_CLOSE, ubah); UpDel = H - C; DnDel = C - L; jika (CandleAvgNumber91; ubah # 93;gt; = UpDel) CandleAvgPlusNumber91; ubah # 93; = CandleAvg # 91; ubah # 93 ;; if (CandleAvg # 91; ubah # 93; lt; DnDel) CandleAvgMinus # 91; ubah # 93; = CandleAvg # 91; ubah # 93 ;; if (UpDel lt; DnDel) BarValue # 91; ubah # 93; # 1; if (UpDel gt; DnDel) BarValue # 91; ubah # 93; = -1; if (UpDel == DnDel) BarValue # 91; ubah # 93; = 0; untuk (shift = batasan; shiftgt; = 0; ubah -) CandleAvgPlus # 91; ubah # 93; = iMAOnArray (BarValue, 0, Length, 0, MODE_SMA, ubah); CandleAvgMinus # 91; ubah # 93; = iMAOnArray (BarValue, 0, Length, 0, MODE_SMA, ubah);/- kembali (0);/ ----------------------------------------------- ------------------- Tolong bantu.

  4. #4
    Kembali ke kode Anda. Anda harus mengizinkan indikator untuk menghitung CandleAve [] seperti biasa Anda memisahkan nilainya menjadi negatif dan positif. Sehingga awal Anda untuk loop melakukan banyak calcs maka selanjutnya Anda untuk loop mengisi CandleAve []. Anda tidak perlu mengubah putaran itu. Hari ini kita harus membuat lingkaran ketiga tepat sebelum pernyataan kembali. Pernyataan akan digunakan jika dengan yang ketiga untuk loop. Pada dasarnya jika CandleAve [i] gt; = 0 maka CandleAvePlus [i] = CandleAve [i] else CandleAveMinus [i] = CandleAve [i]. Pada dasarnya, untuk kode warna kami ingin secara fundamental menghasilkan buffer indikator sesuai standar sebelum kami mengembalikannya. Bagi saya, pengodean warna adalah langkah terakhir dalam indikator. Hanya sedikit titik tetapi karena Anda merencanakan CandleAvePlus dan CandleAveMinus maka mereka harus menjadi indikatorbuffers 1 dan 0. Jelas lebih baik seperti itu jika Anda mendapatkan angka-angka yang bercampur. Dan saya mengisi dua buffer baru dengan nilai-nilai sehingga mereka merencanakan dengan baik.

  5. #5

    Quote Originally Posted by ;
    Kembali ke kode asli Anda ....
    Akhirnya ini bekerja dengan sempurna. Terima kasih banyak, flyer415 untuk kebaikan Anda dan individu Anda mengajari saya. Maaf jika saya cukup bodoh dan lambat belajar kode MQL dari Anda. Sekali lagi, terima kasih. Berikut ini kode yang dimodifikasi: Kode yang Disisipkan/ --------------------------------------- --------------------------- /| CandleAverage_v1. mq4 |/| Hak Cipta © 2006, Forex-TSD. Com |/| Disusun oleh IgorAD, igorad2003 @ yahoo.co.uk |/| http://finance.groups.yahoo.com/group/TrendLaboratory |/ ----------------------------------------------- ------------------- #property hak cipta Hak Cipta © 2006, Forex-TSD. Com #property hyperlink http://www.forex-tsd.com/#property indior_separate_window #property indior_buffers 4 #property indior_color1 Hijau #property indior_color2 Merah/- masukkan parameter ekstern int Panjang = 31; extern int H_period = 25; extern int L_period = 27; extern int C_period = 9;/- buffer dua CandleAvgPlus # 91; # 93 ;; dual CandleAvgMinus # 91; # 93 ;; dual CandleAvg # 91; # 93 ;; dual BarValue # 91; # 93 ;;/ ----------------------------------------------- ------------------- /| Fungsi inisialisasi indikator kustom |/ ----------------------------------------------- ------------------- int init ()/- indikator IndiorBuffers (4); SetIndexStyle (0, DRAW_HISTOGRAM); SetIndexStyle (1, DRAW_HISTOGRAM); SetIndexBuffer (0, CandleAvgPlus); SetIndexBuffer (1, CandleAvgMinus); SetIndexBuffer (2, CandleAvg); SetIndexBuffer (3, BarValue);/- title untuk DataWindow dan indikator subwindow label string short_name = CandleAverage ( Panjang ); IndiorShortName (short_name); SetIndexLabel (0, CandleAvg); SetIndexDrawBegin (0, Panjang);/- kembali (0);/ ----------------------------------------------- ------------------- /| Fungsi iterasi indikator kustom |/ ----------------------------------------------- ------------------- int start () int shift, limit, counted_bars = IndiorNilai (); dual UpDel, DnDel, H, L, C;/- if (counted_barslt; 0) return (-1); if (counted_bars == 0) limit = Bars-Length-1;/- pub yang dihitung terakhir akan diceritakan jika (counted_barsgt; 0) membatasi = Bar-counted_bars; batas; untuk (shift = limit; shiftgt; = 0; shift) H = iMA (NULL, 0, H_period, 0, MODE_EMA, PRICE_HIGH, shift); L = iMA (NULL, 0, L_period, 0, MODE_EMA, PRICE_LOW, shift); C = iMA (NULL, 0, C_period, 0, MODE_EMA, PRICE_CLOSE, shift); UpDel = H - C; DnDel = C - L; harus (UpDel lt; DnDel) BarValue # 91; shift # 93; = 1; harus (UpDel gt; DnDel) BarValue # 91; shift # 93; = -1; harus (UpDel == DnDel) BarValue # 91; shift # 93; = 0; untuk (shift = limit; shiftgt; = 0; shift) CandleAvg # 91; shift # 93; = iMAOnArray (BarValue, 0, Length, 0, MODE_SMA, shift);untuk (shift = limit; shiftgt; = 0; shift--) if (CandleAvg # 91; shift # 93; gt; = 0) CandleAvgPlus # 91; shift # 93; = CandleAvg # 91; shift # 93 ;; harus (CandleAvg # 91; shift # 93; lt; 0) CandleAvgMinus # 91; shift # 93; = CandleAvg # 91; shift # 93 ;;/- kembali (0);/ ----------------------------------------------- -------------------

  6. #6
    [quote = wieb; 3232106] ini bekerja dengan sempurna. Terima kasih banyak atas kebaikan Anda dan individu Anda mengajari saya. Maaf ketika saya begitu lambat dan bodoh belajar kode MQL dari Anda. Sekali lagi, terima kasih. Untuk (shift = batasan; shiftgt; = 0; ubah -) CandleAvg [ubah] = iMAOnArray (BarValue, 0, Panjang, 0, MODE_SMA, ubah);* Anda bisa meletakkan kode dan menyimpan satu loop jika (CandleAvg [change] gt; = 0) CandleAvgPlus [ubah] = CandleAvg [ubah]; if (CandleAvg [ubah] lt; 0) CandleAvgMinus [ubah] = CandleAvg [ubah]; *Saya belajar dari orang lain, mengajukan pertanyaan dan mempelajari kode. Anda bisa menghilangkan satu untuk loop seperti yang ditunjukkan dari kode tebal. Senang itu berhasil. Anda dapat membuat indikator multi-warna karena ini adalah konsep yang sama.

Izin Posting

  • Anda tidak boleh memposting thread baru
  • Anda tidak boleh memposting balasan
  • Anda tidak boleh memposting lampiran
  • Anda tidak boleh menyunting postingan Anda
  •  
  • Kode BB Aktif
  • Smilies Aktif
  • Kode [IMG] Aktif
  • Kode [VIDEO] Aktif
  • Kode HTML tidak aktif
This website uses cookies
We use cookies to store session information to facilitate remembering your login information, to allow you to save website preferences, to personalise content and ads, to provide social media features and to analyse our traffic. We also share information about your use of our site with our social media, advertising and analytics partners.