इस रणनीति का मुख्य विचार अल्पकालिक व्यापार करते समय मध्यम से दीर्घकालिक रुझानों को पकड़ने के लिए, विभिन्न समय सीमाओं के सापेक्ष शक्ति सूचकांक (आरएसआई) और चलती औसत दोनों का उपयोग करके प्रवृत्ति उलट बिंदुओं की पहचान करना है। यह रणनीति व्यापार सफलता दर में सुधार करने के प्रयास में विभिन्न व्यापार संकेतों को जोड़ती है।
यह रणनीति विभिन्न अवधियों के रुझानों की पहचान करने के लिए विभिन्न तकनीकी संकेतकों और विभिन्न समय सीमाओं के चलती औसत से ब्रेकआउट संकेतों को जोड़ती है, जिससे विश्वसनीयता में सुधार होता है। आरएसआई ओवरबॉट / ओवरसोल्ड स्तरों की पहचान करता है, ईएमए अल्पकालिक प्रवृत्ति निर्धारित करता है, डब्ल्यूएमए मध्यमकालिक प्रवृत्ति निर्धारित करता है, जबकि सहायक चलती औसत के साथ मूल्य क्रॉसओवर प्रवृत्ति को सत्यापित करता है। कई संकेतों का संयोजन रणनीति प्रदर्शन को बढ़ाता है।
पैरामीटर अनुकूलन, सख्त स्टॉप लॉस रणनीति और प्रमुख रुझानों आदि पर विचार करके जोखिम को कम किया जा सकता है।
यह रणनीति ट्रेंड फॉलोइंग और एक्सट्रीम रिवर्स ट्रेडिंग विचारों को एकीकृत करती है, मल्टी-टाइमफ्रेम विश्लेषण और संश्लेषित संकेतकों को जोड़ती है, जिसका उद्देश्य ट्रेडिंग सफलता दर में सुधार करना है। कुंजी जोखिम को नियंत्रित करना, मापदंडों को अनुकूलित करना और प्रमुख रुझानों के प्रभावों पर विचार करना है। कुल मिलाकर यह मजबूत अनुकूलन क्षमता के साथ एक व्यावहारिक रणनीति है। रणनीति की गुणवत्ता में और सुधार के लिए अधिक उन्नत तकनीकों का उपयोग किया जा सकता है।
/*backtest start: 2023-09-15 00:00:00 end: 2023-10-15 00:00:00 period: 2h 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/ // © HamidBox //@version=4 // strategy("H-M By HamidBox-YT", default_qty_type=strategy.cash, default_qty_value= 100, initial_capital=100, currency='USD', commission_type=strategy.commission.percent, commission_value=0.1) ma(source, length, type) => type == "SMA" ? sma(source , length) : type == "EMA" ? ema(source , length) : type == "WMA" ? wma(source , length) : type == "VWMA" ? vwma(source , length) : na WMA(source, length, type) => type == "SMA" ? sma(source , length) : type == "EMA" ? ema(source , length) : type == "WMA" ? wma(source , length) : type == "VWMA" ? vwma(source , length) : na WithMA(source, length, type) => type == "SMA" ? sma(source , length) : type == "EMA" ? ema(source , length) : type == "WMA" ? wma(source , length) : type == "VWMA" ? vwma(source , length) : na rsi_inline = input(true , title="RSI Value)", inline="rsi") rsiLength = input(title="Length:", type=input.integer, defval=9, minval=1, inline="rsi") rsiLineM = input(title="Level:", type=input.integer, defval=50, minval=1, inline="rsi") rsi_OSOBinline = input(true , title="RSI)", inline="rsiosob") rsiLineU = input(title="O-BOUGHT", type=input.integer, defval=70, minval=1, inline="rsiosob") rsiLineD = input(title="O-SOLD", type=input.integer, defval=30, minval=1, inline="rsiosob") ma_inline = input(true , title="Price-MA)", inline="ma") ma_type = input(title="Type", defval="EMA", options=["EMA","SMA","WMA","VWMA"], inline="ma") emaLength = input(title="Length", type=input.integer, defval=3, inline="ma") wma_inline = input(true , title="Trending-MA)", inline="wma") ma_type2 = input(title="", defval="WMA", options=["EMA","SMA","WMA","VWMA"], inline="wma") wmaLength = input(title="Length", type=input.integer, defval=21, inline="wma") //////////////////////////////////////////////////////////////////////////////// startTime = input(title="Start Time", type = input.time, defval = timestamp("01 Jan 2021 00:00 +0000"), group="Backtest Time Period") endTime = input(title="End Time", type = input.time, defval = timestamp("01 Jan 2200 00:00 +0000"), group="Backtest Time Period") inDateRange = true //////////////////////////////////////////////////////////////////////////////// rsi = rsi(close , rsiLength) r = plot(rsi_inline ? rsi : na, color=color.yellow, linewidth=2) EMA = ma(rsi, emaLength, ma_type) e = plot(ma_inline ? EMA : na, color=color.lime) myWMA = ma(rsi, wmaLength, ma_type2) w = plot(wma_inline ? myWMA : na, color=color.white, linewidth=2) up = hline(rsiLineU, title='UP Level', linewidth=1, color=color.red, linestyle=hline.style_dotted) mid = hline(rsiLineM, title='Mid Level', linewidth=2, color=color.white, linestyle=hline.style_dotted) dn = hline(rsiLineD, title='DN Level', linewidth=1, color=color.green, linestyle=hline.style_dotted) col_e_w = EMA > myWMA ? color.new(color.green , 85) : color.new(color.red , 85) col_r_w = rsi > myWMA ? color.new(color.green , 85) : color.new(color.red , 85) fill(e , w, color=col_e_w) fill(r , w, color=col_r_w) //////////////////////////////////////////////////////////////////////////////// //Signals = input(true,group="👇 🚦 --- Backtesting Signals Type --- 🚦 ") /////////////////////////////////////////////////////////////////////////////// RSI_Cross = input(false, "RSI x Trending-MA", inline="wma_cross",group="👇 🚦 --- Backtesting Signals Type --- 🚦 ") // INPUT rsiBuySignal = crossover(rsi , myWMA) plotshape(RSI_Cross ? rsiBuySignal : na, title="RSI Crossover", style=shape.labelup, location=location.bottom, color=color.green) rsiSellSignal = crossunder(rsi , myWMA) plotshape(RSI_Cross ? rsiSellSignal : na, title="RSI Crossunder", style=shape.labeldown, location=location.top, color=color.red) if rsiBuySignal and RSI_Cross and inDateRange strategy.entry("RSIxWMA", strategy.long) if rsiSellSignal and RSI_Cross and inDateRange strategy.close("RSIxWMA", comment="x") if (not inDateRange) strategy.close_all() //////////////////////////////////////////////////////////////////////////////// MA_Cross = input(false, "MA x Trendin-MA",group="👇 🚦 --- Backtesting Signals Type --- 🚦 ") // INPUT maBuySignal = crossover(EMA, myWMA) plotshape(MA_Cross ? maBuySignal : na, title="MA Cross", style=shape.circle, location=location.bottom, color=color.lime) maSellSignal = crossunder(EMA , myWMA) plotshape(MA_Cross ? maSellSignal : na, title="RSI Crossunder", style=shape.circle, location=location.top, color=color.maroon) if maBuySignal and MA_Cross and inDateRange strategy.entry("MAxWMA", strategy.long) if maSellSignal and MA_Cross and inDateRange strategy.close("MAxWMA", comment="x") if (not inDateRange) strategy.close_all() //////////////////////////////////////////////////////////////////////////////// Mix = input(false, "RSI + EMA x Trending-MA",group="👇 🚦 --- Backtesting Signals Type --- 🚦 ") // INPUT rsi_ma_buy = crossover(rsi , myWMA) and crossover(EMA, myWMA) rsi_ma_sell = crossunder(rsi , myWMA) and crossunder(EMA, myWMA) plotshape(Mix ? rsi_ma_buy : na, title="RSI Crossunder", style=shape.circle, location=location.bottom, color=color.lime, size=size.tiny) plotshape(Mix ? rsi_ma_sell : na, title="RSI Crossunder", style=shape.circle, location=location.top, color=color.yellow, size=size.tiny) if rsi_ma_buy and Mix and inDateRange strategy.entry("RSI+EMA x WMA", strategy.long) if rsi_ma_sell and Mix and inDateRange strategy.close("RSI+EMA x WMA", comment="x") if (not inDateRange) strategy.close_all() //////////////////////////////////////////////////////////////////////////////// wma_cross = input(false, "Trending-MA x 50",group="👇 🚦 --- Backtesting Signals Type --- 🚦 ") // INPUT wma_buy = crossover(myWMA , rsiLineM) plotshape(wma_cross ? wma_buy : na, title="WMA Cross", style=shape.diamond, location=location.bottom, color=color.aqua) wma_sell = crossunder(myWMA , rsiLineM) plotshape(wma_cross ? wma_sell : na, title="WMA Cross", style=shape.diamond, location=location.top, color=color.aqua) if wma_buy and wma_cross and inDateRange strategy.entry("WMA x 50", strategy.long) if wma_sell and wma_cross and inDateRange strategy.close("WMA x 50", comment="x") if (not inDateRange) strategy.close_all() //////////////////////////////////////////////////////////////////////////////// rsi_50 = input(false, "RSI x 50",group="👇 🚦 --- Backtesting Signals Type --- 🚦 ") // INPUT rsi_50_buy = crossover(rsi , rsiLineM) plotshape(rsi_50 ? rsi_50_buy : na, title="WMA Cross", style=shape.cross, location=location.bottom, color=color.purple) rsi_50_sell = crossunder(rsi , rsiLineM) plotshape(rsi_50 ? rsi_50_sell : na, title="WMA Cross", style=shape.cross, location=location.top, color=color.purple) if rsi_50_buy and rsi_50 and inDateRange strategy.entry("RSI Cross 50", strategy.long) if rsi_50_sell and rsi_50 and inDateRange strategy.close("RSI Cross 50", comment="x") if (not inDateRange) strategy.close_all() //////////////////////////////////////////////////////////////////////////////// RSI_OS_OB = input(false, "RSI OS/OB x Trending-MA",group="👇 🚦 --- Backtesting Signals Type --- 🚦 ") // INPUT rsi_OB_buy = (rsi < rsiLineD or rsi[1] < rsiLineD[1] or rsi[2] < rsiLineD[2] or rsi[3] < rsiLineD[3] or rsi[4] < rsiLineD[4] or rsi[5] < rsiLineD[5]) and rsiBuySignal plotshape(RSI_OS_OB ? rsi_OB_buy : na, title="RSI OB + Cross", style=shape.circle, location=location.bottom, color=color.lime, size=size.tiny) rsi_OS_sell = (rsi > rsiLineU or rsi[1] > rsiLineU[1] or rsi[2] > rsiLineU[2] or rsi[3] > rsiLineU[3] or rsi[4] > rsiLineU[4] or rsi[5] > rsiLineU[5]) and maSellSignal plotshape(RSI_OS_OB ? rsi_OS_sell : na, title="RSI OS + Cross", style=shape.circle, location=location.top, color=color.red, size=size.tiny) if rsi_OB_buy and RSI_OS_OB and inDateRange strategy.entry("RSI-OBOS x WMA", strategy.long) if rsi_OS_sell and RSI_OS_OB and inDateRange strategy.close("RSI-OBOS x WMA", comment="x") if (not inDateRange) strategy.close_all() //////////////////////////////////////////////////////////////////////////////// rsi_OB_OS = input(false, "RSI Over Sold/Bought",group="👇 🚦 --- Backtesting Signals Type --- 🚦 ") // INPUT rsiBuy = crossover(rsi , rsiLineD) rsiSell = crossunder(rsi, rsiLineU) rsiExit = crossunder(rsi, rsiLineD) plotshape(rsi_OB_OS ? rsiBuy : na, title="RSI OB", style=shape.cross, location=location.bottom, color=color.purple) plotshape(rsi_OB_OS ? crossunder(rsi, rsiLineU) : na, title="RSI OS", style=shape.cross, location=location.top, color=color.purple) plotshape(rsi_OB_OS ? rsiExit : na, title="RSI OS", style=shape.cross, location=location.bottom, color=color.red) if rsiBuy and rsi_OB_OS and inDateRange strategy.entry("RSI OB", strategy.long) if (rsiSell or rsiExit) and rsi_OB_OS and inDateRange strategy.close("RSI OB", comment="x") if (not inDateRange) strategy.close_all() //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// With_MA_Vis = input(true , title="With MA Signal)", inline="WITH MA", group="With MA") withMA_type = input(title="", defval="SMA", options=["EMA","SMA","WMA","VWMA"], inline="WITH MA", group="With MA") with_MALen = input(title="", defval=9, type=input.integer, inline="WITH MA", group="With MA") // TAKE-PROFIT / STOP-LOSS Stop_Take_Vis = input(true, "TP-SL") LongSLValue = input(title="SL %", type=input.float, defval=3, minval=0.5) * 0.01 LongTPValue = input(title="TP %", type=input.float, defval=15, minval=0.5) * 0.01 LongSLDetermine = strategy.position_avg_price * (1 - LongSLValue) LongTPDetermine = strategy.position_avg_price * (1 + LongTPValue) ////////////////////////// with_ma = WithMA(close, with_MALen, withMA_type) Close_buy_MA = crossover(close , with_ma) Close_sell_MA = crossunder(close , with_ma) // PLOT OPTION WithMaSignal = input(true, "MA + RSI x Trending-MA",group="With MA") // INPUT // CONDITION IN VARIABLE withMA_RSI_BUY = (Close_buy_MA and rsiBuySignal) and WithMaSignal and inDateRange withMA_RSI_SELL = (Close_sell_MA and rsiSellSignal) and WithMaSignal and inDateRange // PLOT ING plotshape(WithMaSignal ? withMA_RSI_BUY : na, title="With MA", style=shape.diamond, location=location.bottom, color=color.aqua) plotshape(WithMaSignal ? withMA_RSI_SELL : na, title="With MA", style=shape.diamond, location=location.top, color=color.aqua) if withMA_RSI_BUY strategy.entry("MA + RSIxWMA", strategy.long) if withMA_RSI_SELL strategy.close("MA + RSIxWMA", comment="x") if (not inDateRange) strategy.close_all() // FOR SL - TP if (strategy.position_size > 0) and Stop_Take_Vis strategy.exit("BUY", stop=LongSLDetermine, limit=LongTPDetermine)