ملٹی پیریڈ ایس ایم اے انڈیکیٹر پر مبنی حکمت عملی کی پیروی کا رجحان


تخلیق کی تاریخ: 2024-02-04 14:50:24 آخر میں ترمیم کریں: 2024-02-04 14:50:24
کاپی: 0 کلکس کی تعداد: 680
1
پر توجہ دیں
1617
پیروکار

ملٹی پیریڈ ایس ایم اے انڈیکیٹر پر مبنی حکمت عملی کی پیروی کا رجحان

جائزہ

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

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

  1. 5 مختلف ادوار کے ایس ایم اے اوسط استعمال کریں ، بالترتیب 10 ادوار ، 20 ادوار ، 50 ادوار ، 100 ادوار اور 200 ادوار۔
  2. پانچ میڈین لائنوں کے اوپر اور نیچے کی سمت کا موازنہ کریں ، رجحان کی سمت کا تعین کریں۔ مثال کے طور پر ، جب 10 دور ، 20 دور ، 100 دور اور 200 دور کے ایس ایم اے میڈین لائن ایک ساتھ اوپر جاتے ہیں تو ، اسے اوپر کی طرف رجحان سمجھا جاتا ہے۔ جب میڈین لائن ایک ساتھ نیچے جاتی ہے تو ، اسے نیچے کی طرف رجحان سمجھا جاتا ہے۔
  3. مختلف دورانیہ SMA کی تعداد کا موازنہ ، ٹریڈنگ سگنل تشکیل دے رہا ہے۔ مثال کے طور پر ، جب 10 دورانیہ SMA پر 20 دورانیہ SMA کو عبور کرتے وقت زیادہ ہوتا ہے تو ، داخلہ سگنل تشکیل دیا جاتا ہے۔ جب 10 دورانیہ SMA کے نیچے 20 دورانیہ SMA کو عبور کرتے وقت خالی ہوجاتا ہے تو ، داخلہ سگنل تشکیل دیا جاتا ہے۔
  4. ZeroLagEMA کو بطور داخلہ کی تصدیق اور باہر نکلنے کا اشارہ استعمال کریں۔ جب تیز دورانیہ ZeroLagEMA پر سست رفتار دورانیہ ہوتا ہے تو زیادہ کریں۔ جب نیچے پہنا جاتا ہے تو زیادہ پوزیشن۔ خالی جگہ کے اشارے کا فیصلہ کرنے کا طریقہ اس کے برعکس ہے۔

اسٹریٹجک فوائد

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

اسٹریٹجک خطرات اور حل

  1. جب مارکیٹ زلزلے کے صفائی کے مرحلے میں داخل ہوتا ہے تو ، SMA اوسط لائن سگنل اکثر کراس ہوسکتے ہیں ، جس سے زیادہ غیر موثر تجارت اور نقصان کا خطرہ ہوتا ہے۔
    • حل: صفر لاگ ای ایم اے کے فلٹرنگ پیرامیٹرز میں اضافہ کریں تاکہ غیر موثر سگنلوں کے داخلے سے بچا جاسکے۔
  2. چونکہ ایس ایم اے کا حوالہ دیا گیا ہے ، جس میں زیادہ سے زیادہ ادوار ہیں ، لہذا یہ سمجھا گیا ہے کہ سگنل میں کچھ تاخیر ہے ، جس کی وجہ سے قلیل مدتی قیمتوں میں شدید تبدیلیوں پر بروقت رد عمل ظاہر نہیں کیا جاسکتا ہے۔
    • حل: زیادہ حساس اشارے جیسے MACD کے ساتھ مل کر معاون فیصلے کریں۔

حکمت عملی کی اصلاح کی سمت

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

خلاصہ کریں۔

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

