دوہری توسیعی اوسط چلتی رجحان کی پیروی کی حکمت عملی

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

img

جائزہ

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

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

اس حکمت عملی کا بنیادی منطق مختلف ادوار کی دو ای ایم اے لائنوں کا حساب لگانے میں ہے - ایک bearish لائن کے طور پر کام کرتا ہے اور دوسرا bullish لائن کے طور پر۔ خاص طور پر ، حکمت عملی 8 مدت کی تیز EMA لائن کا حساب لگاتی ہے جس میں طالب اشارے کو تیزی کی لائن کے طور پر استعمال کیا جاتا ہے۔ اور یہ 21 مدت کی سست EMA لائن کو bearish لائن کے طور پر حساب لگاتا ہے۔ پھر یہ تیز EMA لائن اور سست EMA لائن کے مابین کراس اوور تعلقات کا فیصلہ کرتا ہے۔ جب تیز لائن سست لائن سے اوپر عبور کرتی ہے تو ، یہ طویل جانے کے لئے ایک تیزی سے سگنل کا تعین کرتی ہے۔ جب تیز لائن سست لائن سے نیچے عبور کرتی ہے تو ، یہ مختصر جانے کے لئے ایک bearish سگنل کا تعین کرتی ہے۔

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

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

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

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

خطرے کا تجزیہ

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

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

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

اس حکمت عملی کو مندرجہ ذیل پہلوؤں میں مزید بہتر بنایا جاسکتا ہے:

  1. مارکیٹ کی اتار چڑھاؤ اور بیک ٹیسٹ کے نتائج کی بنیاد پر EMA ادوار پر موافقت پذیر ایڈجسٹمنٹ ، مقررہ ادوار کے دوران اوور فٹنگ سے بچنا۔

  2. غلط سگنلوں کو فلٹر کرنے کے لئے فلٹر کے حالات شامل کرنا، مثال کے طور پر غیر معمولی کراس اوورز کو فلٹر کرنے کے لئے ٹریڈنگ کے حجم کے ساتھ مل کر؛ یا غیر یقینی سگنل سے بچنے کے لئے MACD اور KDJ جیسے دیگر اشارے کو مل کر.

  3. اسٹاپ نقصان اور منافع لینے کی حکمت عملیوں کو بہتر بنانا ، مثال کے طور پر ، SL / TP پر متحرک ٹریلنگ کو حاصل کرنے کے لئے ATR کو جوڑنا ، زیادہ سخت SL اور قبل از وقت TP کو روکنا۔

  4. مختلف ہولڈنگ پیریڈز کی جانچ کرنا۔ بہت لمبی ہولڈنگ پیریڈز حادثات سے متاثر ہوسکتی ہیں ، جبکہ بہت کم مدت کے نتیجے میں تجارتی اخراجات اور سلائپ لاگت زیادہ ہوتی ہے۔ زیادہ سے زیادہ ہولڈنگ دن تلاش کرنے سے حکمت عملی کی منافع میں بہتری آسکتی ہے۔

خلاصہ

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


