
यह रणनीति आरएसआई और टी 3 सूचकांक का उपयोग करके रुझान का आकलन करने, एटीआर सूचकांक के साथ मिलकर स्टॉप-लॉस लाइन सेट करने और पीमैक्स को तोड़ने के लिए अनुकूलित करने के लिए एक मात्रात्मक व्यापारिक रणनीति है। इसका मुख्य विचार ट्रेंड आकलन और स्टॉप-लॉस सेटिंग्स पर अनुकूलन करना है ताकि जोखिम को नियंत्रित करने के साथ-साथ लाभप्रदता को बढ़ाया जा सके।
RSI और T3 संकेतकों की गणना करें और रुझान निर्धारित करें
एटीआर संकेतक के अनुसार पीमैक्स समायोज्य स्टॉप-लॉस लाइन सेट करें
ब्रेक-इन और ब्रेक-आउट
इस रणनीति के मुख्य फायदे हैंः
इस रणनीति में मुख्य रूप से निम्नलिखित जोखिम हैं:
जब कीमतों में अल्पकालिक पलटाव होता है, तो यह नुकसान पैदा करने के लिए रोक को ट्रिगर करने का कारण बन सकता है। पलटाव के प्रभाव को कम करने के लिए रोक सीमा को उचित रूप से ढीला किया जा सकता है।
आरएसआई और टी 3 संकेतक ट्रेंड का आकलन करने के लिए 100% विश्वसनीय नहीं हैं, और जब गलत आकलन किया जाता है तो नुकसान हो सकता है। पैरामीटर को उचित रूप से समायोजित किया जा सकता है या अन्य संकेतकों को अनुकूलित करने के लिए जोड़ा जा सकता है।
इस रणनीति को और अधिक अनुकूलित किया जा सकता हैः
इस रणनीति में RSI, T3 और ATR के तीन संकेतकों का उपयोग करने के लाभों को एकीकृत किया गया है, जिससे प्रवृत्ति निर्णय और जोखिम नियंत्रण का एक जैविक संयोजन प्राप्त होता है। एकल सूचक की तुलना में, इस संयोजन में उच्च निर्णय सटीकता, अच्छी तरह से नियंत्रित वापसी की विशेषता है, जो एक विश्वसनीय प्रवृत्ति ट्रैकिंग रणनीति है। पैरामीटर और जोखिम नियंत्रण के मामले में अनुकूलन के लिए जगह है, और कुल मिलाकर एक अनुशंसित मात्रात्मक व्यापार रणनीति है।
/*backtest
start: 2023-11-14 00:00:00
end: 2023-11-21 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © KivancOzbilgic
//developer: @KivancOzbilgic
//author: @KivancOzbilgic
strategy("PMax on Rsi w T3 Strategy","PmR3St.", overlay=false, precision=2)
src = input(hl2, title="Source")
Multiplier = input(title="ATR Multiplier", type=input.float, step=0.1, defval=3)
length =input(8, "Tillson T3 Length", minval=1)
T3a1 = input(0.7, "TILLSON T3 Volume Factor", step=0.1)
Periods = input(10,title="ATR Length", type=input.integer)
rsilength = input(14, minval=1, title="RSI Length")
showrsi = input(title="Show RSI?", type=input.bool, defval=true)
showsupport = input(title="Show Moving Average?", type=input.bool, defval=true)
showsignalsk = input(title="Show Crossing Signals?", type=input.bool, defval=true)
highlighting = input(title="Highlighter On/Off ?", type=input.bool, defval=true)
i = close>=close[1] ? close-close[1] : 0
i2 = close<close[1] ? close[1]-close : 0
Wwma_Func(src,rsilength)=>
wwalpha = 1/ rsilength
WWMA = 0.0
WWMA := wwalpha*src + (1-wwalpha)*nz(WWMA[1])
WWMA=Wwma_Func(src,rsilength)
AvUp = Wwma_Func(i,rsilength)
AvDown = Wwma_Func(i2,rsilength)
AvgUp = sma(i,rsilength)
AvgDown =sma(i2,rsilength)
k1 = high>close[1] ? high-close[1] : 0
k2 = high<close[1] ? close[1]-high : 0
k3 = low>close[1] ? low-close[1] : 0
k4 = low<close[1] ? close[1]-low : 0
AvgUpH=(AvgUp*(rsilength-1)+ k1)/rsilength
AvgDownH=(AvgDown*(rsilength-1)+ k2)/rsilength
AvgUpL=(AvgUp*(rsilength-1)+ k3)/rsilength
AvgDownL=(AvgDown*(rsilength-1)+ k4)/rsilength
rs = AvUp/AvDown
rsi= rs==-1 ? 0 : (100-(100/(1+rs)))
rsh=AvgUpH/AvgDownH
rsih= rsh==-1 ? 0 : (100-(100/(1+rsh)))
rsl=AvgUpL/AvgDownL
rsil= rsl==-1 ? 0 : (100-(100/(1+rsl)))
TR=max(rsih-rsil,abs(rsih-rsi[1]),abs(rsil-rsi[1]))
atr=sma(TR,Periods)
plot(showrsi ? rsi : na, "RSI", color=#8E1599)
band1 = hline(70, "Upper Band", color=#C0C0C0)
band0 = hline(30, "Lower Band", color=#C0C0C0)
fill(band1, band0, color=#9915FF, transp=90, title="Background")
T3e1=ema(rsi, 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
MAvg=T3
Pmax_Func(rsi,length)=>
longStop = MAvg - Multiplier*atr
longStopPrev = nz(longStop[1], longStop)
longStop := MAvg > longStopPrev ? max(longStop, longStopPrev) : longStop
shortStop = MAvg + Multiplier*atr
shortStopPrev = nz(shortStop[1], shortStop)
shortStop := MAvg < shortStopPrev ? min(shortStop, shortStopPrev) : shortStop
dir = 1
dir := nz(dir[1], dir)
dir := dir == -1 and MAvg > shortStopPrev ? 1 : dir == 1 and MAvg < longStopPrev ? -1 : dir
PMax = dir==1 ? longStop: shortStop
PMax=Pmax_Func(rsi,length)
plot(showsupport ? MAvg : na, color=color.black, linewidth=2, title="T3")
pALL=plot(PMax, color=color.red, linewidth=2, title="PMax", transp=0)
alertcondition(cross(MAvg, PMax), title="Cross Alert", message="PMax - Moving Avg Crossing!")
alertcondition(crossover(MAvg, PMax), title="Crossover Alarm", message="Moving Avg BUY SIGNAL!")
alertcondition(crossunder(MAvg, PMax), title="Crossunder Alarm", message="Moving Avg SELL SIGNAL!")
alertcondition(cross(src, PMax), title="Price Cross Alert", message="PMax - Price Crossing!")
alertcondition(crossover(src, PMax), title="Price Crossover Alarm", message="PRICE OVER PMax - BUY SIGNAL!")
alertcondition(crossunder(src, PMax), title="Price Crossunder Alarm", message="PRICE UNDER PMax - SELL SIGNAL!")
buySignalk = crossover(MAvg, PMax)
plotshape(buySignalk and showsignalsk ? PMax*0.995 : na, title="Buy", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.green, textcolor=color.white, transp=0)
sellSignallk = crossunder(MAvg, PMax)
plotshape(sellSignallk and showsignalsk ? PMax*1.005 : na, title="Sell", text="Sell", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.red, textcolor=color.white, transp=0)
mPlot = plot(rsi, title="", style=plot.style_circles, linewidth=0,display=display.none)
longFillColor = highlighting ? (MAvg>PMax ? color.green : na) : na
shortFillColor = highlighting ? (MAvg<PMax ? color.red : na) : na
fill(mPlot, pALL, title="UpTrend Highligter", color=longFillColor)
fill(mPlot, pALL, title="DownTrend Highligter", color=shortFillColor)
dummy0 = input(true, title = "=Backtest Inputs=")
FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromYear = input(defval = 2005, title = "From Year", minval = 2005)
ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToYear = input(defval = 9999, title = "To Year", minval = 2006)
Start = timestamp(FromYear, FromMonth, FromDay, 00, 00)
Finish = timestamp(ToYear, ToMonth, ToDay, 23, 59)
Timerange() =>
time >= Start and time <= Finish ? true : false
if buySignalk
strategy.entry("Long", strategy.long,when=Timerange())
if sellSignallk
strategy.entry("Short", strategy.short,when=Timerange())