नोरो की बोलिंगर ट्रैकिंग रणनीति

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

img

अवलोकन

यह बोलिंगर बैंड्स पर आधारित गति ट्रैकिंग रणनीति है। यह बाजार के रुझानों और उलट बिंदुओं का न्याय करने के लिए बोलिंगर बैंड्स को जोड़ती है, और बाजार के उतार-चढ़ाव को ट्रैक करने के लिए लंबी और छोटी स्थिति निर्धारित करती है।

सिद्धांत

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

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

लाभ विश्लेषण

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

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

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

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

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

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

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

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

निष्कर्ष

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


/*backtest
start: 2023-11-20 00:00:00
end: 2023-11-27 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=3
strategy("Noro's Bollinger Strategy v1.3", shorttitle = "Bollinger str 1.3", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100.0, pyramiding = 5)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")

length = input(20, defval = 20, minval = 1, maxval = 1000, title = "Bollinger Length")
mult = input(2.0, defval = 2.0, minval = 0.001, maxval = 50, title = "Bollinger Mult")
source = input(ohlc4, defval = ohlc4, title = "Bollinger Source")

uset = input(true, defval = true, title = "Use trend entry")
usect = input(true, defval = true, title = "Use counter-trend entry")

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")
showbands = input(true, defval = true, title = "Show Bollinger Bands")

//Bollinger Bands
basis = sma(source, length)
dev = mult * stdev(source, length)
upper = basis + dev
lower = basis - dev

//Lines
col = showbands ? black : na 
plot(upper, linewidth = 1, color = col)
plot(basis, linewidth = 1, color = col)
plot(lower, linewidth = 1, color = col)

//Body
body = abs(close - open)
abody = ema(body, 30)

//Signals
bar = close > open ? 1 : close < open ? -1 : 0 
up1 = bar == -1 and ohlc4 >= basis and ohlc4 < upper and (close < strategy.position_avg_price or strategy.position_size == 0) and uset
dn1 = bar == 1 and ohlc4 <= basis and ohlc4 > lower and (close > strategy.position_avg_price or strategy.position_size == 0) and uset
up2 = close <= lower and usect
dn2 = close >= upper and usect
exit = ((strategy.position_size > 0 and close > open) or (strategy.position_size < 0 and close < open)) and body > abody / 2

//Trading
if up1 or up2
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))

if dn1 or dn2
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    
if time > timestamp(toyear, tomonth, today, 23, 59) or exit
    strategy.close_all()

अधिक