Strategi ini menggunakan dua garis EVWMA dengan tempoh yang berbeza untuk menjana crossover dan menghasilkan isyarat beli dan jual. Apabila garis tempoh pendek melintasi garis tempoh panjang, ia menjana isyarat beli. Apabila garis tempoh pendek melintasi di bawah garis tempoh panjang, ia menjana isyarat jual.
Strategi ini mengenal pasti perubahan trend dengan mengira dan melintasi dua garis EVWMA dengan tempoh yang berbeza.
Secara khusus, ia mula mengira dua baris EVWMA:
Baris jangka pendek m1, dengan tempoh panjang1, lalai kepada 5
Garis tempoh panjang m2, dengan tempoh panjang2, lalai kepada 40
Ia kemudian menggunakan fungsi crossover dan crossunder untuk menentukan situasi crossover antara m1 dan m2:
Jika m1 melintasi m2, ia menjana isyarat beli dan melaksanakan operasi panjang
Jika m1 melintasi di bawah m2, ia menjana isyarat jual dan menjalankan operasi pendek
Perhatikan bahawa EVWMA memberikan lebih banyak berat kepada data terkini berbanding purata bergerak mudah.
data = (nz(data[1]) * (nb_floating_shares - volume)/nb_floating_shares) + (volume_price/nb_floating_shares)
Di mana nz ((data[1]) adalah nilai EVWMA tempoh sebelumnya, nb_floating_shares adalah jumlah keseluruhan tempoh, jumlah adalah jumlah tempoh semasa, dan jumlah_harga adalah perolehan tempoh semasa.
Kelebihan strategi ini termasuk:
EVWMA bertindak balas dengan lebih cepat terhadap perubahan harga dan meningkatkan peluang keuntungan
Crossover jalur EVWMA berganda mengenal pasti titik perubahan tepat pada masanya
Logik yang mudah dan mudah dilaksanakan
Panjang tempoh yang boleh disesuaikan untuk menyesuaikan persekitaran pasaran yang berbeza
Tiada pengoptimuman parameter yang rumit diperlukan dan mudah untuk perdagangan langsung
Terdapat juga beberapa risiko dengan strategi ini:
Crossover boleh menghasilkan isyarat yang tidak sah yang berlebihan tanpa menapis bunyi pasaran
Sukar untuk mengenal pasti titik pembalikan trend dan risiko kehilangan pembalikan
Tiada stop loss atau mengambil keuntungan, tidak dapat mengawal risiko dengan berkesan
Pengoptimuman parameter yang tidak mencukupi membawa kepada tetapan tempoh yang tidak betul
Beberapa arah untuk meningkatkan strategi:
Tambah stop loss dan mengambil keuntungan untuk mengawal risiko dengan ketat
Mengoptimumkan panjang tempoh untuk mencari parameter terbaik
Tambah penapis jumlah untuk mengurangkan perdagangan yang tidak sah
Gabungkan dengan penunjuk pembalikan untuk mengelakkan pembalikan yang hilang
Mengoptimumkan parameter secara dinamik berdasarkan perubahan pasaran
Membezakan pasaran lembu dan lembu dan menggunakan parameter yang berbeza
Memperkenalkan model pembelajaran mesin untuk menentukan masa dagangan berdasarkan data besar
Ringkasnya, strategi silang EVWMA ini dapat dengan berkesan mengenal pasti perubahan trend dan menghasilkan isyarat perdagangan dengan mengira dan melintasi garis EVWMA berganda. Logiknya mudah tetapi terdapat risiko dan arah penambahbaikan. Dengan mengoptimumkan stop loss, pemilihan parameter, mengintegrasikan penunjuk lain dll, strategi dapat diperkukuhkan untuk perdagangan langsung. Secara keseluruhan, ini adalah penerokaan yang bermanfaat mengenai strategi silang purata bergerak dan bernilai penyelidikan dan penerapan lanjut.
/*backtest start: 2023-08-18 00:00:00 end: 2023-08-26 00:00:00 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy("Elastic Volume Weighted Moving Average Cross Strategy", shorttitle="EVWMA Cross", overlay=true) length1=input(5, title="EVWMA Short") length2=input(40, title="EVWMA Long") nbfs1=sum(volume, length1) nbfs2=sum(volume, length2) medianSrc=close calc_evwma(price, length, nb_floating_shares) => data = (nz(data[1]) * (nb_floating_shares - volume)/nb_floating_shares) + (volume*price/nb_floating_shares) data m1=calc_evwma(medianSrc, length1, nbfs1) m2=calc_evwma(medianSrc, length2, nbfs2) if (crossover(m1, m2)) strategy.entry("MA2CrossLE", strategy.long, comment="MA2CrossLE") if (crossunder(m1, m2)) strategy.entry("MA2CrossSE", strategy.short, comment="MA2CrossSE") p1=plot(m1,color=orange,linewidth=2, title="evwma") p2=plot(m2,color=orange,linewidth=2, title="evwma")