ADX স্মার্ট ট্রেন্ড অনুসরণ কৌশল


সৃষ্টির তারিখ: 2023-11-28 14:04:00 অবশেষে সংশোধন করুন: 2023-11-28 14:04:00
অনুলিপি: 0 ক্লিকের সংখ্যা: 884
1
ফোকাস
1617
অনুসারী

ADX স্মার্ট ট্রেন্ড অনুসরণ কৌশল

ওভারভিউ

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

কৌশল নীতি

এই কৌশলটি মূলত গড় প্রবণতা সূচক (ADX) এর উপর ভিত্তি করে বর্তমান প্রবণতার শক্তি বিচার করে। ADX একটি নির্দিষ্ট সময়কালের মধ্যে দামের ওঠানামার DIRECTIONAL INDICATOR এর গড় মান গণনা করে প্রবণতার শক্তিকে উপস্থাপন করে। যখন ADX মানটি একটি সেট থ্রেশহোল্ডের নীচে থাকে, তখন আমরা মনে করি যে পরিস্থিতি সামঞ্জস্যপূর্ণ হচ্ছে, এই সময়ে একটি বর্গক্ষেত্রের পরিধি নির্ধারণ করা হয়, এবং যদি দামটি বর্গক্ষেত্রটি ভেঙে ফেলে তবে ট্রেডিং সংকেত তৈরি করে।

বিশেষ করে, কৌশলটি প্রথমে 14 টি চক্রের ADX এর মান গণনা করে, যখন এটি 18 এর নিচে থাকে তখন এটি একটি দুর্বল প্রবণতা বলে মনে করা হয়। তারপরে গত 20 টি K লাইনের সর্বোচ্চ মূল্য এবং সর্বনিম্ন মূল্যের ফ্রেম তৈরির ব্যাপ্তি গণনা করা হয়। যখন দামটি এই ফ্রেমটি ভেঙে যায়, তখন একটি ক্রয় এবং বিক্রয় সংকেত তৈরি হয়। স্টপ দূরত্বটি ফ্রেমের আকারের 50% এবং স্টপ দূরত্বটি ফ্রেমের আকারের 100%।

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

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

  1. ট্রেন্ড ফোর্স ডেসিমিনেশনের সাহায্যে, আপনি অবাধে ট্রেডিং এড়াতে পারেন।
  2. ব্রেকিং ব্রেকিং ব্রেকিং ব্রেকিং ব্রেকিং ব্রেকিং ব্রেকিং ব্রেকিং ব্রেকিং ব্রেকিং ব্রেকিং ব্রেকিং
  3. ট্রেন্ডিংয়ের সময়, আপনি আরও বেশি স্টপ স্পেস পেতে পারেন।
  4. বিভিন্ন জাতের জন্য কাস্টমাইজযোগ্য ADX প্যারামিটার, স্কোয়ার প্যারামিটার, স্টপ-ড্যামেজ-স্টপিং ফ্যাক্টর ইত্যাদি

কৌশলগত ঝুঁকি

  1. ADX প্যারামিটার সেটিং ভুল হলে ট্রেন্ড মিস করা বা ভুল বিচার করা যেতে পারে।
  2. এই ছবিতে, একটি ছোট বা বড় বর্গক্ষেত্রের পরিধি প্রভাব ফেলতে পারে।
  3. ভুল স্টপ-ডাউন কোয়ালিটি খুব কম বা খুব তাড়াতাড়ি স্টপ-ডাউন করতে পারে।

এডিএক্স প্যারামিটার, স্কোয়ার প্যারামিটার, স্টপ লস স্টপ ফ্যাক্টর ইত্যাদি সামঞ্জস্য করে এটিকে আরও উপযুক্ত করে তোলা যায়। একই সাথে কঠোর তহবিল পরিচালনাও গুরুত্বপূর্ণ, একক স্টপ লস অনুপাত নিয়ন্ত্রণ করে, একক বড় ক্ষতি এড়াতে।

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

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

সারসংক্ষেপ

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

