
इस रणनीति का मुख्य विचार है कि एक्सल बिंदुओं का उपयोग करके व्यापार को मापने के लिए। यह महत्वपूर्ण एक्सल ऊंचाइयों और निचले बिंदुओं की तलाश करता है और जब कीमतें इन महत्वपूर्ण बिंदुओं को तोड़ती हैं, तो रिवर्स ट्रेड करती हैं।
इस रणनीति में सबसे पहले pivotHighSig() और pivotLowSig() फ़ंक्शंस को परिभाषित किया गया है, जो कि अक्ष के ऊंचे और निचले बिंदुओं को ढूंढते हैं।
विशेष रूप से, अक्षीय ऊंचाई के लिए, यह बाईं ओर लगातार कई उच्च ऊंचाई और दाईं ओर लगातार कई निम्न ऊंचाई की तलाश करेगा। इस तरह, अक्षीय ऊंचाई एक अपेक्षाकृत उच्च स्थान पर है। अक्षीय निचले स्तर के लिए, इसके विपरीत, यह दोनों बाएं और बाएं और निचले स्तर की तलाश करेगा।
एक बार जब एक अक्षीय ऊंचाई और निम्नता पाई जाती है, तो रणनीति को अक्षीय ऊंचाई और निम्नता के लिए कई ऐतिहासिक चर जैसे कि ph1, ph2 आदि को परिभाषित करके एक अक्षीय ऊंचाई और निम्नता के लिए एक महत्वपूर्ण बिंदु को चुनने की अनुमति मिलती है।
अंत में, जब कीमत एक्सल के एक्सल बिंदु को तोड़ती है, तो रिवर्स ट्रेडिंग की जाती है।
इस तरह के एक क्वांटिटेटिव एक्सल-आधारित रणनीति के कुछ फायदे हैं:
इस रणनीति के कुछ जोखिम भी हैं:
इस रणनीति को निम्नलिखित दिशाओं में भी अनुकूलित किया जा सकता हैः
इस रणनीति ने अच्छा प्रदर्शन किया है, मुख्य विचार महत्वपूर्ण धुरी बिंदुओं की खोज करना और उनके टूटने पर रिवर्स ट्रेडिंग करना है। आगे के अनुकूलन के साथ, इस रणनीति को अधिक स्थिर और विश्वसनीय सिग्नल प्राप्त करने के लिए बेहतर रिटर्न प्राप्त करने के लिए सक्षम किया जा सकता है।
/*backtest
start: 2023-02-13 00:00:00
end: 2024-02-19 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("Pivot of Pivot Reversal Strategy [QuantNomad]", shorttitle = "PoP Reversal Strategy [QN]", overlay=true)
// Inputs
leftBars = input(4, title = 'PP Left Bars')
rightBars = input(2, title = 'PP Right Bars')
atr_length = input(14, title = 'ATR Length')
atr_mult = input(0.1, title = 'ATR Mult')
// Pivot High Significant Function
pivotHighSig(left, right) =>
pp_ok = true
atr = atr(atr_length)
for i = 1 to left
if (high[right] < high[right+i] + atr * atr_mult)
pp_ok := false
for i = 0 to right-1
if (high[right] < high[i] + atr * atr_mult)
pp_ok := false
pp_ok ? high[right] : na
// Pivot Low Significant Function
pivotLowSig(left, right) =>
pp_ok = true
atr = atr(atr_length)
for i = 1 to left
if (low[right] > low[right+i] - atr * atr_mult)
pp_ok := false
for i = 0 to right-1
if (low[right] > low[i] - atr * atr_mult)
pp_ok := false
pp_ok ? low[right] : na
swh = pivotHighSig(leftBars, rightBars)
swl = pivotLowSig (leftBars, rightBars)
swh_cond = not na(swh)
hprice = 0.0
hprice := swh_cond ? swh : hprice[1]
le = false
le := swh_cond ? true : (le[1] and high > hprice ? false : le[1])
swl_cond = not na(swl)
lprice = 0.0
lprice := swl_cond ? swl : lprice[1]
se = false
se := swl_cond ? true : (se[1] and low < lprice ? false : se[1])
// Pivots of pivots
ph1 = 0.0
ph2 = 0.0
ph3 = 0.0
pl1 = 0.0
pl2 = 0.0
pl3 = 0.0
pphprice = 0.0
pplprice = 0.0
ph3 := swh_cond ? nz(ph2[1]) : nz(ph3[1])
ph2 := swh_cond ? nz(ph1[1]) : nz(ph2[1])
ph1 := swh_cond ? hprice : nz(ph1[1])
pl3 := swl_cond ? nz(pl2[1]) : nz(pl3[1])
pl2 := swl_cond ? nz(pl1[1]) : nz(pl2[1])
pl1 := swl_cond ? lprice : nz(pl1[1])
pphprice := swh_cond and ph2 > ph1 and ph2 > ph3 ? ph2 : nz(pphprice[1])
pplprice := swl_cond and pl2 < pl1 and pl2 < pl3 ? pl2 : nz(pplprice[1])
if (le)
strategy.entry("PP_RevLE", strategy.long, comment="PP_RevLE", stop=pphprice + syminfo.mintick)
if (se)
strategy.entry("PP_RevSE", strategy.short, comment="PP_RevSE", stop=pplprice - syminfo.mintick)
// Plotting
plot(lprice, color = color.red, transp = 55)
plot(hprice, color = color.green, transp = 55)
plot(pplprice, color = color.red, transp = 0, linewidth = 2)
plot(pphprice, color = color.green, transp = 0, linewidth = 2)