गतिशील चलती औसत ट्रैकिंग रणनीति

लेखक:चाओझांग, दिनांक: 2023-11-24 16:59:25
टैगः

img

अवलोकन

इस रणनीति का मुख्य विचार ट्रेंड ट्रैकिंग के लिए गतिशील चलती औसत का उपयोग करना है, स्टॉप लॉस सेट करना और लाभ लेना है, और लंबी / छोटी सिग्नल निर्णय के लिए हेकिन आशी कैंडलस्टिक तकनीकों को जोड़ना है। एटीआर संकेतक का उपयोग गतिशील चलती औसत और स्टॉप लॉस स्थिति की गणना करने के लिए किया जाता है।

सिद्धांत

रणनीति पहले एटीआर संकेतक की गणना करती है, फिर गतिशील चलती औसत की गणना करने के लिए इनपुट मूल्य स्रोत और मापदंडों को जोड़ती है। जब मूल्य गतिशील चलती औसत से ऊपर / नीचे पार करता है तो लंबे / छोटे संकेत उत्पन्न होते हैं। इस बीच, स्टॉप लॉस और ले लाभ की स्थिति वास्तविक समय में मूल्य परिवर्तनों को ट्रैक करने के लिए सेट की जाती है।

विशेष रूप से, एटीआर संकेतक और पैरामीटर nLoss की गणना पहले की जाती है। फिर स्टॉप लॉस लाइन को अपडेट करने के लिए वर्तमान अवधि की कीमत और पिछली अवधि की स्टॉप लॉस स्थिति की तुलना की जाती है। जब कीमत पिछली अवधि की स्टॉप लॉस लाइन से टूटती है, तो लंबे / छोटे संकेत पॉस और संबंधित रंग उत्पन्न होते हैं। जब ट्रेडिंग सिग्नल ट्रिगर किए जाते हैं, तो तीर चिह्नों को प्लॉट किया जाता है। अंत में स्टॉप लॉस / टेक प्रॉफिट लॉजिक के आधार पर पदों को बंद कर दिया जाता है।

लाभ विश्लेषण

इस रणनीति का सबसे बड़ा लाभ वास्तविक समय में मूल्य परिवर्तनों को ट्रैक करने के लिए गतिशील चलती औसत का उपयोग है। यह पारंपरिक निश्चित चलती औसत की तुलना में बेहतर रुझानों को पकड़ता है और स्टॉप लॉस की संभावनाओं को कम करता है। इसके अलावा, एटीआर आधारित स्टॉप लॉस को जोड़ने से जोखिमों को प्रभावी ढंग से नियंत्रित करने के लिए बाजार की अस्थिरता के आधार पर स्टॉप लॉस स्थिति के लचीले समायोजन की अनुमति मिलती है।

जोखिम और समाधान

इस रणनीति का मुख्य जोखिम यह है कि मूल्य में काफी अंतर हो सकता है, जिससे स्टॉप लॉस पर गलत संकेत मिलते हैं। इसके अलावा, अनुचित शर्त सेटिंग्स से अत्यधिक बार-बार व्यापार हो सकता है।

समाधानों में चलती औसत अवधि को अनुकूलित करना, एटीआर और स्टॉप लॉस गुणांक को गलत संकेतों की कम संभावना के लिए समायोजित करना शामिल है। अत्यधिक घने ट्रेडों से बचने के लिए अतिरिक्त फ़िल्टर जोड़े जा सकते हैं।

अनुकूलन दिशाएँ

इस रणनीति को निम्नलिखित पहलुओं में अनुकूलित किया जा सकता हैः

  1. इष्टतम पैरामीटर संयोजन खोजने के लिए चलती औसत के विभिन्न प्रकार और अवधि का परीक्षण करें

  2. स्टॉप लॉस संवेदनशीलता को संतुलित करने के लिए एटीआर अवधि पैरामीटर को अनुकूलित करें

  3. सिग्नल की गुणवत्ता में सुधार के लिए अतिरिक्त फ़िल्टर और संकेतक जोड़ें

  4. जोखिम लाभ अनुपात को अनुकूलित करने के लिए स्टॉप लॉस/टेक प्रॉफिट मूल्यों को समायोजित करें

निष्कर्ष

