ADX সূচক ভিত্তিক ট্রেন্ড ট্র্যাকিং এবং স্বল্পমেয়াদী ট্রেডিং কৌশল

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

img

সারসংক্ষেপ

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

নীতি

সুপার ট্রেন্ড পিভট পয়েন্ট এবং এটিআর স্টপ লস এর সাথে মিলিতভাবে গতিশীল স্টপ লস লাইনের মধ্য দিয়ে দাম ভাঙ্গার দিক নির্ধারণ করে। একই সাথে, এডিএক্স সূচক প্রবণতার শক্তি বিচার করে এবং প্রবণতা যথেষ্ট শক্তিশালী হলেই ট্রেডিং সংকেত দেয়।

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

স্টপ লস লাইনটি সর্বশেষ মূল্য এবং ATR মান অনুযায়ী গতিশীলভাবে সামঞ্জস্য করা হবে, যা প্রবণতা খুব ভালভাবে ট্র্যাক করতে পারে।

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

এই কৌশলটির নিম্নলিখিত সুবিধা রয়েছে:

  1. সুপার ট্রেন্ড ইন্ডিকেটর ব্যবহার করে ট্রেন্ড চলার দিকনির্দেশনা অনুসরণ করুন যাতে বাজারের দোলন দ্বারা মুনাফা আটকে না যায়।

  2. ADX সূচকের সাহায্যে প্রবণতার শক্তি বিচার করুন, একীকরণের সময় ট্রেডিংয়ে ভুল এড়ান।

  3. স্টপ লস লাইনটি গতিশীলভাবে লক ইন মুনাফা সর্বাধিক করার জন্য সামঞ্জস্য করা হয়।

  4. অতিরিক্ত ক্রয় এবং অতিরিক্ত বিক্রয় এড়াতে RSI একত্রিত করুন।

  5. সামগ্রিকভাবে, কৌশল পরামিতি সেটিং যুক্তিসঙ্গত। dframe নির্বাচন ধারাবাহিকতা বিবেচনা করে। লাভ এবং স্টপ লস সেটিংও ভাল।

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

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

  1. সুপার ট্রেন্ড এবং এমএ সূচকগুলি পরস্পর বিরোধী সংকেত দিতে পারে।

  2. এডিএক্স সূচকটি ১৪ টি চক্রের জন্য সেট করা আছে, যা হঠাৎ ঘটনাগুলির জন্য যথেষ্ট সংবেদনশীল নয়।

  3. RSI প্যারামিটারটি ডিফল্ট সেট করা আছে, যা পুরোপুরি overbought এবং oversold এড়াতে ব্যর্থ হতে পারে।

  4. হঠাৎ ঘটনার প্রভাব বিবেচনা করা হয়নি, যেমন বড় খারাপ / ভাল খবর।

সংশ্লিষ্ট সমাধানঃ

  1. সুপার ট্রেন্ড সূচকের সাথে মেলে এমনভাবে এমএ চক্র সামঞ্জস্য করুন।

  2. আকস্মিক ঘটনার প্রতি সংবেদনশীলতা বাড়ানোর জন্য ADX চক্রটি সংক্ষিপ্ত করার চেষ্টা করুন।

  3. সর্বোত্তম মান খুঁজে পেতে RSI পরামিতি অপ্টিমাইজ করুন।

  4. প্রধান সংবাদ প্রকাশনা এড়াতে নিউজ ফিল্টার মডিউল যোগ করুন।

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

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

  1. ট্রেডিং সিদ্ধান্তকে আরও বুদ্ধিমান করে তুলতে ট্রেডিং প্রবণতা নির্ধারণের জন্য মেশিন লার্নিং মডেল যুক্ত করুন।

  2. প্রবণতার শক্তি বিচার করার জন্য ADX এর পরিবর্তে বিকল্প মানসিক সূচক প্রবর্তন করার চেষ্টা করুন।

  3. স্টপ লসকে আরো গতিশীল ও সঠিক করার জন্য অ্যাডাপ্টিভ স্টপ লস মডিউল বাড়ানো।

  4. সামগ্রিক কৌশল অপ্টিমাইজ করার জন্য গভীর শেখার প্রযুক্তির সাথে আরও বৈশিষ্ট্য বের করুন।

  5. কৌশল বিকাশের জন্য পাইথনের মতো উন্নত ভাষা ব্যবহার করুন কৌশল স্কেলযোগ্যতা বাড়ানোর জন্য।

সংক্ষিপ্তসার

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


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

//@version=5
strategy("Bendre ADX STrend", overlay = true)

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

src =  input(close, title="EMA Source")
PPprd = input(defval = 2, title="Pivot Point Period")
AtrFactor=input(defval = 2, title = "ATR Factor")
AtrPd=input(defval = 21, title = "ATR Period")

StartDate = input(timestamp("1 Dec 2023"), title="Start Date")
EndDate = input(timestamp("12 Jan 2024"), title="End Date")
window()  => true

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

float center = na
center := center[1]
// float lastpp = ph ? ph : pl ? pl : 0.0
float lastpp = na(ph) ? na(pl) ? na : pl : ph

if lastpp > 0
    if na(center)
        center := lastpp
    else
        center := (center * 2 + lastpp) / 3

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

var float TUp = na
var float TDown = na
Trend = 0
TUp := close[1] > TUp[1] ? math.max(Up, TUp[1]) : Up
TDown := close[1] < TDown[1] ? math.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 = 14
TrueRange = math.max(math.max(high-low, math.abs(high-nz(close[1]))), math.abs(low-nz(close[1])))
DirectionalMovementPlus = high-nz(high[1]) > nz(low[1])-low ? math.max(high-nz(high[1]), 0): 0
DirectionalMovementMinus = nz(low[1])-low > high-nz(high[1]) ? math.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 = math.abs(DIPlus-DIMinus) / (DIPlus+DIMinus)*100
ADX = ta.sma(DX, lenADX)


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

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

//
// RSI
//
length = input( 14 )
overSold = input( 30 )
overBought = input( 65 )
price = close
vrsi = ta.rsi(price, length)

//
// DMI - Direction Movement Index
// 
[diplus1, diminus1, adx] = ta.dmi(14, 14)

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


if (buy and vrsi > overBought and adx > 19)
    // .order // Tuned version
    strategy.entry("Buy", strategy.long, when = window())
    // strategy.close("Sell", "close Sell")

if (sell) and (strategy.position_size > 0)
    // strategy.entry("Sell", strategy.short)
    strategy.close("Buy", "Close Buy")

if(sell and vrsi < overSold and adx > 25)
    strategy.entry("Sell", strategy.short, when = window())

if ( ta.crossover( diminus1, diplus1) or ((buy) and (strategy.position_size > 0)) )
    strategy.close("Sell", "close Sell")

// if(sell) and (diminus1 > diplus1) and adx > 23 and adx > adx[1] and (vrsi < overSold)
//     strategy.entry("Sell", strategy.short, when = window())

// if (strategy.position_size > 0 and ta.crossunder(diminus1, adx)) or (strategy.position_size > 0  and (buy))
//     strategy.close("Sell", "close Sell")





আরো