EMA انفیوژن پرو ملٹی سورس ڈیٹا فیوژن حکمت عملی

EMA ADX ATR ROC HEIKIN-ASHI VOLUME
تخلیق کی تاریخ: 2025-09-03 14:23:19 آخر میں ترمیم کریں: 2025-09-03 14:23:19
کاپی: 0 کلکس کی تعداد: 213
2
پر توجہ دیں
319
پیروکار

EMA انفیوژن پرو ملٹی سورس ڈیٹا فیوژن حکمت عملی EMA انفیوژن پرو ملٹی سورس ڈیٹا فیوژن حکمت عملی

ای ایم اے کی حکمت عملی: قیمتوں پر توجہ نہ دینا

کیا آپ کو معلوم ہے؟ زیادہ تر لوگ EMA کا استعمال صرف قیمت پر کرتے ہیں، لیکن اس حکمت عملی میں کیا خاص بات ہے؟ یہ EMA کو 6 مختلف ذرائع سے حساب لگاتا ہے!

اہمیت! ان 6 ذرائع میں شامل ہیں: اوسط قیمت، ٹرانزیکشن حجم، تبدیلی کی شرح، اوسط K لائن قیمت، اوسط K لائن ٹرانزیکشن حجم، اوسط K لائن تبدیلی کی شرح۔ ہر ایک میں مارکیٹ کی مختلف بصیرت ہے!

ٹرپل فلٹرنگ سسٹم: سگنل کو زیادہ درست بنائیں

اس حکمت عملی کا مقصد کسی بھی طرح کے اشارے دینا نہیں ہے!

پہلا: ای ایم اے رجحانات کا اندازہ 📈 موسم کی پیشن گوئی کی طرح، آپ کو یہ معلوم کرنے کی ضرورت ہے کہ موسم اچھا ہے یا برا۔

دوسرا: ADX طاقت فلٹرنگ 💪
ADX ہوا کی پیمائش کرنے والے آلہ کی طرح ہے ، صرف اس صورت میں جب رجحان کافی مضبوط ہے (ڈیفالٹ 25 سے زیادہ) ، سگنل جاری کریں۔

تیسرا راستہ: مقدار کی تصدیق 🔊 فروخت میں تیزی سے اضافہ اسٹاک کی طرح “بڑے زور سے بولتا ہے” ، جس سے یہ اشارہ ملتا ہے کہ یہ مذاق نہیں بلکہ سنجیدہ ہے

3 واپسی کے طریقوں: مختلف ٹریڈنگ سٹائل کے مطابق

سب سے زیادہ دل چسپ بات یہ ہے کہ اس حکمت عملی میں تین راستے دیے گئے ہیں، جیسے کھیل میں سادہ، عام اور مشکل کی تین سطحیں ہیں:

موڈ 1: ریورس سگنل سے باہر نکلیں 🔄 سب سے آسان اور سب سے زیادہ گندی، ایک سے زیادہ سر سگنل آئے تو زیادہ خالی ہو جاتا ہے، ایک سے زیادہ سر سگنل آئے تو زیادہ خالی ہو جاتا ہے

موڈ 2: اے ٹی آر متحرک سٹاپ نقصان 📏 مارکیٹ کے اتار چڑھاؤ کے مطابق خود کار طریقے سے ایڈجسٹمنٹ ، اتار چڑھاؤ کے وقت اسٹاپ نقصانات میں نرمی ، اتار چڑھاؤ کے وقت سختی

موڈ 3: فکسڈ فیصد سٹاپ نقصان 📊 بہتر سمجھیں ، 2٪ جیتنے کے لئے ، 1.5٪ ہارنے کے لئے (اپنی مرضی کے مطابق)

جنگ میں استعمال کے لیے تجاویز

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

اس حکمت عملی کا سب سے بڑا فائدہ یہ ہے کہ یہ لچکدار ہے، آپ مختلف مارکیٹ کے حالات کے مطابق ڈیٹا کے سب سے زیادہ مناسب ذرائع اور باہر نکلنے کے طریقوں کو منتخب کرسکتے ہیں.

حکمت عملی کا ماخذ کوڈ
/*backtest
start: 2025-01-01 00:00:00
end: 2025-09-01 08:00:00
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT","balance":500000}]
*/

//@version=5
//@fenyesk
strategy("EMA inFusion Pro - Source Selection", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=10)

// =============================================
// === INPUT PARAMETERS =======================
// =============================================

// Moving Average Source Selection
maSourceSelection = input.string("Price", "Moving Average Source", 
  options=["Price", "Volume", "Rate of Change", "Heikin Ashi Price", "Heikin Ashi Volume", "Heikin Ashi Rate of Change"],
  tooltip="Select data source for EMA calculation")

