
ADX انٹیلجنٹ ٹرینڈ ٹریکنگ حکمت عملی اوسط رجحان انڈیکس ((ADX) کا استعمال کرتے ہوئے رجحان کی طاقت کا تعین کرنے کے لئے ، جب رجحان کمزور ہوتا ہے تو رجحان کی گرفتاری ، مضبوط رجحان میں ٹریکنگ منافع۔ یہ حکمت عملی رجحان کی طاقت کا تعین کرتی ہے جبکہ قیمت میں اضافے کے ساتھ مل کر ٹریڈنگ سگنل پیدا کرتی ہے ، یہ ایک قسم کی رجحان ٹریکنگ حکمت عملی ہے۔
یہ حکمت عملی بنیادی طور پر اوسط رجحان اشاریہ ((ADX) کی بنیاد پر موجودہ رجحان کی طاقت کا فیصلہ کرنے کے لئے ہے۔ ADX ایک خاص دورانیے کے دوران قیمت میں اتار چڑھاؤ کے لئے DIRECTIONAL INDICATOR کی اوسط قیمت کا حساب کتاب کرکے رجحان کی طاقت کی نمائندگی کرتا ہے۔ جب ADX کی قیمت طے شدہ حد سے کم ہوتی ہے تو ، ہم سمجھتے ہیں کہ معاملات طے ہو رہے ہیں ، اس وقت باڑ کی حد کا تعین کیا جاتا ہے ، اور اگر قیمت باڑ سے ٹکرا جاتی ہے تو ، تجارت کا اشارہ پیدا ہوتا ہے۔
خاص طور پر ، حکمت عملی سب سے پہلے 14 ادوار کے ADX کی قیمت کا حساب لگاتی ہے ، 18 سے کم ہونے پر اس رجحان کو کمزور سمجھا جاتا ہے۔ پھر پچھلے 20 K لائنوں کی اعلی ترین قیمت اور کم سے کم قیمت کی تشکیل والے مربع کی حد کا حساب لگایا جاتا ہے۔ جب قیمت اس مربع کو توڑ دیتی ہے تو ، خرید و فروخت کے اشارے پیدا ہوتے ہیں۔ اسٹاپ فاصلہ مربع سائز کا 50٪ ہے ، اور اسٹاپ فاصلہ مربع سائز کا 100٪ ہے۔
اس حکمت عملی میں رجحان کی طاقت کا فیصلہ اور بریک سگنل دونوں شامل ہیں ، جو کمزور رجحان کے دوران صفائی میں داخل ہونے کے قابل ہیں ، بے ترتیب حالات میں بار بار تجارت سے بچنے کے لئے۔ جب مضبوط رجحان ہوتا ہے تو ، اسٹاپ کی حد زیادہ ہوتی ہے ، جس سے زیادہ منافع حاصل کیا جاسکتا ہے۔
ADX پیرامیٹرز ، چوکوں کے پیرامیٹرز ، اسٹاپ نقصان کو روکنے کے عوامل وغیرہ کو ایڈجسٹ کرکے بہتر بنایا جاسکتا ہے ، تاکہ یہ مختلف اقسام اور مارکیٹ کے حالات کے لئے موزوں ہو۔ اس کے ساتھ ہی ، سخت فنڈ مینجمنٹ بھی ضروری ہے ، جس میں ایک ہی اسٹاپ نقصان کی شرح کو کنٹرول کیا جاسکتا ہے ، تاکہ ایک ہی بڑے نقصان سے بچا جاسکے۔
ADX ذہین رجحان ٹریکنگ حکمت عملی مجموعی طور پر ایک زیادہ مستحکم رجحان حکمت عملی ہے۔ یہ ایک ہی وقت میں رجحان کی طاقت کے فیصلے اور قیمتوں میں توڑنے کے اشارے کو جوڑتا ہے ، جس سے عام رجحان ٹریکنگ حکمت عملی میں اونچائی اور گرنے کی پریشانی سے کچھ حد تک بچا جاسکتا ہے۔ پیرامیٹرز کی اصلاح اور سخت فنڈ مینجمنٹ کے ذریعہ ، اس حکمت عملی کو مستحکم منافع بخش بنایا جاسکتا ہے۔
/*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)