Bagaimana memprogram indikator dengan OBV dan MA-nya?
Results 1 to 9 of 9

Thread: Bagaimana memprogram indikator dengan OBV dan MA-nya?

  1. #1
    4 Lampiran Hai semuanya,

    Saya seorang pemula dalam pemrograman MQL4 dengan beberapa pengetahuan dalam bahasa pemrograman lain. Saya telah berjuang dengan kode yang tampaknya mudah ini yang saya lampirkan di bawah ini. Pada dasarnya apa yang ingin saya capai adalah memiliki indikator OBV (On Balance Volume) dengan rata-rata bergerak (SMA, EMA, SMMA, atau LWMA) di jendela indikator terpisah di bagian bawah grafik. Ini adalah bagaimana seharusnya terlihat seperti:


    Saya menggunakan OBV.mq4 sebagai permulaan dan secara bertahap mulai membangun kode:Saya menambahkan fungsi SetIndexBuffer dan SetIndexStyle di init() untuk buffer kedua yang akan menyimpan nilai MA saya. Saya membuat loop yang melihat ke belakang MA_period = 200 unit waktu di masa lalu, mengambil nilai OBV tersebut, menempatkan semuanya ke dalam larik OBV_vals, dan kemudian menggunakan fungsi iMAOnArray() untuk mendapatkan SMA, EMA, SMMA, atau LWMA. Saya menempatkan nilai rata-rata bergerak yang dikembalikan oleh iMAOnArray() ke dalam MABuffer dengan harapan akan muncul di jendela indikator. Saya berhasil mendapatkan semuanya sampai garis di mana saya menyimpan rata-rata bergerak ke buffer. Saya memiliki nilai MA, saya mencetaknya di jurnal dan sepertinya valid. Namun, saat saya menghapus komentar pada baris MABuffer[i] = nOBVMA dengan maksud menunjukkan nilai MA ini pada layar indikator, semuanya menjadi rusak seperti yang Anda lihat pada gambar ini:


    Menariknya, dengan komentar MABuffer[i] = nOBVMA, OBV berfungsi dengan baik:


    Ini adalah cuplikan kodenya tetapi saya juga melampirkan kode lengkap di bawah ini.
    Kode yang dimasukkan/loop melihat ke belakang MA_period=200 periode dan mengambil/nilai OBV yang sesuai dengan candle tersebut untuk(int j=1; jlt;=MA_period; j ) { nOBV_vals#91;j-1#93; = iOBV(NULL, 0, PRICE_CLOSE, i j); }/menggunakan array nOBV_vals yang baru diisi,/baris ini menghitung MA nOBVMA = iMAOnArray(nOBV_vals, 0, MA_period, 0, MA_method, i);/mencetak nilai rata-rata bergerak Cetak(nilai OBV EMA adalah DoubleToStr(nOBVMA));/tambahkan MA ke MABuffer sehingga muncul di jendela indikator/ketika baris ini diaktifkan, bahkan data OBVBuffer rusak! MABuffer#91;i#93; = nOBVMA;
    Jika seseorang dapat membantu seorang pemula yang antusias, saya akan sangat berterima kasih!
    Jika Anda memiliki umpan balik lain kepada saya yang muncul di benak Anda ketika melihat masalah saya, jangan ragu untuk membagikannya, saya benar-benar bertekad untuk meningkatkan keterampilan pengkodean MQL4 saya secepat dan seefisien mungkin.

    P.S: Saya sadar bahwa saya dapat menambahkan rata-rata bergerak ke indikator OBV di MetaTrader. Namun, OBV dengan MA akan menjadi bagian dari EA masa depan yang saya rencanakan untuk diprogram dan karenanya saya memerlukan indikator dengan buffer OBV dan MA untuk diteruskan ke EA lainnya nanti.

    Terima kasih banyak sebelumnya atas bantuan Anda!

    https://www.forexfabrikasi.com/attac...2255590709.mq4

  2. #2
    2 Lampiran Dan kemenangan! Saya berhasil menyelesaikannya! Yang di atas adalah indikator saya, yang di bawah adalah MT4 default.
    Anehnya, itu sebenarnya lebih mudah daripada yang pernah saya pikirkan. Hanya dua untuk loop. Juga penting bahwa sebelumnya, saya salah memasukkan semuanya ke dalam satu loop for. Rahasianya adalah meletakkan semua nilai OBV ke dalam satu larik dan kemudian menggunakan iMAOnArray() pada semua nilai OBV dalam satu detik untuk loop. Saya meninggalkan kode saya di sini di bawah, mungkin seseorang akan membutuhkan OBV dengan MA di masa mendatang.

    https://www.forexfabrikasi.com/attac...8216145924.mq4

  3. #3
    2 Lampiran Okaaay, jadi saya punya berita bagus. Saya menduga kode OBV asli mungkin tidak sepenuhnya benar, jadi saya mengunduh yang lain dan memulai kembali seluruh proses, menambahkan baris satu per satu, mengkompilasi, menjalankan, dan memeriksa apakah semuanya masih masuk akal. Beginilah cara saya tiba di sini: terlihat jauh lebih baik sekarang, kabar baik bahwa MABuffer juga berfungsi dengan baik! Pada gambar ini, indikator bawah adalah default On Balance Volume dengan 200 EMA terpasang dan indikator atas adalah tempat indikator terprogram saya berdiri.
    Saya agak merasa masalahnya ada di suatu tempat di cuplikan kode di bawah ini, meskipun saya tidak mengerti mengapa itu tidak melakukan apa yang saya harapkan. Garis MA pada indikator saya naik dari 0 menjadi kira-kira 400.000 (yang merupakan kisaran yang benar) pada candle 200 yang setara dengan MA_period... Kode lengkap yang diperbarui terlampir di bawah. Kode yang Dimasukkan nLimit=Bars-nCountedBars-1; for(i=nLimit; igt;=0; i--) { for(int j=1; jlt;=MA_period; j ) { nOBV_vals#91;j-1#93; = iOBV(NULL, 0, PRICE_CLOSE, i j); } nOBVMA = iMAOnArray(nOBV_vals, 0, MA_period, 0, MA_method, i); MABuffer#91;i#93; = nOBVMA; }
    https://www.forexfabrikasi.com/attac...1031865325.mq4

  4. #4
    Quote Originally Posted by ;
    {quote} Ya, untungnya saya berhasil membuat banyak kemajuan sejak saat itu dan membuat iMAOnArray() berfungsi tetapi menabrak dinding dengan buffer. Terima kasih untuk kode MA, saya akan mencoba menggabungkannya dalam kode OBV-MA saya dan melihat apakah itu mengarah ke tempat lain
    Jadi hanya tampilan yang disesuaikan. Jika Anda melihat nilai cetak Anda saat MABuffer dikomentari dan kemudian lihat saat tidak dikomentari, nilainya sama dan nilai OBV sama. Mungkin Anda perlu melakukan penskalaan linier?

  5. #5
    Quote Originally Posted by ;
    {quote}I was remembering from the other thread you said it only returned zero.
    Ya, untungnya saya berhasil membuat banyak kemajuan sejak itu dan membuat iMAOnArray() berfungsi tetapi menabrak dinding dengan buffer. Terima kasih untuk kode MA, saya akan mencoba menggabungkannya dalam kode OBV-MA saya dan melihat apakah itu mengarah ke tempat lain

  6. #6

    Quote Originally Posted by ;
    {quote} Hai , Untuk SMA mudah tapi untuk EMA, SMMA, LWMA juga? Selain itu, saya tidak merasa egi terbaik adalah menghindari penggunaan fungsi iMAOnArray sepenuhnya karena ini adalah fungsi yang cukup umum dan sebenarnya mengembalikan nilai.
    Ya ampun, saya ingat dari utas lain Anda mengatakan itu hanya mengembalikan nol. Berikut adalah kode MA mql, tetapi bukan kode OnArray: Kode yang Dimasukkan/ -------------------------------- ---------------------------------- /| Rata-Rata Pergerakan Sederhana |/ ----------------------------------------------- ------------------- double SimpleMA(posisi const int, periode const int, harga const double#91;#93 {/--- double result= 0,0;/--- cek posisi if(positiongt;=period-1 periodgt;0) {/--- hitung nilai untuk(int i=0;ilt;period;i ) result =price#91;position-i# 93;; hasil/=periode; }/--- kembali(hasil); }/ ------------------------------------------------- -------------------- /| Rata-Rata Pergerakan Eksponensial |/ ----------------------------------------------- ------------------- double ExponentialMA(posisi const int,const int periode,const double prev_value,const double price#91;#93 {/-- - hasil ganda = 0,0;/--- hitung nilai if(periodgt;0) { double pr=2.0/(period 1.0); result=harga#91;posisi#93;*pr prev_value*(1-pr); }/--- kembali(hasil); }/ ------------------------------------------------- -------------------- /| Rata-Rata Pergerakan yang Dihaluskan |/ ----------------------------------------------- ------------------- double SmoothedMA(posisi const int,const int periode,const double prev_value,const double price#91;#93 {/-- - hasil ganda = 0,0;/--- cek posisi if(periodgt;0) { if(position==period-1) { for(int i=0;ilt;period;i ) result =price#91;position-i#93;; hasil/=periode; } if(positiongt;=period) result=(prev_value*(period-1) price#91;position#93/period; }/--- kembali(hasil); }/ ------------------------------------------------- -------------------- /| Rata-rata Pergerakan Tertimbang Linier |/ ----------------------------------------------- ------------------- double LinearWeightedMA(posisi int konstan, periode int konstan, harga ganda konstan#91;#93 {/--- hasil ganda= 0,0,jumlah=0,0; int i,wsum=0;/--- hitung nilai if(positiongt;=period-1 periodgt;0) { for(i=period;igt;0;i--) { wsum =i; jumlah =harga#91;posisi-i 1#93;*(periode-i 1); } hasil=jumlah/wsum; }/--- kembali(hasil); }

  7. #7

    Quote Originally Posted by ;
    Hai semua, saya seorang pemula dalam pemrograman MQL4 dengan beberapa pengetahuan dalam bahasa pemrograman lain. Saya telah berjuang dengan kode yang tampaknya mudah ini yang saya lampirkan di bawah ini. Pada dasarnya apa yang ingin saya capai adalah memiliki indikator OBV (On Balance Volume) dengan rata-rata bergerak (SMA, EMA, SMMA, atau LWMA) di jendela indikator terpisah di bagian bawah grafik. Beginilah tampilannya: {image} Saya menggunakan OBV.mq4 sebagai permulaan dan secara bertahap mulai membangun kode: Saya menambahkan fungsi SetIndexBuffer dan SetIndexStyle di init() untuk yang kedua...
    Alih-alih iMAOnArray Anda bisa menghitung nilai MA sendiri. Folder include dari instalasi MT4 Anda memiliki kode yang dapat Anda gunakan, seperti perhitungan MA.

  8. #8

    Quote Originally Posted by ;
    {quote} Alih-alih iMAOnArray, Anda dapat menghitung nilai MA sendiri. Folder include dari instalasi MT4 Anda memiliki kode yang dapat Anda gunakan, seperti perhitungan MA.
    Hi Beerrun, Untuk SMA mudah tapi untuk EMA, SMMA, LWMA juga? Selain itu, saya tidak merasa egi terbaik adalah menghindari penggunaan fungsi iMAOnArray sepenuhnya karena ini adalah fungsi yang cukup umum dan sebenarnya mengembalikan nilai.

  9. #9
    @ levix95 Terima kasih banyak untuk OBV MA indi ini !!!! Bolehkah saya repot-repot menambahkan MA lagi, jadi ada dua ??? Saya scalping grafik M1, dan saya pikir 200MA dengan 34MA cepat bersama dengan OBV akan menyelesaikan sistem perdagangan saya Sangat BESAR PLEASE ? Thanks in advance PS Di lapangan jenis MA, nrs 1 sampai 4, saya kira itu dalam urutan yang sama seperti di semua MT4 Indies lainnya ?

Similar Threads

  1. Bagaimana saya menampilkan 5 angka dengan indikator saya?
    By sahabaoxh in forum Pembicaran Bitcoin dan Mata Uang Kripto
    Balasan: 4
    Postingan Terakhir: 09-13-2021 09:53, 09:53 AM
  2. butuh bantuan untuk memprogram 2 UKM pada indikator
    By yaviens in forum Pilihan Biner
    Balasan: 3
    Postingan Terakhir: 06-20-2021 13:10, 01:10 PM
  3. Balasan: 0
    Postingan Terakhir: 11-19-2009 02:04, 02:04 AM
  4. Cara memprogram indikator std untuk mengambil untuk mengambil harga dari jendela indikator lain
    By Ghyakaghyaka50 in forum Pembicaran Bitcoin dan Mata Uang Kripto
    Balasan: 0
    Postingan Terakhir: 11-19-2009 02:04, 02:04 AM
  5. butuh bantuan untuk memprogram 2 UKM pada indikator
    By yaviens in forum Pembicaran Bitcoin dan Mata Uang Kripto
    Balasan: 3
    Postingan Terakhir: 03-10-2009 12:07, 12:07 PM

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.