وسائل لوڈ ہو رہے ہیں... لوڈنگ...

متحرک اتار چڑھاؤ فلٹر کے ساتھ ملٹی ای ایم اے رجحان کی پیروی کرنے والی حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2025-01-17 15:00:37
ٹیگز:ای ایم اےٹی آراے ٹی آر

 Multi-EMA Trend Following Strategy with Dynamic Volatility Filter

جائزہ

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

حکمت عملی کے اصول

بنیادی منطق میں مندرجہ ذیل اہم اجزاء شامل ہیں: رجحان کی نشاندہی: رجحان فلٹر کے طور پر 50 پیریڈ ای ایم اے کا استعمال کرتا ہے ، صرف ای ایم اے سے اوپر طویل پوزیشن اور ای ایم اے سے نیچے مختصر پوزیشن لیتا ہے۔ Volatility Filtering: True Range (TR) کے EMA کا حساب لگاتا ہے اور مارکیٹ شور کو فلٹر کرنے کے لئے ایک سایڈست فلٹر گتانک (ڈیفالٹ 1.5) استعمال کرتا ہے۔ داخلہ کی شرائط: تین لگاتار موم بتیوں کا تجزیہ جوڑتا ہے ، جس میں قیمت کی نقل و حرکت کی ضرورت ہوتی ہے تاکہ تسلسل اور تیزی کی خصوصیات ظاہر کی جاسکے۔ سٹاپ لاسٹ/ٹیک منافع: اسکیلپ موڈ میں موجودہ ٹی آر اور سوئنگ موڈ میں پچھلے بلند / نچلے درجے کی بنیاد پر مقرر کیا جاتا ہے ، جس سے متحرک رسک مینجمنٹ حاصل ہوتی ہے۔

حکمت عملی کے فوائد

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

حکمت عملی کے خطرات

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

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

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

خلاصہ

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


