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