مصنف:چاؤ ژانگ، تاریخ: 2024-01-23 11:14:54
ٹیگز:

img

جائزہ

حکمت عملی میکانزم

اے ڈی ایکس کا استعمال قیمت کے رجحان کی طاقت کا تعین کرنے کے لئے کیا جاتا ہے۔ + ڈی آئی اور - ڈی آئی کی اعلی پڑھنے سے رجحان سازی کی مارکیٹ کا اشارہ ہوتا ہے۔ جب دو لائنیں ملتی ہیں تو ، ایک رینج سے منسلک مارکیٹ کی وضاحت ہوتی ہے۔ حکمت عملی صرف 20 سے زیادہ اے ڈی ایکس پڑھنے پر پوزیشن شروع کرتی ہے تاکہ سائیڈ ویز مارکیٹ کے دوران وِپساؤ سے بچ سکے۔

Ichimoku رجحان کا تعین اور ADX فلٹرنگ کو یکجا کرکے، حکمت عملی اعلی قیمت کی اتار چڑھاؤ کے ادوار کی نشاندہی کرنے میں مؤثر ہے.

فوائد

  • سگنلز کا مجموعہ زیادہ قابل اعتماد تصدیق فراہم کرتا ہے
  • ADX فلٹر غیر رجحان سازی کے ادوار کے دوران غلط تجارت سے بچتا ہے
  • اعلی رسک ریٹرن پروفائل کے ساتھ بیک ٹسٹ کی اچھی کارکردگی

خطرے کا تجزیہ

  • ٹرینڈنگ اسٹاک کے لئے بہتر موزوں؛ رینج محدود مارکیٹ میں کم کثرت سے سگنل
  • Ichimoku موروثی تاخیر ہے اور فوری الٹ پیٹرن یاد کر سکتے ہیں
  • ADX کے ذریعہ غیر رجحان ماحول کا نامکمل تعین

اصلاح کا دائرہ کار

  • ٹیسٹ مختلف پیرامیٹر مجموعے جیسے Tenkan، Kijun ادوار
  • مزید بہتری کے لئے دیگر اشارے، جیسے MACD، KD وغیرہ کو یکجا کریں
  • مختلف 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")


مزید