ज़िगज़ैग आधारित प्रवृत्ति रणनीति का अनुसरण करना

लेखक:चाओझांग, दिनांकः 2023-10-30 14:51:08
टैगः

img

अवलोकन

यह रणनीति प्रवृत्ति की दिशा निर्धारित करने के लिए ZigZag संकेतक का उपयोग करती है और एक बार पुष्टि होने के बाद प्रवृत्ति का अनुसरण करती है। यह प्रवृत्ति के बाद की रणनीति से संबंधित है।

रणनीति तर्क

रणनीति मुख्य रूप से मूल्य प्रवृत्ति दिशा निर्धारित करने के लिए ZigZag संकेतक का उपयोग करती है। ZigZag बाजार शोर को फ़िल्टर कर सकता है और मूल्य उतार-चढ़ाव की प्रमुख दिशाओं की पहचान कर सकता है। यह व्यापार संकेत उत्पन्न करता है जब कीमतें नए उच्च या निम्न स्तर तक पहुंचती हैं।

विशेष रूप से, रणनीति पहले ज़िगज़ैग मूल्यों की गणना करती है। जब कीमतें एक उच्च उच्च तक पहुंचती हैं, तो ज़िगज़ैग मूल्य उच्च मूल्य बन जाता है। जब कीमतें एक निम्न निम्न तक पहुंचती हैं, तो ज़िगज़ैग मूल्य कम मूल्य बन जाता है। इस प्रकार, ज़िगज़ैग स्पष्ट रूप से मुख्य मूल्य उतार-चढ़ाव की दिशा को प्रतिबिंबित कर सकता है।

रणनीति ZigZag मूल्यों के आधार पर प्रवृत्ति दिशा निर्धारित करती है। जब ZigZag बढ़ता है, तो यह एक ऊपर की प्रवृत्ति को इंगित करता है। जब ZigZag गिरता है, तो यह एक नीचे की प्रवृत्ति को इंगित करता है। जब ZigZag प्रवृत्ति की दिशा का पालन करने के लिए मुड़ता है तो रणनीति पद खोलती है।

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

लाभ विश्लेषण

  • ZigZag प्रभावी रूप से बाजार शोर को फ़िल्टर कर सकता है और प्रमुख प्रवृत्ति दिशा को सटीक रूप से निर्धारित कर सकता है।
  • ज़िगज़ैग मोड़ का समय सटीक है, जिससे प्रवेश के लिए इष्टतम अवसर मिलते हैं।
  • यह अन्य जटिल संकेतकों या मॉडलों के बिना रणनीति का पालन करते हुए एक शुद्ध प्रवृत्ति को लागू करता है।
  • तर्क सरल और स्पष्ट है, समझने और संशोधित करने में आसान है।
  • ट्रेडिंग आवृत्ति को पैरामीटर ट्यूनिंग के माध्यम से स्वतंत्र रूप से नियंत्रित किया जा सकता है।

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

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

जोखिमों को निम्न द्वारा कम किया जा सकता हैः

  • रुझान उलटने के जोखिमों का पता लगाने के लिए अन्य संकेतकों का संयोजन करना।
  • होल्डिंग अवधि को छोटा करना, समय पर स्टॉप लॉस करना।
  • एकल हानि के आकार को सीमित करने के लिए जोखिम प्रबंधन जोड़ना।
  • मज़बूती में सुधार के लिए मशीन लर्निंग मॉडल जोड़ना।

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

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

  1. एकल हानि जोखिम को नियंत्रित करने के लिए स्टॉप लॉस जोड़ें, जैसे कि ट्रेलिंग स्टॉप या स्टॉप लिमिट ऑर्डर।

  2. ट्रेंड रिवर्स डिटेक्शन मैकेनिज्म जोड़ें, जैसे एमएसीडी, मूविंग एवरेज। रिवर्स का पता चलने पर पोजीशन बंद करें।

  3. प्रवृत्ति जारी रहने पर पिरामिड की स्थिति जोड़ें।

  4. ट्रेंड डिटेक्शन में सहायता के लिए LSTM जैसे मशीन लर्निंग मॉडल जोड़ें।

  5. ड्रॉडाउन या सहसंबंध सिद्धांतों के आधार पर पूंजी प्रबंधन को अनुकूलित करना।

  6. बैकटेस्टिंग और संदर्भ विशेषज्ञता द्वारा ज़िगज़ैग अवधि जैसे मापदंडों को व्यापक रूप से अनुकूलित करें।

सारांश

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


/*backtest
start: 2022-10-23 00:00:00
end: 2023-04-14 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

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

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(false, defval = false, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %")
tf = input('W', title='Timeframe for ZigZag')
showzz = input(false, defval = false, title = "Show ZigZag")
showbg = input(false, defval = false, title = "Show Background")
fromyear = input(1900, defval = 1900, 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")

//ZigZag
zigzag() =>
    _isUp = close >= open
    _isDown = close <= open
    _direction = _isUp[1] and _isDown ? -1 : _isDown[1] and _isUp ? 1 : nz(_direction[1])
    _zigzag = _isUp[1] and _isDown and _direction[1] != -1 ? highest(2) : _isDown[1] and _isUp and _direction[1] != 1 ? lowest(2) : na
useAltTF = true
zz = useAltTF ? (change(time(tf)) != 0 ? request.security(syminfo.tickerid, tf, zigzag()) : na) : zigzag()
zzcolor = showzz ? black : na
plot(zz, title = 'ZigZag', color = zzcolor, linewidth = 2)

//Levels
dot = zz > 0 ? zz : dot[1]
uplevel = dot > dot[1] ? dot : uplevel[1]
dnlevel = dot < dot[1] ? dot : dnlevel[1]
colorup = close[1] < uplevel[1] and uplevel == uplevel[1] ? lime : na
colordn = close[1] > dnlevel[1] and dnlevel == dnlevel[1] ? red : na
plot(uplevel, color = colorup, linewidth = 3)
plot(dnlevel, color = colordn, linewidth = 3)

//Background
size = strategy.position_size
bgcol = showbg == false ? na : size != size[1] ? blue : na
bgcolor(bgcol, transp = 50)

//Trading
lot = strategy.position_size != strategy.position_size[1] ? strategy.equity / close * capital / 100 : lot[1]

if uplevel > 0 and dnlevel > 0
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, stop = uplevel + syminfo.mintick)
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, stop = dnlevel - syminfo.mintick)

if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()

अधिक