سپر ٹرینڈ نگلنگ حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2023-12-08 15:40:26
ٹیگز:

img

جائزہ

سپر ٹرینڈ اینگلفنگ حکمت عملی ایک رجحان کی پیروی کرنے والی حکمت عملی ہے جس میں اوسط حقیقی رینج (اے ٹی آر) ، سپر ٹرینڈ اشارے اور گلے لگانے کے نمونوں کا امتزاج ہوتا ہے تاکہ رجحان کی سمت کی نشاندہی کی جاسکے اور جب گلے لگانے کے نمونوں کی تصدیق ہوتی ہے تو خطرہ-انعامی تناسب میں داخلے کے اچھے مواقع ملتے ہیں۔

حکمت عملی منطق

اس حکمت عملی میں پہلے اے ٹی آر اور سپر ٹرینڈ اشارے کا استعمال موجودہ مارکیٹ کے رجحان کی سمت کا تعین کرنے کے لئے کیا جاتا ہے۔ خاص طور پر ، جب قیمت اوپری بینڈ سے نیچے ہوتی ہے تو نیچے کا رجحان بیان کیا جاتا ہے ، اور جب قیمت نچلی بینڈ سے اوپر ہوتی ہے تو اوپر کا رجحان۔

اس کے ساتھ ہی ، حکمت عملی یہ بھی فیصلہ کرتی ہے کہ کیا K- لائن گلے لگانے کا نمونہ تشکیل دیتی ہے۔ کوڈ منطق کے مطابق ، ایک اپ ٹرینڈ میں ، اگر پچھلی بار کی بندش کی قیمت موجودہ بار کی افتتاحی قیمت سے زیادہ ہے ، جبکہ موجودہ بار کی بندش کی قیمت افتتاحی قیمت سے کم ہے ، تو ایک تیزی سے گلے لگانا شروع ہوجائے گا۔ نیچے کے رجحان میں ، اگر پچھلی بار کی بندش کی قیمت موجودہ بار کی افتتاحی قیمت سے کم ہے ، جبکہ موجودہ بار کی بندش کی قیمت افتتاحی قیمت سے زیادہ ہے ، تو ایک bearish گلے لگانا شروع ہوجائے گا۔

جب نگلپنگ پیٹرن رجحان کی سمت کے مطابق ہوتا ہے تو ، ایک تجارتی سگنل تیار کیا جائے گا۔ اس کے علاوہ ، حکمت عملی اسٹاپ نقصان کا حساب بھی کرے گی اور نگلپنگ پیٹرن کی بنیاد پر منافع کی سطح بھی لے گی۔ مارکیٹ میں داخل ہونے کے بعد ، اگر قیمت اسٹاپ نقصان یا منافع کی سطح کو چھوتی ہے تو ، موجودہ پوزیشن سے باہر نکل جائے گی۔

فوائد کا تجزیہ

اس حکمت عملی میں رجحان کی پیروی اور نمونہ کی شناخت کے فوائد کو یکجا کیا گیا ہے تاکہ رجحان کی مارکیٹوں میں الٹ جانے کے اشاروں کی نشاندہی کی جاسکے ، اس طرح موڑ کے مقامات پر بڑی چالوں کو پکڑ لیا جاسکے۔ اس کے علاوہ ، اسٹاپ نقصان کا طریقہ کار نقصانات کے خطرے کو مؤثر طریقے سے کنٹرول کرسکتا ہے۔

خطرے کا تجزیہ

اس حکمت عملی کا سب سے بڑا خطرہ یہ ہے کہ گلے لگانے والے نمونوں میں جعلی وقفے ہوسکتے ہیں ، اس طرح غلط سگنل پیدا ہوتے ہیں۔ اس کے علاوہ ، اسٹاپ نقصان اور منافع لینے کی ترتیبات بھی بہت خود مختار ہوسکتی ہیں ، متوازن منافع اور نقصانات کو حاصل کرنے میں ناکام رہتی ہیں۔ پیرامیٹر کے مجموعوں کو بہتر بنانے اور اسٹاپ نقصان کو ایڈجسٹ کرنے اور منافع کی سطح کو مناسب طریقے سے لینے کی سفارش کی جاتی ہے۔

