
AWMA Cross Stacking Strategy adalah satu sistem pemantauan trend yang berasaskan cross dan stacking hubungan WMA berkala. Strategi ini menggabungkan 6 WMA jangka pendek dan 6 WMA jangka panjang dengan bijak untuk menentukan arah dan kekuatan trend pasaran dengan melihat hubungan antara mereka.
Prinsip-prinsip utama strategi ini adalah berdasarkan analisis bertingkat dan mekanisme pengesahan berganda pada purata bergerak bertimbangan:
Pengiraan WMA pelbagai kitaran:
Analisis parameter utama:
Syarat kemasukan:
Syarat keluar:
Strategi ini menggunakan cara “penyelidikan nilai maksimum + nilai purata” untuk menangkap pembentukan trend tepat pada masanya, tetapi juga untuk memberikan isyarat keluar yang lancar apabila trend melemah, mengurangkan gangguan isyarat palsu.
Analisis yang mendalam terhadap pelaksanaan kod strategi ini dapat meringkaskan beberapa kelebihan yang ketara:
Mekanisme pengesahan bergandaStrategi yang memerlukan dua syarat untuk melakukan perdagangan, iaitu memenuhi isyarat silang dan pengesahan tumpukan, mengurangkan risiko penembusan palsu. Khususnya, syarat tumpukan ((bullAlign/bearAlign) yang memerlukan semua indikator jangka pendek berada di sisi yang sama dengan semua indikator jangka panjang, adalah pengesahan trend yang sangat kuat.
Sangat boleh menyesuaikan diriDengan menggunakan WMA dari pelbagai kitaran yang berbeza, strategi dapat menyesuaikan diri dengan keadaan pasaran dan turun naik harga yang berbeza. Kumpulan jangka pendek menangkap momentum serta-merta, sementara kumpulan jangka panjang mengesahkan arah trend keseluruhan.
Peraturan masuk dan keluar yang jelasStrategi ini menyediakan isyarat masuk dan keluar yang objektif berdasarkan model matematik, mengurangkan gangguan emosi yang disebabkan oleh penilaian subjektif.
Mekanisme berlepas serentakPendaftaran adalah berdasarkan salib dan tumpukan yang melampau, dan keluar berdasarkan salib rata-rata, reka bentuk ini membolehkan strategi untuk memegang kedudukan yang lebih lama dalam trend yang kuat, dan untuk keluar tepat pada masanya apabila trend lemah.
Sistem pemberitahuan yang baikStrategi: Mekanisme amaran berasaskan format JSON yang terintegrasi, yang boleh disambungkan ke sistem bot luaran, membolehkan perdagangan automatik dan pemantauan jauh.
Sokongan visualStrategi: Merangka semua 12 garis WMA pada carta, membolehkan peniaga melihat struktur pasaran dan isyarat yang berpotensi secara intuitif.
Walaupun strategi ini direka dengan baik, terdapat beberapa risiko dan cabaran yang berpotensi:
Kepekaan ParameterStrategi menggunakan 12 parameter kitaran WMA yang berbeza, pilihan parameter ini boleh memberi kesan besar terhadap prestasi strategi. Perpaduan parameter yang berbeza mungkin diperlukan untuk mendapatkan kesan terbaik dalam pasaran atau jangka masa yang berbeza.
Perkembangan pasaran yang burukSebagai strategi trend-following, ia mungkin menghasilkan isyarat palsu yang kerap dan “kesan whipsaw” dalam pasaran yang bergolak atau bergolak yang tinggi, yang menyebabkan kerugian berterusan.
Masalah ketinggalan zamanSemua sistem berdasarkan purata bergerak mempunyai ketinggalan tertentu. Walaupun WMA yang lebih pendek digunakan untuk mengurangkan masalah ini, ia masih mungkin terlepas titik masuk atau keluar yang terbaik dalam pasaran yang berbalik dengan cepat.
Kompleksiti pengiraanStrategi ini memerlukan pengiraan dan perbandingan pelbagai purata bergerak, yang boleh menyebabkan masalah prestasi pada platform perdagangan tertentu, terutamanya dalam jangka masa rendah atau persekitaran perdagangan frekuensi tinggi.
Isyarat sesakDalam keadaan pasaran tertentu, WMA jangka pendek dan jangka panjang mungkin sering bercampur, menyebabkan terlalu banyak isyarat perdagangan, meningkatkan kos perdagangan dan mungkin menyebabkan perdagangan berlebihan.
Berdasarkan analisis di atas, strategi ini boleh dioptimumkan dalam beberapa aspek:
Pengaturan parameter dinamik:
Penapisan persekitaran pasaran:
Pengurusan risiko yang lebih baik:
Kualiti isyarat meningkat:
Kerangka Pemantauan dan Pengoptimuman:
Strategi penumpukan silang rata-rata bergerak bertimbangan sendiri adalah sistem pengesanan trend yang direka dengan baik untuk mengenal pasti trend yang kuat dan memberikan isyarat perdagangan yang jelas melalui hubungan silang dan penumpukan pelbagai WMA. Kelebihan utama strategi ini adalah mekanisme pengesahan ganda dan reka bentuk asynchronous yang dapat menangkap trend yang berterusan dengan berkesan dan mengurangkan risiko isyarat palsu.
Walau bagaimanapun, seperti mana-mana strategi analisis teknikal, ia juga menghadapi cabaran seperti prestasi pasaran yang tidak baik dan sensitiviti parameter. Prestasi strategi dijangka meningkat lagi dengan memperkenalkan penyesuaian parameter dinamik, penapisan keadaan pasaran dan mekanisme pengurusan risiko yang dipertingkatkan.
Adalah penting bagi peniaga untuk memahami prinsip dan batasan strategi ini, disarankan untuk melakukan pengesanan dan simulasi perdagangan yang mencukupi sebelum penerapan di pasaran, dan menyesuaikan parameter mengikut jenis perdagangan dan keadaan pasaran tertentu. Pada masa yang sama, strategi ini digunakan sebagai sebahagian daripada sistem perdagangan yang lebih luas, digabungkan dengan analisis asas dan prinsip pengurusan risiko, untuk mencapai kesan perdagangan yang stabil dalam jangka panjang.
/*backtest
start: 2024-06-23 00:00:00
end: 2025-06-21 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=6
strategy("AWMA Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10, calc_on_every_tick=true)
// Inputs
_Period1 = input.int(3, 'WMA1 Period')
_Period2 = input.int(5, 'WMA2 Period')
_Period3 = input.int(8, 'WMA3 Period')
_Period4 = input.int(10, 'WMA4 Period')
_Period5 = input.int(12, 'WMA5 Period')
_Period6 = input.int(15, 'WMA6 Period')
_Period7 = input.int(30, 'WMA7 Period')
_Period8 = input.int(35, 'WMA8 Period')
_Period9 = input.int(40, 'WMA9 Period')
_Period10 = input.int(45, 'WMA10 Period')
_Period11 = input.int(50, 'WMA11 Period')
_Period12 = input.int(60, 'WMA12 Period')
// Calculate WMA
wma1 = ta.wma(close, _Period1)
wma2 = ta.wma(close, _Period2)
wma3 = ta.wma(close, _Period3)
wma4 = ta.wma(close, _Period4)
wma5 = ta.wma(close, _Period5)
wma6 = ta.wma(close, _Period6)
wma7 = ta.wma(close, _Period7)
wma8 = ta.wma(close, _Period8)
wma9 = ta.wma(close, _Period9)
wma10 = ta.wma(close, _Period10)
wma11 = ta.wma(close, _Period11)
wma12 = ta.wma(close, _Period12)
// Max/Min/Average of short and long WMA groups
short_max = math.max(math.max(math.max(math.max(math.max(wma1, wma2), wma3), wma4), wma5), wma6)
short_min = math.min(math.min(math.min(math.min(math.min(wma1, wma2), wma3), wma4), wma5), wma6)
long_max = math.max(math.max(math.max(math.max(math.max(wma7, wma8), wma9), wma10), wma11), wma12)
long_min = math.min(math.min(math.min(math.min(math.min(wma7, wma8), wma9), wma10), wma11), wma12)
avg_short = (wma1 + wma2 + wma3 + wma4 + wma5 + wma6) / 6
avg_long = (wma7 + wma8 + wma9 + wma10 + wma11 + wma12) / 6
// Cross events and trend alignment
bullCross = ta.crossover(short_max, long_min)
bearCross = ta.crossunder(short_max, long_min)
bullAlign = short_min > long_max
bearAlign = short_max < long_min
// State flags
var bool readyLong = false
var bool readyShort = false
if bullCross
readyLong := true
if bearCross
readyShort := true
// Message variables
sym = syminfo.ticker
tf = timeframe.period
price = str.tostring(close)
// Entry and Alerts
if barstate.isconfirmed
if readyLong and bullAlign
strategy.entry("Long", strategy.long, comment="[AWMA] Long Entry")
readyLong := false
if readyShort and bearAlign
strategy.entry("Short", strategy.short, comment="[AWMA] Short Entry")
readyShort := false
// Exit conditions: Avg WMA cross
if ta.crossunder(avg_short, avg_long)
strategy.close("Long", comment="[AWMA] Close Long")
alert('{"text":"Long position closed\nTicker: ' + sym + '\nTimeframe: ' + tf + '\nAvg Short WMA: ' + str.tostring(avg_short) + '\nAvg Long WMA: ' + str.tostring(avg_long) + '\nClose: ' + price + '"}', alert.freq_once_per_bar_close)
if ta.crossover(avg_short, avg_long)
strategy.close("Short", comment="[AWMA] Close Short")
alert('{"text":"Short position closed\nTicker: ' + sym + '\nTimeframe: ' + tf + '\nAvg Short WMA: ' + str.tostring(avg_short) + '\nAvg Long WMA: ' + str.tostring(avg_long) + '\nClose: ' + price + '"}', alert.freq_once_per_bar_close)
// Plotting
plot(wma1, color=color.new(#4fc3d2, 0), title='Short WMA 1')
plot(wma2, color=color.new(#4fc3d2, 0), title='Short WMA 2')
plot(wma3, color=color.new(#4fc3d2, 0), title='Short WMA 3')
plot(wma4, color=color.new(#4fc3d2, 0), title='Short WMA 4')
plot(wma5, color=color.new(#4fc3d2, 0), title='Short WMA 5')
plot(wma6, color=color.new(#4fc3d2, 0), title='Short WMA 6')
plot(wma7, color=color.new(#fe0d5f, 0), title='Long WMA 1')
plot(wma8, color=color.new(#fe0d5f, 0), title='Long WMA 2')
plot(wma9, color=color.new(#fe0d5f, 0), title='Long WMA 3')
plot(wma10, color=color.new(#fe0d5f, 0), title='Long WMA 4')
plot(wma11, color=color.new(#fe0d5f, 0), title='Long WMA 5')
plot(wma12, color=color.new(#fe0d5f, 0), title='Long WMA 6')
// Uncomment if you want to show the averages
// plot(avg_short, color=color.new(#00FF00, 0), title='Avg Short WMA')
// plot(avg_long, color=color.new(#FF0000, 0), title='Avg Long WMA')