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