اس حکمت عملی کا بنیادی خیال یہ ہے کہ تجارت کے بعد رجحان کی سمت کا تعین کرنے کے لئے دوہری حرکت پذیر اوسط اور ایم اے سی ڈی اشارے کو جوڑنا ہے۔ جب تیز ایم اے سست ایم اے سے اوپر عبور کرتا ہے تو ، یہ ایک اپ ٹرینڈ موقع کی نشاندہی کرتا ہے۔ جب تیز ایم اے سست ایم اے سے نیچے عبور کرتا ہے تو ، یہ ایک ڈاؤن ٹرینڈ موقع کی نشاندہی کرتا ہے۔ ایم اے سی ڈی ہسٹوگرام کا استعمال مخصوص اندراج اور خارجی مقامات کا تعین کرنے کے لئے کیا جاتا ہے جب یہ 0 سے اوپر عبور کرتا ہے اور جب یہ 0 سے نیچے عبور کرتا ہے تو مختصر ہوجاتا ہے۔
MACD کے تیز EMA (12 دن) ، سست EMA (26 دن) ، اور سگنل EMA (9 دن) کا حساب لگائیں۔
MACD ہسٹوگرام (فاسٹ EMA - سست EMA) اور MACD سگنل لائن (9 دن کے MACD ہسٹوگرام کے EMA) کا حساب لگائیں۔
50 دن اور 200 دن کے ایم اے کو رجحانات کے طور پر شمار کریں۔
ایم اے سی ڈی ہسٹوگرام کا نشان 0 سے اوپر جانا بولش سگنل ہے اور 0 سے نیچے جانا بیئرش سگنل ہے۔
سست EMA کے اوپر تیز EMA کراسنگ اور لمبی MA کے اوپر مختصر MA کراسنگ کے ساتھ مل کر تیزی کے اشارے ملتے ہیں۔
سست EMA سے نیچے تیز EMA عبور کرنا اور طویل MA سے نیچے مختصر MA عبور کرنا bearish سگنل دیتا ہے۔
ای ایم اے کراس پیرامیٹر کے بعد زیادہ سے زیادہ تجارت کا استعمال کرتے ہوئے ہر ایم اے کراس اوور کے بعد تجارت کی حد کی تعداد۔
تجارت سے نکلنے کے لئے سٹاپ نقصان اور منافع لیں.
دوہری ایم اے ٹرینڈ کے خلاف تجارت سے بچنے کے لئے مجموعی رجحان کا تعین کرتی ہے۔
ایم اے سی ڈی رجحان کی تبدیلیوں کو پکڑنے کے لئے داخلہ اور باہر نکلنے کے مقامات کی نشاندہی کرتا ہے۔
مجموعہ رجحان کی سمت میں اندراجات کے لئے اچھا وقت فراہم کرتا ہے.
ٹرینڈز کا پیچھا کرنے سے بچنے کے لئے کراس اوور کے بعد تجارت کی تعداد کو محدود کرتا ہے۔
نقصان کو روکیں اور منافع کو کنٹرول کرنے کا خطرہ مول لیں۔
بہتر کارکردگی کے لئے پیرامیٹرز کو بہتر بنایا جاسکتا ہے۔
غلط رجحان کا تعین مخالف رجحان کے نقصان کا باعث بنتا ہے۔ رجحان کو مضبوطی سے قائم کرنے کے لئے ایم اے فرق کی ضرورت کو وسیع کریں۔
ایم اے سی ڈی سگنل قیمت کی کارروائی میں تاخیر کا باعث بنتے ہیں جس کے نتیجے میں قبل از وقت یا دیر سے اندراجات ہوتے ہیں۔ ایم اے سی ڈی پیرامیٹرز کو ایڈجسٹ کریں یا فلٹر شامل کریں۔
غلط اسٹاپ نقصان اور منافع لینے کی سطح سے زیادہ اسٹاپ یا ناکافی منافع ہوتا ہے۔ ہر آلہ کے لئے پیرامیٹر کی اصلاح کی ضرورت ہوتی ہے۔
پیرامیٹر کی اصلاح مشکل ہے۔ مختلف مصنوعات اور ٹائم فریم کے لئے مختلف پیرامیٹرز کے مجموعے کی ضرورت ہے۔ وسیع پیمانے پر پہلے سے جانچ کی ضرورت ہے۔
رجحان کا تعین کرنے کے لئے KD جیسے دیگر اشارے کی جانچ کریں.
MACD سگنلز کو فلٹر کرنے کے لیے دوسرے اشارے شامل کریں، جیسے بولنگر بینڈ، ATR اسٹاپ۔
سٹاپ نقصان کو بہتر بنائیں اور ہر پروڈکٹ کے لئے منافع لیں.
بہتر پیرامیٹرز تلاش کرنے کے لئے واک فارورڈ اور بے ترتیب اصلاح کا استعمال کریں.
تجارتی تعدد کو کم کرنے کے لئے میکانیزم شامل کریں، جیسے 0 کے ارد گرد MACD زون.
متعدد مصنوعات میں پیرامیٹر اور مجموعہ کی اصلاح کو خودکار کریں۔
یہ حکمت عملی رجحان کی سمت کے لئے دوہری ایم اے اور انٹری ٹائمنگ کے لئے ایم اے سی ڈی کی طاقتوں کو یکجا کرتی ہے تاکہ ایک مضبوط رجحان کے بعد کا نظام بنایا جاسکے۔ پیرامیٹر کی اصلاح اور اشارے کو جوڑنے کے ذریعے اضافی کارکردگی میں اضافہ ممکن ہے۔ مجموعی طور پر ، اس میں لائیو ٹریڈنگ کے لئے غور کرنے کے لئے مضبوط رسک مینجمنٹ اور منافع کی صلاحیت ہے۔ لیکن مضبوطی کو یقینی بنانے کے لئے ہر پروڈکٹ کے لئے پیرامیٹر ٹیسٹنگ کی ضرورت ہے۔
/*backtest start: 2023-10-02 00:00:00 end: 2023-11-01 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy(title="ComiCo - Joel on Crypto - MACD Scalping", shorttitle="ComiCo - Joel on Crypto - MACD Scalping") // Getting inputs slow_length1 = input(title="EMA Trend 1", defval=50) slow_length2 = input(title="EMA Trend 2 ", defval=200) fast_length = input(title="MACD Fast Length", defval=12) slow_length = input(title="MACD Slow Length", defval=26) signal_length = input.int(title="MACD Signal Smoothing", minval = 1, maxval = 50, defval = 9) src = input(title="MACD Source", defval=close) i_switch = input.string(title="Tick Highlight", defval="Moving average" ,options=["Moving average","Fixed value" ]) i_switch2 = input.string(title="Tick Source", defval="Highest bar" ,options=["Highest bar","Average","Last bar"]) signal_lengthup = input.int(title="Upticks Avg. Length", minval = 1, maxval = 5000, defval = 72) signal_lengthdown = input.int(title="Downticks Avg. Length", minval = 1, maxval = 5000, defval = 72) signal_lengthMA = input.float(title="Ticks Avg. Multiplier", minval = 0, maxval = 5000, defval = 2, step = 0.1) sma_source = "EMA" sma_signal = "EMA" // Plot colors col_grow_above = #26A69A col_fall_above =#B2DFDB col_grow_below = #FFCDD2 col_fall_below = #FF5252 // Calculating fast_ma = sma_source == "SMA" ? ta.sma(src, fast_length) : ta.ema(src, fast_length) slow_ma = sma_source == "SMA" ? ta.sma(src, slow_length) : ta.ema(src, slow_length) time_macd=timeframe.period=="1"?"1": timeframe.period=="3"?"1": timeframe.period=="5"?"1": timeframe.period=="15"?"3":timeframe.period=="30"?"5":timeframe.period=="60"?"15":timeframe.period=="120"?"30":timeframe.period=="240"?"60":timeframe.period=="D"?"240":timeframe.period=="W"?"D":timeframe.period=="M"?"W":timeframe.period=="12M"?"M":timeframe.period macd = fast_ma - slow_ma macd1=request.security(syminfo.tickerid, time_macd, macd) signal = sma_signal == "SMA" ? ta.sma(macd1, signal_length) : ta.ema(macd1, signal_length) ema50=ta.ema(close,slow_length1) ema200=ta.ema(close ,slow_length2) var TradeCounter = 0 MaxCount = input.int(title = "Max trades after EMA cross", minval = 0, maxval = 1000, defval = 3) bull = ema50>ema200 if bull != bull[1] TradeCounter := 0 hist = request.security(syminfo.tickerid, time_macd, macd1 - signal) f() => [hist[4],hist[3],hist[2],hist[1], hist] ss=request.security(syminfo.tickerid, time_macd, hist, barmerge.gaps_on,barmerge.lookahead_off) [ss5,ss4,ss3,ss2,ss1]=request.security(syminfo.tickerid, time_macd, f(), barmerge.gaps_on,barmerge.lookahead_off) a = array.from(ss5,ss4,ss3,ss2,ss1) s3=i_switch2=="Highest bar"?(ss>0? array.max(a, 0) : array.min(a, 0)):i_switch2=="Average"?array.avg(a):i_switch2=="Last bar"?ss1:0 saa=timeframe.period == '1'? ss:s3 saa2=timeframe.period == '1'? ss:s3*signal_lengthMA colorss=(s3>=0 ? (s3[1] < s3 ? col_grow_above : col_fall_above) : (s3[1] < s3 ? col_grow_below : col_fall_below)) saadown = saa2 saaup = saa2 saadown:=saa>=0? saa2:saadown[1] saaup:=saa<0? saa2:saaup[1] verr=ta.ema(saadown,signal_lengthup) dowww=ta.ema(saaup,signal_lengthdown) ss22=plot(verr, title="Avg. Cloud Upper 1", color=color.new(color.white, 100)) ss33=plot(dowww, title="Avg. Cloud Lower 1", color=color.new(color.white, 100)) fill(ss22, ss33, color.new(color.white, 93), title="Avg. Cloud Background") fixeduptick = input(title="Fixed Uptick Value", defval=30) fixeddowntick = input(title="Fixed Downtick Value", defval=-30) minl = i_switch=="Fixed value"? fixeduptick : verr maxl = i_switch=="Fixed value"? fixeddowntick : dowww plot(minl, title="Avg. Cloud Upper 2", color=color.new(color.white, 81)) plot(maxl, title="Avg. Cloud Lower 2", color=color.new(color.white, 81)) colors2= s3<=minl and s3>=maxl ? #2a2e39 : colorss coro2=s3>0? ema50>ema200 ? #2a2e39 : colors2 : ema50<ema200 ? #2a2e39: colors2 plot(saa, title="Histogram", style=plot.style_columns, color=coro2) LimitDiff = input.float(title="Limit Price Difference", minval = 0, maxval = 0.1, defval = 0.005, step = 0.0005) TP = input.float(title="Take Profit", minval = 0, maxval = 0.1, defval = 0.005, step = 0.0005) SL = input.float(title="Stop Loss", minval = 0, maxval = 0.1, defval = 0.004, step = 0.0005) minEMAdiff = input.float(title = "Min EMA difference", defval = 100, step = 10) if #2a2e39 != coro2 a22 = 0 if ema50<ema200 and TradeCounter < MaxCount and math.abs(ema50-ema200) > minEMAdiff LimitPrice = close * (1 + LimitDiff) strategy.entry("enter short", strategy.short, limit = LimitPrice) strategy.exit("exit short", "enter short", limit = LimitPrice * (1 - TP), stop = LimitPrice * (1 + SL)) TradeCounter := TradeCounter + 1 if ema50>ema200 and TradeCounter < MaxCount and math.abs(ema50-ema200) > minEMAdiff LimitPrice = close * (1 - LimitDiff) strategy.entry("enter long", strategy.long, limit = LimitPrice) strategy.exit("exit long", "enter long", limit = LimitPrice * (1 + TP), stop = LimitPrice * (1 - SL)) TradeCounter := TradeCounter + 1 //alertcondition(#2a2e39 != coro2 , title='MACD Tick Alert', message='Joel on Crypto - MACD Tick Alert')