Tiga strategi stop-profit dan stop-loss moving average indeks


Tanggal Pembuatan: 2024-02-04 10:38:42 Akhirnya memodifikasi: 2024-02-04 10:38:42
menyalin: 0 Jumlah klik: 680
1
fokus pada
1617
Pengikut

Tiga strategi stop-profit dan stop-loss moving average indeks

Ringkasan

Strategi stop loss adalah strategi pelacakan tren untuk masuk dan keluar dari pasar berdasarkan rata-rata pergerakan indeks dari tiga periode yang berbeda. Ini menggunakan indikator rata-rata real amplitude untuk mengatur stop loss dan manajemen risiko.

Prinsip Strategi

Strategi ini menggunakan tiga indeks bergerak rata-rata: garis cepat, garis tengah, dan garis lambat. Lakukan lebih banyak ketika melewati garis lambat di garis tengah; posisi terendah ketika melewati garis tengah di bawah garis cepat. Ini adalah strategi pelacakan tren khas, yang menilai arah tren melalui konversi polygonal dari tiga garis rata.

Pada saat yang sama, strategi ini menggunakan indikator rata-rata true amplitude untuk menghitung stop loss. Secara khusus, stop loss adalah harga masuk + rata-rata true amplitude.*Koefisien stop-loss; posisi stop-loss kosong sebagai harga masuk - rata-rata real bandwidth*Koefisien Stop Loss. Prinsip Stop Loss mirip dengan Stop Loss. Ini dapat secara efektif membatasi risiko unilateral.

Analisis Keunggulan

  1. Indikator-indikator yang digunakan untuk membuat keputusan adalah intuitif, jelas, dan mudah dipahami.
  2. Sistematis dan mudah diukur.
  3. Mengikuti tren dan mengontrol risiko.

Analisis risiko

  1. Ada beberapa keterlambatan yang tidak dapat ditangkap dalam waktu yang tepat.
  2. Ternyata, ada juga yang tidak tahu apa yang terjadi.
  3. Pengaturan parameter perlu dioptimalkan, jika tidak, tidak akan berhasil.

Langkah-langkah penanggulangan risiko meliputi: mengurangi siklus rata-rata secara tepat, mengoptimalkan stop loss, dan menambahkan penilaian tambahan pada indikator keputusan lainnya.

Arah optimasi

  1. Kombinasi berbagai indikator rata-rata untuk mencari parameter optimal.
  2. Menambahkan penilaian indikator teknis lainnya, seperti MACD, RSI, dll.
  3. Menggunakan algoritma pembelajaran mesin untuk mengoptimalkan parameter secara otomatis.
  4. Berdasarkan dinamika amplitudo riil, stop loss disesuaikan.
  5. Menghindari transaksi yang terlalu padat dengan indikator emosi.

Meringkaskan

Strategi ini secara keseluruhan merupakan strategi pelacakan tren yang stabil, parameternya sederhana, dan mudah diterapkan. Risiko unilateral dapat dibatasi dengan stop-loss dinamis dari rata-rata gelombang riil. Namun, perlu diperhatikan pengoptimalan parameter dan kombinasi indikator untuk mencegah optimalisasi berlebihan dan penundaan pengambilan keputusan. Secara keseluruhan, keseimbangan risiko-penghasilan yang baik patut dipertimbangkan.

Kode Sumber Strategi
/*backtest
start: 2024-01-04 00:00:00
end: 2024-02-03 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//© Densz
strategy("3EMA with TP & SL (ATR)", overlay=true )

// INPUTS
startTime           =       input(title="Start Time", type = input.time, defval = timestamp("01 Jan 2017 00:00 +0000"))
endTime             =       input(title="End Time", type = input.time, defval = timestamp("01 Jan 2022 00:00 +0000"))

slowEMALength       =       input(title="Slow EMA Length", type = input.integer, defval = 55)
middleEMALength     =       input(title="Middle EMA Length", type = input.integer, defval = 21)
fastEMALength       =       input(title="Fast EMA Length", type = input.integer, defval = 9)

trendMALength       =       input(title="Trend indicator MA Length", type = input.integer, defval = 200)

atrLength           =       input(title="ATR Length", type = input.integer, defval = 14)
tpATRMult           =       input(title="Take profit ATR multiplier", type = input.integer, defval = 3)
slATRMult           =       input(title="Stop loss ATR multiplier", type = input.integer, defval = 2)

rsiLength           =       input(title="RSI Length", type = input.integer, defval = 14)

// Indicators
slowEMA             =       ema(close, slowEMALength)
middEMA             =       ema(close, middleEMALength)
fastEMA             =       ema(close, fastEMALength)
atr                 =       atr(atrLength)

rsiValue            =       rsi(close, rsiLength)
isRsiOB             =       rsiValue >= 80
isRsiOS             =       rsiValue <= 20

sma200              =       sma(close, trendMALength)

inDateRange         =       true

// Plotting
plot(slowEMA, title="Slow EMA", color=color.red, linewidth=2, transp=50)
plot(middEMA, title="Middle EMA", color=color.orange, linewidth=2, transp=50)
plot(fastEMA, title="Fast EMA", color=color.green, linewidth=2, transp=50)

plot(sma200, title="SMA Trend indicator", color=color.purple, linewidth=3, transp=10)
plotshape(isRsiOB, title="Overbought", location=location.abovebar, color=color.red, transp=0, style=shape.triangledown, text="OB")
plotshape(isRsiOS, title="Oversold", location=location.belowbar, color=color.green, transp=0, style=shape.triangledown, text="OS")

float takeprofit    =       na
float stoploss      =       na

var line tpline     =       na
var line slline     =       na

if strategy.position_size != 0
    takeprofit := takeprofit[1]
    stoploss := stoploss[1]
    line.set_x2(tpline, bar_index)
    line.set_x2(slline, bar_index)
    line.set_extend(tpline, extend.none)
    line.set_extend(slline, extend.none)
    
// STRATEGY
goLong  = crossover(middEMA, slowEMA) and inDateRange
closeLong = crossunder(fastEMA, middEMA) and inDateRange


if goLong
    takeprofit := close + atr * tpATRMult
    stoploss := close - atr * slATRMult
    // tpline := line.new(bar_index, takeprofit, bar_index, takeprofit, color=color.green, width=2, extend=extend.right, style=line.style_dotted)
    // slline := line.new(bar_index, stoploss, bar_index, stoploss, color=color.red, width=2, extend=extend.right, style=line.style_dotted)
    // label.new(bar_index, takeprofit, "TP", style=label.style_labeldown)
    // label.new(bar_index, stoploss, "SL", style=label.style_labelup)
    strategy.entry("Long", strategy.long, when = goLong)
    strategy.exit("TP/SL", "Long", stop=stoploss, limit=takeprofit)
if closeLong
    takeprofit := na
    stoploss := na
    strategy.close(id = "Long", when = closeLong)

if (not inDateRange)
    strategy.close_all()