यह रणनीति व्यापार संकेतों के लिए मूल्य रुझानों और ओवरबॉट/ओवरसोल्ड स्तरों का आकलन करने के लिए चलती औसत, बोलिंगर बैंड और आरएसआई को जोड़ती है। यह सटीकता में सुधार के लिए कई संकेतकों की ताकत का दोहन करती है।
रणनीति तर्क:
मूल्य प्रवृत्ति निर्धारित करने के लिए चलती औसत और बोलिंगर बैंड की गणना करें।
ओवरबॉट/ओवरसोल्ड स्तरों की पहचान करने के लिए आरएसआई की गणना करें।
जब मूल्य बीबी निचले बैंड और आरएसआई तेजी से क्रॉसओवर से ऊपर टूटता है तो लंबा प्रवेश करें।
व्यापार प्रति हानि को नियंत्रित करने के लिए स्टॉप लॉस का प्रयोग करें।
लाभः
मल्टी-इंडिकेटर वेरिफिकेशन से खराब ट्रेडों में कमी आती है।
आरएसआई एमए की सीमाओं का पूरक है।
बीबी पलायन स्तरों की पहचान करता है।
जोखिमः
कई मापदंडों का अनुकूलन करने में समय लगता है।
आरएसआई और बीबी के बीच कुछ अतिरेक।
ब्रेकआउट विफलता और उलटफेर के लिए प्रवण हैं।
संक्षेप में, यह रणनीति ट्रेंड और रिवर्स ट्रेडिंग अवसरों दोनों की पहचान करने के लिए एमए, बीबी और आरएसआई को जोड़ती है। कई संकेतकों का उपयोग परिणामों में सुधार कर सकता है लेकिन पैरामीटर अनुकूलन और जोखिम नियंत्रण की आवश्यकता होती है।
/*backtest start: 2023-08-13 00:00:00 end: 2023-09-12 00:00:00 period: 30m basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © LucasVivien //@version=4 strategy("MA Bolinger Bands + RSI ", shorttitle="MABB + RSI", overlay=true) // User input source = input(title="Price source" , type=input.source , defval=close) RSIlen = input(title="RSI Length" , type=input.integer , defval=6 , group="RSI") RSIlvlOB = input(title="RSI Overbough" , type=input.integer , defval=50 , group="RSI") RSIlvlOS = input(title="RSI Oversold" , type=input.integer , defval=50 , group="RSI") RSIN = input(title="RSI Neutral" , type=input.integer , defval=50 , group="RSI") MAlen = input(title="MA Length" , type=input.integer , defval=200 , group="MABB") BBlen = input(title="BB Length" , type=input.integer , defval=200 , group="MABB") BBmult = input(title="BB multiplier" , type=input.float , defval=2.0 , group="MABB" , tooltip="Set BB closer / appart", minval=0.001, maxval=50) MAtype = input(title="MA type" , type=input.string , defval="SMA", group="MABB" , tooltip="MA type used in BB", options=["SMA", "EMA", "HMA"]) //SLmult = input(title="SL value" ,type=input.float , defval=0.06) // Used indicators RSI = rsi(source, RSIlen) MA = sma(source, MAlen) if MAtype == "EMA" MA := ema(source, MAlen) if MAtype == "HMA" MA := hma(source, MAlen) // Perform Calculations BBdev = BBmult * stdev(source, BBlen) BBupper = MA + BBdev BBlower = MA - BBdev longSL = close - close * 0.06 shortSL = close + close * 0.06 // Signals validation ([0] is trade displayed from strategy() on chart => long/short entry) BBbull = (open < BBlower) and (close > BBlower) BBbear = (open > BBupper) and (close < BBupper) RSIbull = crossover(RSI , RSIN) RSIbear = crossunder(RSI, RSIN) Longsignal = (BBbull) and (RSIbull or RSIbull[1] or RSIbull[2] or RSIbull[3] or RSIbull[4] or RSIbull[5] or RSIbull[6] or RSIbull[7] or RSIbull[8] or RSIbull[9] or RSIbull[10]) Shortsignal = (BBbear) and (RSIbear or RSIbear[1] or RSIbear[2] or RSIbear[3] or RSIbear[4] or RSIbear[5] or RSIbear[6] or RSIbear[7] or RSIbear[8] or RSIbear[9] or RSIbear[10]) // Save SL values var SLlongsaved = 0.0 var SLshortsaved = 0.0 if Longsignal and (strategy.position_size == -1) /////////////////////////////// SLlongsaved := longSL if Shortsignal and (strategy.position_size == 1) //////////////////////////////// SLshortsaved := shortSL // Plots //plotshape(Longsignal , size=size.small, color=color.teal) //plotshape(Shortsignal, size=size.small, color=color.fuchsia) plot(Longsignal ? longSL : na, color=color.red, style=plot.style_linebr, linewidth=6) plot(Shortsignal ? shortSL : na, color=color.red, style=plot.style_linebr, linewidth=6) p1 = plot(BBupper,title="Bollinger Bands Upper Line", color=color.gray, transp=60) p2 = plot(BBlower,title="Bollinger Bands Lower Line", color=color.gray, transp=60) plot(MA, title="Bollinger Bands MA Basis Line" , color=color.white, transp=50) fill(p1, p2, color=color.white, transp=92) // Strategy Entry & Exit //if Longsignal strategy.entry(id="Long entry", long=true, when=Longsignal) //, oca_name="x", oca_type=strategy.oca.cancel) //if Shortsignal strategy.entry(id="Short entry", long=false, when=Shortsignal) //, oca_name="x", oca_type=strategy.oca.cancel) strategy.close(id="Long exit", when=strategy.position_size > 0)//, from_entry="Long entry" //, when=strategy.position_size > 0 // , stop=SLlongsaved) strategy.close(id="Short Exit", when=strategy.position_size < 0)//, from_entry="Short entry" //, when=strategy.position_size < 0 //, stop=SLshortsaved) plot(strategy.position_size) //////////////////////////////////////////////