Strategi Pengesanan Volatiliti Stop

Penulis:ChaoZhang, Tarikh: 2023-12-01 17:53:36
Tag:

img

Ringkasan

Ini adalah strategi rintangan stop loss berdasarkan turun naik harga. Ia menggunakan Julat Benar Purata (ATR) untuk menetapkan garis stop loss untuk turun naik harga. ATR mencerminkan turun naik dan tahap risiko harga. Apabila harga melebihi garis stop loss, strategi menilai pembalikan trend dan mengambil tindakan yang sesuai untuk membuka kedudukan atau menghentikan kerugian.

Prinsip Strategi

Strategi ini mula-mula mengira Julat Benar Purata (ATR) dalam tempoh tertentu. Kemudian berdasarkan arah trend harga semasa, jika ia adalah trend menaik, garis stop loss ditetapkan pada harga tertinggi semasa dikurangkan n kali ATR; jika ia adalah downtrend, garis stop loss ditetapkan pada harga terendah semasa ditambah n kali ATR. Nilai n boleh diselaraskan melalui parameter untuk mengawal jarak antara garis stop loss dan harga.

Apabila harga menembusi garis stop loss trend menaik atau menurun, trendnya dianggap telah berubah. Pada ketika ini, strategi membersihkan kedudukan untuk stop loss dan menetapkan garis stop loss baru berdasarkan arah trend baru.

Ringkasnya, strategi menggunakan turun naik harga untuk menetapkan garis stop loss untuk mencapai penilaian yang tepat mengenai perubahan trend.

Kelebihan Strategi

  • Menggunakan ciri-ciri turun naik harga untuk menilai trend dan dengan tepat memahami titik perubahan harga
  • Hentikan kerugian tepat pada masanya dan tukar kedudukan untuk mengurangkan risiko pembalikan pasaran
  • Penyesuaian parameter yang fleksibel untuk mengawal jarak antara garisan stop loss dan turun naik harga
  • Parameter boleh dioptimumkan untuk produk tertentu untuk kebolehsesuaian yang lebih baik

Risiko Strategi

  • Risiko penilaian yang salah disebabkan oleh penembusan yang tidak sah. Harga mungkin mempunyai penembusan yang tidak sah yang tidak dapat dikekalkan, menyebabkan penilaian yang salah mengenai perubahan trend
  • Tetapan parameter yang terlalu agresif boleh meningkatkan kerugian. Sebagai contoh, apabila nilai n terlalu besar, garis stop loss terlalu dekat dan turun naik kecil boleh mencetuskan
  • Kesan stop loss mungkin lemah untuk produk turun naik rendah seperti mata wang. Nilai ATR yang lebih kecil bermakna garis stop loss lebih dekat dengan harga

Arahan pengoptimuman

  • Penunjuk tambahan seperti jumlah dagangan atau percepatan turun naik boleh diperkenalkan untuk mengelakkan pertimbangan yang salah mengenai pecah yang tidak sah
  • Penyesuaian nilai n berdasarkan ciri-ciri produk yang berbeza untuk menjadikan jarak stop loss yang lebih sesuai
  • Tempoh ATR juga boleh dioptimumkan untuk memilih parameter tempoh yang paling sesuai untuk menilai turun naik jurang harga

Ringkasan

Secara keseluruhan, ini adalah pelaksanaan algoritma yang baik untuk menetapkan garis stop loss berdasarkan turun naik harga. Keakuratan dalam menilai trend harga adalah tinggi dan ia boleh menangkap titik perubahan utama trend. Ia juga menyediakan beberapa ruang untuk penyesuaian parameter untuk fleksibiliti yang lebih baik. Sebagai strategi stop loss, ia dapat dengan berkesan mengelakkan risiko pembalikan pasaran dan bernilai digunakan dalam perdagangan langsung.


/*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)

Lebih lanjut