ADX-ফিল্টারযুক্ত সুপারট্রেন্ড পিভট ট্রেডিং কৌশল

লেখক:চাওঝাং, তারিখঃ ২০২৪-০২-১৯ ১৫ঃ১১ঃ৩৬
ট্যাগঃ

img

সারসংক্ষেপ

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

কৌশলগত যুক্তি

  1. পিভট সাপোর্ট এবং রেসিস্ট্যান্স লাইন গণনা করুন। বন্ধের মূল্য নিন এবং উপরে এবং নীচে একটি ATR পরিসীমা যোগ / বিয়োগ করুন। এই লাইনগুলির বিরতি ট্রেন্ড বিপরীতের সংকেত দেয়।

  2. ADX প্রবণতা শক্তি নির্ধারণ করে। উচ্চ ADX মান একটি শক্তিশালী প্রবণতা নির্দেশ করে।

  3. ট্রেডিং সিগন্যালের জন্য উভয়কে একত্রিত করুন। শুধুমাত্র পিভট ব্রেক এবং উচ্চ এডিএক্স-এ লং/শর্ট যান।

সুবিধা বিশ্লেষণ

এই কৌশলটির সুবিধাঃ

  1. ডায়নামিক সুপারট্রেন্ড লাইন দ্রুত ব্রেকআউট সনাক্ত করে।

  2. এডিএক্স ফিল্টারটি রেঞ্জ বন্ডড মার্কেটের সময় মিথ্যা সংকেত এড়ায়।

  3. ভাল ঝুঁকি-প্রতিদান অনুপাত এবং ড্রাউন কন্ট্রোল।

ঝুঁকি বিশ্লেষণ

এই কৌশলের ঝুঁকি:

  1. গ্যাপ মুভস সুপার ট্রেন্ড লাইনকে অকার্যকর করে দিতে পারে।

  2. খারাপ ADX প্রান্তিক সেটিং কর্মক্ষমতা প্রভাবিত করে।

  3. উচ্চ ট্রেডিং ফ্রিকোয়েন্সি লেনদেনের খরচ বৃদ্ধি করে।

সমাধান:

  1. প্যারামিটার অপ্টিমাইজ করুন যাতে আরও বিস্তৃত ব্রেকআউট ব্যাপ্তি সম্ভব হয়।

  2. আরও ভাল ADX মানের জন্য পরীক্ষা করুন।

  3. ট্রেডিং ফ্রিকোয়েন্সি কমানো।

অপ্টিমাইজেশান নির্দেশাবলী

উন্নতির ক্ষেত্র:

  1. আরো শক্তিশালী লাইন জন্য ATR গুণক অপ্টিমাইজ করুন.

  2. বিভিন্ন ADX পরামিতি পরীক্ষা করুন।

  3. স্টপ লস যোগ করুন।

সিদ্ধান্ত

এই কৌশলটি সুপারট্রেন্ড এবং এডিএক্সের শক্তিকে একত্রিত করে উচ্চ সম্ভাব্যতার প্রবণতা বিপরীত পয়েন্টগুলি সনাক্ত করতে, গুণমানের জন্য এডিএক্স দ্বারা ফিল্টার করা হয়। প্যারামিটার টিউনিং এবং প্রক্রিয়াগুলি সামঞ্জস্যের সাথে এটি একটি স্থিতিশীল মুনাফা-উত্পাদনকারী উচ্চ-ফ্রিকোয়েন্সি কৌশল হয়ে উঠতে পারে।


/*backtest
start: 2023-02-12 00:00:00
end: 2024-02-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("STPP20 + ADX", overlay = true)

///////////////////////////
// SuperTrend + Pivot Point
//////////////////////////

src =  input(close, title="EMA Source")
PPprd = input(defval = 2, title="Pivot Point Period", minval = 1, maxval = 50)
AtrFactor=input(defval = 5, title = "ATR Factor", minval = 1, step = 0.1)
AtrPd=input(defval = 20, title = "ATR Period", minval=1)

float ph = na
float pl = na
ph := pivothigh(PPprd, PPprd)
pl := pivotlow(PPprd, PPprd)

float center = na
center := center[1]
float lastpp = ph ? ph : pl ? pl : na
if lastpp
    if na(center)
        center := lastpp
    else
        center := (center * 2 + lastpp) / 3

Up = center - (AtrFactor * atr(AtrPd))
Dn = center + (AtrFactor * atr(AtrPd))

float TUp = na
float TDown = na
Trend = 0
TUp := close[1] > TUp[1] ? max(Up, TUp[1]) : Up
TDown := close[1] < TDown[1] ? min(Dn, TDown[1]) : Dn
Trend := close > TDown[1] ? 1: close < TUp[1]? -1: nz(Trend[1], 1)
Trailingsl = Trend == 1 ? TUp : TDown

// Lines
linecolor = Trend == 1 and nz(Trend[1]) == 1 ? color.lime : Trend == -1 and nz(Trend[1]) == -1 ? color.red : na
plot(Trailingsl, color = linecolor ,  linewidth = 2, title = "PP SuperTrend")

bsignalSSPP = close > Trailingsl
ssignalSSPP = close < Trailingsl


///////
// ADX
//////

lenADX = 14
th = 25
TrueRange = max(max(high-low, abs(high-nz(close[1]))), abs(low-nz(close[1])))
DirectionalMovementPlus = high-nz(high[1]) > nz(low[1])-low ? max(high-nz(high[1]), 0): 0
DirectionalMovementMinus = nz(low[1])-low > high-nz(high[1]) ? max(nz(low[1])-low, 0): 0
SmoothedTrueRange = 0.0
SmoothedTrueRange := nz(SmoothedTrueRange[1]) - (nz(SmoothedTrueRange[1])/lenADX) + TrueRange
SmoothedDirectionalMovementPlus = 0.0
SmoothedDirectionalMovementPlus := nz(SmoothedDirectionalMovementPlus[1]) - (nz(SmoothedDirectionalMovementPlus[1])/lenADX) + DirectionalMovementPlus
SmoothedDirectionalMovementMinus = 0.0
SmoothedDirectionalMovementMinus := nz(SmoothedDirectionalMovementMinus[1]) - (nz(SmoothedDirectionalMovementMinus[1])/lenADX) + DirectionalMovementMinus
DIPlus = SmoothedDirectionalMovementPlus / SmoothedTrueRange * 100
DIMinus = SmoothedDirectionalMovementMinus / SmoothedTrueRange * 100
DX = abs(DIPlus-DIMinus) / (DIPlus+DIMinus)*100
ADX = sma(DX, lenADX)


//////
// MA
/////

lenMA = 21
srcMA = input(close, title="Source")
offsetMA = input(title="Offset", type=input.integer, defval=0, minval=-500, maxval=500)
outMA = sma(srcMA, lenMA)


// Buy - Sell Entries
buy = bsignalSSPP and outMA < close and ADX > th
sell = ssignalSSPP 

if (buy)
    // .order // Tuned version
    strategy.entry("Buy", strategy.long)


if (sell) and (strategy.position_size > 0)
    strategy.order("Sell", false, when = sell)

আরো