Strategi henti kehilangan pengekoran MA dua arah


Tarikh penciptaan: 2023-11-16 17:18:59 Akhirnya diubah suai: 2023-11-16 17:18:59
Salin: 1 Bilangan klik: 590
1
fokus pada
1617
Pengikut

Strategi henti kehilangan pengekoran MA dua arah

Gambaran keseluruhan

Strategi ini membina isyarat berlubang melalui purata bergerak dua arah untuk mencapai penghentian pengesanan. Ideanya adalah menggunakan purata bergerak untuk menentukan arah trend, melakukan lebih banyak shorting ke arah trend, dan menggunakan ATR untuk mengira titik berhenti untuk mencapai penghentian pengesanan.

Prinsip Strategi

Strategi ini menggunakan hl2 sebagai harga sumber, dan mengira ATR untuk satu kitaran sebagai margin stop loss. Mengambil nilai ATR dengan mengalikannya dengan kelipatan tertentu, ia mengira atas dan bawah.

Selepas membuka kedudukan, anda boleh menyesuaikan titik hentian anda mengikut perubahan masa nyata ATR, untuk mencapai pelacakan hentian. Secara khusus, apabila anda melakukan lebih banyak, anda boleh terus menaikkan tren bawah anda mengikut titik rendah terkini, untuk mencapai pelacakan hentian. Apabila anda melakukan kosong, anda boleh terus menaikkan tren atas anda mengikut titik tinggi terkini, untuk mencapai pelacakan hentian.

Dengan cara ini, strategi ini memanfaatkan sepenuhnya fungsi rata-rata bergerak untuk menentukan arah trend, dan menambah mekanisme pengesanan berhenti berdasarkan ATR, yang memastikan kebenaran arah perdagangan dan mengawal risiko perdagangan.

Kelebihan Strategik

Kelebihan terbesar strategi ini adalah kawalan risiko. Strategi purata bergerak tradisional hanya mempertimbangkan penilaian arah, mudah untuk pecah kedudukan. Strategi ini menambah tracking stop loss yang dikira ATR, dapat menyesuaikan stop loss secara dinamik mengikut keluasan turun naik pasaran, dan mengawal risiko perdagangan dengan berkesan.

Di samping itu, strategi ini menggabungkan perdagangan dua hala yang berbilang. Berbanding dengan strategi satu arah, ia dapat menyesuaikan arah kedudukan dengan tepat pada masa perubahan trend, mengelakkan terjebak dalam satu arah, dan meningkatkan keuntungan strategi.

Risiko Strategik

Risiko utama strategi ini terletak pada pengaturan kitaran dan kelipatan ATR. Jika kitaran ATR terlalu pendek atau kelipatan terlalu besar, stop loss akan terlalu kecil untuk mengawal risiko dengan berkesan; jika kitaran ATR terlalu panjang atau kelipatan terlalu kecil, stop loss terlalu longgar dan sukar untuk mendapat keuntungan. Selain itu, risiko pecah palsu mungkin berlaku apabila harga menembusi purata bergerak yang mencetuskan isyarat binaan.

Anda boleh mengimbangi keuntungan henti rugi dengan mengoptimumkan kitaran parameter dan kelipatan; menggabungkan penapisan penipuan palsu dengan penunjuk lain, meningkatkan kualiti isyarat dan mengurangkan risiko.

Arah pengoptimuman

Strategi ini boleh dioptimumkan dalam beberapa aspek:

  1. Mengoptimumkan kitaran purata bergerak untuk mencari kombinasi parameter terbaik

  2. Menambah penapis untuk penunjuk lain seperti MACD, KDJ dan lain-lain untuk meningkatkan kualiti isyarat

  3. Menambah strategi pengurusan kedudukan, seperti saham tetap, Martingale dan lain-lain, meningkatkan keuntungan strategi

  4. Perbezaan parameter yang boleh dikaji dalam pelbagai jenis untuk pengoptimuman parameter

  5. Pengoptimuman parameter yang boleh dilatih dengan menggunakan kaedah pembelajaran mesin seperti algoritma genetik

ringkaskan

Strategi ini mempertimbangkan penilaian trend dan kawalan risiko secara menyeluruh, dengan memberi tumpuan kepada mengurangkan pulangan semasa mengejar keuntungan. Dengan kaedah seperti pengoptimuman parameter dan kombinasi, keuntungan strategi dapat ditingkatkan lagi. Secara keseluruhan, strategi ini jelas, mudah dilaksanakan, dan merupakan strategi perdagangan kuantitatif yang stabil dan dipercayai.

Kod sumber strategi
/*backtest
start: 2022-11-09 00:00:00
end: 2023-11-15 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/
// © KivancOzbilgic


//@version=4
strategy("Trenbolone Strategy", overlay = true)
Periods = input(title="ATR Period", type=input.integer, defval=10)
src = input(hl2, title="Source")
Multiplier = input(title="ATR Multiplier", type=input.float, step=0.1, defval=3.0)
changeATR= input(title="Change ATR Calculation Method ?", type=input.bool, defval=true)
showsignals = input(title="Show Buy/Sell Signals ?", type=input.bool, defval=false)
highlighting = input(title="Highlighter On/Off ?", type=input.bool, defval=true)
barcoloring = input(title="Bar Coloring On/Off ?", type=input.bool, defval=true)
atr2 = sma(tr, Periods)
atr= changeATR ? atr(Periods) : atr2
up=src-(Multiplier*atr)
up1 = nz(up[1],up)
up := close[1] > up1 ? max(up,up1) : up
dn=src+(Multiplier*atr)
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? min(dn, dn1) : dn
trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend
upPlot = plot(trend == 1 ? up : na, title="Up Trend", style=plot.style_linebr, linewidth=2, color=color.green)
buySignal = trend == 1 and trend[1] == -1
plotshape(buySignal ? up : na, title="UpTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.green, transp=0)
plotshape(buySignal and showsignals ? up : na, title="Buy", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.green, textcolor=color.white, transp=0)
dnPlot = plot(trend == 1 ? na : dn, title="Down Trend", style=plot.style_linebr, linewidth=2, color=color.red)
sellSignal = trend == -1 and trend[1] == 1
plotshape(sellSignal ? dn : na, title="DownTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.red, transp=0)
plotshape(sellSignal and showsignals ? dn : na, title="Sell", text="Sell", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.red, textcolor=color.white, transp=0)
mPlot = plot(ohlc4, title="", style=plot.style_circles, linewidth=0)
longFillColor = highlighting ? (trend == 1 ? color.green : color.white) : color.white
shortFillColor = highlighting ? (trend == -1 ? color.red : color.white) : color.white
fill(mPlot, upPlot, title="UpTrend Highligter", color=longFillColor)
fill(mPlot, dnPlot, title="DownTrend Highligter", color=shortFillColor)
FromMonth = input(defval = 9, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2018, title = "From Year", minval = 999)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 9999, title = "To Year", minval = 999)
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)       
window()  => time >= start and time <= finish ? true : false
longCondition = buySignal
if (longCondition)
    strategy.entry("BUY", strategy.long, when = window())
shortCondition = sellSignal
if (shortCondition)
    strategy.entry("SELL", strategy.short, when = window())
buy1 = barssince(buySignal)
sell1 = barssince(sellSignal)
color1 = buy1[1] < sell1[1] ? color.green : buy1[1] > sell1[1] ? color.red : na
barcolor(barcoloring ? color1 : na)