
یہ حکمت عملی ایک مکمل تجارتی نظام ہے جس میں متعدد تکنیکی اشارے شامل ہیں ، بنیادی طور پر Z اسکور کی بنیاد پر تجارت کے حجم اور K لائن اداروں کے سائز کی غیر معمولی اقدار کی پیمائش کی جاتی ہے ، اور متحرک اسٹاپ نقصان کو قائم کرنے کے لئے اے ٹی آر ((اوسط حقیقی طول و عرض)) کا استعمال کیا جاتا ہے۔ یہ نظام منافع کے اہداف کو بہتر بنانے کے لئے رسک ریٹرن ((RR) کو بھی مربوط کرتا ہے ، جس میں کثیر جہتی تکنیکی تجزیہ کے ذریعہ قابل اعتماد تجارتی سگنل فراہم کیے جاتے ہیں۔
حکمت عملی کی بنیادی منطق درج ذیل کلیدی اجزاء پر مبنی ہے:
اس حکمت عملی میں زیڈ اسکور تجزیہ ، اے ٹی آر اسٹاپ نقصان اور منافع کے تناسب کو بہتر بنانے کے ساتھ مل کر ایک مکمل تجارتی نظام تشکیل دیا گیا ہے۔ اس نظام کے فوائد کثیر جہتی سگنل کی تصدیق اور لچکدار خطرے کے انتظام میں ہیں ، لیکن پیرامیٹرز کی ترتیب اور مارکیٹ کے ماحول کے اثرات کو بھی مدنظر رکھنا ضروری ہے۔ تجویز کردہ اصلاحی سمتوں کے ذریعہ ، حکمت عملی اس کی استحکام اور موافقت کو مزید بڑھا سکتی ہے۔
/*backtest
start: 2024-10-01 00:00:00
end: 2025-02-18 08:00:00
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy("admbrk | Candle Color & Price Alarm with ATR Stop", overlay=true, initial_capital=50, default_qty_type=strategy.cash, default_qty_value=200, commission_type=strategy.commission.percent, commission_value=0.05, pyramiding=3)
// **Risk/Reward ratio (RR) as input**
rr = input.float(2.0, title="Risk/Reward Ratio (RR)", step=0.1)
// **Z-score calculation function**
f_zscore(src, len) =>
mean = ta.sma(src, len)
std = ta.stdev(src, len)
(src - mean) / std
// **Z-score calculations**
len = input(20, "Z-Score MA Length")
z1 = input.float(1.5, "Threshold z1", step=0.1)
z2 = input.float(2.5, "Threshold z2", step=0.1)
z_volume = f_zscore(volume, len)
z_body = f_zscore(math.abs(close - open), len)
i_src = input.string("Volume", title="Source", options=["Volume", "Body size", "Any", "All"])
float z = na
if i_src == "Volume"
z := z_volume
else if i_src == "Body size"
z := z_body
else if i_src == "Any"
z := math.max(z_volume, z_body)
else if i_src == "All"
z := math.min(z_volume, z_body)
// **Determine trend direction**
green = close >= open
red = close < open
// **Long and Short signals**
longSignal = barstate.isconfirmed and red[1] and low < low[1] and green
shortSignal = barstate.isconfirmed and green[1] and high > high[1] and red
long = longSignal and (z >= z1)
short = shortSignal and (z >= z1)
// **ATR calculation (for ATR Stop)**
atrLength = input.int(14, title="ATR Length")
atrMultiplier = input.float(1.5, title="ATR Stop Multiplier")
atrValue = ta.atr(atrLength)
// **ATR-based stop-loss calculation**
long_atr_stop = close - atrValue * atrMultiplier
short_atr_stop = close + atrValue * atrMultiplier
// **Stop-loss setting (set to the lowest/highest wick of the last two bars)**
long_sl = ta.lowest(low, 2) // Long stop-loss (lowest of the last 2 bars)
short_sl = ta.highest(high, 2) // Short stop-loss (highest of the last 2 bars)
// **Take-profit calculation (with RR)**
long_tp = close + (close - long_sl) * rr
short_tp = close - (short_sl - close) * rr
triggerAlarm(symbol)=>
status = close
var string message = na
alarmMessageJSON = syminfo.ticker + message +"\\n" + "Price: " + str.tostring(status)
if long
// Open Long position
strategy.entry("Long", strategy.long)
strategy.exit("Long Exit", from_entry="Long", stop=math.max(long_sl, long_atr_stop), limit=long_tp)
if short
// Open Short position
strategy.entry("Short", strategy.short)
strategy.exit("Short Exit", from_entry="Short", stop=math.min(short_sl, short_atr_stop), limit=short_tp)
// **Coloring the candles (BUY = Green, SELL = Red)**
barcolor(long ? color.green : short ? color.red : na)
// **Add entry/exit markers on the chart**
plotshape(long, title="BUY Signal", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small, text="BUY")
plotshape(short, title="SELL Signal", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small, text="SELL")
// **Plot TP and SL markers on exits**
exitLong = strategy.position_size < strategy.position_size[1] and strategy.position_size[1] > 0
exitShort = strategy.position_size > strategy.position_size[1] and strategy.position_size[1] < 0
plotshape(exitLong, title="Long Exit", location=location.abovebar, color=color.blue, style=shape.labeldown, size=size.tiny, text="TP/SL")
plotshape(exitShort, title="Short Exit", location=location.belowbar, color=color.orange, style=shape.labelup, size=size.tiny, text="TP/SL")
// **Add alerts**
alertcondition(long, title="Long Signal", message="Long signal triggered!")
alertcondition(short, title="Short Signal", message="Short signal triggered!")