/*backtest
start: 2024-01-02 00:00:00
end: 2024-02-01 00:00:00
period: 2h
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/
// © TradersPostInc

//@version=5
strategy('TradersPost Example MOMO Strategy', overlay=true, default_qty_value=100, initial_capital=100000, default_qty_type=strategy.percent_of_equity, pyramiding=0)

startTime = input(defval = timestamp('01 Jan 2021 00:00 +0000'), title = 'Start Time', group = 'Date Range')
endTime = input(defval = timestamp('31 Dec 2023 23:59 +0000'), title = 'End Time', group = 'Date Range')
timeCondition = true
timeConditionEnd = timeCondition[1] and not timeCondition

fastEmaLength = input.int(defval = 8, title = 'Fast EMA Length')
slowEmaLength = input.int(defval = 21, title = 'Slow EMA Length')
sides = input.string(defval = 'Both', title = 'Sides', options = ['Long', 'Short', 'Both', 'None'])

fastEma = ta.ema(close, fastEmaLength)
slowEma = ta.ema(close, slowEmaLength)

isUptrend = fastEma >= slowEma
isDowntrend = fastEma <= slowEma
trendChanging = ta.cross(fastEma, slowEma)

ema105 = request.security(syminfo.tickerid, '30', ta.ema(close, 105)[1], barmerge.gaps_off, barmerge.lookahead_on)
ema205 = request.security(syminfo.tickerid, '30', ta.ema(close, 20)[1], barmerge.gaps_off, barmerge.lookahead_on)
plot(ema105, linewidth=4, color=color.new(color.purple, 0), editable=true)
plot(ema205, linewidth=2, color=color.new(color.purple, 0), editable=true)

aa = plot(fastEma, linewidth=3, color=color.new(color.green, 0), editable=true)
bb = plot(slowEma, linewidth=3, color=color.new(color.red, 0), editable=true)
fill(aa, bb, color=isUptrend ? color.green : color.red, transp=90)

tradersPostBuy = trendChanging and isUptrend and timeCondition
tradersPostSell = trendChanging and isDowntrend and timeCondition

pips = syminfo.pointvalue / syminfo.mintick

percentOrPipsInput = input.string('Percent', title='Percent or Pips', options=['Percent', 'Pips'])

stopLossLongInput = input.float(defval=0, step=0.01, title='Stop Loss Long', minval=0)
stopLossShortInput = input.float(defval=0, step=0.01, title='Stop Loss Short', minval=0)

takeProfitLongInput = input.float(defval=0, step=0.01, title='Target Profit Long', minval=0)
takeProfitShortInput = input.float(defval=0, step=0.01, title='Target Profit Short', minval=0)

stopLossPriceLong = ta.valuewhen(tradersPostBuy, close, 0) * (stopLossLongInput / 100) * pips
stopLossPriceShort = ta.valuewhen(tradersPostSell, close, 0) * (stopLossShortInput / 100) * pips

takeProfitPriceLong = ta.valuewhen(tradersPostBuy, close, 0) * (takeProfitLongInput / 100) * pips
takeProfitPriceShort = ta.valuewhen(tradersPostSell, close, 0) * (takeProfitShortInput / 100) * pips

takeProfitALong = takeProfitLongInput > 0 ? takeProfitLongInput : na
takeProfitBLong = takeProfitPriceLong > 0 ? takeProfitPriceLong : na

takeProfitAShort = takeProfitShortInput > 0 ? takeProfitShortInput : na
takeProfitBShort = takeProfitPriceShort > 0 ? takeProfitPriceShort : na

stopLossALong = stopLossLongInput > 0 ? stopLossLongInput : na
stopLossBLong = stopLossPriceLong > 0 ? stopLossPriceLong : na

stopLossAShort = stopLossShortInput > 0 ? stopLossShortInput : na
stopLossBShort = stopLossPriceShort > 0 ? stopLossPriceShort : na

takeProfitLong = percentOrPipsInput == 'Pips' ? takeProfitALong : takeProfitBLong
stopLossLong = percentOrPipsInput == 'Pips' ? stopLossALong : stopLossBLong
takeProfitShort = percentOrPipsInput == 'Pips' ? takeProfitAShort : takeProfitBShort
stopLossShort = percentOrPipsInput == 'Pips' ? stopLossAShort : stopLossBShort

buyAlertMessage = '{"ticker": "' + syminfo.ticker + '", "action": "buy", "price": ' + str.tostring(close) + '}'
sellAlertMessage = '{"ticker": "' + syminfo.ticker + '", "action": "sell", "price": ' + str.tostring(close) + '}'

exitLongAlertMessage = '{"ticker": "' + syminfo.ticker + '", "action": "exit", "price": ' + str.tostring(close) + '}'
exitShortAlertMessage = '{"ticker": "' + syminfo.ticker + '", "action": "exit", "price": ' + str.tostring(close) + '}'

if (sides != "None")
    if tradersPostBuy
        strategy.entry('Long', strategy.long, when = sides != 'Short', alert_message = buyAlertMessage)
        strategy.close('Short', when = sides == "Short" and timeCondition, alert_message = exitShortAlertMessage)

    if tradersPostSell
        strategy.entry('Short', strategy.short, when = sides != 'Long', alert_message = sellAlertMessage)
        strategy.close('Long', when = sides == 'Long', alert_message = exitLongAlertMessage)

exitAlertMessage = '{"ticker": "' + syminfo.ticker + '", "action": "exit"}'

strategy.exit('Exit Long', from_entry = "Long", profit = takeProfitLong, loss = stopLossLong, alert_message = exitAlertMessage)
strategy.exit('Exit Short', from_entry = "Short", profit = takeProfitShort, loss = stopLossShort, alert_message = exitAlertMessage)

strategy.close_all(when = timeConditionEnd)

مزید