Strategi stop loss dua peringkat


Tarikh penciptaan: 2023-10-25 18:11:30 Akhirnya diubah suai: 2023-10-25 18:11:30
Salin: 0 Bilangan klik: 729
1
fokus pada
1617
Pengikut

Strategi stop loss dua peringkat

Gambaran keseluruhan

Idea utama strategi ini adalah untuk menetapkan dua titik berhenti, dan apabila titik berhenti pertama dicetuskan, titik berhenti akan dialihkan ke harga masuk, untuk mengelakkan stop menjadi terhalang.

Prinsip Strategi

Strategi ini berdasarkan pada Bollinger Bands dan Stochastic Indicators Entry. Apabila harga melampaui Bollinger Bands, anda boleh melakukan shorting, dan apabila Stochastic Indicators menunjukkan oversold, anda boleh melakukan longing.

Secara khusus, logik kemasukan strategi ini adalah:

  1. Apabila harga penutupan berada di bawah Brin dan Stochastic K di bawah garis D, masukkan lebih banyak

  2. Apabila harga penutupan lebih tinggi daripada jalur Brin, dan garis Stochastic K melintasi garis D untuk masuk kosong

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

Apabila titik henti pertama dalam pergerakan harga dipicu, strategi ini akan memindahkan titik henti ke harga masuk. Ini dapat mengunci keuntungan pada peringkat pertama, sambil mencegah henti terjejas oleh pergerakan harga.

Apabila titik berhenti kedua dicetuskan atau titik berhenti kerugian dicetuskan, strategi ini akan ditamatkan sepenuhnya.

Kelebihan Strategik

Kelebihan terbesar strategi berhenti dua peringkat ini adalah bahawa ia dapat mengunci keuntungan dan mencegah halangan daripada dihalang oleh pergerakan harga. Dengan memindahkan titik berhenti ke harga masuk, kemungkinan halangan dihalang dapat dikurangkan dan keuntungan dapat dilindungi.

Kelebihan lain ialah strategi ini menggunakan gabungan Bollinger Bands untuk menentukan pergerakan harga dan Stochastic untuk menentukan harga yang lebih tinggi daripada harga yang lebih tinggi, kedua-dua indikator saling melengkapi dan meningkatkan ketepatan masuk.

Risiko Strategik

Risiko utama strategi ini adalah bahawa kedua-dua penunjuk Brin dan penunjuk Stochastic boleh menghasilkan isyarat yang salah. Jika pengiraan jarak Brin salah, ia akan menyebabkan masa masuk yang salah atau menghasilkan isyarat yang salah.

Di samping itu, pergerakan titik henti ke harga masuk juga berisiko untuk dibolak-balikkan lagi. Jika berlaku pembalikan bentuk V, titik henti mungkin akan dicetuskan untuk kali kedua.

Untuk mengurangkan risiko ini, anda boleh menyesuaikan parameter Brin, mengoptimumkan kombinasi parameter Stochastic, dan meningkatkan jarak titik henti dengan sewajarnya.

Arah pengoptimuman strategi

Strategi berhenti rugi dua peringkat ini boleh dioptimumkan lagi:

  1. Anda boleh menguji kombinasi parameter yang berbeza, mengoptimumkan parameter Brin dan Stochastic, dan mencari kombinasi parameter yang optimum.

  2. Anda boleh menguji pelbagai tetapan stop loss, mengoptimumkan saiz stop loss, dan mencari konfigurasi yang optimum.

  3. Ia boleh ditambah dengan petunjuk lain, seperti purata bergerak, dan sebagainya, untuk membentuk strategi gabungan pelbagai petunjuk, meningkatkan ketepatan kemasukan.

  4. Logik pergerakan titik henti yang berbeza boleh dikaji, seperti bergerak ke luar jarak tertentu dan bukannya harga masuk.

  5. Anda boleh meningkatkan pergerakan titik henti anda dengan menetapkan tiga atau lebih langkah henti.

ringkaskan

Strategi ini menggunakan indikator Brinband dan Stochastic untuk menentukan masa masuk, menetapkan dua titik berhenti, bergerak titik henti ke harga masuk setelah titik berhenti pertama dicapai, membentuk strategi berhenti dua peringkat. Strategi ini dapat mengunci keuntungan dengan berkesan dan mencegah penghentian dari pinggir. Kelebihan strategi menonjol, tetapi ada ruang untuk penambahbaikan, dengan pengoptimuman parameter, kombinasi pelbagai indikator, penyesuaian logik titik berhenti dan sebagainya.

Kod 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)