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

مصنف:چاؤ ژانگ، تاریخ: 2023-11-16 17:25:13
ٹیگز:

img

جائزہ

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

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

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

کوڈ کے مطابق ، تیز لائن کی لمبائی 12 ہے اور سست لائن کی لمبائی 26 ہے ، جو قلیل مدتی اور طویل مدتی رجحانات کی نمائندگی کرتی ہے۔ اضافی ہموار کرنے کے لئے سگنل کی لمبائی 9 ہے۔

کراس اوور منطق:

  • trend_up = macd > سگنل: تیز رفتار لائن سست لائن سے اوپر کی طرف بڑھتی ہے، جس سے قلیل مدتی اپ ٹرینڈ کی نشاندہی ہوتی ہے

  • trend_dn = macd < سگنل: تیز لائن سست لائن سے نیچے کراس کرتی ہے ، جس سے قلیل مدتی نیچے کا رجحان ظاہر ہوتا ہے۔

کراس اوور پوائنٹ کا پتہ لگانا:

  • cross_UP = سگنل[1] >= macd[1] اور سگنل < macd: تیز لائن نیچے سے سست لائن کو عبور کرتی ہے

  • cross_DN = سگنل [1] <= macd [1] اور سگنل > macd: تیز لائن اوپر سے سست لائن کو عبور کرتی ہے

ہسٹوگرام رنگ کی تبدیلی رفتار کی طاقت کا تعین کرتی ہے:

  • histA_IsUp = ہیسٹوگرام کالم بڑھتا ہے اور 0 سے زیادہ ہے، اپ ٹرینڈ میں رفتار مضبوط ہوتی ہے

  • histA_IsDown = ہسٹوگرام کالم میں کمی لیکن اب بھی 0 سے زیادہ ، رفتار میں کمی

  • 0 سے نیچے ایک ہی منطق

فوائد

  1. دوہری حرکت پذیر اوسط وسط مدتی رجحان کا تعین کرتے ہیں، قلیل مدتی شور سے بچیں

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

  3. ہسٹوگرام کا رنگ تبدیل کرنے سے بہتر اندراج کا وقت معلوم ہوتا ہے

  4. کراس اوور پس منظر کا رنگ اشاروں کو اجاگر کرتا ہے

  5. مختلف مارکیٹ ماحول کے مطابق اپنی مرضی کے مطابق چلتی اوسط مدت

  6. سایڈست MACD پیرامیٹرز اشارے کو بہتر بناتے ہیں

  7. متعدد اندراج کی تصدیق فراہم کرتا ہے: رجحان، کراس اوور، پیٹرن بریک آؤٹ

خطرات

  1. مختصر مدت کے اتار چڑھاؤ کے لئے غیر حساس دوہری ایم اے، مختصر مدت کے مواقع کو یاد کر سکتے ہیں

  2. ناقص پیرامیٹر کی ترتیبات کے ساتھ ناقص MACD اثر، غلط سگنل پیدا کر سکتا ہے

  3. صرف ایم اے اور ایم اے سی ڈی پر مبنی اندراجات میں کچھ اندھے مقامات ہیں

  4. اسٹاپ نقصان کا کوئی طریقہ کار نقصانات میں توسیع کا خطرہ پیدا نہیں کرتا

  5. منی مینجمنٹ اور پوزیشن سائزنگ کی کمی

ممکنہ حل:

  1. قلیل مدتی سوئنگ رینج اور کنٹرول رسک کی وضاحت کے لئے دیگر اشارے کو یکجا کریں

  2. MACD پیرامیٹرز کو بہتر بنائیں اور مختلف مارکیٹوں پر ٹیسٹ کریں

  3. سگنل کی تصدیق کے لئے پیٹرن، رفتار وغیرہ شامل کریں

  4. نقصان کے سائز کو محدود کرنے کے لئے سٹاپ نقصان کے طریقہ کار کو قائم کریں

  5. سرمایہ کی بنیاد پر پوزیشنوں کے سائز میں منی مینجمنٹ ماڈیول شامل کریں

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

  1. مارکیٹ میں زیادہ موافقت کے لئے ایم اے پیرامیٹرز کے مجموعوں کی جانچ اور اصلاح کریں

  2. مختلف ایم اے اقسام جیسے وی ڈبلیو اے پی، بولنگر مڈ لائن وغیرہ کی کوشش کریں۔

  3. جھوٹے بریک آؤٹ سے بچنے کے لئے تجارتی حجم پر غور کریں

  4. زیادہ خریدنے / زیادہ فروخت کی تصدیق کے لئے RSI وغیرہ شامل کریں

  5. مضبوط سٹاپ نقصان کے طریقہ کار کی تعمیر جیسے ٹریلنگ سٹاپ، اتار چڑھاؤ سٹاپ وغیرہ.

  6. اکاؤنٹ کے سائز کی بنیاد پر پوزیشن کا سائز شامل کریں

  7. پیرامیٹر کی اصلاح کے لئے مشین لرننگ پر غور کریں

  8. بہتر پورٹ فولیو نقطہ نظر کے لئے حکمت عملی کائنات کو بڑھانا

