Trend Mengikuti Strategi Henti Kerugian


Tarikh penciptaan: 2024-02-05 16:00:35 Akhirnya diubah suai: 2024-02-05 16:00:35
Salin: 0 Bilangan klik: 726
1
fokus pada
1617
Pengikut

Trend Mengikuti Strategi Henti Kerugian

Gambaran keseluruhan

Strategi penarikan trend adalah strategi perdagangan penarikan trend berdasarkan indikator TrendAlert. Ia menggunakan indikator TrendAlert untuk menentukan arah trend, untuk mencapai penarikan trend. Ia juga menggunakan indikator ATR untuk menetapkan kedudukan berhenti untuk mengawal risiko.

Prinsip Strategi

Strategi ini terdiri daripada beberapa bahagian:

  1. Indikator TrendAlert menentukan arah trend. Apabila TrendAlert lebih besar daripada 0, ia adalah isyarat bullish, dan apabila kurang daripada 0, ia adalah isyarat bearish.

  2. Indikator ATR mengira julat turun naik harga terkini. ATR dikalikan ATR StopMultiplier sebagai titik berhenti tetap.

  3. LowestLow dan HighestHigh digabungkan dengan ATR Stop Loss Build Tracking Stop Loss. Apakah kawalan menggunakan parameter struktur diaktifkan.

  4. Masukkan kedudukan beli atau beli rendah mengikut arah isyarat trend. Sediakan Take Profit dan Stop Loss selepas masuk.

  5. Kedudukan yang dihapuskan selepas harga mencetuskan stop loss atau stop loss.

Strategi ini menilai trend untuk menyaring isyarat palsu, mengesan risiko kawalan henti, memastikan keuntungan, dan meningkatkan kestabilan sistem perdagangan secara keseluruhan.

Analisis kelebihan

Strategi ini mempunyai kelebihan utama:

  1. Penapisan trend dan pengesanan double stop loss, mengelakkan kebisingan pasaran dan memastikan risiko perdagangan terkawal.

  2. ATR menyesuaikan diri untuk menghentikan kerugian untuk mengelakkan pengoptimuman berlebihan, sesuai untuk pelbagai keadaan pasaran.

  3. Tujuan penangguhan adalah untuk memastikan keuntungan dan mengelakkan makan keuntungan.

  4. Logik strategi jelas dan ringkas, mudah difahami untuk pengubahsuaian, sesuai untuk pembangunan kedua pedagang kuantitatif.

  5. Ia ditulis dalam bahasa skrip Pine yang boleh digunakan secara langsung di platform TradingView tanpa memerlukan asas pengaturcaraan.

Analisis risiko

Strategi ini mempunyai beberapa risiko:

  1. Kesilapan dalam penilaian trend boleh menyebabkan masuk dan hentian yang tidak perlu dicetuskan. Anda boleh melepaskan hentian atau penapis masuk dengan sewajarnya.

  2. ATR mungkin meremehkan gelombang sebenar apabila keadaan berubah-ubah. Dalam kes ini, ATR boleh meningkatkan kelipatan stop lossatrStopMultiplier.

  3. Hentian sasaran mungkin mengehadkan ruang keuntungan strategi. Boleh disesuaikan dengan parameter limitMultiplier pasaran.

  4. Logik exist kod hanya berdasarkan harga, sebenarnya harus digabungkan dengan pengurusan masa.

Arah pengoptimuman

Strategi ini boleh dioptimumkan dengan:

  1. Optimumkan parameter ATR panjangatrLength dan pengganda hentiatrStopMultiplier, sesuaikan sensitiviti algoritma henti.

  2. Mencuba pelbagai trend dan penanda aras untuk mencari peluang yang lebih baik untuk masuk.

  3. Pilih atau sesuaikan parameter penangguhan sasaran mengikut ciri-ciri jenis transaksi tertentu.

  4. Menambah mekanisme penghentian masa untuk mengelakkan risiko bermalam sendirian.

  5. Menambah kestabilan strategi dengan penapisan penembusan palsu dalam jumlah dagangan.

ringkaskan

Strategi ini secara keseluruhan adalah strategi penarikan trend yang sangat praktikal. Ia menggunakan petunjuk untuk menentukan arah trend untuk mencapai trend, sambil menetapkan penarikan diri untuk memastikan kawalan risiko. Strategi ini logiknya jelas, mudah digunakan, sangat sesuai untuk pembelajaran pemula.

