
Strategi ini menghasilkan isyarat dagangan berdasarkan persilangan purata bergerak 9 hari dan purata bergerak 15 hari dan beberapa bentuk K line dalam sehari yang tipikal. Apabila melalui garis perlahan pada garis cepat dan memenuhi syarat sudut tertentu dan bentuk K line tertentu, lakukan lebih banyak; apabila melalui garis perlahan di bawah garis cepat, kosong.
Apabila purata bergerak jangka pendek ((9 hari) di atas rata-rata bergerak jangka panjang ((15 hari), menunjukkan bahawa harga jangka pendek meningkat lebih kuat, lakukan lebih banyak; apabila purata bergerak jangka pendek di bawah purata bergerak jangka panjang, menunjukkan bahawa harga jangka pendek menurun lebih kuat, kosong. Pada masa yang sama, minta sudut purata bergerak lebih besar daripada 30 darjah, memastikan ada cukup kenaikan atau penurunan.
Strategi ini menggunakan ciri-ciri pengesanan trend rata-rata bergerak dan beberapa bentuk garis K, yang boleh disesuaikan dengan varieti pasaran yang berbeza melalui penyesuaian parameter.
Strategi ini menggabungkan penunjuk rata-rata bergerak dan penghakiman bentuk K-line dalam sehari, yang dapat menyaring sebahagian daripada kebisingan dengan berkesan, menjadikan isyarat perdagangan lebih dipercayai. Terutama, penghakiman penurunan sudut ditambahkan, yang dapat memastikan isyarat hanya dikeluarkan apabila pergerakan harga cukup besar, untuk mengelakkan isyarat palsu yang tidak penting.
Rata-rata bergerak sebagai petunjuk jenis trend, dapat menangkap trend harga jangka panjang dan jangka panjang. Dan bentuk garis K dalam sehari mencerminkan kekuatan peserta pasaran dalam jangka masa pendek. Dengan menggunakan petunjuk perdagangan dalam skala masa yang berbeza.
Risiko yang mungkin ada dalam strategi ini adalah:
Risiko penembusan palsu. Apabila pasaran berada dalam keadaan pengurutan goyah, purata bergerak mungkin berlaku beberapa kali persilangan, yang mana kebanyakan isyarat yang dikeluarkan berdasarkan persilangan adalah isyarat palsu.
Risiko pembalikan trend. Rata-rata bergerak sebagai penunjuk trend, tidak dapat memberi isyarat awal jika trend berbalik. Apabila memegang kedudukan boleh mengalami kerugian besar.
Risiko pengoptimuman parameter. Varieti pasaran yang berbeza mempunyai kesesuaian yang berbeza terhadap tetapan parameter. Penggunaan kombinasi parameter secara langsung tanpa penyesuaian juga boleh membawa kerugian. Ini memerlukan pengesanan balik dan simulasi untuk mencari parameter terbaik.
Secara keseluruhannya, strategi ini mungkin menghasilkan beberapa isyarat palsu dan risiko mengejar kenaikan dan penurunan tanpa kefahaman mengenai keadaan pasaran. Risiko ini dapat dikurangkan dan dioptimumkan lagi dengan menambahkan kefahaman mengenai trend skala besar dan ciri-ciri harga kuantitatif.
Strategi ini boleh dioptimumkan dengan cara berikut:
Menambah penghakiman mengenai trend peringkat besar. Sebagai contoh, memeriksa sama ada garis panjang berada di saluran naik atau turun, dan mengelakkan perdagangan berlawanan.
Menambah analisis indikator kuantiti tenaga. Sebagai contoh, indikator kadar kompas dapat menentukan saluran jual beli, mengelakkan harga saham dengan kadar tinggi atau harga saham dengan kadar rendah.
Gabungan dengan keadaan asas saham. Memilih saham individu yang mempunyai jangkaan pendapatan yang baik dan pertumbuhan prestasi yang stabil untuk berdagang dapat meningkatkan peluang kemenangan.
Mengoptimumkan kombinasi parameter sistem purata bergerak. Anda boleh mencuba purata dengan jangka masa yang berbeza, atau menambah tiga purata, lima purata, dan lain-lain, untuk membina sistem perdagangan yang lebih besar untuk menyesuaikan parameter.
Uji parameter berhenti dan hentian yang berbeza. Sesuai dengan keputusan tinjauan semula, tetapkan pekali pelupusan untuk mendapatkan nisbah risiko dan keuntungan yang terbaik.
Dengan mengoptimumkan beberapa arah di atas, kita boleh menjangkakan bahawa tahap keuntungan dan kestabilan strategi ini akan meningkat dengan ketara.
Secara keseluruhannya, strategi ini menggabungkan kelebihan indikator purata bergerak dan beberapa bentuk garis K dalam sehari, syarat yang lebih ketat semasa menghantar isyarat perdagangan, dapat menyaring banyak bunyi bising, menjadikan kualiti isyarat yang melintasi meningkat dengan ketara. Pada masa yang sama, mengawal kerugian maksimum dan keuntungan yang dicapai dengan menetapkan hentian dan hentian.
Langkah seterusnya adalah untuk meningkatkan lagi kemenangan dan keuntungan strategi melalui pengoptimuman parameter. Menambah lebih banyak petunjuk juga dapat meningkatkan kecergasan sistem perdagangan keseluruhan.
/*backtest
start: 2024-01-29 00:00:00
end: 2024-02-28 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("Moving Average Crossover Strategy with Candlestick Patterns", overlay=true)
// Define input parameters
fast_length = input(9, "Fast MA Length")
slow_length = input(15, "Slow MA Length")
stop_loss_percent = input(0.25, "Stop Loss (%)")
target_percent = input(0.25, "Target (%)")
angle_threshold = input(30, "Angle Threshold (degrees)")
// Calculate moving averages
fast_ma = sma(close, fast_length)
slow_ma = sma(close, slow_length)
// Define candlestick patterns
is_pin_bar() =>
pin_bar = abs(open - close) > 2 * abs(open[1] - close[1])
high_tail = max(open, close) - high > abs(open - close) * 1.5
low_tail = low - min(open, close) > abs(open - close) * 1.5
pin_bar and high_tail and low_tail
is_marubozu() =>
marubozu = abs(open - close) > abs(open[1] - close[1]) * 0.75
no_upper_shadow = high == max(open, close)
no_lower_shadow = low == min(open, close)
marubozu and no_upper_shadow and no_lower_shadow
is_full_body() =>
full_body = abs(open - close) > abs(open[1] - close[1]) * 0.95
full_body
// Plot moving averages
plot(fast_ma, color=color.blue, title="Fast MA")
plot(slow_ma, color=color.red, title="Slow MA")
// Calculate angle of slow moving average
ma_angle = abs(180 * (atan(slow_ma[1] - slow_ma) / 3.14159))
// Generate buy/sell signals based on angle condition and candlestick patterns
buy_signal = crossover(fast_ma, slow_ma) and ma_angle >= angle_threshold and (is_pin_bar() or is_marubozu() or is_full_body())
sell_signal = crossunder(fast_ma, slow_ma)
// Calculate stop-loss and target levels
stop_loss_level = close * (1 - stop_loss_percent / 100)
target_level = close * (1 + target_percent / 100)
// Execute trades based on signals with stop-loss and target
strategy.entry("Buy", strategy.long, when=buy_signal)
strategy.exit("Exit", "Buy", stop=stop_loss_level, limit=target_level)
// Plot buy/sell signals on chart (optional)
plotshape(series=buy_signal, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
plotshape(series=sell_signal, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)
// Plot angle line
hline(angle_threshold, "Angle Threshold", color=color.black, linestyle=hline.style_dashed)