इस रणनीति का मुख्य विचार वास्तविक समय में मूल्य परिवर्तनों को ट्रैक करने के लिए गतिशील चलती औसत का उपयोग करना है, गतिशील रूप से स्टॉप लॉस पदों को सेट करने के लिए एटीआर संकेतक का उपयोग करना, रुझानों को ट्रैक करते हुए जोखिम को सख्ती से नियंत्रित करना। पैरामीटर अनुकूलन और नियम परिष्करण के माध्यम से, इस रणनीति को एक अत्यधिक व्यावहारिक मात्रात्मक प्रणाली में ट्यून किया जा सकता है।


/*backtest
start: 2022-11-23 00:00:00
end: 2023-11-05 05:20:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"BTC_USDT","stocks":0}]
*/

//@version=5
strategy(title='UT Bot v5', overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
//CREDITS to HPotter for the orginal code. The guy trying to sell this as his own is a scammer lol. 
//Edited and converted to @version=5 by SeaSide420 for Paperina
// Inputs
AllowBuy = input(defval=true, title='Allow Buy?')
AllowSell = input(defval=false, title='Allow Sell?')
h = input(false, title='Signals from Heikin Ashi Candles')
//revclose = input(defval=true, title='Close when reverse signal?')
Price = input(defval=open, title='Price Source (recommended OPEN to avoid repainting)')
smoothing = input.string(title="Moving Average Type", defval="HMA", options=["SMA", "EMA", "WMA", "HMA"])
MA_Period = input(2, title='This changes the MAPeriod')
a = input.float(1, title='This changes the sensitivity',step=0.1)
c = input(11, title='ATR Period')
TakeProfit = input.int(defval=50000, title='Take Profit ($)', minval=1)
StopLoss = input.int(defval=50000, title='Stop Loss ($)', minval=1)
xATR = ta.atr(c)
nLoss = a * xATR
src = h ? request.security(ticker.heikinashi(syminfo.tickerid), timeframe.period, Price, lookahead=barmerge.lookahead_off) : Price
xATRTrailingStop = 0.0
iff_1 = src > nz(xATRTrailingStop[1], 0) ? src - nLoss : src + nLoss
iff_2 = src < nz(xATRTrailingStop[1], 0) and src[1] < nz(xATRTrailingStop[1], 0) ? math.min(nz(xATRTrailingStop[1]), src + nLoss) : iff_1
xATRTrailingStop := src > nz(xATRTrailingStop[1], 0) and src[1] > nz(xATRTrailingStop[1], 0) ? math.max(nz(xATRTrailingStop[1]), src - nLoss) : iff_2
pos = 0
iff_3 = src[1] > nz(xATRTrailingStop[1], 0) and src < nz(xATRTrailingStop[1], 0) ? -1 : nz(pos[1], 0)
pos := src[1] < nz(xATRTrailingStop[1], 0) and src > nz(xATRTrailingStop[1], 0) ? 1 : iff_3
xcolor = pos == -1 ? color.red : pos == 1 ? color.green : color.blue
ma_function(src, MA_Period) =>
    switch smoothing
        "SMA" => ta.sma(src, MA_Period)
        "EMA" => ta.ema(src, MA_Period)
        "WMA" => ta.wma(src, MA_Period)
        => ta.hma(src, MA_Period)
thema = ma_function(src, MA_Period)
above = ta.crossover(thema, xATRTrailingStop)
below = ta.crossover(xATRTrailingStop, thema)
buy = src > xATRTrailingStop and above
sell = src < xATRTrailingStop and below
barbuy = src > xATRTrailingStop
barsell = src < xATRTrailingStop
plot(thema,title="The M.A.",color=color.green,linewidth=2)
plot(xATRTrailingStop,title="The M.A.",color=color.red,linewidth=2)
plotshape(buy,  title = "Buy",  text = "Buy",  style = shape.labelup,   location = location.belowbar, color= color.green, textcolor = color.white, size = size.tiny)
plotshape(sell, title = "Sell", text = "Sell", style = shape.labeldown, location = location.abovebar, color= color.red,   textcolor = color.white, size = size.tiny)
barcolor(barbuy ? color.green : na)
barcolor(barsell ? color.red : na)
strategy.close_all(when=strategy.openprofit>TakeProfit,alert_message="Close- TakeProfit", comment = "TP")
strategy.close_all(when=strategy.openprofit<StopLoss-(StopLoss*2),alert_message="Close- StopLoss", comment = "SL")
strategy.close("buy", when =  sell and AllowSell==false , comment = "close buy")
strategy.close("sell", when =  buy and AllowBuy==false, comment = "close sell")
strategy.entry("buy", strategy.long, when = buy and AllowBuy)
strategy.entry("sell", strategy.short, when = sell and AllowSell)

अधिक