Strategi Moving Average Crossover dengan Pola Candlestick Intraday

Penulis:ChaoZhang
Tag:

img

Gambaran umum

Strategi ini menghasilkan sinyal perdagangan berdasarkan crossover rata-rata bergerak 9 hari dan 15 hari, dikombinasikan dengan beberapa pola lilin intraday yang khas. Ini panjang ketika MA cepat melintasi di atas MA lambat dan memenuhi kondisi sudut tertentu dan pola lilin. Ini pendek ketika MA cepat melintasi di bawah MA lambat. Stop loss dan take profit level diatur untuk mengendalikan risiko.

Logika Strategi

Strategi ini terutama memanfaatkan kemampuan mengikuti tren rata-rata bergerak dan karakteristik pola candlestick tertentu.

Analisis Keuntungan

Strategi ini menggabungkan indikator rata-rata bergerak dan pola lilin intraday untuk secara efektif menyaring kebisingan dan membuat sinyal perdagangan lebih dapat diandalkan. Terutama dengan ambang ambang, ini memastikan ada momentum perubahan harga yang cukup sebelum menghasilkan sinyal, menghindari sinyal palsu yang tidak perlu. Juga, stop loss dan take profit level dapat secara otomatis membatasi kerugian maksimum dan penarikan keuntungan. Langkah-langkah ini meningkatkan stabilitas dan profitabilitas.

Sebagai indikator yang mengikuti tren, moving average dapat menangkap tren harga jangka menengah hingga panjang. lilin intraday mencerminkan perbandingan kekuatan peserta pasar jangka pendek. Menggunakannya bersama dapat memperoleh implikasi perdagangan di berbagai kerangka waktu. Strategi ini mengintegrasikan kekuatan dari beberapa indikator dan harus mencapai kinerja yang baik dalam perdagangan aktual.

Analisis Risiko

Risiko utama dari strategi ini meliputi:

  1. risiko pembalikan tren. moving average tidak dapat memberikan peringatan awal pembalikan tren. memegang posisi di sini dapat menyebabkan kerugian besar. risiko ini dapat dikendalikan melalui stop loss yang ketat.

  2. Risiko optimasi parameter. Pasar yang berbeda beradaptasi secara berbeda dengan pengaturan parameter. Menerapkan satu set parameter secara langsung tanpa penyesuaian dapat menyebabkan kerugian. Parameter yang tepat perlu ditemukan melalui backtesting dan perdagangan kertas.

Secara umum, strategi ini dapat menghasilkan beberapa sinyal palsu dan mengejar risiko tinggi/rendah tanpa mempertimbangkan kondisi pasar.

Arahan Optimasi

Aspek berikut dari strategi ini dapat ditingkatkan lebih lanjut:

  1. Tambahkan analisis tren utama, misalnya, konfirmasi saluran jangka menengah/panjang, untuk menghindari perdagangan melawan tren.

  2. Masukkan indikator volume. Misalnya, volume saldo dapat digunakan untuk menghindari shorting harga momentum tinggi atau membeli harga momentum rendah.

  3. Menggabungkan analisis fundamental, memilih saham dengan prospek dan pendapatan yang lebih baik untuk meningkatkan tingkat kemenangan.

  4. Mengoptimalkan parameter rata-rata bergerak. Uji periode panjang yang berbeda, sistem MA tiga atau lima kali lipat untuk fleksibilitas penyesuaian yang lebih besar.

  5. Uji parameter stop loss/take profit. Tetapkan rasio rebate buku order berdasarkan hasil backtest untuk mencapai rasio risiko-manfaat optimal.

Arah optimalisasi di atas harus secara signifikan meningkatkan baik profitabilitas dan stabilitas strategi ini.

Ringkasan


/*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)


Lebih banyak