
इस रणनीति का मुख्य विचार विभिन्न चक्रों के Ratio OCHL Averager सूचक का उपयोग करके कई औसत रेखाओं का निर्माण करना है, जो औसत रेखाओं के क्रॉस-आकार के आधार पर एक खरीद और बिक्री संकेत उत्पन्न करता है। यह गतिशील रूप से मूल्य रुझानों को पकड़ने में सक्षम है, जो मध्यम और अल्पकालिक व्यापार के लिए उपयुक्त है।
इस रणनीति में दो अलग-अलग चक्रों के Ratio OCHL Averager सूचक का उपयोग किया गया है, जो क्रमशः एक तेज और धीमी रेखा के रूप में कार्य करता है। Ratio OCHL Averager सूचक के लिए गणना सूत्र निम्नानुसार हैः
b = abs(close-open)/(high - low)
c = min(max(b, 0), 1)
Ratio OCHL Averager = c*close + (1-c)*前一日Ratio OCHL Averager
जहां b उस दिन की कीमतों में उतार-चढ़ाव का अनुपात है, और c मानकीकृत उपचार के बाद b का मूल्य है। Ratio OCHL Averager सूचक चार कीमतों को जोड़कर औसत बनाता है, जो कि खोलने की कीमत, बंद करने की कीमत, उच्चतम और निम्नतम है।
इस रणनीति में, शॉर्ट-लाइन और लॉन्ग-लाइन का चक्र छोटा होता है। जब शॉर्ट-लाइन धीमी लाइन को पार करती है, तो एक खरीद संकेत उत्पन्न होता है, और जब शॉर्ट-लाइन धीमी लाइन को पार करती है, तो एक बेचने का संकेत उत्पन्न होता है। प्रवृत्ति को कैप्चर करने के लिए समानांतर क्रॉसिंग सिद्धांत का उपयोग करें।
Ratio OCHL Averager सूचक मूल्य डेटा को चिकना करने में सक्षम है, बाजार के शोर को प्रभावी ढंग से फ़िल्टर करता है, जिससे ट्रेडिंग सिग्नल अधिक विश्वसनीय होते हैं।
द्वि-समान रेखाओं के क्रॉसिंग के विभिन्न चक्रों के साथ प्रवृत्ति की दिशा का निर्धारण करने के लिए, नए रुझानों की शुरुआत का बेहतर निर्धारण किया जा सकता है।
विभिन्न बाजार स्थितियों के लिए अनुकूलित किया जा सकता है, जो तेज और धीमी रेखाओं के आवधिक मापदंडों को समायोजित करता है
इस तरह की रणनीतियों को सरल, सहज और समझने में आसान बनाया गया है।
स्टॉप लॉस स्टॉप मानदंडों को लचीला बनाने और जोखिम को नियंत्रित करने के लिए।
समानांतर क्रॉसिंग रणनीतियाँ अधिक झूठे सिग्नल उत्पन्न कर सकती हैं और अन्य तकनीकी संकेतकों के संयोजन में फ़िल्टरिंग की आवश्यकता होती है।
एक तर्कसंगत चयन की आवश्यकता होती है कि क्या एक त्वरित और धीमी रेखा के लिए समय-समय पर पैरामीटर हैं, और यदि पैरामीटर को गलत तरीके से चुना जाता है, तो यह रणनीति के प्रभाव को प्रभावित कर सकता है।
द्वि-समान-रेखा क्रॉसिंग रणनीति एक प्रवृत्ति-अनुसरण रणनीति है, जो आघात की स्थिति के लिए उपयुक्त नहीं है, प्रवृत्ति की स्थिति में उपयोग की जानी चाहिए।
नुकसान के जोखिम को कम करने के लिए स्टॉपलॉस को ठीक से समायोजित करने की आवश्यकता है, और स्टॉपलॉस को उचित रूप से सेट किया जाना चाहिए।
सिग्नल फ़िल्टरिंग को गतिशीलता सूचकांक आदि के साथ जोड़कर सिग्नल की गुणवत्ता में सुधार करने पर विचार किया जा सकता है। उदाहरण के लिए, एमएसीडी, केडीजे आदि।
विभिन्न फास्टलाइन और स्लोलाइन चक्र मापदंडों के संयोजनों का परीक्षण करके इष्टतम मापदंडों की खोज की जा सकती है।
स्टॉप लॉस स्टॉप को अनुकूलित किया जा सकता है ताकि सबसे अच्छा सेट किया जा सके।
विशेष बाजार स्थितियों में गतिशील समायोजन मापदंडों पर विचार किया जा सकता है, जैसे कि बड़े बाजार में उतार-चढ़ाव के दौरान बढ़ते चक्र मापदंड।
इस रणनीति की समग्र सोच स्पष्ट और समझने में आसान है, तेजी से और धीरे-धीरे औसत रेखा के पार से प्रवृत्ति दिशा का न्याय करना, एक गतिशील ट्रैकिंग रणनीति है जो मध्यम और अल्पकालिक व्यापार के लिए उपयुक्त है। अनुकूलन के लिए बहुत जगह है, और पैरामीटर समायोजन, सिग्नल फ़िल्टरिंग आदि के माध्यम से रणनीति की प्रभावशीलता में और सुधार किया जा सकता है। कुल मिलाकर, यह एक लचीली और व्यावहारिक प्रवृत्ति व्यापार रणनीति है।
/*backtest
start: 2023-11-05 00:00:00
end: 2023-11-12 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy(title="[XC] Adaptive Strategy V3 - Ratio OCHL Averager no repaint",shorttitle="R_OHCL", overlay=true, currency=currency.EUR,initial_capital=10000,
default_qty_value=100, default_qty_type=strategy.percent_of_equity , calc_on_every_tick=false, calc_on_order_fills=true)
// ╔═ SETTINGS ╗
//░░░░░░░░░░░░░░░░░ ╚════════════════════════════╝ ░░░░░░░░░░░░░░░░░░░░░░░░
strategy_1 = input ( defval=true , type=input.bool , title="STRATEGY 1? —>" )
Recursive = input(false)
RES201 = "Min",RES202= "D",RES203 = "W",RES204 = "M"
//++ Resolution 1 ++
inp_resolution1 = input(600, minval=1, title="Resolution Line 1")
restype1 = input ( defval="Min" , type=input.string , title= "Resolution Line 1" , options=[ "Min","D","W","M"])
multiplier1 = restype1 == "Min" ? "" : restype1 == "D" ? "D" : restype1 == "W" ? "W" : "M"
resolution1 = tostring(inp_resolution1)+ multiplier1
//++ Resolution 2 ++
inp_resolution2 = input(1440, minval=1, title="Resolution Line 2")
restype2 = input ( defval="Min" , type=input.string , title= "Resolution Line 2" , options=["Min","D","W","M"])
multiplier2 = restype2 == "Min" ? "" : restype2 == "D" ? "D" : restype2 == "W" ? "W" : "M"
resolution2 = tostring(inp_resolution2)+ multiplier2
StopLoss = input(defval = 500 , title = "Stop Loss", minval = 0)
TakeProfit = input(defval = 2500 , title = "Take Profit", minval = 0)
// === RISK MANAGEMENT VALUE PREP ===
// if an input is less than 1, assuming not wanted so we assign 'na' value to disable it.
useTakeProfit = TakeProfit >= 1 ? TakeProfit : na
useStopLoss = StopLoss >= 1 ? StopLoss : na
// ╔═ BACKTEST RANGE ╗
//░░░░░░░░░░░░░░░░░ ╚════════════════════════════╝ ░░░░░░░░░░░░░░░░░░░░░░░░
line_breakBTR = input ( defval = true , type=input.bool , title="BACKTEST RANGE —" )
FromYear = input ( defval = 2019, title = "From Year", minval = 2017)
FromMonth = input ( defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay = input ( defval = 2, title = "From Day", minval = 1, maxval = 31)
//FromHour = input ( defval = 1, title = "From Hour", minval = 1, maxval = 24)
ToYear = input ( defval = 9999, title = "To Year", minval = 2017)
//ToHour = input ( defval = 0, title = "From Hour", minval = 0, maxval = 24)
ToMonth = input ( defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay = input ( defval = 1, title = "To Day", minval = 1, maxval = 31)
// === FUNCTION EXAMPLE ===
start = timestamp(syminfo.timezone, FromYear, FromMonth, FromDay, 0, 00) // backtest start window
finish = timestamp(syminfo.timezone, ToYear , ToMonth , ToDay , 0, 59) // backtest finish window
window() => time >= start and time <= finish ? true : false // create function "within window of time"
// ╔═ INDICATOR ╗
//░░░░░░░░░░░░░░░░░ ╚════════════════════════════╝ ░░░░░░░░░░░░░░░░░░░░░░░░
// "Ratio OCHL Averager" -> alexgrover / tradingview.com/script/RGAtOI6h-Ratio-OCHL-Averager-An-Alternative-to-VWAP/
rochla( res,Recursive)=>
//Recursive = false
H = security(syminfo.tickerid,res,high[1],gaps = barmerge.gaps_off, lookahead = barmerge.lookahead_on)
L = security(syminfo.tickerid,res,low[1] ,gaps = barmerge.gaps_off, lookahead = barmerge.lookahead_on)
d = 0.
//----
a = Recursive ? nz(d[1],open) : open
b = abs(close-a)/(H - L)
c = b > 1 ? 1 : b
d := c*close+(1-c)*nz(d[1],close)
strat1_line1=rochla(resolution1,Recursive)
strat1_line2=rochla(resolution2,Recursive)
plot(strat1_line1, title="Ratio OCHL Averager 1", color=#DAA520,linewidth=2,transp=0)
plot(strat1_line2, title="Ratio OCHL Averager 2", color=#B22222,linewidth=2,transp=0)
// ╔═ STRATEGY 1 ╗
//░░░░░░░░░░░░░░░░░ ╚════════════════════════════╝ ░░░░░░░░░░░░░░░░░░░░░░░░
trading_strat1_line1 = strategy_1 == 1 ? strat1_line1 : na
trading_strat1_line2 = strategy_1 == 1 ? strat1_line2 : na
longCross = crossunder (trading_strat1_line2, trading_strat1_line1) ? true : false
shortCross = crossover (trading_strat1_line2, trading_strat1_line1) ? true : false
plot( longCross ? trading_strat1_line1 : na , title = "Long" , color=color.aqua, style=plot.style_circles, linewidth=5, offset= 0)
plot( shortCross ? trading_strat1_line2 : na , title = "Short" , color=color.red , style=plot.style_circles, linewidth=5, offset= 0)
// ╔═ Backtest 1 ╗
//░░░░░░░░░░░░░░░░░ ╚════════════════════════════╝ ░░░░░░░░░░░░░░░░░░░░░░░░
strategy.exit("close",loss = useStopLoss, profit = useTakeProfit)
if longCross and window() and strategy_1 == 1
strategy.entry("Go Long", strategy.long)
if shortCross and window() and strategy_1 == 1
strategy.entry("Go Short", strategy.short)
//end