Volatilitas rendah Pembelian arah dengan mengambil keuntungan dan stop loss

Penulis:ChaoZhang, Tanggal: 2023-12-18 12:00:07
Tag:

img

Gambaran umum

Strategi ini disebut Low Volatility Directional Buy with Profit Taking and Stop Loss. Strategi ini menggunakan crossover rata-rata bergerak sebagai sinyal beli dan menggabungkan profit taking dan stop loss untuk mengunci keuntungan.

Logika Strategi

Strategi ini menggunakan 3 rata-rata bergerak dengan periode yang berbeda: 50 periode, 100 periode dan 200 periode. Logika beli adalah: ketika MA 50 periode melintasi MA 100 periode dan MA 100 periode melintasi MA 200 periode, pergi panjang.

Ini menandakan terobosan dari rentang volatilitas rendah dan awal tren. kenaikan cepat MA 50 periode mewakili penguatan momentum jangka pendek; MA 100 periode juga muncul menunjukkan kekuatan jangka menengah bergabung untuk menstabilkan tren naik.

Setelah masuk, strategi menggunakan profit taking dan stop loss untuk mengunci keuntungan. Take profit ditetapkan pada 8% dari harga masuk. Stop loss ditetapkan pada 4% dari harga masuk. Dengan take profit lebih tinggi daripada stop loss, itu memastikan strategi tetap menguntungkan secara keseluruhan.

Analisis Keuntungan

Keuntungan dari strategi ini:

  1. Menangkap peluang tren dengan akurat dari volatilitas rendah.
  2. Logika sederhana dan jelas dengan moving average yang mudah dihitung dan backtest.
  3. Pengaturan mengambil keuntungan dan stop loss yang wajar memastikan keuntungan yang stabil.
  4. Parameter yang dapat dikonfigurasi yang fleksibel membuat optimasi mudah.

Analisis Risiko

Ada juga beberapa risiko:

  1. Sinyal kabur yang salah bisa menyebabkan kerugian.
  2. Sulit untuk menghentikan kerugian ketika pasar berbalik.
  3. Pengaturan parameter profit taking dan stop loss yang tidak tepat mempengaruhi profitabilitas.

Solusi:

  1. Tambahkan indikator lain untuk menyaring sinyal dan memastikan validitas breakout.
  2. Memperpendek periode stop loss untuk mengurangi kerugian dari pembalikan.
  3. Uji rasio profit taking dan stop loss yang berbeda untuk menemukan yang optimal.

Arahan Optimasi

Optimasi dapat dilakukan di bidang berikut:

  1. Uji periode rata-rata bergerak yang berbeda untuk menemukan kombinasi terbaik.
  2. Tambahkan volume dll untuk mengkonfirmasi trend breakout.
  3. Secara dinamis menyesuaikan profit taking dan stop loss persentase.
  4. Masukkan pembelajaran mesin dll untuk memprediksi tingkat keberhasilan.
  5. Sesuaikan parameter berdasarkan kondisi pasar dan koin yang berbeda.

Singkatnya, strategi ini memiliki logika yang jelas secara keseluruhan, memperoleh keuntungan berisiko rendah melalui konfigurasi periode rata-rata bergerak dan persentase profit taking/stop loss.


/*backtest
start: 2023-12-10 00:00:00
end: 2023-12-17 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(shorttitle='Low volatility Buy w/ TP & SL (by Coinrule)',title='Low volatility Buy w/ TP & SL', overlay=true, initial_capital = 1000, process_orders_on_close=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100)

//Backtest dates
fromMonth = input(defval = 1,    title = "From Month",      type = input.integer, minval = 1, maxval = 12)
fromDay   = input(defval = 10,    title = "From Day",        type = input.integer, minval = 1, maxval = 31)
fromYear  = input(defval = 2019, title = "From Year",       type = input.integer, minval = 1970)
thruMonth = input(defval = 1,    title = "Thru Month",      type = input.integer, minval = 1, maxval = 12)
thruDay   = input(defval = 1,    title = "Thru Day",        type = input.integer, minval = 1, maxval = 31)
thruYear  = input(defval = 2112, title = "Thru Year",       type = input.integer, minval = 1970)

showDate  = input(defval = true, title = "Show Date Range", type = input.bool)

start     = timestamp(fromYear, fromMonth, fromDay, 00, 00)        // backtest start window
finish    = timestamp(thruYear, thruMonth, thruDay, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false       // create function "within window of time"

//MA inputs and calculations
movingaverage_fast = sma(close, input(50))
movingaverage_slow = sma(close, input(200))
movingaverage_normal= sma(close, input(100))



//Entry 
strategy.entry(id="long", long = true, when = movingaverage_slow > movingaverage_normal and movingaverage_fast > movingaverage_normal)

//Exit
longStopPrice  = strategy.position_avg_price * (1 - 0.04)
longTakeProfit = strategy.position_avg_price * (1 + 0.08)

strategy.close("long", when = close < longStopPrice or close > longTakeProfit and window())

//PLOT

plot(movingaverage_fast, color=color.orange, linewidth=2)
plot(movingaverage_slow, color=color.purple, linewidth=3)
plot(movingaverage_normal, color=color.blue, linewidth=2)


Lebih banyak