
اس حکمت عملی میں اسٹاک کی قیمتوں میں رجحانات اور اہم معاون مزاحمت کی سطحوں کی نشاندہی کرنے کے لئے دو تکنیکی اشارے استعمال کیے گئے ہیں۔ یہ حکمت عملی ایک رجحان کے دوران بڑے پیمانے پر قیمت کے اتار چڑھاو کو پکڑنے کے لئے تیار کی گئی ہے۔
ایک نظر میں توازن کی میز میں تین حرکت پذیر اوسط شامل ہیں۔ جب قیمت اوپر سے پچھلی تبدیلی کی لائن اور بیس لائن کو پار کرتی ہے تو ، خریدنے کا اشارہ دیا جاتا ہے۔ جب قیمت نیچے سے ان دونوں لائنوں کو پار کرتی ہے تو ، فروخت کا اشارہ دیا جاتا ہے۔ اس کے علاوہ ، ایک نظر میں توازن کی میز نے اہم حمایت اور مزاحمت کے علاقوں کی شناخت بھی کی ہے۔
ADX قیمتوں کے رجحانات کا اندازہ لگانے کے لئے استعمال کیا جاتا ہے۔ جب + DI اور -DI واضح طور پر الگ ہوجاتے ہیں تو ، رجحانات کی نشاندہی کی جاتی ہے۔ جب + DI اور -DI قریب ہوتے ہیں تو ، صف بندی کی نشاندہی کی جاتی ہے۔ یہ حکمت عملی تب ہی تجارت کا اشارہ دیتی ہے جب ADX 20 سے زیادہ ہو ، تاکہ صف بندی کی مدت میں جعلی توڑنے سے بچ سکے۔
مجموعی طور پر پہلے نظر میں توازن کی پیمائش کے رجحان کا فیصلہ اور رجحان کی طاقت پر ADX فلٹرنگ کا استعمال کرتے ہوئے ، قیمتوں میں اتار چڑھاو کے ساتھ رجحان کی مارکیٹ کے حصوں کو مؤثر طریقے سے پہچان لیا جاسکتا ہے۔
اس حکمت عملی میں ایک نظر میں بیلنس شیٹ اور 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")