Kod sumber strategi
/*backtest
start: 2023-01-29 00:00:00
end: 2024-02-04 00:00:00
period: 1d
basePeriod: 1h
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/
// © jaque_verdatre

//@version=5
strategy("TrendAlert Based", overlay = true)

// Get inputs
TrendAlert = input.source(close, "TrendAlert")
atrLength = input.int(title="ATR Length", defval=15, minval=1)
useStructure = input.bool(title="Use Structure?", defval=true)
lookback = input.int(title="How Far To Look Back For High/Lows", defval=8, minval=1)
atrStopMultiplier = input.float(title="ATR Multiplier", defval=0.2, minval=0.1)
LimitMultiplier = input.float(title = "Limit Multiplier", defval = 0.5, minval = 0.1)
PineConnectorID = input.int(title = "Pine Connector ID",defval = 0)
CurrencyToSend = input.string(title = "personilized currency", defval = "ETHUSD")
Risk = input.int(title = "risk in % to send", defval = 10, minval = 1)

// Calculate data
atr = ta.atr(atrLength)
lowestLow = ta.lowest(low, lookback)
highestHigh = ta.highest(high, lookback)
longStop = (useStructure ? lowestLow : close) - atr * atrStopMultiplier
shortStop = (useStructure ? highestHigh : close) + atr * atrStopMultiplier

// Draw data to chart
plot(atr, color=color.rgb(33, 149, 243), title="ATR", display = display.none)
plot(longStop, color=color.green, title="Long Trailing Stop")
plot(shortStop, color=color.red, title="Short Trailing Stop")

var float LimitL = na
var float LimitS = na
var float LPosPrice = na
var float SPosPrice = na
var float LPosLongStop = na
var float SPosShortStop = na

KnowLimit (PosPrice, PosStop) =>
    (PosPrice-PosStop)*LimitMultiplier+PosPrice


NotInTrade = strategy.position_size == 0
InLongTrade = strategy.position_size > 0
InShortTrade = strategy.position_size < 0

longCondition = TrendAlert > 0 and NotInTrade
if (longCondition)
    LPosPrice := close
    LPosLongStop := longStop
    LimitL := KnowLimit(LPosPrice, LPosLongStop)
    strategy.entry("long", strategy.long)
    LTPPip = LimitL-LPosPrice
    LSLPip = LPosPrice-longStop
    alert(str.tostring(PineConnectorID)+',buy,'+str.tostring(CurrencyToSend)+',risk='+str.tostring(Risk)+',sl='+str.tostring(LSLPip)+'tp='+str.tostring(LTPPip), alert.freq_once_per_bar_close)
    strategy.exit("exit", "long", stop = longStop, limit = LimitL)

shortCondition = TrendAlert < 0 and NotInTrade
if (shortCondition)
    SPosPrice := close
    SPosShortStop := shortStop
    LimitS := KnowLimit(SPosPrice, SPosShortStop)
    strategy.entry("short", strategy.short)
    STPPip = SPosPrice-LimitS
    SSLPip = shortStop - SPosPrice
    alert(str.tostring(PineConnectorID)+',sell,ETHUSD,risk=10,sl='+str.tostring(SSLPip)+'tp='+str.tostring(STPPip), alert.freq_once_per_bar_close)
    strategy.exit("exit", "short", stop = shortStop, limit = LimitS)

plotshape(longCondition, color = color.green, style = shape.labelup, location = location.belowbar, size = size.normal, title = "Long Condition")
plotshape(shortCondition, color = color.red, style = shape.labeldown, location = location.abovebar, size = size.normal, title = "Short Condition")

if (InShortTrade)
    LimitL := close
    LPosLongStop := close
    LPosPrice := close

PlotLongTakeProfit = plot(LimitL, color = InLongTrade ? color.rgb(0, 255, 64) : color.rgb(120, 123, 134, 100), title = "Long Take Profit")
PlotLongStopLoss = plot(LPosLongStop, color = InLongTrade ? color.rgb(255, 0, 0) : color.rgb(120, 123, 134, 100), title = "Long Stop Loss")
PlotLongPosPrice = plot(LPosPrice, color = InLongTrade ? color.gray : color.rgb(120, 123, 134, 100), title = "Long Position Price")

if (InLongTrade)
    LimitS := close
    SPosShortStop := close
    SPosPrice := close

PlotShortTakeProfit = plot(LimitS, color = InShortTrade ? color.rgb(0, 255, 64) : color.rgb(120, 123, 134, 100), title = "Short Take Profit")
PlotShortStopLoss = plot(SPosShortStop, color = InShortTrade ? color.rgb(255, 0, 0) : color.rgb(120, 123, 134, 100), title = "Short Stop Loss")
PlotShortPosPrice = plot(SPosPrice, color = InShortTrade ? color.gray : color.rgb(120, 123, 134, 100), title = "Short Position Price")

fill(PlotLongPosPrice, PlotLongTakeProfit, color = InLongTrade ? color.rgb(0, 255, 0, 95) : color.rgb(0, 255, 0, 100))
fill(PlotShortPosPrice, PlotShortTakeProfit, color = InShortTrade ? color.rgb(0, 255, 0, 95) : color.rgb(0, 255, 0, 100))

fill(PlotLongPosPrice, PlotLongStopLoss, color = InLongTrade ? color.rgb(255, 0, 0, 95) : color.rgb(255, 0, 0, 100))
fill(PlotShortPosPrice, PlotShortStopLoss, color = InShortTrade ? color.rgb(255, 0, 0, 95) : color.rgb(255, 0, 0, 100))