Moving Average Crossover Trend Mengikuti Strategi

Penulis:ChaoZhang, Tanggal: 2024-02-05 14:12:27
Tag:

img

Gambaran umum

Strategi Moving Average Crossover Trend Following adalah strategi perdagangan kuantitatif yang melacak tren pasar. Strategi ini menghasilkan sinyal perdagangan dengan menghitung rata-rata bergerak cepat dan lambat dan menangkap titik balik dalam tren pasar ketika crossover terjadi.

Logika Strategi

Prinsip inti dari strategi ini adalah menilai tren pasar menggunakan rata-rata bergerak eksponensial (EMA) dengan parameter yang berbeda. Strategi mendefinisikan EMA cepat dan EMA lambat. Ketika EMA cepat melintasi di atas EMA lambat, itu menunjukkan pembalikan tren bullish di pasar. Ketika EMA cepat melintasi di bawah EMA lambat, itu menunjukkan pembalikan tren bearish.

Pada saat naik, strategi akan membuka posisi panjang. Pada saat turun, strategi akan membuka posisi pendek. Strategi akan mempertahankan posisinya sampai take profit atau stop loss dipicu, atau crossover ke arah yang berlawanan terjadi lagi.

Analisis Keuntungan

Strategi ini memiliki keuntungan berikut:

  1. Logika strategi sederhana dan jelas, mudah dimengerti dan diterapkan, cocok untuk pemula;
  2. Menggunakan EMA untuk meringankan harga dapat secara efektif menyaring kebisingan pasar dan mengidentifikasi tren;
  3. Parameter dapat disesuaikan secara fleksibel untuk beradaptasi dengan pasar dengan siklus yang berbeda;
  4. Strategi dapat diperluas ke versi multi-frame waktu untuk meningkatkan stabilitas.

Analisis Risiko

Strategi ini juga memiliki beberapa risiko:

  1. Di pasar-pasar yang berbeda-beda, beberapa stop loss dapat terjadi, yang berdampak pada profitabilitas;
  2. Hal ini tidak dapat secara efektif mengidentifikasi jenis tren (bullish atau bearish), yang dapat menyebabkan kerugian besar;
  3. Pengaturan parameter EMA yang tidak benar dapat menyebabkan over-trading atau penundaan deteksi.

Untuk mengurangi risiko, pertimbangkan untuk menggabungkan indikator lain untuk menentukan jenis tren, atau menetapkan rasio stop loss yang lebih luas.

Arahan Optimasi

Strategi ini juga dapat dioptimalkan dalam aspek berikut:

  1. Meningkatkan penilaian jenis tren untuk menghindari membuka posisi melawan tren;
  2. Tambahkan penilaian multi-frame untuk meningkatkan kualitas sinyal;
  3. Secara dinamis menyesuaikan stop loss dan mengambil rasio keuntungan untuk mengoptimalkan titik keluar;
  4. Gabungkan indikator lain untuk menyaring perdagangan yang salah.

Kesimpulan

Singkatnya, Strategi Mengikuti Tren Moving Average Crossover adalah strategi perdagangan tren yang sederhana dan praktis. Gagasan inti dari strategi ini jelas dan mudah diterapkan, dan juga ada ruang untuk optimasi. Dengan menyesuaikan parameter, menambahkan analisis multi-frame waktu, stop dinamis dll, stabilitas dan profitabilitas strategi dapat terus ditingkatkan.


/*backtest
start: 2024-01-28 00:00:00
end: 2024-02-04 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy('Zhukov trade', overlay=true, calc_on_every_tick=true, currency=currency.USD)

// INPUT:

// Options to enter fast and slow Exponential Moving Average (EMA) values
emaFast = input.int(title='Fast EMA', defval=10, minval=1, maxval=9999)
emaSlow = input.int(title='Slow EMA', defval=20, minval=1, maxval=9999)

// Option to select trade directions
tradeDirection = input.string(title='Trade Direction', options=['Long', 'Short', 'Both'], defval='Both')

// Options that configure the backtest date range
startDate = input(title='Start Date', defval=timestamp('01 Jan 2023 00:00'))
endDate = input(title='End Date', defval=timestamp('31 Dec 2030 23:59'))

// Set take profit and stop loss percentages
take_profit_percent = input(1.0, title ="Take Profit Percent") / 100.0
stop_loss_percent = input(1.0, title ="Stop Loss Percent") / 100.0

// CALCULATIONS:

// Use the built-in function to calculate two EMA lines
fastEMA = ta.ema(close, emaFast)
slowEMA = ta.ema(close, emaSlow)
emapos = ta.ema(close, 200)

// PLOT:

// Draw the EMA lines on the chart
plot(series=fastEMA, color=color.new(color.orange, 0), linewidth=2)
plot(series=slowEMA, color=color.new(color.blue, 0), linewidth=2)
plot(series=emapos, color=color.new(color.red, 0), linewidth=2)

// CONDITIONS:

// Check if the close time of the current bar falls inside the date range
inDateRange = true

// Translate input into trading conditions
longOK = tradeDirection == 'Long' or tradeDirection == 'Both'
shortOK = tradeDirection == 'Short' or tradeDirection == 'Both'

// Decide if we should go long or short using the built-in functions
longCondition = ta.crossover(fastEMA, slowEMA) and inDateRange
shortCondition = ta.crossunder(fastEMA, slowEMA) and inDateRange

// ORDERS:

// Submit entry (or reverse) orders
if longCondition and longOK
    strategy.entry(id='long', direction=strategy.long)

if shortCondition and shortOK
    strategy.entry(id='short', direction=strategy.short)

// Exit orders
if strategy.position_size > 0 and longOK
    strategy.exit(id='exit long', from_entry='long', limit=strategy.position_avg_price * (1 + take_profit_percent), stop=strategy.position_avg_price * (1 - stop_loss_percent))

if strategy.position_size < 0 and shortOK
    strategy.exit(id='exit short', from_entry='short', limit=strategy.position_avg_price * (1 - take_profit_percent), stop=strategy.position_avg_price * (1 + stop_loss_percent))


Lebih banyak