बहुआयामी चलती औसत बोलिंगर बैंड रणनीति

लेखक:चाओझांग, दिनांकः 2024-02-06 15:08:26
टैगः

img

अवलोकन

यह रणनीति अधिक व्यापारिक अवसरों की खोज के लिए इनपुट के रूप में विभिन्न प्रकार के चलती औसत के साथ बोलिंगर बैंड का निर्माण करती है। यह चुनने के लिए 12 प्रकार के चलती औसत प्रदान करती है, जिससे इष्टतम मापदंडों के लिए लचीले संयोजन की अनुमति मिलती है।

रणनीति तर्क

इस रणनीति का मूल उपयोगकर्ता इनपुट द्वारा चयनित चलती औसत प्रकारों का उपयोग करने में निहित है, जिसमें SMA, EMA, WMA, DEMA, TMA, VAR, WWMA, ZLEMA, TSF, HULL, TILL आदि शामिल हैं, कुल मिलाकर 12 हैं, जो ट्रेडिंग सिग्नल बनाने के लिए बोलिंगर बैंड के साथ संयुक्त हैं। बोलिंगर बैंड का मध्य बैंड चयनित चलती औसत को अपनाता है, जबकि ऊपरी और निचले बैंड मध्य बैंड से एक सकारात्मक / नकारात्मक मानक विचलन हैं। जब कीमत ऊपरी बैंड को तोड़ती है, तो कम बैंड को तोड़ती है। विभिन्न प्रकार के चलती औसत को जोड़कर, मापदंडों को अधिक स्थिर और सटीक ट्रेडिंग संकेतों के लिए अनुकूलित किया जा सकता है।

संहिता के मुख्य घटक निम्नलिखित हैंः

  1. एसएमए, ईएमए, डब्ल्यूएमए आदि सहित 12 प्रकार के चलती औसत के लिए गणना कार्य
  2. getMA फ़ंक्शन mav इनपुट पैरामीटर के आधार पर संबंधित चलती औसत लौटाता है.
  3. बोलिंगर बैंड के मध्य, ऊपरी और निचले बैंड की गणना। मध्य बैंड getMA फंक्शन से चलती औसत का उपयोग करता है।
  4. बोलिंगर बैंड की योजना बनाना।
  5. लंबे और छोटे संकेतों का उत्पादन करें. जब कीमत निचले बैंड से नीचे टूटती है, तो लंबे समय तक जाएं, जब कीमत ऊपरी बैंड से ऊपर टूटती है, तो शॉर्ट जाएं.

लाभ विश्लेषण

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

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

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

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

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

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

निष्कर्ष

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


/*backtest
start: 2023-01-30 00:00:00
end: 2023-10-13 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Bollinger Bands Strategy (MA type)", overlay=true)
src = input(close, title="Source")
length = input(20,step=10, minval=1)
mult = input(1,type=input.float, minval=0.001, maxval=50, title="StdDev")

length1=input(26, "Long Moving Average Length", minval=1)
length2=input(9, "Trigger Length", minval=1)
T3a1 = input(0.7, "TILLSON T3 Volume Factor", step=0.1)
////////////
mav = input(title="Moving Average Type", defval="VAR", options=["SMA", "EMA", "WMA", "DEMA", "TMA", "VAR", "WWMA", "ZLEMA", "TSF", "HULL", "TILL"])
Var_Func(src,length)=>
    valpha=2/(length+1)
    vud1=src>src[1] ? src-src[1] : 0
    vdd1=src<src[1] ? src[1]-src : 0
    vUD=sum(vud1,9)
    vDD=sum(vdd1,9)
    vCMO=nz((vUD-vDD)/(vUD+vDD))
    VAR=0.0
    VAR:=nz(valpha*abs(vCMO)*src)+(1-valpha*abs(vCMO))*nz(VAR[1])
VAR=Var_Func(src,length)
DEMA = ( 2 * ema(src,length)) - (ema(ema(src,length),length) )
Wwma_Func(src,length)=>
    wwalpha = 1/ length
    WWMA = 0.0
    WWMA := wwalpha*src + (1-wwalpha)*nz(WWMA[1])
WWMA=Wwma_Func(src,length)
Zlema_Func(src,length)=>
    zxLag = length/2==round(length/2) ? length/2 : (length - 1) / 2
    zxEMAData = (src + (src - src[zxLag]))
    ZLEMA = ema(zxEMAData, length)
ZLEMA=Zlema_Func(src,length)
Tsf_Func(src,length)=>
    lrc = linreg(src, length, 0)
    lrc1 = linreg(src,length,1)
    lrs = (lrc-lrc1)
    TSF = linreg(src, length, 0)+lrs
TSF=Tsf_Func(src,length)
HMA = wma(2 * wma(src, length / 2) - wma(src, length), round(sqrt(length)))
T3e1=ema(src, length)
T3e2=ema(T3e1,length)
T3e3=ema(T3e2,length)
T3e4=ema(T3e3,length)
T3e5=ema(T3e4,length)
T3e6=ema(T3e5,length)
T3c1=-T3a1*T3a1*T3a1
T3c2=3*T3a1*T3a1+3*T3a1*T3a1*T3a1
T3c3=-6*T3a1*T3a1-3*T3a1-3*T3a1*T3a1*T3a1
T3c4=1+3*T3a1+T3a1*T3a1*T3a1+3*T3a1*T3a1
T3=T3c1*T3e6+T3c2*T3e5+T3c3*T3e4+T3c4*T3e3


getMA(src, length) =>
    ma = 0.0
    if mav == "SMA"
        ma := sma(src, length)
        ma

    if mav == "EMA"
        ma := ema(src, length)
        ma

    if mav == "WMA"
        ma := wma(src, length)
        ma

    if mav == "DEMA"
        ma := DEMA
        ma

    if mav == "TMA"
        ma := sma(sma(src, ceil(length / 2)), floor(length / 2) + 1)
        ma

    if mav == "VAR"
        ma := VAR
        ma

    if mav == "WWMA"
        ma := WWMA
        ma

    if mav == "ZLEMA"
        ma := ZLEMA
        ma

    if mav == "TSF"
        ma := TSF
        ma

    if mav == "HULL"
        ma := HMA
        ma

    if mav == "TILL"
        ma := T3
        ma
    ma
    
//////////
basis = getMA(src, length)
dev = mult * stdev(src, length)
upper = basis + dev
lower = basis - dev
offset = input(0, "Offset",minval = -500, maxval = 500)
plot(basis, "Basis",color=#FF6D00, offset = offset)
p1 = plot(upper, "Upper", color=#2962FF, offset = offset)
p2 = plot(lower, "Lower", color=#2962FF, offset = offset)
fill(p1, p2, title = "Background", color=color.rgb(33, 150, 243, 95))
/////////
buyEntry = crossover(src, lower)
sellEntry = crossunder(src, upper)
if (crossover(src, lower))
	strategy.entry("BBandLE", strategy.long, stop=lower, oca_name="BollingerBands",  comment="BBandLE")
else
	strategy.cancel(id="BBandLE")
if (crossunder(src, upper))
	strategy.entry("BBandSE", strategy.short, stop=upper, oca_name="BollingerBands",  comment="BBandSE")
else
	strategy.cancel(id="BBandSE")
//plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)

अधिक