ADX ذہین ٹرینڈ ٹریکنگ حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2023-11-28 14:04:00
ٹیگز:

img

جائزہ

اے ڈی ایکس انٹیلجنٹ ٹرینڈ ٹریکنگ اسٹریٹیجی اوسط سمت انڈیکس (ADX) کا استعمال کرتی ہے تاکہ رجحانات کی طاقت کا اندازہ لگایا جاسکے اور جب وہ کمزور ہوں تو رجحانات کو پکڑیں اور منافع کے ل strong مضبوط رجحانات کی پیروی کریں۔ یہ حکمت عملی قیمت کی پیشرفت کو جوڑتے ہوئے رجحانات کی طاقت کا اندازہ لگاتے ہوئے تجارتی سگنل تیار کرتی ہے اور یہ ایک قسم کی رجحان ٹریکنگ حکمت عملی سے تعلق رکھتی ہے۔

حکمت عملی کا اصول

اس حکمت عملی کا مرکز بنیادی طور پر اوسط سمت اشاریہ (ADX) پر مبنی ہے تاکہ موجودہ رجحان کی طاقت کا اندازہ لگایا جاسکے۔ ADX رجحان کی طاقت کی نمائندگی کرنے کے لئے ایک خاص مدت کے دوران قیمتوں میں اتار چڑھاؤ کے سمت اشارے کی اوسط قدر کا حساب لگاتا ہے۔ جب ADX کی قیمت مقررہ حد سے نیچے ہوتی ہے تو ، ہم سمجھتے ہیں کہ مارکیٹ مستحکم ہو رہی ہے۔ اس وقت ، باکس رینج کا تعین کیا جاتا ہے۔ اگر قیمت باکس کی اوپری اور نچلی ریلوں سے ٹوٹ جاتی ہے تو ، تجارتی سگنل تیار ہوتا ہے۔

خاص طور پر ، حکمت عملی سب سے پہلے 14 سائیکل ADX کی قیمت کا حساب لگاتی ہے۔ جب یہ 18 سے کم ہوتا ہے تو ، یہ سمجھا جاتا ہے کہ رجحان کمزور ہے۔ اس کے بعد یہ پچھلے 20 K لائنوں کی سب سے زیادہ اور سب سے کم قیمتوں سے بنی باکس کی حد کا حساب لگاتا ہے۔ جب قیمت اس باکس کو توڑتی ہے تو ، خرید و فروخت کے سگنل پیدا ہوتے ہیں۔ اسٹاپ نقصان کا فاصلہ باکس کے سائز کا 50٪ ہے ، اور منافع لینے کا فاصلہ باکس کے سائز کا 100٪ ہے۔

یہ حکمت عملی رجحان کی طاقت کے فیصلے اور اختتامی سگنلز کو جوڑتی ہے تاکہ رجحانات کو جب وہ کمزور ہوں اور استحکام میں داخل ہوں تو ، بے ترتیبی والے بازاروں میں کثرت سے تجارت سے گریز کیا جاسکے۔ اور جب ایک مضبوط رجحان ظاہر ہوتا ہے تو ، وسیع تر منافع کا ہدف زیادہ منافع حاصل کرسکتا ہے۔

حکمت عملی کے فوائد

  1. رجحان کی طاقت کے بارے میں فیصلہ کرنے سے بے ترتیبی والے بازاروں میں کثرت سے تجارت سے بچا جاسکتا ہے۔
  2. باکس کی توڑنے سے فلٹرنگ میں اضافہ ہوتا ہے تاکہ اتار چڑھاؤ والی منڈیوں میں پھنسنے سے بچ سکے۔
  3. رجحان مارکیٹوں میں، زیادہ منافع کے اہداف حاصل کیے جا سکتے ہیں.
  4. حسب ضرورت ADX پیرامیٹرز، باکس پیرامیٹرز، سٹاپ نقصان کے گتانک، وغیرہ مختلف اقسام کو اپنانے کے لئے.

اسٹریٹجی کے خطرات

  1. ADX پیرامیٹر کی غلط ترتیبات رجحانات کو نظر انداز کر سکتی ہیں یا غلط فیصلے کر سکتی ہیں۔
  2. بہت بڑی یا چھوٹی باکس رینج نتائج پر اثر انداز کر سکتے ہیں.
  3. غیر مناسب سٹاپ نقصان اور منافع لینے کے گتانک ناکافی سٹاپ نقصان یا بہت جلد منافع لینے کا سبب بن سکتے ہیں۔

ADX ، باکس رینج ، اسٹاپ نقصان کے گتانک جیسے پیرامیٹرز کو بہتر بنایا جاسکتا ہے تاکہ اسے مختلف مصنوعات اور مارکیٹ کے ماحول کے لئے زیادہ موزوں بنایا جاسکے۔ اسی وقت ، بڑے نقصانات سے بچنے کے لئے سنگل اسٹاپ نقصان کے تناسب پر قابو پانے کے لئے سخت منی مینجمنٹ بھی ضروری ہے۔

حکمت عملی کی اصلاح کے لئے ہدایات

  1. ADX پیرامیٹرز مختلف سائیکلوں کے نتائج کی جانچ کر سکتے ہیں۔
  2. باکس پیرامیٹرز زیادہ سے زیادہ حد کے سائز کا تعین کرنے کے لئے مختلف لمبائیوں کا تجربہ کرسکتے ہیں۔
  3. خطرہ واپسی کے تناسب کو بہتر بنانے کے لئے سٹاپ نقصان کو ٹھیک کریں اور منافع لینے کے گتانک لیں.
  4. صرف ایک طرفہ طویل / مختصر تجارت کے اثرات کی جانچ کریں.
  5. مجموعہ کے لئے دوسرے اشارے شامل کریں، جیسے حجم اشارے.

خلاصہ

اے ڈی ایکس انٹیلجنٹ ٹرینڈ ٹریکنگ حکمت عملی عام طور پر ایک نسبتا stable مستحکم ٹرینڈ ٹریکنگ حکمت عملی ہے۔ یہ عام طور پر ٹرینڈ ٹریکنگ حکمت عملی میں عام طور پر پائے جانے والے اعلی درجے کی پیروی کرنے اور کم سے کم مارنے جیسے مسائل سے بچنے کے لئے ٹرینڈ کی طاقت کے فیصلے اور قیمت کی پیشرفت کے اشاروں کو جوڑتا ہے۔ پیرامیٹر کی اصلاح اور سخت منی مینجمنٹ کے ذریعے ، حکمت عملی مستحکم منافع حاصل کرسکتی ہے۔


/*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)

مزید