পিভট পয়েন্ট রিভার্সালের উপর ভিত্তি করে পরিমাণগত কৌশল


সৃষ্টির তারিখ: 2024-02-20 14:22:13 অবশেষে সংশোধন করুন: 2024-02-20 14:22:13
অনুলিপি: 0 ক্লিকের সংখ্যা: 654
1
ফোকাস
1617
অনুসারী

পিভট পয়েন্ট রিভার্সালের উপর ভিত্তি করে পরিমাণগত কৌশল

ওভারভিউ

এই কৌশলটির মূল ধারণাই হল, মূল অক্ষকে ব্যবহার করে ট্রেডিংয়ের পরিমাণ নির্ধারণ করা। এটি গুরুত্বপূর্ণ মূল অক্ষের উচ্চ ও নিম্ন পয়েন্টগুলি খুঁজে বের করে এবং যখন দামগুলি এই মূল পয়েন্টগুলি অতিক্রম করে তখন বিপরীত ট্রেডিং করে।

কৌশল নীতি

এই কৌশলটি প্রথমে pivotHighSig() এবং pivotLowSig() ফাংশনগুলিকে সংজ্ঞায়িত করে যা অক্ষের উচ্চ এবং নিম্ন পয়েন্টগুলি খুঁজে বের করে। এই দুটি ফাংশন বাম এবং ডানদিকে উপযুক্ত অক্ষের পয়েন্টগুলি খুঁজে বের করে।

বিশেষত, অক্ষীয় উচ্চতার জন্য, এটি বাম দিকে একাধিক ক্রমাগত উচ্চতা এবং ডান দিকে একাধিক ক্রমাগত নিম্ন উচ্চতা অনুসন্ধান করবে। এইভাবে, অক্ষীয় উচ্চতা তুলনামূলকভাবে উচ্চতর অবস্থানে রয়েছে। অক্ষীয় নিম্নের বিচার বিপরীতভাবে, এটি বাম এবং বাম উভয় পক্ষের উচ্চ এবং নিম্ন নিম্ন খুঁজবে।

অক্ষের উচ্চ-নিম্ন পয়েন্ট খুঁজে পাওয়ার পরে, কৌশলটি অক্ষের মূল পয়েন্টগুলিকে আরও বেছে নেয়, অর্থাৎ অক্ষের মধ্যে গুরুত্বপূর্ণ পয়েন্টগুলি। এটি অক্ষের উচ্চ-নিম্ন পয়েন্টগুলির একাধিক ইতিহাসের পরিবর্তনশীল যেমন ph1, ph2 ইত্যাদি সংজ্ঞায়িত করে।

অবশেষে, যখন দামটি মূল অক্ষের মূল পয়েন্টটি অতিক্রম করে তখন বিপরীত ট্রেডিং করা হয়।

কৌশলগত সুবিধা

এই পয়েন্ট-ভিত্তিক কৌশলটি নিম্নলিখিত সুবিধাগুলি নিয়ে আসেঃ

  1. বাজারের সমর্থন ও প্রতিরোধের অঞ্চলগুলি ব্যবহার করে, যা প্রায়শই দামের বিপরীত হওয়ার সুযোগের জায়গা হয়
  2. মাল্টি ফ্লাইট ডিলের মাধ্যমে গুরুত্বপূর্ণ উচ্চতা এবং নিম্নতা খুঁজে বের করা
  3. এক্সেল পয়েন্ট হল প্রবল এক্সট্রিমাম পয়েন্ট, যেখান থেকে প্রবল সংকেত পাওয়া যায়
  4. অক্ষের অক্ষকেন্দ্র ব্যবহার করে সংকেতকে আরো নির্ভরযোগ্য করে তোলা

ঝুঁকি ও সমাধান

এই কৌশলটির কিছু ঝুঁকিও রয়েছেঃ

  1. অক্ষকে ভুলভাবে চিহ্নিত করা, যার ফলে ভুল সংকেত দেওয়া হয়। সমাধানটি হ’ল ডান এবং বাম স্পেসিং প্যারামিটারগুলি সামঞ্জস্য করা যাতে অক্ষকে আরও সঠিকভাবে সনাক্ত করা যায়।
  2. ভুয়া ব্রেকডাউন। সমাধানটি হ’ল সংকেতগুলিকে ফিল্টার করার জন্য আরও কারণগুলি যুক্ত করা, যেমন পরিমাণ, শক্তি, ট্র্যাফিক পরিমাণ ইত্যাদি।

অপ্টিমাইজেশান দিক

এই কৌশলটি নিম্নলিখিত দিকগুলি থেকে অপ্টিমাইজ করা যেতে পারেঃ

  1. স্টপ লস স্ট্র্যাটেজি বাড়ানো, স্ট্র্যাটেজিকে আরও স্থিতিশীল করা
  2. সংকেত ফিল্টারিং এর সাথে আরও কিছু সূচক যুক্ত করুন
  3. পিআরইডি-র বিপরীত কৌশল তৈরি করা, যাতে এমএল-এর সাহায্যে কেন্দ্রীয় বিন্দুগুলির পূর্বাভাস আরও উন্নত করা যায়
  4. প্যারামিটার যোগ করুন

সারসংক্ষেপ

এই কৌশলটি ওভারওয়াল ভাল পারফর্ম করে, এর মূল চিন্তাধারা হল গুরুত্বপূর্ণ মেরু খুঁজে বের করা এবং তার বিপরীতে বিপরীত ট্রেডিং করা। আরও অপ্টিমাইজেশনের মাধ্যমে, এই কৌশলটি আরও স্থিতিশীল এবং নির্ভরযোগ্য সংকেত পেতে পারে, যার ফলে ভাল আয় পাওয়া যায়।

কৌশল সোর্স কোড
/*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)