// EMA Settings
emaLength = input.int(50, title="EMA Length", minval=1, maxval=200)
rocLength = input.int(1, title="Rate of Change Length", minval=1, maxval=50, tooltip="Length for ROC calculation")

// ADX Filter Settings
useAdxFilter = input.bool(true, title="Use ADX Filter", group="ADX Settings")
adxLength = input.int(14, title="ADX Length", minval=1, maxval=50, group="ADX Settings")
adxThreshold = input.float(25, title="ADX Threshold", minval=10, maxval=50, step=0.5, group="ADX Settings")

// Volume Spike Settings
useVolumeFilter = input.bool(true, title="Use Volume Spike Filter", group="Volume Settings")
volumeMultiplier = input.float(1.0, title="Volume Spike Multiplier", minval=1.0, maxval=5.0, step=0.1, group="Volume Settings")
volumeSmaLength = input.int(20, title="Volume SMA Length", minval=5, maxval=100, group="Volume Settings")

// Trading Exit Mode Selector
tradingMode = input.int(2, title="Trading Exit Mode", minval=1, maxval=3, 
  tooltip="1: Exit on reverse signal\n2: ATR based TP/SL\n3: Percent based TP/SL", 
  group="Exit Strategy")

// Mode 3: Percent-Based Settings
takeProfitPercent = input.float(2.0, title="Take Profit %", minval=0.1, maxval=10.0, step=0.1, group="Percent Exit")
stopLossPercent = input.float(1.5, title="Stop Loss %", minval=0.1, maxval=10.0, step=0.1, group="Percent Exit")

// Mode 2: ATR-Based Settings
atrLength = input.int(14, title="ATR Length", minval=1, maxval=50, group="ATR Exit")
atrMultiplierTp = input.float(4.0, title="ATR Take Profit Multiplier", minval=0.1, maxval=10.0, step=0.1, group="ATR Exit")
atrMultiplierSl = input.float(4.0, title="ATR Stop Loss Multiplier", minval=0.1, maxval=10.0, step=0.1, group="ATR Exit")

// =============================================
// === SOURCE CALCULATIONS ====================
// =============================================

// Rate of Change calculation
roc(src, length) =>
    change = src - src[length]
    src[length] != 0 ? (change / src[length] * 100) : 0

// Standard Rate of Change
rocPrice = roc(close, rocLength)
rocVolume = roc(volume, rocLength)

// Heikin Ashi calculations
haClose = (open + high + low + close) / 4
var float haOpen = na
haOpen := na(haOpen[1]) ? (open + close) / 2 : (haOpen[1] + haClose[1]) / 2
haHigh = math.max(high, math.max(haOpen, haClose))
haLow = math.min(low, math.min(haOpen, haClose))

// Heikin Ashi Rate of Change
haRocPrice = roc(haClose, rocLength)
haRocVolume = roc(volume, rocLength)  // Volume remains same for HA

// Define EMA source based on selection
emaSource = switch maSourceSelection
    "Price" => close
    "Volume" => volume
    "Rate of Change" => rocPrice
    "Heikin Ashi Price" => haClose
    "Heikin Ashi Volume" => volume  // Volume doesn't change in HA
    "Heikin Ashi Rate of Change" => haRocPrice
    => close  // Default fallback

// =============================================
// === INDICATOR CALCULATIONS =================
// =============================================

// Core Indicators
emaValue = ta.ema(emaSource, emaLength)
[diPlus, diMinus, adx] = ta.dmi(adxLength, adxLength)
volumeSma = ta.sma(volume, volumeSmaLength)
volumeSpike = volume > (volumeSma * volumeMultiplier)
atrValue = ta.atr(atrLength)

// Trend Conditions (adjusted for different source types)
bullishTrend = switch maSourceSelection
    "Price" => close > emaValue
    "Heikin Ashi Price" => haClose > emaValue
    "Volume" => volume > emaValue
    "Heikin Ashi Volume" => volume > emaValue
    "Rate of Change" => rocPrice > emaValue
    "Heikin Ashi Rate of Change" => haRocPrice > emaValue
    => close > emaValue

bearishTrend = not bullishTrend

// Cross conditions (adjusted for source type)
emaCrossUp = switch maSourceSelection
    "Price" => ta.crossover(close, emaValue)
    "Heikin Ashi Price" => ta.crossover(haClose, emaValue)
    "Volume" => ta.crossover(volume, emaValue)
    "Heikin Ashi Volume" => ta.crossover(volume, emaValue)
    "Rate of Change" => ta.crossover(rocPrice, emaValue)
    "Heikin Ashi Rate of Change" => ta.crossover(haRocPrice, emaValue)
    => ta.crossover(close, emaValue)