اصلاح کی ہدایات

مارکیٹ میں اتار چڑھاؤ میں ہونے والی تبدیلیوں کو بہتر طور پر پکڑنے کے لئے حقیقی وقت میں اے ٹی آر پیرامیٹرز کو بہتر بنانے پر غور کریں۔ اس کے علاوہ ، رجحانات کی نشاندہی کرنے کے لئے دوسرے اشارے کی تحقیق سے حکمت عملی کے استحکام میں مزید بہتری آسکتی ہے۔ اسٹاپ نقصان اور منافع حاصل کرنے کے نقطہ نظر سے ، متحرک ٹریلنگ بھی ایک قابل عمل اصلاح کی سمت ہے۔

خلاصہ

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


/*backtest
start: 2023-11-07 00:00:00
end: 2023-12-07 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Armanhammer

//@version=5
strategy("Engulfing with Trend", overlay=true)

Periods = input.int(title="ATR Period", defval=10)
src = input(hl2, title="Source")
Multiplier = input.float(title="ATR Multiplier", step=0.1, defval=3.0)
changeATR= input.bool(title="Change ATR Calculation Method ?", defval=true)
showsignals = input.bool(title="Show Buy/Sell Signals ?", defval=true)
highlighting = input.bool(title="Highlighter On/Off ?", defval=true)

atr2 = ta.sma(src, Periods)
atr= changeATR ? ta.atr(Periods) : atr2

up=src-(Multiplier*atr)
up1 = nz(up[1],up)
up := close[1] > up1 ? math.max(up,up1) : up
dn=src+(Multiplier*atr)
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? math.min(dn, dn1) : dn

var trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend

upPlot = plot(trend == 1 ? up : na, title="Up Trend", style=plot.style_linebr, linewidth=2, color=color.green)
buySignal = trend == 1 and trend[1] == -1
plotshape(buySignal and showsignals ? up : na, title="Buy", style=shape.labelup, location=location.absolute, color=color.new(color.green, 0), text="Buy")
//plotshape(buySignal ? up : na, title="UpTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.green, transp=0)
//plotshape(buySignal and showsignals ? up : na, title="Buy", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.green, textcolor=color.white, transp=0)
dnPlot = plot(trend == 1 ? na : dn, title="Down Trend", style=plot.style_linebr, linewidth=2, color=color.red)
sellSignal = trend == -1 and trend[1] == 1
plotshape(sellSignal and showsignals ? dn : na, title="Sell", style=shape.labeldown, location=location.absolute, color=color.new(color.red, 0), text="Sell")
//plotshape(sellSignal ? dn : na, title="DownTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.red, transp=0)
//plotshape(sellSignal and showsignals ? dn : na, title="Sell", text="Sell", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.red, textcolor=color.white, transp=0)
mPlot = plot(ohlc4, title="", style=plot.style_circles, linewidth=0)
longFillColor = highlighting and trend == 1 ? color.new(color.green, 0) : na
shortFillColor = highlighting and trend == -1 ? color.new(color.red, 0) : na
fill(upPlot, dnPlot, color=longFillColor)
fill(dnPlot, upPlot, color=shortFillColor)
alertcondition(buySignal, title="SuperTrend Buy", message="SuperTrend Buy!")
alertcondition(sellSignal, title="SuperTrend Sell", message="SuperTrend Sell!")
changeCond = trend != trend[1]
alertcondition(changeCond, title="SuperTrend Direction Change", message="SuperTrend has changed direction!")

// Define Downtrend and Uptrend conditions
downtrend = trend == -1
uptrend = trend == 1


// Engulfing
boringThreshold = input.float(25, title="Boring Candle Threshold (%)", minval=1, maxval=100)
engulfingThreshold = input.float(50, title="Engulfing Candle Threshold (%)", minval=1, maxval=100)
stopLevel = input.int(200, title="Stop Level (Pips)", minval=1)

// Boring Candle (Inside Bar) and Engulfing Candlestick Conditions
isBoringCandle = math.abs(open[1] - close[1]) * 100 / math.abs(high[1] - low[1]) <= boringThreshold
isEngulfingCandle = math.abs(open - close) * 100 / math.abs(high - low) <= engulfingThreshold

// Bullish and Bearish Engulfing Conditions
bullEngulfing = uptrend and close[1] < open[1] and close > open[1] and not isBoringCandle and not isEngulfingCandle
bearEngulfing = downtrend and close[1] > open[1] and close < open[1] and not isBoringCandle and not isEngulfingCandle

// Stop Loss, Take Profit, and Entry Price Calculation
bullStop = close + (stopLevel * syminfo.mintick)
bearStop = close - (stopLevel * syminfo.mintick)
bullSL = low 
bearSL = high
bullTP = bullStop + (bullStop - low)
bearTP = bearStop - (high - bearStop)

// Entry Conditions
enterLong = bullEngulfing and uptrend
enterShort = bearEngulfing and downtrend

// Exit Conditions
exitLong = ta.crossover(close, bullTP) or ta.crossover(close, bullSL)
exitShort = ta.crossover(close, bearTP) or ta.crossover(close, bearSL)

// Check if exit conditions are met by the next candle
exitLongNextCandle = exitLong and (ta.crossover(close[1], bullTP[1]) or ta.crossover(close[1], bullSL[1]))
exitShortNextCandle = exitShort and (ta.crossover(close[1], bearTP[1]) or ta.crossover(close[1], bearSL[1]))

// Strategy Execution
if enterLong
    strategy.entry("Buy", strategy.long)

if enterShort
    strategy.entry("Sell", strategy.short)

// Exit Conditions for Long (Buy) Positions
if bullEngulfing and not na(bullTP) and not na(bullSL)
    strategy.exit("Exit Long", from_entry="Buy", stop=bullSL, limit=bullTP)

// Exit Conditions for Short (Sell) Positions
if bearEngulfing and not na(bearTP) and not na(bearSL)
    strategy.exit("Exit Short", from_entry="Sell", stop=bearSL, limit=bearTP)


// Plot Shapes and Labels
plotshape(series=bullEngulfing, style=shape.triangleup, location=location.abovebar, color=color.green)
plotshape(series=bearEngulfing, style=shape.triangledown, location=location.abovebar, color=color.red)

// Determine OP, SL, and TP
plot(series=bullEngulfing ? bullStop : na, title="Bullish Engulfing stop", color=color.red, linewidth=3, style=plot.style_linebr)
plot(series=bearEngulfing ? bearStop : na, title="Bearish Engulfing stop", color=color.red, linewidth=3, style=plot.style_linebr)
plot(series=bullEngulfing ? bullSL : na, title="Bullish Engulfing SL", color=color.red, linewidth=3, style=plot.style_linebr)
plot(series=bearEngulfing ? bearSL : na, title="Bearish Engulfing SL", color=color.red, linewidth=3, style=plot.style_linebr)
plot(series=bullEngulfing ? bullTP : na, title="Bullish Engulfing TP", color=color.green, linewidth=3, style=plot.style_linebr)
plot(series=bearEngulfing ? bearTP : na, title="Bearish Engulfing TP", color=color.green, linewidth=3, style=plot.style_linebr)

// Create labels if the condition for bullEngulfing or bearEngulfing is met
//if bullEngulfing
   // label.new(x=bar_index, y=bullSL, text="SL: " + str.tostring(bullSL), color=color.red, textcolor=color.white, style=label.style_labelup, size=size.tiny)

//if bearEngulfing
   // label.new(x=bar_index, y=bearSL, text="SL: " + str.tostring(bearSL), color=color.red, textcolor=color.white, style=label.style_labeldown, size=size.tiny)

//if bullEngulfing
  //  label.new(x=bar_index, y=bullTP, text="TP: " + str.tostring(bullTP), color=color.green, textcolor=color.white, style=label.style_labeldown, size=size.tiny)

//if bearEngulfing
  //  label.new(x=bar_index, y=bearTP, text="TP: " + str.tostring(bearTP), color=color.green, textcolor=color.white, style=label.style_labelup, size=size.tiny)


مزید