وسائل لوڈ ہو رہے ہیں... لوڈنگ...

جوآن کریپٹو پر - MACD اسکیلپنگ حکمت عملی کے ساتھ ڈبل چلتی اوسط

مصنف:چاؤ ژانگ، تاریخ: 2023-11-02 16:09:08
ٹیگز:

img

جائزہ

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

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

  1. MACD کے تیز EMA (12 دن) ، سست EMA (26 دن) ، اور سگنل EMA (9 دن) کا حساب لگائیں۔

  2. MACD ہسٹوگرام (فاسٹ EMA - سست EMA) اور MACD سگنل لائن (9 دن کے MACD ہسٹوگرام کے EMA) کا حساب لگائیں۔

  3. 50 دن اور 200 دن کے ایم اے کو رجحانات کے طور پر شمار کریں۔

  4. ایم اے سی ڈی ہسٹوگرام کا نشان 0 سے اوپر جانا بولش سگنل ہے اور 0 سے نیچے جانا بیئرش سگنل ہے۔

  5. سست EMA کے اوپر تیز EMA کراسنگ اور لمبی MA کے اوپر مختصر MA کراسنگ کے ساتھ مل کر تیزی کے اشارے ملتے ہیں۔

  6. سست EMA سے نیچے تیز EMA عبور کرنا اور طویل MA سے نیچے مختصر MA عبور کرنا bearish سگنل دیتا ہے۔

  7. ای ایم اے کراس پیرامیٹر کے بعد زیادہ سے زیادہ تجارت کا استعمال کرتے ہوئے ہر ایم اے کراس اوور کے بعد تجارت کی حد کی تعداد۔

  8. تجارت سے نکلنے کے لئے سٹاپ نقصان اور منافع لیں.

فوائد

  1. دوہری ایم اے ٹرینڈ کے خلاف تجارت سے بچنے کے لئے مجموعی رجحان کا تعین کرتی ہے۔

  2. ایم اے سی ڈی رجحان کی تبدیلیوں کو پکڑنے کے لئے داخلہ اور باہر نکلنے کے مقامات کی نشاندہی کرتا ہے۔

  3. مجموعہ رجحان کی سمت میں اندراجات کے لئے اچھا وقت فراہم کرتا ہے.

  4. ٹرینڈز کا پیچھا کرنے سے بچنے کے لئے کراس اوور کے بعد تجارت کی تعداد کو محدود کرتا ہے۔

  5. نقصان کو روکیں اور منافع کو کنٹرول کرنے کا خطرہ مول لیں۔

  6. بہتر کارکردگی کے لئے پیرامیٹرز کو بہتر بنایا جاسکتا ہے۔

خطرات

  1. غلط رجحان کا تعین مخالف رجحان کے نقصان کا باعث بنتا ہے۔ رجحان کو مضبوطی سے قائم کرنے کے لئے ایم اے فرق کی ضرورت کو وسیع کریں۔

  2. ایم اے سی ڈی سگنل قیمت کی کارروائی میں تاخیر کا باعث بنتے ہیں جس کے نتیجے میں قبل از وقت یا دیر سے اندراجات ہوتے ہیں۔ ایم اے سی ڈی پیرامیٹرز کو ایڈجسٹ کریں یا فلٹر شامل کریں۔

  3. غلط اسٹاپ نقصان اور منافع لینے کی سطح سے زیادہ اسٹاپ یا ناکافی منافع ہوتا ہے۔ ہر آلہ کے لئے پیرامیٹر کی اصلاح کی ضرورت ہوتی ہے۔

  4. پیرامیٹر کی اصلاح مشکل ہے۔ مختلف مصنوعات اور ٹائم فریم کے لئے مختلف پیرامیٹرز کے مجموعے کی ضرورت ہے۔ وسیع پیمانے پر پہلے سے جانچ کی ضرورت ہے۔

بہتر مواقع

  1. رجحان کا تعین کرنے کے لئے KD جیسے دیگر اشارے کی جانچ کریں.

  2. MACD سگنلز کو فلٹر کرنے کے لیے دوسرے اشارے شامل کریں، جیسے بولنگر بینڈ، ATR اسٹاپ۔

  3. سٹاپ نقصان کو بہتر بنائیں اور ہر پروڈکٹ کے لئے منافع لیں.

  4. بہتر پیرامیٹرز تلاش کرنے کے لئے واک فارورڈ اور بے ترتیب اصلاح کا استعمال کریں.

  5. تجارتی تعدد کو کم کرنے کے لئے میکانیزم شامل کریں، جیسے 0 کے ارد گرد MACD زون.

  6. متعدد مصنوعات میں پیرامیٹر اور مجموعہ کی اصلاح کو خودکار کریں۔

خلاصہ

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


/*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')



مزید