Strategi henti rugi mengikut arah aliran berdasarkan turun naik harga


Tarikh penciptaan: 2023-12-01 17:53:36 Akhirnya diubah suai: 2023-12-01 17:53:36
Salin: 6 Bilangan klik: 666
1
fokus pada
1619
Pengikut

Strategi henti rugi mengikut arah aliran berdasarkan turun naik harga

Gambaran keseluruhan

Strategi ini adalah strategi pengesanan kecenderungan yang berdasarkan pada turun naik harga. Ia menggunakan purata turun naik sebenar (ATR) untuk menetapkan garis berhenti untuk turun naik harga. ATR mencerminkan turun naik harga dan tahap risiko.

Prinsip Strategi

Strategi ini pertama-tama mengira purata amplitudo sebenar turun naik ATR dalam tempoh tertentu. Kemudian, mengikut arah trend harga semasa, jika trend naik, garis henti akan ditetapkan sebagai ATR n kali harga tertinggi semasa dikurangkan; jika trend menurun, garis henti ditambah dengan ATR n kali harga terendah semasa.

Apabila harga menembusi garisan hentian untuk trend naik atau garisan hentian untuk trend turun, menentukan bahawa trend berubah. Pada masa ini, strategi untuk menghentikan kerugian dan menetapkan garisan hentian baru sesuai dengan arah trend baru.

Secara keseluruhannya, strategi ini menggunakan turun naik harga untuk menetapkan garis hentian dan mencapai keupayaan untuk menilai perubahan trend dengan tepat. Apabila perubahan trend, hentian tepat pada masanya membantu strategi untuk menangkap arah trend baru.

Kelebihan Strategik

  • Menggunakan ciri-ciri turun naik harga untuk menilai trend dan memahami titik perubahan harga dengan tepat
  • Hentikan kerugian dan menukar kedudukan tepat pada masanya untuk mengurangkan risiko berbalik
  • Fleksibiliti parameter untuk mengawal jarak antara garis stop loss dan pergerakan harga
  • Boleh disesuaikan mengikut parameter khusus varieti, mempunyai kebolehan adaptasi yang kuat

Risiko Strategik

  • Risiko kesalahan penghakiman yang disebabkan oleh penembusan yang tidak berkesan. Harga mungkin mengalami penembusan yang tidak berkesan yang tidak dapat dikekalkan, yang menyebabkan perubahan trend kesalahan penghakiman
  • Tetapan parameter yang terlalu radikal boleh meningkatkan kerugian. Sebagai contoh, nilai n terlalu besar apabila garis berhenti terlalu dekat, gegaran kecil boleh mencetuskan
  • Urrencies dan lain-lain varian dengan kadar turun naik yang rendah mungkin kurang berkesan. Apabila ATR lebih rendah, garis hentian lebih dekat dengan harga

Pengoptimuman Strategi

  • Indikator tambahan seperti jumlah dagangan atau percepatan turun naik boleh diperkenalkan untuk mengelakkan kesalahan penilaian yang tidak sah
  • Menyesuaikan nilai n mengikut ciri-ciri pelbagai jenis untuk membuat jarak hentian lebih sesuai
  • Kitaran ATR juga boleh dioptimumkan, memilih parameter kitaran yang paling sesuai untuk menilai kadar turun naik selisih harga

ringkaskan

Strategi ini secara keseluruhannya adalah pelaksanaan algoritma yang lebih baik untuk menetapkan garis hentian berdasarkan turun naik harga. Ia menilai pergerakan harga dengan ketepatan yang lebih tinggi dan dapat menangkap titik perubahan tren yang penting. Ia juga menyediakan ruang parameter untuk penyesuaian dan fleksibiliti yang kuat.

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

//@version=4
strategy("Volatility stop strategy", overlay=true)

length = input(20)
mult = input(2, step = 0.1)
utp = input(false, "Use take profit?")
pr = input(100, "Take profit pips")
usl = input(false, "Use stop loss?")
sl = input(100, "Stop loss pips")
fromday = input(01, defval=01, minval=01, maxval=31, title="From Day")
frommonth = input(01, defval=01, minval= 01, maxval=12, title="From Month")
fromyear = input(2000, minval=1900, maxval=2100, title="From Year")
today = input(31, defval=01, minval=01, maxval=31, title="To Day")
tomonth = input(12, defval=12, minval=01, maxval=12, title="To Month")
toyear = input(2039, minval=1900, maxval=2100, title="To Year")

use_date = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 00, 00))

atr_ = atr(length)
max_ = 0.0
min_ = 0.0
max1 = 0.0
max1 := max(nz(max_[1]), close)
min1 = 0.0
min1 := min(nz(min_[1]), close)
vstop = 0.0
is_uptrend = false
is_uptrend_prev = false
is_uptrend_prev := nz(is_uptrend[1], true)
stop = is_uptrend_prev ? max1 - mult * atr_ : min1 + mult * atr_
vstop_prev = nz(vstop[1])
vstop1 = is_uptrend_prev ? max(vstop_prev, stop) : min(vstop_prev, stop)
is_uptrend := close - vstop1 >= 0
is_trend_changed = is_uptrend != is_uptrend_prev
max_ := is_trend_changed ? close : max1
min_ := is_trend_changed ? close : min1
vstop := is_trend_changed ? is_uptrend ? max_ - mult * atr_ : min_ + mult * atr_ : vstop1
plot(vstop, color = is_uptrend ? color.green : color.red, linewidth=2)

longCondition = is_uptrend
if (longCondition and use_date)
    strategy.entry("BUY", strategy.long)

shortCondition = not is_uptrend
if (shortCondition and use_date)
    strategy.entry("SELL", strategy.short)
    
if (utp and not usl)
    strategy.exit("TP", "BUY", profit = pr)
    strategy.exit("TP", "SELL", profit = pr)
    
if (usl and not utp)
    strategy.exit("SL", "BUY", loss = sl)
    strategy.exit("SL", "SELL", loss = sl)
    
if (usl and utp)
    strategy.exit("TP/SL", "BUY", loss = sl, profit = pr)
    strategy.exit("TP/SL", "SELL", loss = sl, profit = pr)