emaCrossDown = switch maSourceSelection
    "Price" => ta.crossunder(close, emaValue)
    "Heikin Ashi Price" => ta.crossunder(haClose, emaValue)
    "Volume" => ta.crossunder(volume, emaValue)
    "Heikin Ashi Volume" => ta.crossunder(volume, emaValue)
    "Rate of Change" => ta.crossunder(rocPrice, emaValue)
    "Heikin Ashi Rate of Change" => ta.crossunder(haRocPrice, emaValue)
    => ta.crossunder(close, emaValue)

// Filters
strongTrend = useAdxFilter ? adx >= adxThreshold : true
volumeConfirm = useVolumeFilter ? volumeSpike : true

// Entry Signals
longCondition = emaCrossUp and strongTrend and volumeConfirm
shortCondition = emaCrossDown and strongTrend and volumeConfirm

// =============================================
// === STRATEGY EXECUTION WITH EXIT MODES =====
// =============================================

// MODE 1: EXIT ON REVERSE SIGNAL
if (tradingMode == 1)
    if (longCondition)
        strategy.entry("Long", strategy.long)
        strategy.close("Short")
    if (shortCondition)
        strategy.entry("Short", strategy.short)
        strategy.close("Long")

// MODE 2: ATR-BASED TAKE PROFIT & STOP LOSS
else if (tradingMode == 2)
    if (longCondition)
        strategy.entry("Long", strategy.long)
        strategy.exit("Long TP/SL", "Long", 
          profit=atrMultiplierTp * atrValue / syminfo.mintick, 
          loss=atrMultiplierSl * atrValue / syminfo.mintick)
    
    if (shortCondition)
        strategy.entry("Short", strategy.short)
        strategy.exit("Short TP/SL", "Short", 
          profit=atrMultiplierTp * atrValue / syminfo.mintick, 
          loss=atrMultiplierSl * atrValue / syminfo.mintick)

// MODE 3: PERCENT-BASED TAKE PROFIT & STOP LOSS
else if (tradingMode == 3)
    if (longCondition)
        longTpPrice = close * (1 + takeProfitPercent / 100)
        longSlPrice = close * (1 - stopLossPercent / 100)
        strategy.entry("Long", strategy.long)
        strategy.exit("Long TP/SL", "Long", limit=longTpPrice, stop=longSlPrice)
    
    if (shortCondition)
        shortTpPrice = close * (1 - takeProfitPercent / 100)
        shortSlPrice = close * (1 + stopLossPercent / 100)
        strategy.entry("Short", strategy.short)
        strategy.exit("Short TP/SL", "Short", limit=shortTpPrice, stop=shortSlPrice)

// =============================================
// === VISUALIZATIONS =========================
// =============================================

// Plot EMA with dynamic color based on source type
emaColor = switch maSourceSelection
    "Price" => color.blue
    "Volume" => color.orange
    "Rate of Change" => color.purple
    "Heikin Ashi Price" => color.green
    "Heikin Ashi Volume" => color.red
    "Heikin Ashi Rate of Change" => color.maroon
    => color.blue

plot(emaValue, title="EMA", color=emaColor, linewidth=2)

// Plot source data for reference (in separate pane when not price-based)
sourceColor = maSourceSelection == "Price" or maSourceSelection == "Heikin Ashi Price" ? na : color.gray
plot(str.contains(maSourceSelection, "Price") ? na : emaSource, title="Source Data", color=sourceColor)

// Background color based on trend
bgcolor(bullishTrend ? color.new(color.green, 95) : color.new(color.red, 95), title="Trend Background")

// Entry signals
plotshape(longCondition, title="Long Signal", style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small)
plotshape(shortCondition, title="Short Signal", style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small)

// Volume spikes
plotchar(useVolumeFilter and volumeSpike, title="Volume Spike", char="V", location=location.bottom, color=color.orange, size=size.tiny)

// ATR-based levels for Mode 2
plot(tradingMode == 2 and strategy.position_size > 0 ? strategy.position_avg_price + (atrMultiplierTp * atrValue) : na, 
  title="Long TP Level", color=color.green, style=plot.style_circles, linewidth=1)
plot(tradingMode == 2 and strategy.position_size > 0 ? strategy.position_avg_price - (atrMultiplierSl * atrValue) : na, 
  title="Long SL Level", color=color.red, style=plot.style_circles, linewidth=1)
plot(tradingMode == 2 and strategy.position_size < 0 ? strategy.position_avg_price - (atrMultiplierTp * atrValue) : na, 
  title="Short TP Level", color=color.green, style=plot.style_circles, linewidth=1)
plot(tradingMode == 2 and strategy.position_size < 0 ? strategy.position_avg_price + (atrMultiplierSl * atrValue) : na, 
  title="Short SL Level", color=color.red, style=plot.style_circles, linewidth=1)


// Alert conditions
alertcondition(longCondition, title="Long Entry", message="EMA Fusion Pro: Long entry signal")
alertcondition(shortCondition, title="Short Entry", message="EMA Fusion Pro: Short entry signal")