نتیجہ

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


/*backtest
start: 2022-11-15 00:00:00
end: 2023-11-15 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(title="Histogram MacD MVP_V2.1", shorttitle="Histogram MacD MVP_2.1")
//Plot Inputs
res           = input.timeframe("",  "Indicator TimeFrame")
fast_length   = input.int(title="Fast Length", defval=12)
slow_length   = input.int(title="Slow Length", defval=26)
src           = input.source(title="Source", defval=close)
signal_length = input.int(title="Signal Smoothing", minval = 1, maxval = 999, defval = 9)
sma_source    = input.string(title="Oscillator MA Type", defval="EMA", options=["SMA", "EMA"])
sma_signal    = input.string(title="Signal Line MA Type", defval="EMA", options=["SMA", "EMA"])
// Show Plots T/F
show_macd     = input.bool(true, title="Show MACD Lines", group="Show Plots?", inline="SP10")
show_macd_LW  = input.int(3, minval=0, maxval=5, title = "MACD Width", group="Show Plots?", inline="SP11")
show_signal_LW= input.int(2, minval=0, maxval=5, title = "Signal Width", group="Show Plots?", inline="SP11")
show_Hist     = input.bool(true, title="Show Histogram", group="Show Plots?", inline="SP20")
show_hist_LW  = input.int(5, minval=0, maxval=5, title = "-- Width", group="Show Plots?", inline="SP20")
show_trend    = input.bool(true, title = "Show MACD Lines w/ Trend Color", group="Show Plots?", inline="SP30")
show_HB       = input.bool(false, title="Show Highlight Price Bars", group="Show Plots?", inline="SP40")
show_cross    = input.bool(false, title = "Show BackGround on Cross", group="Show Plots?", inline="SP50")
show_dots     = input.bool(true, title = "Show Circle on Cross", group="Show Plots?", inline="SP60")
show_dots_LW  = input.int(5, minval=0, maxval=5, title = "-- Width", group="Show Plots?", inline="SP60")

//show_trend    = input(true, title = "Colors MACD Lines w/ Trend Color", group="Show Plots?", inline="SP5")
// MACD Lines colors
col_macd      = input.color(#FF6D00, "MACD Line  ",  group="Color Settings", inline="CS1")
col_signal    = input.color(#2962FF, "Signal Line  ",  group="Color Settings", inline="CS1")
col_trnd_Up   = input.color(#4BAF4F, "Trend Up      ",  group="Color Settings", inline="CS2")
col_trnd_Dn   = input.color(#B71D1C, "Trend Down    ",  group="Color Settings", inline="CS2")
// Histogram Colors
col_grow_above = input.color(#26A69A, "Above   Grow",  group="Histogram Colors", inline="Hist10")
col_fall_above = input.color(#FF5252, "Fall",  group="Histogram Colors", inline="Hist10")
col_grow_below = input.color(#FF5252, "Below Grow",  group="Histogram Colors", inline="Hist20")
col_fall_below = input.color(#f8f524, "Fall",  group="Histogram Colors", inline="Hist20")
// Alerts T/F Inputs
alert_Long    = input.bool(true, title = "MACD Cross Up", group = "Alerts", inline="Alert10")
alert_Short   = input.bool(true, title = "MACD Cross Dn", group = "Alerts", inline="Alert10")
alert_Long_A  = input.bool(false, title = "MACD Cross Up & > 0", group = "Alerts", inline="Alert20")
alert_Short_B = input.bool(false, title = "MACD Cross Dn & < 0", group = "Alerts", inline="Alert20")
// Calculating
fast_ma = request.security(syminfo.tickerid, res, sma_source == "SMA" ? ta.sma(src, fast_length) : ta.ema(src, fast_length))
slow_ma = request.security(syminfo.tickerid, res, sma_source == "SMA" ? ta.sma(src, slow_length) : ta.ema(src, slow_length))
macd = fast_ma - slow_ma
signal = request.security(syminfo.tickerid, res, sma_signal == "SMA" ? ta.sma(macd, signal_length) : ta.ema(macd, signal_length))
hist = macd - signal
// MACD Trend and Cross Up/Down conditions
trend_up   = macd > signal
trend_dn   = macd < signal
cross_UP   = signal[1] >= macd[1] and signal < macd
cross_DN   = signal[1] <= macd[1] and signal > macd
cross_UP_A = (signal[1] >= macd[1] and signal < macd) and macd > 0
cross_DN_B = (signal[1] <= macd[1] and signal > macd) and macd < 0
// Condition that changes Color of MACD Line if Show Trend is turned on..
trend_col = show_trend  and trend_up ? col_trnd_Up : trend_up ? col_macd : show_trend  and trend_dn ? col_trnd_Dn: trend_dn ? col_macd : na 

//Var Statements for Histogram Color Change
var bool histA_IsUp = false
var bool histA_IsDown = false
var bool histB_IsDown = false
var bool histB_IsUp = false
histA_IsUp   := hist == hist[1] ? histA_IsUp[1] : hist > hist[1] and hist > 0
histA_IsDown := hist == hist[1] ? histA_IsDown[1] : hist < hist[1] and hist > 0
histB_IsDown := hist == hist[1] ? histB_IsDown[1] : hist < hist[1] and hist <= 0
histB_IsUp   := hist == hist[1] ? histB_IsUp[1] : hist > hist[1] and hist <= 0

hist_col =  histA_IsUp ? col_grow_above : histA_IsDown ? col_fall_above : histB_IsDown ? col_grow_below : histB_IsUp ? col_fall_below :color.silver 

// Plot Statements
//Background Color
bgcolor(show_cross and cross_UP ? col_trnd_Up : na, editable=false)
bgcolor(show_cross and cross_DN ? col_trnd_Dn : na, editable=false)
//Highlight Price Bars
barcolor(show_HB and trend_up ? col_trnd_Up : na, title="Trend Up", offset = 0, editable=false)
barcolor(show_HB and trend_dn ? col_trnd_Dn : na, title="Trend Dn", offset = 0, editable=false)
//Regular Plots
plot(show_Hist and hist ? hist : na, title="Histogram", style=plot.style_columns, color=color.new(hist_col ,0),linewidth=show_hist_LW)
plot(show_macd  and signal ? signal : na, title="Signal", color=color.new(col_signal, 0),  style=plot.style_line ,linewidth=show_signal_LW)
plot(show_macd  and macd ? macd : na, title="MACD", color=color.new(trend_col, 0),  style=plot.style_line ,linewidth=show_macd_LW)
hline(0, title="0 Line", color=color.new(color.gray, 0), linestyle=hline.style_dashed, linewidth=1, editable=false)
plot(show_dots and cross_UP ? macd : na, title="Dots", color=color.new(trend_col ,0), style=plot.style_circles, linewidth=show_dots_LW, editable=false)
plot(show_dots and cross_DN ? macd : na, title="Dots", color=color.new(trend_col ,0), style=plot.style_circles, linewidth=show_dots_LW, editable=false)

//Alerts
if alert_Long and cross_UP
    alert("Symbol = (" + syminfo.tickerid + ") TimeFrame = (" + timeframe.period + ") Current Price (" + str.tostring(close) + ") MACD Crosses Up.", alert.freq_once_per_bar_close)

if alert_Short and cross_DN
    alert("Symbol = (" + syminfo.tickerid + ") TimeFrame = (" + timeframe.period + ") Current Price (" + str.tostring(close) + ") MACD Crosses Down.", alert.freq_once_per_bar_close)
//Alerts - Stricter Condition - Only Alerts When MACD Crosses UP & MACD > 0 -- Crosses Down & MACD < 0
if alert_Long_A and cross_UP_A
    alert("Symbol = (" + syminfo.tickerid + ") TimeFrame = (" + timeframe.period + ") Current Price (" + str.tostring(close) + ") MACD > 0 And Crosses Up.", alert.freq_once_per_bar_close)

if alert_Short_B and cross_DN_B
    alert("Symbol = (" + syminfo.tickerid + ") TimeFrame = (" + timeframe.period + ") Current Price (" + str.tostring(close) + ") MACD < 0 And Crosses Down.", alert.freq_once_per_bar_close)


if (histA_IsUp)
	strategy.entry("buy", strategy.long, comment="buy")
if (histA_IsDown)
	strategy.entry("sell", strategy.short, comment="sell")


مزید