Strategi stop loss dua tahap


Tanggal Pembuatan: 2023-10-25 18:11:30 Akhirnya memodifikasi: 2023-10-25 18:11:30
menyalin: 0 Jumlah klik: 729
1
fokus pada
1617
Pengikut

Strategi stop loss dua tahap

Ringkasan

Gagasan utama dari strategi ini adalah untuk mengatur dua stop loss, dan ketika stop loss pertama dipicu, stop loss akan dipindahkan ke harga masuk, untuk mencegah stop loss yang terhalang.

Prinsip Strategi

Strategi ini didasarkan pada Bollinger Bands dan Stochastic Indicator Entry. Berbelanjalah ketika harga melampaui Bollinger Bands dan berbelanjalah ketika Stochastic Indicator menunjukkan oversold.

Secara khusus, logika masuk dari strategi ini adalah:

  1. Penutupan lebih besar ketika harga ditutup di bawah Brin dan Stochastic K di bawah garis D

  2. Ketika harga penutupan lebih tinggi dari Brin berbaris, dan Stochastic K di garis D melewati garis kosong

Strategi ini menetapkan dua titik tolak, titik tolak pertama ditetapkan pada 200 dan titik tolak kedua ditetapkan pada 500.

Ketika stop loss pertama dalam pergerakan harga dipicu, strategi ini akan memindahkan stop loss ke harga masuk. Ini dapat mengunci keuntungan pada tahap pertama, sekaligus mencegah stop loss dari pergerakan harga.

Ketika stop loss kedua dipicu atau stop loss dipicu, strategi ini akan benar-benar kosong.

Keunggulan Strategis

Keuntungan terbesar dari strategi stop loss dua tahap ini adalah bahwa Anda dapat mengunci keuntungan dan mencegah stop loss di tepi fluktuasi harga. Dengan memindahkan titik stop loss ke harga masuk, Anda dapat mengurangi kemungkinan stop loss di tepi, melindungi keuntungan.

Keuntungan lain adalah bahwa strategi ini menggunakan kombinasi strategi Bollinger Bands dan Stochastic Indicators untuk menentukan kisaran pergerakan harga, yang saling melengkapi dan meningkatkan akurasi penarikan.

Risiko Strategis

Risiko utama dari strategi ini adalah bahwa kedua indikator Brin dan Stochastic dapat menghasilkan sinyal yang salah. Jika bandwidth Brin dihitung dengan salah, akan menyebabkan waktu masuk yang salah atau menghasilkan sinyal yang salah. Jika indikator Stochastic menghasilkan false breakout, juga akan menyebabkan masuk yang salah.

Selain itu, ada risiko bahwa stop loss yang bergerak ke harga masuk akan terbalik lagi. Jika terjadi pembalikan V, stop loss mungkin akan dipicu untuk kedua kalinya.

Untuk mengurangi risiko ini, Anda dapat menyesuaikan parameter Brin, mengoptimalkan kombinasi parameter indikator Stochastic, dan meningkatkan interval titik henti dengan tepat.

Arah optimasi strategi

Strategi stop loss dua tahap ini dapat dioptimalkan lebih lanjut:

  1. Anda dapat menguji berbagai kombinasi parameter, mengoptimalkan parameter Brin dan Stochastic, dan menemukan kombinasi parameter yang optimal.

  2. Anda dapat menguji pengaturan stop loss yang berbeda, mengoptimalkan ukuran stop loss, dan menemukan konfigurasi optimal.

  3. Indikator lain, seperti moving average, dapat ditambahkan untuk membentuk strategi kombinasi multi-indikator dan meningkatkan akurasi masuk.

  4. Logika pergerakan stop loss yang berbeda dapat dipelajari, misalnya bergerak di luar interval tertentu, bukan harga masuk.

  5. Anda dapat meningkatkan jumlah gerakan titik stop loss, dan mengatur tiga atau lebih langkah stop loss.

Meringkaskan

Strategi ini menggunakan indikator Brin Belt dan indikator Stochastic untuk menentukan waktu masuk, mengatur dua titik berhenti, dan setelah titik berhenti pertama tercapai, pindah titik berhenti ke harga masuk, membentuk strategi stop loss dua tahap. Strategi ini dapat secara efektif mengunci keuntungan dan mencegah stop loss di tepi. Keunggulan strategi menonjol, tetapi ada juga ruang untuk perbaikan tertentu, strategi ini dapat lebih disempurnakan melalui pengoptimalan parameter, kombinasi multi-indikator, penyesuaian logika titik berhenti, dll.