কৌশল সোর্স কোড
/*backtest
start: 2023-11-20 00:00:00
end: 2023-11-27 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Developer: Andrew Palladino. 
//Creator: Rob Booker.
//Date: 9/29/2017
//@version=5
//Date: 08/10/2022
//Updated to V5 from V1, default cash settings added and indicators made more easily visible by:
// @ Powerscooter

strategy("Rob Booker - ADX Breakout", shorttitle="ADX Breakout V5", overlay=true, default_qty_type = strategy.cash, default_qty_value = 100000, initial_capital = 100000)

adxSmoothPeriod = input(14, title="ADX Smoothing Period", group = "ADX Settings")
adxPeriod = input(14, title="ADX Period", group = "ADX Settings")
adxLowerLevel = input(18, title="ADX Lower Level", group = "ADX Settings")
boxLookBack = input(20, title="BreakoutBox Lookback Period", group = "BreakoutBox")
profitTargetMultiple = input(1.0, title="Profit Target Box Width Multiple", group = "Take Profit and Stop Loss")
stopLossMultiple = input(0.5, title="Stop Loss Box Width Multiple", group = "Take Profit and Stop Loss")
enableDirection = input(0, title="Both(0), Long(1), Short(-1)", group = "Trade Direction")


// When the ADX drops below threshold limit, then we consider the pair in consolidation. 
// Set Box around highs and lows of the last 20 candles. with upper and lower boundaries. 
// When price breaks outside of box, a trade is taken. (on close or on touch?)
// Stop is placed, default 50%, of the size of the box. So if box is 200 pips, stop is at 100 pips. 
// Profit target is 100% of the size of the box. Default. User can set a profit target of 0.5, 1 full size, 2 or 3. 


dirmov(len) =>
	up = ta.change(high)
	down = -ta.change(low)
	truerange = ta.rma(ta.tr, len)
	plus = fixnan(100 * ta.rma(up > down and up > 0 ? up : 0, len) / truerange)
	minus = fixnan(100 * ta.rma(down > up and down > 0 ? down : 0, len) / truerange)
	[plus, minus]

adx(dilen, adxlen) => 
	[plus, minus] = dirmov(dilen)
	sum = plus + minus
	adx = 100 * ta.rma(math.abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)

adxHigh(dilen, adxlen) => 
	[plus, minus] = dirmov(dilen)
	plus
	
adxLow(dilen, adxlen) => 
	[plus, minus] = dirmov(dilen)
	minus
	
sig = adx(adxSmoothPeriod, adxPeriod)
//sigHigh = adxHigh(dilen, adxlen)
//sigLow = adxLow(dilen, adxlen)

isADXLow = sig < adxLowerLevel

//boxUpperLevel = ta.highest(high, boxLookBack)[1]
//boxLowerLevel = ta.lowest(low, boxLookBack)[1]

var float boxUpperLevelCarry = 0
var float boxLowerLevelCarry = 0

boxUpperLevel = strategy.position_size == 0 ? ta.highest(high, boxLookBack)[1] : boxUpperLevelCarry
boxUpperLevelCarry := boxUpperLevel
boxLowerLevel = strategy.position_size == 0 ? ta.lowest(low, boxLookBack)[1] : boxLowerLevelCarry
boxLowerLevelCarry := boxLowerLevel

boxWidth = boxUpperLevel - boxLowerLevel

profitTarget = strategy.position_size > 0  ? strategy.position_avg_price + profitTargetMultiple*boxWidth : strategy.position_size < 0 ?  strategy.position_avg_price - profitTargetMultiple*boxWidth : na
stopLoss = strategy.position_size > 0 ? strategy.position_avg_price - stopLossMultiple*boxWidth : strategy.position_size < 0 ? strategy.position_avg_price + stopLossMultiple*boxWidth : na

plot(strategy.position_size == 0 ? boxUpperLevel : na, color=color.white, style = plot.style_linebr)
plot(strategy.position_size == 0 ? boxLowerLevel : na, color=color.white, style = plot.style_linebr)


bgcolor(isADXLow ? color.purple : na, transp=72, title = "ADX limit")
plot(stopLoss, color=color.red, linewidth=2, style = plot.style_linebr, title="StopLossLine")
plot(profitTarget, color=color.blue, linewidth=2, style = plot.style_linebr, title="ProfitTargetLine")

isBuyValid = strategy.position_size == 0 and ta.cross(close, boxUpperLevel) and isADXLow

//Long Entry Condition
strategy.exit("close_long", from_entry="open_long", limit = profitTarget, stop = stopLoss)
if isBuyValid and strategy.opentrades == 0 and (enableDirection == -1 or enableDirection == 0)
    strategy.entry("open_long", strategy.long)

isSellValid = strategy.position_size == 0 and ta.cross(close, boxLowerLevel) and isADXLow

//Short Entry condition
strategy.exit(id="close_short", from_entry="open_short", limit = profitTarget, stop = stopLoss)
if isSellValid and strategy.opentrades == 0 and (enableDirection == 1 or enableDirection == 0)
    strategy.entry("open_short", strategy.short)