
এই কৌশলটির মূল ধারণাই হল, মূল অক্ষকে ব্যবহার করে ট্রেডিংয়ের পরিমাণ নির্ধারণ করা। এটি গুরুত্বপূর্ণ মূল অক্ষের উচ্চ ও নিম্ন পয়েন্টগুলি খুঁজে বের করে এবং যখন দামগুলি এই মূল পয়েন্টগুলি অতিক্রম করে তখন বিপরীত ট্রেডিং করে।
এই কৌশলটি প্রথমে 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)