حکمت عملی کا ماخذ کوڈ
/*backtest
start: 2024-01-04 00:00:00
end: 2024-02-03 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("Forex MA Racer - SMA Performance /w ZeroLag EMA Trigger", shorttitle = "FX MA Racer (5x SMA, 2x zlEMA)", overlay=false )

// === INPUTS ===
hr0             = input(defval = true, title = "=== SERIES INPUTS ===")
smaSource       = input(defval = close, title = "SMA Source")
sma1Length      = input(defval = 10, title = "SMA 1 Length")
sma2Length      = input(defval = 20, title = "SMA 2 Length")
sma3Length      = input(defval = 50, title = "SMA 3 Length")
sma4Length      = input(defval = 100, title = "SMA 4 Length")
sma5Length      = input(defval = 200, title = "SMA 5 Length")
smaDirSpan      = input(defval = 4, title = "SMA Direction Span")
zlmaSource      = input(defval = close, title = "ZeroLag EMA Source")
zlmaFastLength  = input(defval = 9, title = "ZeroLag EMA Fast Length")
zlmaSlowLength  = input(defval = 21, title = "ZeroLag EMA Slow Length")
hr1             = input(defval = true, title = "=== PLOT TIME LIMITER ===")
useTimeLimit    = input(defval = true, title = "Use Start Time Limiter?")
// set up where we want to run from
startYear       = input(defval = 2018, title = "Start From Year", minval = 0, step = 1)
startMonth      = input(defval = 02, title = "Start From Month", minval = 0,step = 1)
startDay        = input(defval = 01, title = "Start From Day", minval = 0,step = 1)
startHour       = input(defval = 00, title = "Start From Hour", minval = 0,step = 1)
startMinute     = input(defval = 00, title = "Start From Minute", minval = 0,step = 1)
hr2             = input(defval = true, title = "=== TRAILING STOP ===")
useStop     = input(defval = false, title = "Use Trailing Stop?")
slPoints    = input(defval = 200, title = "Stop Loss Trail Points", minval = 1)
slOffset    = input(defval = 400, title = "Stop Loss Trail Offset", minval = 1)
// === /INPUTS ===

// === SERIES SETUP ===
// Fast ZeroLag EMA
zema1=ema(zlmaSource, zlmaFastLength)
zema2=ema(zema1, zlmaFastLength)
d1=zema1-zema2
zlemaFast=zema1+d1

// Slow ZeroLag EMA
zema3=ema(zlmaSource, zlmaSlowLength)
zema4=ema(zema3, zlmaSlowLength)
d2=zema3-zema4
zlemaSlow=zema3+d2

// Simple Moving Averages
period10 = sma(close, sma1Length)
period20 = sma(close, sma2Length)
period50 = sma(close, sma3Length)
period100 = sma(close, sma4Length)
period200 = sma(close, sma5Length)
// === /SERIES SETUP ===

// === PLOT ===
// colors of plotted MAs
p1 = (close < period10) ? #FF0000 : #00FF00
p2 = (close < period20) ? #FF0000 : #00FF00
p3 = (close < period50) ? #FF0000 : #00FF00
p4 = (close < period100) ? #FF0000 : #00FF00
p5 = (close < period200) ? #FF0000 : #00FF00

plot(period10, title='10 Period', color = p1, linewidth=1)
plot(period20, title='20 Period', color = p2, linewidth=2)
plot(period50, title='50 Period', color = p3, linewidth=4)
plot(period100, title='100 Period', color = p4, linewidth=6)
plot(period200, title='200 Period', color = p5, linewidth=10)
// === /PLOT ===

//BFR = BRFIB ? (maFast+maSlow)/2 : abs(maFast - maSlow)

// === STRATEGY ===
// calculate SMA directions
direction10 = rising(period10, smaDirSpan) ? +1 : falling(period10, smaDirSpan) ? -1 : 0
direction20 = rising(period20, smaDirSpan) ? +1 : falling(period20, smaDirSpan) ? -1 : 0
direction50 = rising(period50, smaDirSpan) ? +1 : falling(period50, smaDirSpan) ? -1 : 0
direction100 = rising(period100, smaDirSpan) ? +1 : falling(period100, smaDirSpan) ? -1 : 0
direction200 = rising(period200, smaDirSpan) ? +1 : falling(period200, smaDirSpan) ? -1 : 0

// conditions
// SMA Direction Trigger
dirUp = direction10 > 0 and direction20 > 0 and direction100 > 0 and direction200 > 0
dirDn = direction10 < 0 and direction20 < 0 and direction100 < 0 and direction200 < 0

longCond = (period10>period20) and (period20>period50) and (period50>period100) and  dirUp//and (close > period10) and (period50>period100) //and (period100>period200)
shortCond = (period10<period20) and (period20<period50) and dirDn//and (period50<period100) and (period100>period200)

longExit = crossunder(zlemaFast, zlemaSlow) or crossunder(period10, period20)
shortExit = crossover(zlemaFast, zlemaSlow) or crossover(period10, period20)


// entries and exits
startTimeOk() =>
    // get our input time together
    inputTime   = timestamp(syminfo.timezone, startYear, startMonth, startDay, startHour, startMinute)
    // check the current time is greater than the input time and assign true or false
    timeOk      = time > inputTime ? true : false
    // last line is the return value, we want the strategy to execute if..
    // ..we are using the limiter, and the time is ok -OR- we are not using the limiter
    r = (useTimeLimit and timeOk) or not useTimeLimit


if( true )
    // entries
    strategy.entry("long", strategy.long, when = longCond)
    strategy.entry("short", strategy.short, when = shortCond)

        
    // trailing stop
    if (useStop)
        strategy.exit("XL", from_entry = "long", trail_points = slPoints, trail_offset = slOffset)
        strategy.exit("XS", from_entry = "short", trail_points = slPoints, trail_offset = slOffset)

    // exits
    strategy.close("long", when = longExit)
    strategy.close("short", when = shortExit)
// === /STRATEGY ===