اے ڈی ایکس کا استعمال قیمت کے رجحان کی طاقت کا تعین کرنے کے لئے کیا جاتا ہے۔ + ڈی آئی اور - ڈی آئی کی اعلی پڑھنے سے رجحان سازی کی مارکیٹ کا اشارہ ہوتا ہے۔ جب دو لائنیں ملتی ہیں تو ، ایک رینج سے منسلک مارکیٹ کی وضاحت ہوتی ہے۔ حکمت عملی صرف 20 سے زیادہ اے ڈی ایکس پڑھنے پر پوزیشن شروع کرتی ہے تاکہ سائیڈ ویز مارکیٹ کے دوران وِپساؤ سے بچ سکے۔
Ichimoku رجحان کا تعین اور ADX فلٹرنگ کو یکجا کرکے، حکمت عملی اعلی قیمت کی اتار چڑھاؤ کے ادوار کی نشاندہی کرنے میں مؤثر ہے.
یہ حکمت عملی رجحانات کی مارکیٹوں کو حاصل کرنے کے لئے Ichimoku اور ADX کو مؤثر طریقے سے جوڑتی ہے۔ پیرامیٹرز اور قواعد کی مزید ٹھیک کرنے کے ساتھ ، بہتر بیک ٹیسٹ اور براہ راست کارکردگی حاصل کی جاسکتی ہے۔ یہ رجحان پر مرکوز تاجروں کے لئے موزوں ہے۔
/*backtest start: 2023-12-01 00:00:00 end: 2023-12-10 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy(title="Ichimoku + ADX", shorttitle="Ichimoku & ADX Backtest", overlay=true) //------------------------------ //------------------------------ // ICHIMOKU //------------------------------ //------------------------------ conversionPeriods = input(9, minval=1, title="Conversion Line Periods"), basePeriods = input(26, minval=1, title="Base Line Periods") laggingSpan2Periods = input(52, minval=1, title="Lagging Span 2 Periods"), displacement = input(26, minval=1, title="Displacement") donchian(len) => avg(lowest(len), highest(len)) Tenkan = donchian(conversionPeriods) Kijun = donchian(basePeriods) SSA = avg(Tenkan, Kijun) SSB = donchian(laggingSpan2Periods) SSAdisp = SSA[displacement] SSBdisp = SSB[displacement] // Plot Ichimoku // -------------------- plot(Tenkan, color=color.red, title="Tenkan") plot(Kijun, color=color.blue, title="Kijun") plot(close, offset = -displacement + 1, color=#459915, title="Chikou") p1 = plot(SSA, offset = displacement - 1, color=color.green, title="Senkou A") p2 = plot(SSB, offset = displacement - 1, color=color.red, title="Senkou B") fill(p1, p2, color = SSA > SSB ? color.green : color.red) //------------------------------ //------------------------------ // ADX //------------------------------ //------------------------------ adxlen = input(14, title="ADX Smoothing") dilen = input(14, title="DI Length") keyLevel = input(23, title="key level for ADX") dirmov(len) => up = change(high) down = -change(low) truerange = rma(tr, len) plus = fixnan(100 * rma(up > down and up > 0 ? up : 0, len) / truerange) minus = fixnan(100 * rma(down > up and down > 0 ? down : 0, len) / truerange) [plus, minus] adx(dilen, adxlen) => [plus, minus] = dirmov(dilen) sum = plus + minus adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen) [adx, plus, minus] [sig, up, down] = adx(dilen, adxlen) // Plot ADX // -------------------- //plot(sig, color=color.black, title="ADX") //plot(up, color=color.green, title="+DI",linewidth=2, style=plot.style_columns, transp=40) //plot(down, color=color.red, title="-DI",linewidth=2, style=plot.style_columns, transp=40) //plot(keyLevel, color=color.white, title="Key Level") //------------------------------ //------------------------------ // STRATEGY //------------------------------ //------------------------------ // Buy & Sell Signals // -------------------- // ADX ABuy1 = up > keyLevel and up - down >5 and sig > down and sig < keyLevel * 2 ASell1 = down > keyLevel and down - up >5 and sig > up and sig < keyLevel * 2 // ICHIMOKU Bull = close >= max(SSAdisp, SSBdisp) Bear = close <= min(SSAdisp, SSBdisp) // 1. Bull Buy1 = (close >= max(SSAdisp, SSBdisp)) ? 1 : 0 Buy2 = (Tenkan - Kijun >= 0.001) ? 1 : 0 Buy3 = SSA > SSB ? 1 : 0 Buy4 = sig > 20 ? 1 : 0 Buy4a = close - close[displacement] >=0.001 ? 1:0 Buy5 = Buy1 and Buy2 and Buy3 and Buy4 and Buy4a and not(Buy1[1] and Buy2[1] and Buy3[1]) // 1. Bear Sell1 = (close <= min(SSAdisp, SSBdisp)) ? 1 : 0 Sell2 = (Kijun - Tenkan >= 0.001) ? 1 : 0 Sell3 = SSA < SSB ? 1 : 0 Sell4 = sig > 20 ? 1 : 0 Sell4a = close <= close[displacement] Sell5 = Sell1 and Sell2 and Sell3 and Sell4 and Sell4a and not(Sell1[1] and Sell2[1] and Sell3[1]) // CONSOLIDATED buysignal = Buy5 buyexitsignal = crossunder(close,Kijun) sellsignal = Sell5 sellexitsignal = crossover(close,Kijun) longCondition = buysignal shortCondition = sellsignal // Plot Indicators // -------------------- // ----- Buy & Sell //plotshape(longCondition, title = "Buy Signal", text ="BUY", textcolor =#FFFFFF , style=shape.labelup, size = size.tiny, location=location.belowbar, color = #1B8112, transp = 0) //plotshape(shortCondition, title = "Short Signal", text ="SHORT", textcolor =#FFFFFF , style=shape.labeldown, size = size.tiny, location=location.abovebar, color = #000000, transp = 0) // ----- Ichimoku Signals //plotshape(Sell2, title = "Sell Signal", text ="Kumo Twist", textcolor =#FFFFFF , style=shape.labelup, size = size.tiny, location=location.top, color = color.black, transp = 0) //plotshape(Sell3, title = "Sell Signal", text ="TK/KJ", textcolor =#FFFFFF , style=shape.labelup, size = size.tiny, location=location.bottom, color = color.black, transp = 0) //plotshape(Buy4, title = "Buy Signal", text ="Kumo Twist", textcolor =#FFFFFF , style=shape.diamond, size = size.tiny, location=location.belowbar, color = color.blue, transp = 0) //plotshape(Buy3, title = "Buy Signal", text ="TK/KJ", textcolor =#FFFFFF , style=shape.circle, size = size.tiny, location=location.abovebar, color = color.green, transp = 0) //plotshape(Buy4, title = "Buy Signal", text ="TK/KJ", textcolor =#FFFFFF , style=shape.circle, size = size.tiny, location=location.belowbar, color = color.red, transp = 0) //plotshape(buyexitsignal, title = "Buy Exit", style=shape.triangledown, size = size.tiny, location=location.abovebar, color = color.green, transp = 0) //plotshape(sellexitsignal, title = "Buy Exit", style=shape.triangleup, size = size.tiny, location=location.belowbar, color = color.black, transp = 0) //------------------------------ //------------------------------ // EXECUTION //------------------------------ //------------------------------ // Test Range // -------------------- // === INPUT BACKTEST RANGE === FromMonth = input(defval = 2, title = "From Month", minval = 1, maxval = 12) FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31) FromYear = input(defval = 2015, title = "From Year", minval = 2017) ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12) ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31) ToYear = input(defval = 9999, title = "To Year", minval = 2017) // === FUNCTION EXAMPLE === start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window window() => true // create function "within window of time" // Orders // -------------------- if longCondition strategy.entry("Buy", strategy.long, when=window()) if buyexitsignal strategy.close("Buy") if shortCondition strategy.entry("Sell", strategy.short, when=window()) if sellexitsignal strategy.close("Sell")