Strategi Breakout Rata-rata Bergerak

Penulis:ChaoZhang, Tanggal: 2023-11-28 13:50:49
Tag:

img

Gambaran umum

Ini adalah strategi trading breakout yang didasarkan pada moving average. Ini menghitung harga rata-rata selama periode tertentu sebagai moving average. Ketika harga menembus moving average, sinyal perdagangan dihasilkan.

Logika Strategi

Strategi ini terutama didasarkan pada indikator moving average. Ini menggunakan fungsi sma untuk menghitung harga penutupan rata-rata selama periode untuk mendapatkan moving average. Ketika harga penutupan terbaru menembus moving average ke atas, sinyal beli dihasilkan. Ketika harga penutupan terbaru menembus moving average ke bawah, sinyal jual dihasilkan.

Secara khusus, ia mendefinisikan sumber (harga penutupan baru-baru ini) dan panjang rata-rata bergerak dalam strategi untuk mendapatkan urutan data rata-rata bergerak. Kemudian ia menetapkan dua kondisi: membuat pesanan panjang ketika harga melintasi di atas rata-rata bergerak; membuat pesanan pendek ketika harga melintasi di bawah rata-rata bergerak. Setelah membuat pesanan, ia juga mengatur profit taking dan stop loss: ia menutup sebagian posisi ketika pesanan mencapai rasio keuntungan yang ditetapkan, dan menutup seluruh posisi ketika pesanan mencapai harga take profit atau stop loss yang telah ditetapkan sebelumnya.

Analisis Keuntungan

Ini adalah tren yang sederhana dan praktis mengikuti strategi.

  1. Logika yang jelas dan mudah dipahami dan menyesuaikan parameter.
  2. Rata-rata bergerak adalah indikator teknis yang umum digunakan dan dapat diandalkan yang dapat menyaring kebisingan pasar dan mengidentifikasi tren.
  3. Menetapkan profit taking dan stop loss pada saat yang sama dapat mengunci beberapa keuntungan dan mengendalikan risiko.
  4. Ini bisa berjalan dengan parameter sederhana saja, cocok untuk quant entry level.

Analisis Risiko

Meskipun strategi ini memiliki banyak keuntungan, masih ada beberapa risiko:

  1. Rata-rata bergerak cenderung tertinggal dan mungkin melewatkan pembalikan jangka pendek.
  2. Ini tidak mempertimbangkan lingkungan pasar secara keseluruhan dan rentan untuk terjebak.
  3. Tidak ada optimasi parameter dapat mempengaruhi kinerja strategi.
  4. Ini mungkin memiliki beberapa sinyal palsu karena tidak ada indikator lain yang digunakan untuk penyaringan.

Untuk mengendalikan risiko ini, kita dapat mengoptimalkan dengan menggabungkan indikator lain untuk penyaringan, memperkenalkan penilaian tren pasar jangka pendek, atau menggunakan metode pembelajaran mesin untuk menemukan kombinasi parameter yang optimal.

Arahan Optimasi

Strategi dapat dioptimalkan dalam aspek berikut:

  1. Tambahkan indikator teknis lainnya untuk penilaian untuk membangun sistem perdagangan dan meningkatkan tingkat kemenangan.

  2. Tambahkan mekanisme stop loss. Gunakan trailing stop loss atau stop loss berbasis waktu untuk mengunci keuntungan dan menghindari kerugian yang lebih besar.

  3. Melakukan optimasi parameter. Mengubah parameter periode rata-rata bergerak untuk menemukan kombinasi terbaik. Berbagai jenis rata-rata bergerak juga dapat diuji.

  4. Menggunakan algoritma seperti hutan acak dan LSTM dikombinasikan dengan beberapa faktor untuk menentukan arah tren.

  5. Mengoptimalkan masuk dan keluar logika. Atur kondisi penyaringan tren untuk menghindari perdagangan melawan tren di dekat akhir. Pertimbangkan untuk menggunakan logika keluar bertahap.

Ringkasan

Secara keseluruhan, strategi breakout rata-rata bergerak ini sangat cocok sebagai strategi perdagangan kuantum pemula. Ini memiliki logika sederhana, mudah dimengerti dan dioperasikan, dengan beberapa efek praktis. Pada saat yang sama, ini meninggalkan banyak ruang untuk pengujian dan pengoptimalan lebih lanjut.


/*backtest
start: 2023-11-20 00:00:00
end: 2023-11-22 08:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//  |-- Initialize Strategy Parameters:
strategy( 
     // |-- Strategy Title.
     title='[Tutorial][RS]Working with orders', 
     // |-- if shorttitle is specified, it will overwrite the name on the chart window.
     shorttitle='WwO', 
     // |-- if true it overlays current chart window, otherwise it creates a drawer to display plotting outputs.
     overlay=true, 
     // |-- Strategy unit type for default quantity, possible arguments: (strategy.cash, strategy.fixed, strategy.percent_of_equity)
     default_qty_type=strategy.cash, 
     // |-- Value to use for default trade size
     default_qty_value=1000, 
     // |-- Default Account size 
     initial_capital=100000, 
     // |-- Account Currency parameter
     currency=currency.USD
     )

//  |-- Strategy Profit/loss parameters:
profit = input(defval=5000, title='Take Profit')
loss = input(defval=5000, title='Stop Loss')
ratio = input(defval=2.0, title='Ratio at wich to take out a percentage off the table (take profit / ratio).')
percent = input(defval=50.0, title='Percentage of position to take profit.')
//  |-- Signal Parameters:
//  |
//  |-- Moving Average input source and length parameters.
src = input(defval=close)
length = input(defval=100)
//  |-- Moving Average Data series.
ma = sma(src, length)

//  |-- Condition for triggering a buy(long) order(trade).
if crossover(src, ma)
    //  |-- Create the order.
    strategy.order(id='Buy', long=true)
    //  |-- Issue a exit order to close a percentage of the trade when a specified ratio(take profit / ratio) is reached.
    strategy.exit(id='Buy Half Exit', from_entry='Buy', qty_percent=percent, profit=profit/ratio)
    //  |-- Issue a exit order to close the full position, when take profit or stop loss's are reached.
    strategy.exit(id='Buy Full Exit', from_entry='Buy', qty_percent=100, profit=profit, loss=loss)
if crossunder(src, ma)
    //  |-- Create the order.
    strategy.order(id='Sell', long=false)
    //  |-- Issue a exit order to close a percentage of the trade when a specified ratio(take profit / ratio) is reached.
    strategy.exit(id='Sell Half Exit', from_entry='Sell', qty_percent=percent, profit=profit/ratio)
    //  |-- Issue a exit order to close the full position, when take profit or stop loss's are reached.
    strategy.exit(id='Sell Full Exit', from_entry='Sell Half Exit', qty_percent=100, profit=profit, loss=loss)

//  |-- Output Functions.
plot(series=ma, title='MA', color=black)


Lebih banyak