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