متحرک نگلنے والی رجحان کی حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2024-02-29 11:24:18
ٹیگز:

img

جائزہ

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

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

  1. مارکیٹ کی اتار چڑھاؤ کا اندازہ کرنے کے لیے اے ٹی آر کا حساب لگائیں۔
  2. مارکیٹ کے رجحان کی نشاندہی کرنے کے لئے سپر ٹرینڈ اشارے کا حساب لگائیں۔
  3. اپ ٹرینڈ اور ڈاؤن ٹرینڈ کے لئے حالات کی وضاحت کریں.
  4. تیزی سے بڑھتی ہوئی (اعلی رجحان میں) اور کم ہونے والی (بڑھتی ہوئی رجحان میں) کی نشاندہی کریں۔
  5. اسٹاپ نقصان (SL) اور منافع (TP) کی سطح کا حساب لگائیں۔
  6. تجارت میں اس وقت داخل ہوں جب گلے لگانے والے پیٹرن رجحان کی سمت سے مماثل ہوں۔
  7. جب قیمت SL یا TP کی سطح تک پہنچ جاتی ہے تو باہر نکلیں.
  8. چارٹ پر نگلنے کے نمونوں کا نقشہ بنائیں۔

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

اس حکمت عملی کے فوائد میں شامل ہیں:

  1. رجحان کے ساتھ نگلنے کے پیٹرن کو یکجا کرکے سگنل کی کیفیت کو بہتر بنایا گیا۔
  2. درست اندراجات کے لئے رجحان کی تبدیلیوں کی نشاندہی کرنے کی صلاحیت.
  3. بہتر ٹائمنگ کے لئے واضح طویل / مختصر سگنل.
  4. نگلنگ سٹاپ حکمت عملی خطرات کا انتظام کرتے ہوئے رجحان کی پیروی کرتی ہے۔
  5. آسان اصلاحات کے لئے ماڈیولر کوڈ فریم ورک.

خطرے کا تجزیہ

اس کے علاوہ کچھ خطرات پر بھی غور کرنا چاہئے:

  1. نگلنے کے پیٹرن جھوٹے فرار ہونے کا نتیجہ نکل سکتے ہیں۔
  2. نمونہ سائز، مدت وغیرہ جیسے زیادہ سے زیادہ پیرامیٹرز کا تعین کرنا مشکل ہے.
  3. نامکمل رجحان کا تعین غلط اشاروں کا باعث بن سکتا ہے۔
  4. سٹاپ نقصان اور منافع حاصل کرنے کی سطحیں صوابدید پر منحصر ہیں اور موضوعی ہوسکتی ہیں۔
  5. کارکردگی تاریخی اعداد و شمار کی بنیاد پر پیرامیٹر ٹیوننگ پر منحصر ہے.

خطرات کو کم کیا جا سکتا ہے:

  1. جھوٹے بریک آؤٹ سگنل کو دور کرنے کے لئے فلٹرز کا اضافہ.
  2. مضبوط پیرامیٹر حساب کے لئے موافقت پذیر اے ٹی آر کا استعمال کرتے ہوئے.
  3. مشین لرننگ کا استعمال کرتے ہوئے رجحان کا تعین بہتر بنانا۔
  4. جینیاتی الگورتھم کے ذریعے زیادہ سے زیادہ پیرامیٹرز تلاش کرنا.
  5. مضبوطی کو یقینی بنانے کے لئے طویل عرصے تک بیک ٹیسٹنگ.

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

مزید اصلاحات کی گنجائش ہے:

  1. مشین لرننگ رجحان کے تعین کو بہتر بنا سکتی ہے۔
  2. نئے نمونہ کی شناخت کے طریقوں سے نگلنے کے نمونوں کو بہتر طور پر پہچانا جاسکتا ہے۔
  3. تازہ ترین سٹاپ نقصان / منافع لینے کی حکمت عملی سطحوں کو متحرک طور پر بہتر بنا سکتی ہے۔
  4. ہائی فریکوئینسی ڈیٹا مختصر مدت کے نظام کو تیار کر سکتا ہے.
  5. مختلف آلات کے لئے پیرامیٹر ٹیوننگ.

نتیجہ

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


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
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/
// © Malikdrajat


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

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

atr2 = sma(tr, Periods)
atr= changeATR ? atr(Periods) : atr2

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

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 ? 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 ? 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 ? (trend == 1 ? color.green : color.white) : color.white
shortFillColor = highlighting ? (trend == -1 ? color.red : color.white) : color.white
fill(mPlot, upPlot, title="UpTrend Highligter", color=longFillColor)
fill(mPlot, dnPlot, title="DownTrend Highligter", 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(25, title="Boring Candle Threshold (%)", minval=1, maxval=100, step=1)
engulfingThreshold = input(50, title="Engulfing Candle Threshold (%)", minval=1, maxval=100, step=1)
stopLevel = input(200, title="Stop Level (Pips)", minval=1)


// Boring Candle (Inside Bar) and Engulfing Candlestick Conditions
isBoringCandle = abs(open[1] - close[1]) * 100 / abs(high[1] - low[1]) <= boringThreshold
isEngulfingCandle = abs(open - close) * 100 / 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 = crossover(close, bullTP) or crossover(close, bullSL)
exitShort = crossover(close, bearTP) or crossover(close, bearSL)

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

// Strategy Execution
strategy.entry("Buy", strategy.long, when=enterLong )
strategy.entry("Sell", strategy.short, when=enterShort )

// 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(bullEngulfing, style=shape.triangleup, location=location.abovebar, color=color.green)
plotshape(bearEngulfing, style=shape.triangledown, location=location.abovebar, color=color.red)

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



مزید