ایم اے سی ڈی ٹرینڈ بیلنسنگ حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2023-10-17 16:15:53
ٹیگز:

img

جائزہ

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

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

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

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

بولش اور بیرش سگنلز کی بنیاد پر ، آخری بار جب سگنل تیار کیا گیا تھا اسے ریکارڈ کریں۔ جب تیز اور سست لائنیں عبور ہوجاتی ہیں تو ، خرید / فروخت کے سگنلز کی تصدیق اور ریکارڈ کریں ، پھر پوزیشن کھولی جاسکتی ہے۔

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

فوائد

  1. MACD اشارے مؤثر طریقے سے رجحانات کی نشاندہی کر سکتے ہیں اور کلاسیکی تکنیکی اشارے میں سے ایک ہے.

  2. تیز رفتار اور سست حرکت پذیر اوسط کے درمیان فرق قیمت کی رفتار اور سمت کی تبدیلیوں کو جلدی سے پکڑ سکتا ہے۔

  3. چلتی اوسط کی فلٹرنگ اثر کچھ غلط سگنل کو فلٹر کرنے میں مدد ملتی ہے.

  4. حکمت عملی میں خطرات کو کنٹرول کرنے کے لئے سٹاپ نقصان کا طریقہ کار شامل ہے۔

خطرات

  1. ایم اے سی ڈی محدود اصلاح کی جگہ کے ساتھ غلط سگنل پیدا کرنے کا شکار ہے۔

  2. غلط سٹاپ نقصان کی جگہ بہت فعال یا قدامت پسند ہوسکتی ہے، جس میں مصنوعات میں انفرادی اصلاح کی ضرورت ہوتی ہے.

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

  4. بیک ٹسٹ ٹائم فریم کے لئے منطق کی توثیق کرنے کی ضرورت ہے تاکہ زیادہ سے زیادہ فٹ ہونے سے بچنے کے لئے.

اصلاح

  1. تیز رفتار اور سست حرکت پذیر اوسط کے مجموعے کو بہتر بنائیں تاکہ مختلف مصنوعات کے مطابق بہترین پیرامیٹرز تلاش کریں۔

  2. سگنل فلٹر کرنے کے لیے موم بتیاں، بولنگر بینڈ، RSI جیسے دیگر اشارے شامل کریں۔

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

  4. سٹاپ نقصان کی تکنیکوں کی تلاش کریں جیسے پیچھے کی روک تھام، حد کے احکامات.

  5. ایکویٹی، اتار چڑھاؤ کی بنیاد پر متحرک پوزیشن سائزنگ کی جانچ کریں.

نتیجہ

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


/*backtest
start: 2023-09-16 00:00:00
end: 2023-10-16 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("MACD BF", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.0)

/////////////// Component Code Start ///////////////
testStartYear = input(2017, "Backtest Start Year") 
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay, 0, 0)

testStopYear = input(2019, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(31, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay, 0, 0)

// A switch to control background coloring of the test period
testPeriodBackground = input(title="Color Background?", type=bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na
bgcolor(testPeriodBackgroundColor, transp=97)

testPeriod() => true

///////////////  MACD Component - Default settings for one day. /////////////// 
fastLength = input(12) // 72 for 4hr
slowlength = input(26) // 156 for 4 hr
MACDLength = input(12)  // 12 for 4hr

MACD = ema(close, fastLength) - ema(close, slowlength)
aMACD = ema(MACD, MACDLength)
delta = MACD - aMACD

long = crossover(delta, 0) 
short = crossunder(delta, 0) 

last_long = long ? time : nz(last_long[1])
last_short = short ? time : nz(last_short[1])

long_signal = crossover(last_long, last_short)
short_signal = crossover(last_short, last_long)

last_open_long_signal = long_signal ? open : nz(last_open_long_signal[1])
last_open_short_signal = short_signal ? open : nz(last_open_short_signal[1])

last_long_signal = long_signal ? time : nz(last_long_signal[1])
last_short_signal = short_signal ? time : nz(last_short_signal[1])

in_long_signal = last_long_signal > last_short_signal
in_short_signal = last_short_signal > last_long_signal

last_high = not in_long_signal ? na : in_long_signal and (na(last_high[1]) or high > nz(last_high[1])) ? high : nz(last_high[1])
last_low = not in_short_signal ? na : in_short_signal and (na(last_low[1]) or low < nz(last_low[1])) ? low : nz(last_low[1])

sl_inp = input(5.0, title='Stop Loss %', type=float)/100

/////////////// Strategy Component /////////////// 
// Strategy Entry
if testPeriod()
    strategy.entry("Long Entry",  strategy.long, when=long_signal)
    strategy.entry("Short Entry", strategy.short, when=short_signal)

since_longEntry = barssince(last_open_long_signal != last_open_long_signal[1]) // LONG SL
since_shortEntry = barssince(last_open_short_signal != last_open_short_signal[1]) // SHORT SL

slLong = in_long_signal ? strategy.position_avg_price * (1 - sl_inp) : na
slShort = strategy.position_avg_price * (1 + sl_inp)
long_sl = in_long_signal ? slLong : na
short_sl = in_short_signal ? slShort : na

// Strategy SL Exit
if testPeriod()
    strategy.exit("Long SL", "Long Entry", stop=long_sl, when=since_longEntry > 1)
    strategy.exit("Short SL", "Short Entry", stop=short_sl, when=since_shortEntry > 1)

//plot(strategy.equity, title="equity", color=blue, linewidth=2, style=areabr)

مزید