/*backtest
start: 2024-12-17 00:00:00
end: 2025-01-15 08:00:00
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Creativ3mindz

//@version=5
strategy("Scalp Slayer (I)", overlay=true)

// Input Parameters
filterNumber = input.float(1.5, "Filter Number", minval=1.0, maxval=10.0, tooltip="Higher = More aggressive Filter, Lower = Less aggressive")
emaTrendPeriod = input.int(50, "EMA Trend Period", minval=1, tooltip="Period for the EMA used for trend filtering")
lookbackPeriod = input.int(20, "Lookback Period for Highs/Lows", minval=1, tooltip="Period for determining recent highs/lows")
colorTP = input.color(title='Take Profit Color', defval=color.orange)
colorSL = input.color(title='Stop Loss Color', defval=color.red)

// Inputs for visibility
showBuyLabels = input.bool(true, title="Show Buy Labels")
showSellLabels = input.bool(true, title="Show Sell Labels")

// Alert Options
alertOnCondition = input.bool(true, title="Alert on Condition Met", tooltip="Enable to alert when condition is met")

// Trade Mode Toggle
tradeMode = input.bool(false, title="Trade Mode (ON = Swing, OFF = Scalp)", tooltip="Swing-mode you can use your own TP/SL.")

// Calculations
tr = high - low
ema = filterNumber * ta.ema(tr, 50)
trendEma = ta.ema(close, emaTrendPeriod)  // Calculate the EMA for the trend filter

// Highest and lowest high/low within lookback period for swing logic
swingHigh = ta.highest(high, lookbackPeriod)
swingLow = ta.lowest(low, lookbackPeriod)

// Variables to track the entry prices and SL/TP levels
var float entryPriceLong = na
var float entryPriceShort = na
var float targetPriceLong = na
var float targetPriceShort = na
var float stopLossLong = na
var float stopLossShort = na
var bool tradeActive = false

// Buy and Sell Conditions with Trend Filter
buyCondition = close > trendEma and  // Buy only if above the trend EMA
      close[2] > open[2] and close[1] > open[1] and close > open and 
      (math.abs(close[2] - open[2]) > math.abs(close[1] - open[1])) and 
      (math.abs(close - open) > math.abs(close[1] - open[1])) and 
      close > close[1] and close[1] > close[2] and tr > ema

sellCondition = close < trendEma and  // Sell only if below the trend EMA
       close[2] < open[2] and close[1] < open[1] and close < open and 
       (math.abs(close[2] - open[2]) > math.abs(close[1] - open[1])) and 
       (math.abs(close - open) > math.abs(close[1] - open[1])) and 
       close < close[1] and close[1] < close[2] and tr > ema

// Entry Rules
if (buyCondition and not tradeActive)
    entryPriceLong := close  // Track entry price for long position
    stopLossLong := tradeMode ? ta.lowest(low, lookbackPeriod) : swingLow  // Scalping: recent low, Swing: lowest low of lookback period
    targetPriceLong := tradeMode ? close + tr : swingHigh  // Scalping: close + ATR, Swing: highest high of lookback period
    tradeActive := true

if (sellCondition and not tradeActive)
    entryPriceShort := close  // Track entry price for short position
    stopLossShort := tradeMode ? ta.highest(high, lookbackPeriod) : swingHigh  // Scalping: recent high, Swing: highest high of lookback period
    targetPriceShort := tradeMode ? close - tr : swingLow  // Scalping: close - ATR, Swing: lowest low of lookback period
    tradeActive := true

// Take Profit and Stop Loss Logic
signalBuyTPPrint = (not na(entryPriceLong) and close >= targetPriceLong)
signalSellTPPrint = (not na(entryPriceShort) and close <= targetPriceShort)

signalBuySLPrint = (not na(entryPriceLong) and close <= stopLossLong)
signalSellSLPrint = (not na(entryPriceShort) and close >= stopLossShort)

if (signalBuyTPPrint or signalBuySLPrint)
    entryPriceLong := na  // Reset entry price for long position
    targetPriceLong := na  // Reset target price for long position
    stopLossLong := na  // Reset stop-loss for long position
    tradeActive := false

if (signalSellTPPrint or signalSellSLPrint)
    entryPriceShort := na  // Reset entry price for short position
    targetPriceShort := na  // Reset target price for short position
    stopLossShort := na  // Reset stop-loss for short position
    tradeActive := false

// Plot Buy and Sell Labels with Visibility Conditions
plotshape(showBuyLabels and buyCondition, "Buy", shape.labelup, location=location.belowbar, color=color.green, text="BUY", textcolor=color.white, size=size.tiny)
plotshape(showSellLabels and sellCondition, "Sell", shape.labeldown, location=location.abovebar, color=color.red, text="SELL", textcolor=color.white, size=size.tiny)

// Plot Take Profit Flags
plotshape(showBuyLabels and signalBuyTPPrint, title="Take Profit (buys)", text="TP", style=shape.flag, location=location.abovebar, color=colorTP, textcolor=color.white, size=size.tiny)
plotshape(showSellLabels and signalSellTPPrint, title="Take Profit (sells)", text="TP", style=shape.flag, location=location.belowbar, color=colorTP, textcolor=color.white, size=size.tiny)

// Plot Stop Loss "X" Marker
plotshape(showBuyLabels and signalBuySLPrint, title="Stop Loss (buys)", text="X", style=shape.xcross, location=location.belowbar, color=colorSL, textcolor=color.white, size=size.tiny)
plotshape(showSellLabels and signalSellSLPrint, title="Stop Loss (sells)", text="X", style=shape.xcross, location=location.abovebar, color=colorSL, textcolor=color.white, size=size.tiny)

// Alerts

alertcondition(buyCondition and alertOnCondition, title="Buy Alert", message='{"content": "Buy {{ticker}} at {{close}}"}')
alertcondition(sellCondition and alertOnCondition, title="Sell Alert", message='{"content": "Sell {{ticker}} at {{close}}"}')
alertcondition(signalBuyTPPrint and alertOnCondition, title="Buy TP Alert", message='{"content": "Buy TP {{ticker}} at {{close}}"}')
alertcondition(signalSellTPPrint and alertOnCondition, title="Sell TP Alert", message='{"content": "Sell TP {{ticker}} at {{close}}"}')
alertcondition(signalBuySLPrint and alertOnCondition, title="Buy SL Alert", message='{"content": "Buy SL {{ticker}} at {{close}}"}')
alertcondition(signalSellSLPrint and alertOnCondition, title="Sell SL Alert", message='{"content": "Sell SL {{ticker}} at {{close}}"}')

if buyCondition
    strategy.entry("Enter Long", strategy.long)
else if sellCondition
    strategy.entry("Enter Short", strategy.short)

متعلقہ

مزید