Strategi Pengesanan Trend Stop Loss Take Profit

Penulis:ChaoZhang, Tarikh: 2024-01-24 14:17:28
Tag:

img

Ringkasan

Ini adalah strategi pengesanan trend yang menggunakan Bollinger Bands untuk menentukan trend dan ATR untuk menetapkan stop loss dan mengambil keuntungan.

Logika Strategi

  1. Mengira rel atas dan bawah Bollinger Bands.
  2. Menilai sama ada harga penutupan berada di atas rel atas atau di bawah rel bawah. Jika ya, menilai ia sebagai pasaran trend, kenaikan atau penurunan masing-masing.
  3. Jika ia adalah pasaran trend, mengira garis trend. garisan trend adalah berdasarkan harga terendah dikurangkan nilai ATR (pasaran lembu) atau harga tertinggi ditambah nilai ATR (pasaran beruang).
  4. Jika ia bukan pasaran trend, simpan garis trend yang sama dengan bar sebelumnya.
  5. Bandingkan garis trend untuk menentukan arah trend.
  6. Menghasilkan isyarat beli/jual apabila arah garis trend berubah.
  7. Tetapkan stop loss dan ambil keuntungan: jarak stop loss tetap adalah 100 kali harga masuk; mengambil keuntungan terapung adalah 1.1 kali (bull) atau 0.9 kali (bear) harga masuk.

Analisis Kelebihan

  1. Boleh menentukan trend pasaran, mengelakkan perdagangan palsu.
  2. Tetapkan garis trend untuk mengelakkan terperangkap.
  3. Tetapan stop loss dan mengambil keuntungan yang munasabah untuk mengawal risiko sambil memastikan keuntungan.

Analisis Risiko

  1. Tetapan parameter yang tidak betul boleh kehilangan peluang perdagangan.
  2. Bollinger Bands mempunyai kebarangkalian yang tinggi untuk menilai dengan salah di pasaran yang terikat julat.
  3. Stop loss yang terlalu dekat boleh dihentikan dengan mudah.

Arahan pengoptimuman

  1. Mengoptimumkan parameter Bollinger Bands untuk produk yang berbeza.
  2. Mengoptimumkan kaedah pengiraan garis trend, contohnya memperkenalkan penunjuk lain.
  3. Uji dan optimumkan parameter stop loss dan mengambil keuntungan.

Kesimpulan

Ini adalah strategi yang menggunakan Bollinger Bands untuk menentukan trend dan menetapkan stop loss dan mengambil keuntungan berdasarkan garis trend. Kelebihan utamanya adalah penilaian trend yang jelas, stop loss yang munasabah dan mengambil keuntungan untuk mengawal risiko dengan berkesan. Risiko utama berasal dari penilaian trend yang salah dan stop loss yang terlalu dekat. Arahan pengoptimuman masa depan termasuk pengoptimuman parameter, pengoptimuman pengiraan garis trend dan pengoptimuman stop loss mengambil keuntungan.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © zhuenrong

// © Dreadblitz
//@version=4
strategy(shorttitle="FLI", title="Follow Line Indicator", overlay=true)
// 
BBperiod      = input(defval = 21,     title = "BB Period",    type = input.integer, minval = 1)
BBdeviations  = input(defval = 1.00,     title = "BB Deviations",    type = input.float, minval = 0.1, step=0.05)
UseATRfilter  = input(defval = true, title = "ATR Filter",  type = input.bool)
ATRperiod     = input(defval = 5,     title = "ATR Period",    type = input.integer, minval = 1)
hl            = input(defval = false, title = "Hide Labels",  type = input.bool)
//
BBUpper=sma (close,BBperiod)+stdev(close, BBperiod)*BBdeviations
BBLower=sma (close,BBperiod)-stdev(close, BBperiod)*BBdeviations
//
TrendLine = 0.0
iTrend = 0.0
buy = 0.0
sell = 0.0
//
BBSignal = close>BBUpper? 1 : close<BBLower? -1 : 0
// 
if BBSignal == 1 and UseATRfilter == 1
    TrendLine:=low-atr(ATRperiod)
    if TrendLine<TrendLine[1] 
        TrendLine:=TrendLine[1]
if BBSignal == -1 and UseATRfilter == 1
    TrendLine:=high+atr(ATRperiod)
    if TrendLine>TrendLine[1]
        TrendLine:=TrendLine[1]
if BBSignal == 0 and UseATRfilter == 1
    TrendLine:=TrendLine[1]
//
if BBSignal == 1 and UseATRfilter == 0
    TrendLine:=low
    if TrendLine<TrendLine[1] 
        TrendLine:=TrendLine[1]
if BBSignal == -1 and UseATRfilter == 0
    TrendLine:=high
    if TrendLine>TrendLine[1]
        TrendLine:=TrendLine[1]
if BBSignal == 0 and UseATRfilter == 0
    TrendLine:=TrendLine[1]
//
iTrend:=iTrend[1]
if TrendLine>TrendLine[1] 
    iTrend:=1
if TrendLine<TrendLine[1] 
    iTrend:=-1
//
buy:=iTrend[1]==-1 and iTrend==1 ? 1 : na
sell:=iTrend[1]==1 and iTrend==-1? 1 : na
//
plot(TrendLine, color=iTrend > 0?color.blue:color.red ,style=plot.style_line,linewidth=2,transp=0,title="Trend Line") 
plotshape(buy == 1 and hl == false? TrendLine-atr(8) :na, text='💣', style= shape.labelup, location=location.absolute, color=color.blue, textcolor=color.white, offset=0, transp=0,size=size.auto)
plotshape(sell == 1 and hl == false ?TrendLine+atr(8):na, text='🔨', style=shape.labeldown, location=location.absolute, color=color.red, textcolor=color.white, offset=0, transp=0,size=size.auto)
//
alertcondition(sell == 1 ,title="Sell",message="Sell")
alertcondition(buy == 1 ,title="Buy",message="Buy")
alertcondition(buy == 1 or sell == 1 ,title="Buy/Sell",message="Buy/Sell")
if (buy==1)
    strategy.entry("Buy", strategy.long)
if (sell==1)
    strategy.entry("Sell", strategy.short)
// === Stop LOSS ===

if strategy.position_size>0
    strategy.exit("Stop Loss/Profit Long","Buy", stop=strategy.position_avg_price*100, limit=strategy.position_avg_price*1.1)
if strategy.position_size<0
    strategy.exit("Stop Loss/Profit Short","Sell", stop=strategy.position_avg_price*100, limit=strategy.position_avg_price*0.9)

Lebih lanjut