अस्थिरता की प्रवृत्ति की निगरानी करने की रणनीति

लेखक:चाओझांग, दिनांकः 2024-02-18 10:07:29
टैगः

img

अवलोकन

यह रणनीति मूल्य रुझानों और ओवरबॉट/ओवरसोल्ड स्थितियों को निर्धारित करने के लिए वेवट्रेंड संकेतक का उपयोग करती है। यह संकेतों को फ़िल्टर करने के लिए आरएसआई संकेतक को जोड़ती है और ओवरबॉट/ओवरसोल्ड स्तरों पर काउंटर-ट्रेंड ऑपरेशन करने के लिए ट्रेंड ट्रैकिंग विधि को अपनाती है।

रणनीति तर्क

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

विशेष रूप से, रणनीति में वेवट्रेंड सूत्र हैः

esa = ema(hlc3, 10)
d = ema(abs(hlc3 - esa), 10) 
ci = (hlc3 - esa) / (0.015 * d)
wt = ema(ci, 21)

जहां esa गणना की गई हेकिन-अशी चलती औसत है, d हेकिन-अशी चलती औसत और मूल्य के पूर्ण मूल्य के बीच अंतर का औसत है। ci तथाकथित अनुकूलन सीमा है, जो कीमतों की अस्थिरता को दर्शाती है। wt ci का चलती औसत है, जो मूल्य प्रवृत्ति की दिशा निर्धारित करता है और लंबे और छोटे के लिए प्रमुख संकेतक है।

आरएसआई सूचक का उपयोग ओवरबॉट/ओवरसोल्ड स्थितियों को निर्धारित करने के लिए किया जाता है। कोड में आरएसआई गणना सूत्र हैः

rsiup = rma(max(change(close), 0), 14)
rsidown = rma(-min(change(close), 0), 14)
rsi = rsidown == 0 ? 100 : rsiup == 0 ? 0 : 100 - (100 / (1 + rsiup / rsidown)) 

इसका मानक मूल्य 0 से 100 है। 70 से ऊपर अधिक खरीदा जाता है और 30 से नीचे अधिक बेचा जाता है।

इन दो संकेतकों के साथ संयुक्त, जब आरएसआई 25 से नीचे है और वेवट्रेंड -60 से नीचे है, तो यह लंबे समय तक जाने के लिए ओवरसोल्ड है। जब आरएसआई 75 से ऊपर है और वेवट्रेंड 60 से ऊपर है, तो यह शॉर्ट जाने के लिए ओवरबॉट है।

लाभ विश्लेषण

इस रणनीति के लाभों में निम्नलिखित शामिल हैंः

  1. वेवट्रेंड सूचक मूल्य प्रवृत्ति दिशा को सटीक और विश्वसनीय रूप से निर्धारित कर सकता है।
  2. आरएसआई फिल्टर अनावश्यक ट्रेडों से बच सकते हैं और जीत दर में सुधार कर सकते हैं।
  3. रुझान ट्रैकिंग विधि मूल्य रुझानों को पकड़ने से अधिकतम लाभ प्राप्त कर सकती है।
  4. रणनीति का विचार सरल और स्पष्ट है, मापदंडों को विभिन्न उत्पादों और बाजारों के लिए समायोजित करने के लिए लचीला है।
  5. लाइव ट्रेडिंग में लागू करने और परीक्षण करने में आसान, आगे के अनुकूलन के लिए अच्छा है।

जोखिम विश्लेषण

कुछ जोखिम भी हैं:

  1. वेवट्रेंड और आरएसआई दोनों में कुछ विलंब है, मूल्य उलट बिंदुओं को याद कर सकते हैं।
  2. फ़िल्टर के बावजूद साइडवेज बाजारों में अभी भी झूठे संकेत हो सकते हैं।
  3. एकल हानि को नियंत्रित करने के लिए प्रभावी स्टॉप लॉस पद्धति की कमी।
  4. उचित पैरामीटर ट्यूनिंग को विशेषताओं और व्यापारिक आवृत्ति से मेल खाने की आवश्यकता है।

