Strategi ini menggunakan dua purata bergerak bertimbangan elastik ((EVWMA) dari dua kitaran yang berbeza untuk melakukan operasi silang untuk menghasilkan isyarat beli dan jual. Isyarat beli dihasilkan apabila melintasi garis jangka pendek pada garis jangka panjang; isyarat jual dihasilkan apabila melintasi garis jangka panjang di bawah garis jangka pendek.
Strategi ini menilai perubahan trend dengan mengira garisan EVWMA dari pelbagai tempoh dan membiarkan mereka bertukar.
Secara khusus, ia mula mengira dua baris EVWMA:
Garis tempoh pendek m1, tempoh panjang 1, default adalah 5
Panjang garis pusingan m2, pusingan panjang 2, default adalah 40
Kemudian, ia menilai persilangan m1 dan m2 dengan fungsi crossover dan crossunder:
Jika m1 diletakkan di atas m2, ia akan menghasilkan isyarat beli dan melakukan operasi long
Jika m1 melalui m2, ia akan menghasilkan isyarat menjual dan melakukan operasi pendek
Perlu diperhatikan bahawa EVWMA berbeza dengan purata bergerak biasa, ia memberikan berat yang lebih tinggi kepada data yang lebih baru-baru ini, supaya ia dapat bertindak balas lebih cepat terhadap perubahan harga. Rumus pengiraan adalah seperti berikut:
data = (nz(data[1]) * (nb_floating_shares - volume)/nb_floating_shares) + (volume_price/nb_floating_shares)
Di antaranya nz ((data[1]) menunjukkan nilai EVWMA bagi kitaran sebelumnya, nb_floating_shares menunjukkan jumlah dagangan keseluruhan dalam kitaran itu, volume menunjukkan jumlah dagangan kitaran semasa, dan volume_price menunjukkan jumlah dagangan kitaran semasa. Dengan demikian, data terkini diberi lebih berat.
Strategi ini mempunyai kelebihan berikut:
Menggunakan EVWMA dapat bertindak balas lebih cepat terhadap perubahan harga dan meningkatkan peluang keuntungan
Dengan menggunakan dua persilangan EVWMA, titik perubahan trend dapat dikesan dan masuk tepat pada masanya.
Operasi mudah dan mudah dilaksanakan
Panjang kitaran yang boleh disesuaikan untuk menyesuaikan diri dengan keadaan pasaran yang berbeza
Tidak memerlukan pengoptimuman parameter yang rumit, mudah diskaun
Strategi ini mempunyai beberapa risiko:
Garis silang dua hala tidak dapat menyaring bunyi pasaran dan mungkin menghasilkan banyak isyarat tidak berkesan
Tidak dapat menentukan titik perubahan, risiko kehilangan perubahan
Mekanisme penangguhan kerosakan tanpa henti, tidak dapat mengawal risiko dengan berkesan
Parameter tidak dioptimumkan dengan baik, tetapan kitaran baris yang tidak betul akan merosakkan kesan
Strategi ini boleh dioptimumkan dalam beberapa aspek:
Meningkatkan strategi penangguhan kerugian, mengawal risiko dengan ketat
Optimumkan panjang kitaran garisan, pilih parameter terbaik
Menambah isyarat penapis untuk jumlah dagangan dan mengurangkan perdagangan yang tidak sah
Kaedah ini juga boleh digunakan untuk mengkaji peluang-peluang yang terlewat.
Parameter pengoptimuman dinamik, panjang kitaran garis penyesuaian mengikut perubahan pasaran
Membezakan pasaran bertopeng dan kosong, menggunakan parameter yang berbeza
Menambah algoritma pembelajaran mesin untuk menggunakan latihan data besar untuk menentukan masa untuk membeli dan menjual
Secara keseluruhan, strategi cross crossover rata-rata bergerak berat elastik ini dapat mengesan perubahan trend dengan berkesan dan menghasilkan isyarat perdagangan dengan mengira dan mengoperasikan crossover dua baris EVWMA. Strategi ini mudah digunakan, tetapi terdapat beberapa risiko dan arah pengoptimuman. Dengan mengoptimumkan mekanisme berhenti rugi, pilihan parameter, dan menggabungkan indikator lain, strategi ini dapat diperkuat, menjadikannya lebih sesuai untuk perdagangan sebenar.
/*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")