یہ حکمت عملی رجحان کی سمت کا تعین کرنے کے لئے ملٹی ٹائم فریم ایکسپونینشل چلتی اوسط (ایم ٹی ایف ای ایم اے) کے افعال اور ٹریڈنگ سگنل پیدا کرنے کے لئے ایم اے سی ڈی اشارے کا مکمل فائدہ اٹھاتی ہے ، جبکہ اے ٹی آر اشارے کے ساتھ اسٹاپ نقصان اور منافع کی قیمتیں طے کرتی ہے۔ یہ حکمت عملی مضبوط رجحانات والے ڈیجیٹل اور فئیےٹ کرنسی کے جوڑوں کے لئے موزوں ہے اور مضبوط رجحانات والے بازاروں میں بہتر کارکردگی کا مظاہرہ کرتی ہے۔
ملٹی ٹائم فریم ایکسپونینشل چلتی اوسط (ایم ٹی ایف ای ایم اے) ایک ہی چارٹ پر ایک سے زیادہ ٹائم فریموں کی چلتی اوسط دکھا سکتا ہے تاکہ کسی اثاثے کی مجموعی طویل / مختصر حیثیت کا تعین کیا جاسکے۔ یہ حکمت عملی 1 گھنٹے اور 15 منٹ کی ایم ٹی ایف ای ایم اے کو اپناتی ہے۔
جب قیمت 1 گھنٹے کے ایم ٹی ایف ای ایم اے سے اوپر ہوتی ہے اور 1 گھنٹے کے ایم ٹی ایف ای ایم اے 15 منٹ کے ایم ٹی ایف ای ایم اے سے نیچے ہوتی ہے تو اسے اپ ٹرینڈ کے طور پر بیان کیا جاتا ہے۔ جب قیمت 1 گھنٹے کے ایم ٹی ایف ای ایم اے سے نیچے ہوتی ہے اور 1 گھنٹے کے ایم ٹی ایف ای ایم اے 15 منٹ کے ایم ٹی ایف ای ایم اے سے اوپر ہوتی ہے تو اسے ڈاؤن ٹرینڈ کے طور پر بیان کیا جاتا ہے۔
جب ایم اے سی ڈی لائن نیچے سے سگنل لائن کے اوپر عبور کرتی ہے تو ، خرید کا سگنل تیار ہوتا ہے۔ جب یہ اوپر سے نیچے سے عبور کرتی ہے تو ، فروخت کا سگنل تیار ہوتا ہے۔ اسی وقت ، غلط سگنل سے بچنے کے لئے ایم اے سی ڈی لائن اور سگنل لائن کے لئے کراس اوور کی حد مقرر کی جاتی ہے۔
اے ٹی آر اشارے کا استعمال اسٹاپ نقصان اور منافع لینے کی قیمتوں کو طے کرنے کے لئے کیا جاتا ہے۔ اے ٹی آر متحرک طور پر مناسب اسٹاپ نقصان طے کرسکتا ہے اور مارکیٹ کی اتار چڑھاؤ کی بنیاد پر منافع فاصلہ طے کرسکتا ہے۔ اسی وقت ، اسٹاپ نقصان اور منافع لینے کے ضرب کو زیادہ لچکدار بنانے کے لئے اونچائیوں اور نچلی سطحوں کے بیک ٹیسٹ کی بنیاد پر طے کیا جاتا ہے۔
طویل سگنل: اپ ٹرینڈ اور ایم اے سی ڈی کراسنگ اوپر سگنل لائن اور کراس اوور ویلیو حد سے کم شارٹ سگنل: نیچے کی طرف رجحان اور ایم اے سی ڈی کراسنگ نیچے سگنل لائن اور کراس اوور ویلیو حد سے زیادہ
لانگ ٹیک منافع: اے ٹی آر کے ذریعے قیمت توڑنے سے منافع کی قیمت حاصل ہوتی ہے طویل اسٹاپ نقصان: قیمت ATR اسٹاپ نقصان کی قیمت سے ٹوٹ جاتی ہے۔ مختصر منافع: اے ٹی آر کے ذریعے قیمت میں خرابی منافع کی قیمت لے لو مختصر سٹاپ نقصان: قیمت ATR سٹاپ نقصان کی قیمت سے ٹوٹ جاتی ہے۔
اس حکمت عملی کا سب سے بڑا فائدہ یہ ہے کہ یہ رجحانات کا تعین کرنے میں ایم ٹی ایف ای ایم اے اور تجارتی سگنل تیار کرنے میں ایم اے سی ڈی کی طاقتوں کا مکمل استعمال کرتا ہے۔ ایم ٹی ایف ای ایم اے مجموعی رجحان کی سمت کا واضح طور پر اندازہ لگا سکتا ہے اور متزلزل مارکیٹوں میں کثرت سے تجارت سے بچ سکتا ہے۔ ایم اے سی ڈی اشارے قیمت کے نمونوں میں قلیل مدتی تبدیلیوں کو بہتر طور پر پکڑ سکتا ہے اور تجارتی سگنل تیار کرسکتا ہے۔ دونوں کو ایک ساتھ استعمال کرنے سے زیادہ تجارتی مواقع حاصل کرتے ہوئے رجحان کو پکڑنے کا یقین ہوتا ہے۔ اس کے علاوہ ، اسٹاپ نقصان کو متحرک طور پر ٹریک کرنے اور منافع حاصل کرنے کے لئے اے ٹی آر اشارے کا استعمال کرکے انفرادی تجارت کے خطرے کو مؤثر طریقے سے کنٹرول کیا جاسکتا ہے۔
اس حکمت عملی کے دو اہم خطرات ہیں۔ پہلا ، واضح رجحان کی عدم موجودگی میں ، ایم ٹی ایف ای ایم اے غلط سگنل پیدا کرسکتا ہے ، جس کی وجہ سے نقصانات ہوسکتے ہیں۔ دوسرا ، جب قیمتوں میں ڈرامائی طور پر تبدیلی آتی ہے تو ایم اے سی ڈی اشارے اکثر گمراہ کن سگنل پیدا کرتا ہے ، جس کی وجہ سے زیادہ تجارت ہوسکتی ہے۔ پہلے خطرے کے ل the ، ایم ٹی ایف ای ایم اے پیرامیٹرز کو مناسب طریقے سے ایڈجسٹ کیا جاسکتا ہے تاکہ قیمتوں کے رجحان کی تبدیلیوں سے بہتر طور پر مماثل ہو۔ دوسرا خطرہ ایم اے سی ڈی اشارے کے لئے کراس اوور کی حدود طے کرکے کم کیا جاسکتا ہے۔
حکمت عملی کے مندرجہ ذیل پہلوؤں کو بہتر بنایا جا سکتا ہے:
MTF EMA کے سائیکل پیرامیٹرز کو مختلف ٹریڈنگ آلات کی قیمت کی خصوصیات سے بہتر طور پر ملانے کے لئے ایڈجسٹ کریں
بہتر سگنلز کے لئے MACD اشارے کے تیز اور سست حرکت پذیر اوسط اور سگنل لائن پیرامیٹرز کو بہتر بنائیں
بہترین واپسی کے لئے مختلف ATR سائیکل پیرامیٹرز اور سٹاپ نقصان / منافع لینے کے کئی گنا کی جانچ کریں
فلٹر سگنلز کو دیگر معاون اشارے شامل کریں
یہ لمبی اور مختصر افتتاحی حکمت عملی رجحان کے فیصلے کے لئے ایم ٹی ایف ای ایم اے ، تجارتی سگنل کی تخلیق کے لئے ایم اے سی ڈی ، اور متحرک اسٹاپ نقصان اور منافع حاصل کرنے کے لئے اے ٹی آر کے طریقوں کو یکجا کرتی ہے۔ یہ واضح رجحانات والی منڈیوں میں اچھی واپسی حاصل کرسکتا ہے۔ بہتر کارکردگی حاصل کرنے کے لئے اس حکمت عملی کے پیرامیٹرز اور اصلاحات کو بہتر بنانے کے لئے کافی گنجائش ہے۔ تاہم ، خطرات پر قابو پانا ضروری ہے اور متضاد منڈیوں میں اندھے ٹریڈنگ سے گریز کرنا ضروری ہے۔
/*backtest start: 2023-12-01 00:00:00 end: 2023-12-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/ // © Steven A. Zmuda Burke / stevenz17 //@version=4 // From Date Inputs fromDay = input(defval = 01, title = "From Day", minval = 1, maxval = 31) fromMonth = input(defval = 04, title = "From Month", minval = 1, maxval = 12) fromYear = input(defval = 2022, title = "From Year", minval = 1970) // To Date Inputs toDay = input(defval = 01, title = "To Day", minval = 1, maxval = 31) toMonth = input(defval = 05, title = "To Month", minval = 1, maxval = 12) toYear = input(defval = 2022, title = "To Year", minval = 1970) // Calculate start/end date and time condition startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00) finishDate = timestamp(toYear, toMonth, toDay, 00, 00) time_cond = true // Input strategy("LONG", overlay=true, initial_capital=1000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, slippage=1, commission_type=strategy.commission.percent, commission_value=0.015) SOURCE = input(title = "═════════════════════ SOURCE ═════════════════════", defval = false, type = input.bool) sourcehl2 = input(title="Source hl2 or (open+close)/2 ?",type=input.bool,defval=true) source = sourcehl2 ? hl2 : ((open+close)/2) //MTF EMA MTFEMA = input(title = "════════════════════ MTF EMA ════════════════════", defval = false, type = input.bool) res1=input(title="MTF EMA 1", type=input.resolution, defval="60") len1 = input(title = "EMA Period 1", type=input.integer, defval=70, minval=1) ema1 = ema(source, len1) emaStep1 = security (syminfo.tickerid, res1, ema1, barmerge.gaps_off, barmerge.lookahead_off) mtf1 = emaStep1 res2=input(title="MTF EMA 2", type=input.resolution, defval="15") len2 = input(title = "EMA Period 2", type=input.integer, defval=68, minval=1) ema2 = ema(source, len2) emaStep2 = security (syminfo.tickerid, res2, ema2, barmerge.gaps_off, barmerge.lookahead_off) mtf2 = emaStep2 t1 = plot(mtf1, linewidth=4, color= color.aqua, title="EMA") t2 = plot(mtf2, linewidth=4, color= color.navy, title="EMA") fill(t1, t2, transp = 70, color = mtf1 > mtf2 ? color.red : color.green) ///MACD MACD= input(title = "═════════════════════ MACD ══════════════════════", defval = false, type = input.bool) MACDsource=close fastLength = input(13, minval=1, title="MACD fast moving average") slowLength=input(18,minval=1, title="MACD slow moving average") signalLength=input(24,minval=1, title="MACD signal line moving average") MacdEmaLength =input(9, title="MACD EMA period", minval=1) useEma = input(true, title="Use EMA (otherwise SMA)") useOldAlgo = input(false, title="Use normal MACD") Lmacsig=input(title="LONG MACD and signal crossover limit",type=input.integer,defval=180) // Fast line ma1= useEma ? ema(MACDsource, fastLength) : sma(MACDsource, fastLength) ma2 = useEma ? ema(ma1,fastLength) : sma(ma1,fastLength) fastMA = ((2 * ma1) - ma2) // Slow line mas1= useEma ? ema(MACDsource , slowLength) : sma(MACDsource , slowLength) mas2 = useEma ? ema(mas1 , slowLength): sma(mas1 , slowLength) slowMA = ((2 * mas1) - mas2) // MACD line macd = fastMA - slowMA // Signal line emasig1 = ema(macd, signalLength) emasig2 = ema(emasig1, signalLength) signal = useOldAlgo ? sma(macd, signalLength) : (2 * emasig1) - emasig2 hist = macd - signal histline = hist > 0 ? color.green : color.red //MACD ribbon macdribbon=input(title="Show MACD ribbon?",type=input.bool,defval=false) macdx=input(title="MACD ribbon multiplier", type=input.integer, defval=3, minval=1) leadLine1 = macdribbon ? macd*macdx + source : na leadLine2 = macdribbon ? signal*macdx + source : na leadLine3 = hist + source //MACD plot p3 = plot(leadLine1, color= color.green, title="MACD", transp = 100, linewidth = 8) p4 = plot(leadLine2, color= color.red, title="Signal", transp = 100, linewidth = 8) fill(p3, p4, transp = 20, color = leadLine1 > leadLine2 ? #53b987 : #eb4d5c) plot((leadLine3), color = histline, title="Histogram", linewidth = 3) l="TEst" upHist = (hist > 0) ? hist : 0 downHist = (hist <= 0) ? hist : 0 p1 = plot(upHist, color=color.green, transp=40, style=plot.style_columns, title='Positive delta') p2 = plot(downHist, color=color.green, transp=40, style=plot.style_columns, title='Negative delta') zeroLine = plot(macd, color=color.black, transp=0, linewidth=2, title='MACD line') signalLine = plot(signal, color=color.gray, transp=0, linewidth=2, title='Signal') ribbonDiff = color.green fill(zeroLine, signalLine, color=ribbonDiff) circleYPosition = signal plot(ema(macd,MacdEmaLength) , color=color.red, transp=0, linewidth=2, title='EMA on MACD line') ribbonDiff2 = hist > 0 ? color.green : color.red plot(crossunder(signal,macd) ? circleYPosition : na,style=plot.style_circles, linewidth=4, color=ribbonDiff, title='Dots') //STOCHASTIC stochchch= input(title = "═══════════════════ STOCHASTIC ════════════════════", defval = false, type = input.bool) StochOn = input(title="Stochastic On?",type=input.bool,defval=true) periodK = input(10, title="K", minval=1) periodD = input(1, title="D", minval=1) smoothK = input(3, title="Smooth", minval=1) stochlimit = input(30, title="Stoch value crossover", minval=1) k = sma(stoch(close, high, low, periodK), smoothK) d = sma(k, periodD) stochSignal = StochOn ? (d < stochlimit ? true : false) : true pp= input(1, title="avg price length", minval=1) p = ema (source, pp) K = k + p plot(k, title="%K", color=#0094FF) plot(d, title="%D", color=#FF6A00) h0 = hline(72, "Upper Band", color=#606060) h1 = hline(20, "Lower Band", color=#606060) fill(h0, h1, color=#9915FF, transp=80, title="Background") //Long LS= "════════════════════════════════ LONG CONDITIONS ═══════════════════════════" uptrend = close > mtf1 and mtf1 < mtf2 downtrend = close < mtf1 and mtf1 > mtf2 crossMACD = crossunder(macd,signal) LongBuy = uptrend and stochSignal? crossMACD and signal < Lmacsig and macd < Lmacsig : na LONG = strategy.position_size > 0 SHORT = strategy.position_size < 0 FLAT = strategy.position_size == 0 plotshape(LongBuy, style=shape.xcross, text="LONG", color=color.green) //ATR & TP/SL ATRTPSLX= input(title = "═════════════════ LONG SL ═════════════════", defval = false, type = input.bool) maxIdLossPcnt = input(5, "Max Intraday Loss(%)", type=input.float, minval=0.0, step=0.1) // strategy.risk.max_intraday_loss(maxIdLossPcnt, strategy.percent_of_equity) SSL2=input(title="Long Stop Loss when MTF EMA cross?",type=input.bool,defval=false) SSLOP = LONG and crossunder(source, mtf1) SlossPercOn = input(title="Long Stop Loss (%) on?",type=input.bool,defval=false) SlossPerc = input(title="Long Stop Loss (%)", type=input.float, minval=0.0, step=0.1, defval=4.7) * 0.01 SSpricePerc = LONG and SlossPercOn? strategy.position_avg_price * (-1 - SlossPerc) : na plot(series = SSpricePerc, linewidth=2, color= color.maroon,style=plot.style_linebr, title="Long Stop Loss %") SSLX = LONG and crossunder(source, SSpricePerc) SSLatr= input(title="Long Stop Loss ATR?",type=input.bool,defval=true) useStructure=input(title="Look back for High/Lows?",type=input.bool,defval=true) Slookback=input(title="How far to look back for High/Lows:",type=input.integer,defval=18,minval=1) SatrLenghth=input(title="Long ATR Lenghth",type=input.integer,defval=9,minval=1) SatrStopMultiplier=input(title="Long ATR Stop x ?", type=input.float,defval=4.3, minval=0.1,step=0.1) Satr = atr(SatrLenghth) LongStop = SSLatr ? ((useStructure ? lowest(low, Slookback) : source) - Satr * SatrStopMultiplier) : na SStop = crossunder(source,LongStop) plot(Satr, color=color.blue, title="ATR", transp=100) plot(series = uptrend ? LongStop : na, color=color.red, style=plot.style_linebr, title="Long Trailing Stop", transp=0) ATRTPSLXX= input(title = "═════════════════ LONG TP ═════════════════", defval = false, type = input.bool) TpPercOn = input(title="Long Take Profit (%) on?",type=input.bool,defval=true) TpPerc = input(title="Long Take Profit (%)", type=input.float, minval=0.0, step=0.1, defval=5.3) * 0.01 TppricePerc = LONG and TpPercOn? strategy.position_avg_price * (-1 + TpPerc) : na plot(series = TppricePerc, linewidth=2, color= color.lime,style=plot.style_linebr, title="Long Take Profit %") TPLX = LONG and crossunder(source, TppricePerc) TP1=input(title="1 Long Take Profit On?",type=input.bool,defval=true) useStructure1=input(title="Look back for High/Lows?",type=input.bool,defval=true) STplookback=input(title="How far to look back for High/Lows for 1 TP",type=input.integer,defval=12,minval=1) STpatrLenghth=input(title="Long ATR Lenghth 1 TP",type=input.integer,defval=24,minval=1) SatrProfitMultiplier = input(title="First Long ATR Take Profit x ?", type=input.float,defval=5.5, minval=0.1,step=0.1) STpatr = atr(STpatrLenghth) LongTakeProfit = (useStructure1 ? highest(high, STplookback) : source) + STpatr * SatrProfitMultiplier LongTP = TP1 ? crossover(source, LongTakeProfit): false plot(series = uptrend ? LongTakeProfit: na , color=color.green, style=plot.style_linebr, title="Long Trailing Take Profit", transp=0) // Bar color barcolor(cross(macd, signal) ? (macd - signal > 0 ? (uptrend and macd < 0 and signal < 0 ? color.yellow : na) : (downtrend and macd > 0 and signal > 0 ? color.blue : na)) : na) // Strategy ATR GOLONG = LongBuy and SSLatr and FLAT if GOLONG and TP1 strategy.entry(id="Entry LONG 1TP", long=true,comment="Entry Long") strategy.exit("Long Profit or Loss 1TP","Entry LONG 1TP", limit=LongTakeProfit, stop=LongStop) if SSLX strategy.close(id="Entry LONG 1TP", comment="% Long SL EXIT") if TPLX strategy.close(id="Entry LONG 1TP", comment="% Long TP EXIT") if SSLOP and SSL2 strategy.close(id="Entry LONG 1TP", comment="MTF EMA cross EXIT") if (not time_cond) strategy.close_all() strategy.cancel_all() //plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr) //@version=4