Kode Sumber Strategi
/*backtest
start: 2022-10-18 00:00:00
end: 2023-10-24 00:00:00
period: 1d
basePeriod: 1h
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/
// © fpsd4ve

//@version=5

// Add Bollinger Bands indicator (close, 20, 2) manually to visualise trading conditions
strategy("2xTP, SL to entry", 
     overlay=false,
     pyramiding=0,
     calc_on_every_tick=false,
     default_qty_type=strategy.percent_of_equity,
     default_qty_value=25,
     initial_capital=1000,
     commission_type=strategy.commission.percent,
     commission_value=0.01
     )

// PARAMETERS
// Assumes quote currency is FIAT as with BTC/USDT pair
tp1=input.float(200, title="Take Profit 1")
tp2=input.float(500, title="Take Profit 2")
sl=input.float(200, title="Stop Loss")
stOBOS = input.bool(true, title="Use Stochastic overbought/oversold threshold")

// Colors
colorRed = #FF2052
colorGreen = #66FF00


// FUNCTIONS
// Stochastic
f_stochastic() =>
    stoch = ta.stoch(close, high, low, 14)
    stoch_K = ta.sma(stoch, 3)
    stoch_D = ta.sma(stoch_K, 3)
    stRD = ta.crossunder(stoch_K, stoch_D)
    stGD = ta.crossover(stoch_K, stoch_D)
    [stoch_K, stoch_D, stRD, stGD]


// VARIABLES
[bbMiddle, bbUpper, bbLower] = ta.bb(close, 20, 2)
[stoch_K, stoch_D, stRD, stGD] = f_stochastic()


// ORDERS
// Active Orders
// Check if strategy has open positions
inLong = strategy.position_size > 0
inShort = strategy.position_size < 0
// Check if strategy reduced position size in last bar
longClose = strategy.position_size < strategy.position_size[1]
shortClose = strategy.position_size > strategy.position_size[1]

// Entry Conditions
// Enter long when during last candle these conditions are true:
// Candle high is greater than upper Bollinger Band
// Stochastic K line crosses under D line and is oversold
longCondition = stOBOS ?
     low[1] < bbLower[1] and stGD[1] and stoch_K[1] < 25 :
     low[1] < bbLower[1] and stGD[1]

// Enter short when during last candle these conditions are true:
// Candle low is lower than lower Bollinger Band
// Stochastic K line crosses over D line and is overbought
shortCondition = stOBOS ?
     high[1] > bbUpper[1] and stRD[1] and stoch_K[1] > 75 :
     high[1] > bbUpper[1] and stRD[1]

// Exit Conditions
// Calculate Take Profit 
longTP1 = strategy.position_avg_price + tp1
longTP2 = strategy.position_avg_price + tp2
shortTP1 = strategy.position_avg_price - tp1
shortTP2 = strategy.position_avg_price - tp2

// Calculate Stop Loss
// Initialise variables
var float longSL = 0.0
var float shortSL = 0.0

// When not in position, set stop loss using close price which is the price used during backtesting
// When in a position, check to see if the position was reduced on the last bar
// If it was, set stop loss to position entry price. Otherwise, maintain last stop loss value
longSL := if inLong and ta.barssince(longClose) < ta.barssince(longCondition)
    strategy.position_avg_price
else if inLong
    longSL[1]
else
    close - sl

shortSL := if inShort and ta.barssince(shortClose) < ta.barssince(shortCondition)
    strategy.position_avg_price
else if inShort
    shortSL[1]
else
    close + sl

// Manage positions
strategy.entry("Long", strategy.long, when=longCondition)
strategy.exit("TP1/SL", from_entry="Long", qty_percent=50, limit=longTP1, stop=longSL)
strategy.exit("TP2/SL", from_entry="Long", limit=longTP2, stop=longSL)

strategy.entry("Short", strategy.short, when=shortCondition)
strategy.exit("TP1/SL", from_entry="Short", qty_percent=50, limit=shortTP1, stop=shortSL)
strategy.exit("TP2/SL", from_entry="Short", limit=shortTP2, stop=shortSL)


// DRAW
// Stochastic Chart
plot(stoch_K, color=color.blue)
plot(stoch_D, color=color.orange)

// Circles
plot(stOBOS ? stRD and stoch_K >= 75 ? stoch_D : na : stRD ? stoch_D : na, color=colorRed, style=plot.style_circles, linewidth=3)
plot(stOBOS ? stGD and stoch_K <= 25 ? stoch_D : na : stGD ? stoch_K : na, color=colorGreen, style=plot.style_circles, linewidth=3)

// Levels
hline(75, linestyle=hline.style_dotted)
hline(25, linestyle=hline.style_dotted)