समाधान:

  1. संकेत की सटीकता में सुधार के लिए संयोजन अनुकूलन के लिए संकेतक जोड़ें।
  2. एकल हानि को नियंत्रित करने के लिए स्टॉप लॉस रणनीतियाँ जोड़ें।
  3. रणनीति को अनुकूलित करने के लिए इष्टतम पैरामीटर संयोजन खोजें।

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

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

  1. सिग्नल की सटीकता में सुधार के लिए निर्णय संकेतकों को बदलें या जोड़ें, जैसे कि एमएसीडी, केडी आदि।

  2. विभिन्न उत्पादों को अनुकूलित करने के लिए पैरामीटर सेटिंग्स को अनुकूलित करें, उदाहरण के लिए चिकनी अवधि को समायोजित करें।

  3. एकल हानि को नियंत्रित करने के लिए ट्रैकिंग स्टॉप लॉस रणनीतियों को जोड़ें, जैसे प्रतिशत स्टॉप लॉस, ट्रेलिंग स्टॉप लॉस आदि।

  4. विभिन्न पिरामिड रणनीतियों पर विचार करें, उदाहरण के लिए निश्चित मात्रा के बजाय मार्टिंगेल।

  5. निर्णय की सटीकता में सुधार के लिए अनुकूलन सीमा मापदंडों का अनुकूलन करें।

निष्कर्ष

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


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=2
strategy(title = "Noro's WaveTrender Strategy v1.0", shorttitle = "WaveTrender str 1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 10)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
usemar = input(false, defval = false, title = "Use Martingale")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %")
showarr = input(true, defval = true, title = "Show Arrows")
fromyear = input(2018, defval = 2018, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//RSI
rsiup = rma(max(change(close), 0), 14)
rsidown = rma(-min(change(close), 0), 14)
rsi = rsidown == 0 ? 100 : rsiup == 0 ? 0 : 100 - (100 / (1 + rsiup / rsidown))

//WaveTrend
esa = ema(hlc3, 10)
d = ema(abs(hlc3 - esa), 10)
ci = (hlc3 - esa) / (0.015 * d)
wt = ema(ci, 21)

//Body
body = abs(close - open)
abody = sma(body, 10)

//Signals
bar = close > open ? 1 : close < open ? -1 : 0
overs = rsi < 25 and wt < -60
overb = rsi > 75 and wt > 60
up1 = (strategy.position_size == 0 or close < strategy.position_avg_price) and overs and bar == -1
dn1 = (strategy.position_size == 0 or close > strategy.position_avg_price) and overb and bar == 1
exit = (strategy.position_size > 0 and overs == false) or (strategy.position_size < 0 and overb == false)

//Arrows
col = exit ? black : up1 or dn1 ? blue : na
needup = up1
needdn = dn1
needexitup = exit and strategy.position_size < 0
needexitdn = exit and strategy.position_size > 0
plotarrow(showarr and needup ? 1 : na, colorup = blue, colordown = blue, transp = 0)
plotarrow(showarr and needdn ? -1 : na, colorup = blue, colordown = blue, transp = 0)
plotarrow(showarr and needexitup ? 1 : na, colorup = black, colordown = black, transp = 0)
plotarrow(showarr and needexitdn ? -1 : na, colorup = black, colordown = black, transp = 0)

//Trading
profit = exit ? ((strategy.position_size > 0 and close > strategy.position_avg_price) or (strategy.position_size < 0 and close < strategy.position_avg_price)) ? 1 : -1 : profit[1]
mult = usemar ? exit ? profit == -1 ? mult[1] * 2 : 1 : mult[1] : 1
lot = strategy.position_size == 0 ? strategy.equity / close * capital / 100 * mult : lot[1]

if up1
    if strategy.position_size < 0
        strategy.close_all()
        
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot)

if dn1
    if strategy.position_size > 0
        strategy.close_all()
        
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot)
    
if exit
    strategy.close_all()

अधिक