ایڈجسٹ ای ٹی آر سٹاپ نقصان کے ساتھ ایم اے سی ڈی ٹریڈنگ حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2023-09-20 15:23:00
ٹیگز:

جائزہ

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

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

  1. ایم اے سی ڈی ڈیلٹا لائن کراس اوور 0 خرید و فروخت کے سگنل پیدا کرتا ہے۔

  2. اسٹیک ہولڈرز کے لئے ایک ہی وقت میں ہولڈرز کی تعداد میں اضافہ

  3. سٹاپ نقصان اتار چڑھاؤ کی تبدیلیوں کے ساتھ موافقت پذیر طور پر ایڈجسٹ کرتا ہے، اتار چڑھاؤ میں اضافہ ہوتا ہے.

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

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

فوائد

  1. ایم اے سی ڈی رجحانات کو ٹریک کرنے میں حساس ہے۔

  2. موافقت پذیر اسٹاپ مختلف مارکیٹ کے ماحول میں فٹ ہوجاتے ہیں ، اسٹاپ کو بہت تنگ یا ڈھیلے ہونے سے بچتے ہیں۔

  3. بصری سٹاپ لائنز بصری طور پر خطرے کی حالت کی عکاسی کرتی ہیں.

  4. سادہ اور واضح حکمت عملی کے قواعد، سمجھنے اور لاگو کرنے میں آسان.

  5. قابل کنٹرول استعمال اور مؤثر رسک مینجمنٹ

خطرات

  1. ایم اے سی ڈی غلط سگنل پیدا کر سکتا ہے جس کی وجہ سے غیر ضروری نقصانات ہو سکتے ہیں۔

  2. غلط ATR پیرامیٹرز بہت تنگ یا ڈھیلے رک جاتا ہے.

  3. بہت کثرت سے روکنے کا خطرہ۔

  4. جب رجحان الٹ جاتا ہے تو وقت پر روکنا مشکل ہوتا ہے۔

  5. پیرامیٹرز کو بہتر بنانے کے دوران زیادہ فٹ ہونے کا خطرہ۔

بہتری

  1. بہترین مجموعہ کے لئے MACD پیرامیٹرز کی جانچ کریں.

  2. دیگر سٹاپ کے طریقوں کی کوشش کریں جیسے ٹریلنگ اسٹاپ.

  3. تعدد اور خطرے کے کنٹرول کو متوازن کرنے کے لئے اسٹاپ کو بہتر بنائیں.

  4. رجحان فلٹر شامل کریں ریورس سٹاپس کو روکنے کے لئے.

  5. تجارت کے اخراجات کے اثرات پر غور کریں تاکہ زیادہ سے زیادہ تجارت سے بچنے کے لئے.

  6. سلائڈنگ یا بڑھا ہوا روکنے کا استعمال کریں تاکہ روکنے کو یقینی بنایا جاسکے۔

نتیجہ

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


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

//@version=4
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)

/////////////// Time Frame ///////////////
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)

testPeriod() =>  true

///////////////  MACD  /////////////// 
fastLength = input(13) 
slowlength = input(30) 
MACDLength = input(12) 

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

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

last_long = 0.0
last_short = 0.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 = 0.0
last_open_short_signal = 0.0
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 = 0.0
last_short_signal = 0.0
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 = 0.0
last_low = 0.0
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])

since_longEntry = barssince(last_open_long_signal != last_open_long_signal[1]) 
since_shortEntry = barssince(last_open_short_signal != last_open_short_signal[1]) 

/////////////// Dynamic ATR Stop Losses ///////////////
atrLkb = input(2, minval=1, title='ATR Stop Period')
atrMult = input(1.25, step=0.25, title='ATR Stop Multiplier') 
atr1 = atr(atrLkb)

longStop = 0.0
longStop :=  short_signal ? na : long_signal ? close - (atr1 * atrMult) : longStop[1]
shortStop = 0.0
shortStop := long_signal ? na : short_signal ? close + (atr1 * atrMult) : shortStop[1]

/////////////// Execution /////////////// 
if testPeriod()
    strategy.entry("Long", strategy.long, when=long)
    strategy.entry("Short", strategy.short, when=short)
    strategy.exit("Long SL", "Long", stop=longStop, when=since_longEntry > 0)
    strategy.exit("Short SL", "Short", stop=shortStop, when=since_shortEntry > 0)

/////////////// Plotting /////////////// 
barcolor(long ? color.lime : short ? color.red : na)
plot(strategy.position_size <= 0 ? na : longStop, title="Long Stop Loss", color=color.yellow, style=plot.style_circles, linewidth=2)
plot(strategy.position_size >= 0 ? na : shortStop, title="Short Stop Loss", color=color.orange, style=plot.style_circles, linewidth=2)
bgcolor(strategy.position_size > 0 ? color.lime : strategy.position_size < 0 ? color.red : color.white, transp=90)
bgcolor(long_signal ? color.lime : short_signal ? color.red : na, transp=60)

مزید