Strategi Breakout Rata-rata Bergerak

Penulis:ChaoZhang, Tanggal: 2023-09-26 16:18:37
Tag:

Gambaran umum

Strategi breakout rata-rata bergerak adalah strategi perdagangan jangka pendek yang menggunakan rata-rata bergerak untuk menentukan entri dan keluar.

Logika Strategi

Logika inti bergantung pada dua rata-rata bergerak, garis cepat dan garis lambat, untuk mengukur tren harga.

Kode ini memungkinkan pengguna untuk mengatur periode garis cepat shortPeriod dan periode garis lambat longPeriod melalui parameter input.

Ketika rata-rata bergerak cepat melintasi di atas rata-rata bergerak lambat, itu menandakan terobosan ke atas dan masuk panjang.

Kondisi masuk panjang:

Fast MA crosses above slow MA
Fast MA > Slow MA

Kondisi entri singkat:

Fast MA crosses below slow MA
Fast MA < Slow MA 

Strategi ini juga mencakup pengaturan stop loss, take profit dan ukuran posisi untuk mengendalikan risiko.

Keuntungan

  • Sederhana untuk digunakan, mudah bagi pemula untuk memahami
  • Rata-rata bergerak menyaring beberapa kebisingan
  • Fleksibilitas dalam periode MA fine tuning untuk jangka waktu yang berbeda
  • Stop loss dan take profit yang telah ditentukan sebelumnya

Risiko

  • Rendah terhadap kebocoran palsu dan whipsaws
  • Tidak ideal untuk pasar yang berbelit-belit
  • Tanda keterlambatan, entri mungkin terlambat
  • Tidak dapat menyaring pembalikan tren secara efektif

Manajemen Risiko:

  • Tambahkan filter untuk menghindari sinyal palsu
  • Terapkan strategi ketika tren jelas
  • Mengoptimalkan parameter MA untuk entri yang lebih baik
  • Memungkinkan berhenti yang lebih luas untuk menghindari berhenti prematur

Peluang Peningkatan

  • Mengoptimalkan parameter MA untuk menemukan kombinasi terbaik
  • Tambahkan indikator tambahan seperti saluran BOLL atau KD
  • Meningkatkan aturan keluar untuk memaksimalkan keuntungan
  • Uji ketahanan pada instrumen yang berbeda
  • Mengintegrasikan pembelajaran mesin menggunakan data besar

Kesimpulan

Strategi breakout rata-rata bergerak mudah dipahami, menghasilkan sinyal dengan MAs cepat dan lambat. tetapi juga memiliki beberapa kekurangan seperti pemutusan palsu dan masalah keterlambatan. dengan penyesuaian parameter, filter tambahan dan peningkatan lainnya, strategi dapat ditingkatkan. secara keseluruhan, ini berfungsi sebagai langkah pertama yang ramah pemula ke dalam perdagangan algoritmik, dan membuka jalan bagi strategi yang lebih maju setelah memahami konsep inti.


/*backtest
start: 2023-08-26 00:00:00
end: 2023-09-25 00:00:00
period: 1h
basePeriod: 15m
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/
// © YohanNaftali

//@version=5

///////////////////////////////////////////////////////////////////////////////
// Heikin Ashi Candle Startegy
// ver 2021.12.29
// © YohanNaftali
// This script composed by Yohan Naftali for educational purpose only 
// Reader who will use this signal must do own research
///////////////////////////////////////////////////////////////////////////////
strategy(
     title = 'Heikin Ashi Candle Startegy Long',  
     shorttitle = 'HA Strategy Long',  
     format = format.price,
     precision = 0,
     overlay = true)

// Input
validationPeriod = input.int( 
     defval = 3, 
     title = 'Validation Period', 
     group = 'Candle')

qtyOrder = input.float(
     defval = 1.0,
     title = 'Qty', 
     group = 'Order')

maxActive = input.float(
     defval = 1.0,
     title = 'Maximum Active Open Position', 
     group = 'Order')

// Long Strategy
tpLong = input.float(
     defval = 1,
     title = "Take Profit (%)",
     minval = 0.0, 
     step = 0.1, 
     group = "Long") * 0.01

slLong = input.float(
     defval = 25,
     title = "Stop Loss (%)", 
     minval=0.0, 
     step=0.1,
     group="Long") * 0.01

trailingStopLong = input.float(
     defval = 0.2,
     title = "Trailing Stop (%)",
     minval = 0.0, 
     step = 0.1,
     group = 'Long') * 0.01

// Calculation
haTicker = ticker.heikinashi(syminfo.tickerid)
haClose = request.security(haTicker, timeframe.period, close)
haOpen = request.security(haTicker, timeframe.period, open)

// Long
limitLong = tpLong > 0.0 ? strategy.position_avg_price * (1 + tpLong) : na
stopLong = slLong > 0.0 ? strategy.position_avg_price * (1 - slLong) : na
float trailLong = 0.0
trailLong := if strategy.position_size > 0
    trailClose = close * (1 - trailLong)
    math.max(trailClose, trailLong[1])
else
    0

isGreen = true
for i = 0 to validationPeriod-1
    isGreen := isGreen and haClose[i] > haOpen[i]        
isLong = isGreen and haClose[validationPeriod] < haOpen[validationPeriod]



plot(
     limitLong,
     title = 'Limit', 
     color = color.rgb(0, 0, 255, 0), 
     style = plot.style_stepline,
     linewidth = 1)

plot(
     trailLong,
     title = 'Trailing', 
     color = color.rgb(255, 255, 0, 0), 
     style = plot.style_stepline,
     linewidth = 1)

plot(
     stopLong,
     title = 'Stop', 
     style = plot.style_stepline,
     color = color.rgb(255, 0, 0, 0), 
     linewidth = 1)

// plotshape(
//      isLong, 
//      title = 'Entry', 
//      style = shape.arrowup, 
//      location = location.belowbar, 
//      offset = 1, 
//      color = color.new(color.green, 0), 
//      text = 'Long Entry',
//      size = size.small)

// Strategy
strategy.risk.max_position_size(maxActive)
strategy.risk.allow_entry_in(strategy.direction.long)

strategy.entry(
     id = "Long", 
     direction = strategy.long, 
     qty = qtyOrder,  
     when = isLong,       
     alert_message = "LN")
if (strategy.position_size > 0)
    strategy.exit(
         id = "Long Exit",
         from_entry = "Long",
         limit = limitLong,
         stop = stopLong,
         trail_price = trailLong,
         alert_message = "LX")      

Lebih banyak