Strategi ini diatur melalui konfigurasi untuk memiliki beberapa kombinasi garis rata-rata cepat dan lambat, dan melakukan lebih banyak ketika semua garis cepat melewati garis lambat; dan bernegosiasi ketika setidaknya satu garis cepat melewati garis lambat di bawah. Strategi ini memanfaatkan keuntungan dari beberapa garis rata-rata untuk membentuk sistem pengambilan keputusan yang lebih kuat.
Komponen dan aturan utama dari strategi ini adalah sebagai berikut:
Garis rata-rata multi-grup: menggunakan berbagai indikator rata-rata seperti SMA, WMA, VWMA.
Buatlah lebih banyak sinyal: Lakukan lebih banyak ketika melewati jalur lambat di semua jalur cepat.
Sinyal imbang: imbang saat melewati garis lambat di bawah garis cepat.
Stop loss: Atur stop loss dengan nilai ATR.
Konfigurasi: dapat mengkonfigurasi secara fleksibel beberapa set parameter rata-rata.
Masuk dengan cara memilih posisi kombinasi multi-rata, dapat secara efektif meningkatkan keandalan sinyal. Beberapa parameter rata-rata dapat dikonfigurasi secara khusus, dan memiliki fleksibilitas.
Strategi ini memiliki beberapa keunggulan dibandingkan dengan strategi single linear:
Kombinasi garis rata-rata memberikan penilaian tren yang lebih komprehensif.
Cara Pemungutan Suara Untuk Menghindari Keributan Perdagangan
Anda dapat mengkonfigurasi parameter rata-rata secara bebas, dan memiliki banyak ruang untuk pengoptimalan.
Dukungan untuk berbagai indikator garis rata-rata, fleksibilitas penggunaan.
Set Stop Loss Points untuk mengontrol kerugian tunggal.
Siklus penggunaan yang lebih panjang lebih efektif, mengurangi getaran kurva.
Perhitungan sederhana dan intuitif, mudah untuk diimplementasikan dan dioperasikan.
Secara keseluruhan, stabilitas dan daya tahan yang lebih baik dibandingkan dengan jalur rata-rata.
Namun, strategi ini juga memiliki beberapa risiko:
Garis rata-rata ganda meningkatkan kompleksitas strategi.
Ada risiko over-optimisasi parameter.
Garis rata-rata pada dasarnya memiliki identifikasi yang tertunda terhadap perubahan tren.
Tidak mempertimbangkan volume transaksi, mungkin ada penyesuaian.
Pengaturan Stop Loss bersifat arbitrer dan dapat menyebabkan posisi kosong yang tidak perlu.
Efeknya berfluktuasi besar dengan perubahan lingkungan pasar.
Perhatikan rasio pengembalian pendapatan untuk menghindari kurva yang terlalu curam.
Parameter yang perlu diperiksa adalah stabilitas dalam beberapa varietas.
Berdasarkan analisis di atas, strategi ini dapat diperkuat dengan:
Parameter garis rata-rata untuk menguji stamina pada berbagai varietas.
Meningkatkan volume atau volatilitas verifikasi.
Optimalkan parameter stop loss.
Setel toleransi penarikan maksimum.
Membangun mekanisme manajemen posisi dinamis.
Evaluasi dampak dari pembelajaran mesin.
Perhatikan konsentrasi maksimum penarikan dan kurva keuntungan.
Strategi iterasi terus menerus untuk mencegah over-optimisasi.
Strategi ini dengan mengkonfigurasi mengatur portofolio multi-rata-rata, membentuk mekanisme keputusan pegangan yang lebih kuat. Namun, strategi apa pun perlu mencegah over-fit, dan melakukan penyesuaian dinamis sesuai dengan lingkungan pasar. Strategi kuantitatif hanya dapat disesuaikan dengan pasar dalam jangka panjang dengan pengujian yang terus dioptimalkan.
/*backtest
start: 2022-09-16 00:00:00
end: 2023-09-22 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © levieux
//@version=5
strategy(title='Configurable Multi MA Crossover Voting System', shorttitle='Configurable Multi MA Crossover Voting System', initial_capital=1000, overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.1)
crossoverConfig= input.string(defval="2x4,3x5,4x6", title="Crossover Config")
source= input.source(high)
maType= input.string("WMA", title="Moving Average Type", options=["WMA","SMA","VWMA"])
atrPeriod= input(14, title="ATR Period")
profitAtr = input(10, title="Profit ATR x")
lossAtr = input(5, title="Loss ATR x")
ma(src,length,type) =>
float ma = switch type
"SMA" => ta.sma(src, length)
"WMA" => ta.wma(src, length)
"VWMA" => ta.vwma(src, length)
crossoverGroups= str.split(crossoverConfig, ",")
crossoverCount= array.size(crossoverGroups)
crossovers= array.new_string(crossoverCount)
positions= array.new_int(crossoverCount, 0)
longVotes= 0
for i= 0 to crossoverCount-1
crossover= str.tostring(array.get(crossoverGroups, i))
crossoverBoundaries= str.split(crossover, "x")
int fastLength= math.round(str.tonumber(array.get(crossoverBoundaries, 0)))
int slowLength= math.round(str.tonumber(array.get(crossoverBoundaries, 1)))
wmaFast= ma(source,fastLength,maType)
wmaSlow= ma(source,slowLength,maType)
if wmaFast>wmaSlow
longVotes:= longVotes + 1
array.set(positions, i, 1)
longCondition= longVotes==crossoverCount and strategy.position_size==0
//profitTicks = profitAtr*ta.atr(atrPeriod)/syminfo.mintick
//lossTicks = lossAtr*ta.atr(atrPeriod)/syminfo.mintick
profitPrice= close+profitAtr*ta.atr(atrPeriod)
lossPrice= close-lossAtr*ta.atr(atrPeriod)
if strategy.position_size>0
profitPrice:= profitPrice[1]
lossPrice:= lossPrice[1]
plot(profitPrice, color=color.green)
plot(lossPrice, color=color.red)
if longCondition and profitPrice>0
strategy.entry("Long", strategy.long)
if longVotes<crossoverCount and strategy.position_size>0 and (high>profitPrice or low<lossPrice)
strategy.close("Long")
longVotes:= 0