Buka strategi trailing stop loss tinggi dan rendah


Tanggal Pembuatan: 2024-02-18 14:30:08 Akhirnya memodifikasi: 2024-02-18 14:30:08
menyalin: 7 Jumlah klik: 599
1
fokus pada
1617
Pengikut

Buka strategi trailing stop loss tinggi dan rendah

Ringkasan

Strategi ini mendesain entries dengan data tinggi dan rendah berdasarkan garis K untuk mencari titik balik tren. Setelah entries, mereka akan menetapkan garis stop loss berdasarkan indikator ATR dan melacak stop loss. Strategi ini juga akan menghitung posisi target berdasarkan rasio pengembalian risiko dan menutup posisi setelah mencapai target atau dihentikan.

Prinsip Strategi

Sinyal Entries dari strategi ini berasal dari titik tinggi atau rendah. Ketika harga pembukaan K-line sama dengan harga terendah, sinyal beli dihasilkan, dan ketika harga pembukaan sama dengan harga tertinggi, sinyal jual dihasilkan, yang menunjukkan bahwa mungkin ada peluang untuk membalikkan tren.

Entries kemudian akan menghitung stop loss berdasarkan indikator ATR. Stop loss setelah pembelian adalah harga terendah dalam garis N-root K terbaru dikurangi 1 kali ATR. Stop loss setelah penjualan adalah harga tertinggi dalam garis N-root K terbaru ditambah 1 kali ATR. Stop loss akan diperbarui secara dinamis, dan harga akan terus berjalan.

Profit target dihitung berdasarkan rasio risiko / return yang ditetapkan. Harga target yang dibeli adalah harga entri ditambah ((perkalian risiko / return antara harga entri dan harga stop loss); Harga target yang dijual adalah harga entri dikurangi ((perkalian risiko / return antara harga stop loss dan harga entry)).

Instruksi posisi terbuka dikeluarkan ketika harga mencapai harga stop loss atau harga target.

Analisis Keunggulan

Strategi ini memiliki keuntungan sebagai berikut:

  1. Sinyal Entries sederhana dan jelas, mudah diukur, dan menghindari beberapa getaran.

  2. Stop loss ATR yang dinamis, maksimal mengunci keuntungan, menghindari mengejar tinggi dan membunuh rendah.

  3. Pengendalian risiko-pengembalian untuk menghindari sisa-sisa keuntungan dan operasi overshort.

  4. Ada beberapa jenis yang bisa digunakan, dan mudah dioptimalkan.

Analisis risiko

Strategi ini juga memiliki beberapa risiko:

  1. Sinyal Entries mungkin memiliki tingkat keterlambatan, kehilangan posisi terbaik.

  2. Stop loss yang terlalu dekat atau terlalu longgar dapat menyebabkan kerugian atau kerugian.

  3. Modul ini tidak memiliki kemampuan untuk menilai tren, dan mudah tersandung dalam situasi getaran.

  4. Tidak dapat menangani pembangunan gudang di malam hari.

Keunggulan yang disesuaikan:

  1. Dengan menggunakan indikator lain untuk menilai tren, hindari melakukan spekulasi pada kondisi yang bergejolak.

  2. Mengatur parameter ATR atau menambahkan kontrol fluktuasi untuk mengoptimalkan stop loss line.

  3. Menambahkan modul penilaian tren atau filter, mengurangi kesalahan sinyal entri.

  4. Tambahkan modul pengolahan malam untuk mengolah gudang malam untuk varietas tertentu.

Meringkaskan

Secara keseluruhan, strategi ini relatif sederhana dan langsung, sinyal Entries jelas, strategi stop loss masuk akal, dan risiko dikendalikan. Namun, ada juga batasan tertentu, seperti penilaian tren yang kurang, sinyal yang tertinggal, dan lain-lain. Masalah-masalah ini juga memberikan arah untuk optimasi di masa depan.

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

//@version=5
// Open-High-Low strategy

strategy('Strategy: OLH', shorttitle="OLH", overlay=true )

// Inputs
slAtrLen = input.int(defval=14, title="ATR Period for placing SL", group="StopLoss settings")
showSLLines = input.bool(defval=false, title="Show SL lines in chart", tooltip="Show SL lines also as dotted lines in chart. Note: chart may look untidy.", group="Stolploss settings")
// Trade related
rrRatio = input.float(title='Risk:Reward', step=0.1, defval=2.0, group="Trade settings")
endOfDay = input.int(defval=1500, title="Close all trades, default is 3:00 PM, 1500 hours (integer)", group="Trade settings")
mktAlwaysOn = input.bool(defval=true, title="Markets that never closed (Crypto, Forex, Commodity)", tooltip="Some markers never closes. For those cases, make this checked.", group="Trade settings")
lotSize = input.int(title='Lot Size', step=1, defval=1, group="Trade settings")


// Utils
green(open, close) => close > open ? true : false
red(open, close) => close < open ? true : false
body(open, close) => math.abs(open - close)
lowerwick = green(open, close) ? open - low : close - low
upperwick = green(open, close) ? high - close : high - open
crange = high - low
crangep = high[1] - low[1] // previous candle's candle-range
bullish = close > open ? true : false
bearish = close < open ? true : false


// Trade signals
longCond = barstate.isconfirmed and (open == low)
shortCond = barstate.isconfirmed and (open == high)

// For SL calculation
atr = ta.atr(slAtrLen)
highestHigh = ta.highest(high, 7)
lowestLow = ta.lowest(low, 7)
longStop = showSLLines ? lowestLow - (atr * 1) : na
shortStop = showSLLines ? highestHigh + (atr * 1) : na
plot(longStop, title="Buy SL", color=color.green, style=plot.style_cross)
plot(shortStop, title="Sell SL", color=color.red, style=plot.style_cross)

// Trade execute
h = hour(time('1'), syminfo.timezone)
m = minute(time('1'), syminfo.timezone)
hourVal = h * 100 + m
totalTrades = strategy.opentrades + strategy.closedtrades
if (mktAlwaysOn or (hourVal < endOfDay))
    // Entry
    var float sl = na
    var float target = na
    if (longCond)
        strategy.entry("enter long", strategy.long, lotSize, limit=na, stop=na, comment="Enter Long")
        sl := longStop
        target := close + ((close - longStop) * rrRatio)
        alert('Buy:' + syminfo.ticker + ' ,SL:' + str.tostring(math.floor(sl)) + ', Target:' + str.tostring(target), alert.freq_once_per_bar)
    if (shortCond)
        strategy.entry("enter short", strategy.short, lotSize, limit=na, stop=na, comment="Enter Short")
        sl := shortStop
        target := close - ((shortStop - close) * rrRatio)
        alert('Sell:' + syminfo.ticker + ' ,SL:' + str.tostring(math.floor(sl)) + ', Target:' + str.tostring(target), alert.freq_once_per_bar)

    // Exit: target or SL
    if ((close >= target) or (close <= sl))
        strategy.close("enter long", comment=close < sl ? "Long SL hit" : "Long target hit")
    if ((close <= target) or (close >= sl))
        strategy.close("enter short", comment=close > sl ? "Short SL hit" : "Short target hit")
else if (not mktAlwaysOn)
    // Close all open position at the end if Day
    strategy.close_all(comment = "Close all entries at end of day.")