یہ حکمت عملی ایم اے سی ڈی اشارے کی تیز لائن اور سست لائن کے کراس اوور کا موازنہ کرکے خرید اور فروخت کے سگنل پیدا کرتی ہے۔ جب خرید کا سگنل تیار ہوتا ہے تو ، یہ اکاؤنٹ کے ایکویٹی کے ایک خاص فیصد کے ساتھ پوزیشن کھولے گا۔ اس کے بعد مخصوص ریٹریسیشن پوائنٹس پر اضافی پوزیشنیں شامل کی جائیں گی۔ جب پوزیشنوں کا جمع منافع تشکیل شدہ منافع لینے کے نقطہ تک پہنچ جاتا ہے تو ، تمام پوزیشنیں بند ہوجائیں گی۔ فروخت سگنل کے لئے منطق خرید سگنل کی طرح ہے۔
اس حکمت عملی کا بنیادی منطق رجحان کا تعین کرنے کے لئے ایم اے سی ڈی فاسٹ لائن اور سست لائن کے کراس اوور کا موازنہ کرنا ہے۔ ایم اے سی ڈی حرکت پذیر اوسط کے درمیان فرق ہے ، مختصر مدت اور طویل مدتی حرکت پذیر اوسط کے درمیان فرق کا حساب لگاتے ہوئے ، یہ مارکیٹ کے رجحان اور رفتار کا فیصلہ کرتا ہے۔ فاسٹ لائن اور سست لائن کے درمیان کراس اوور کو سنہری کراس اور موت کا کراس سمجھا جاتا ہے۔
جب فاسٹ لائن سست لائن سے اوپر سے گزرتی ہے تو ، ایک سنہری صلیب پیدا ہوتی ہے ، جس سے یہ ظاہر ہوتا ہے کہ مارکیٹ ایک بڑھتی ہوئی رجحان میں ہے ، اور حکمت عملی لمبی پوزیشنیں کھولے گی۔ جب فاسٹ لائن سست لائن سے نیچے سے گزرتی ہے تو ، ایک موت کا صلیب پیدا ہوتا ہے ، جس سے یہ ظاہر ہوتا ہے کہ نیچے کا رجحان ہے ، اور حکمت عملی مختصر پوزیشنیں کھولے گی۔
پوزیشنوں کو کھولنے کے بعد ، حکمت عملی مخصوص ریٹریسیشن پوائنٹس پر موجودہ لمبی یا مختصر پوزیشنوں میں شامل ہوگی۔ اس سے مارٹنگل اصول کے ذریعہ منافع کی صلاحیت میں اضافہ ہوسکتا ہے۔ جب جمع ہونے والا منافع تشکیل شدہ منافع لینے کے نقطہ تک پہنچ جاتا ہے تو ، حکمت عملی تمام پوزیشنوں کو بند کردے گی۔
اس حکمت عملی کے مندرجہ ذیل فوائد ہیں:
مارکیٹ کے رجحان کا تعین کرنے کے لئے MACD اشارے کا استعمال کرتا ہے، جو ایک کلاسک اور قابل اعتماد تکنیکی تجزیہ اشارے ہے.
بیچوں میں پوزیشن کھولنے کا نقطہ نظر اپناتا ہے ، جو ایک ہی تجارت کے خطرے کو کنٹرول کرسکتا ہے۔
پوزیشنوں میں اضافہ مارٹنگیل اصول کے ذریعے منافع کی صلاحیت کو بڑھا سکتا ہے.
نقصانات کو محدود کرنے کے لئے منافع حاصل کرنے کا نقطہ ترتیب دیں.
اس حکمت عملی میں کچھ خطرات بھی ہیں:
MACD اشارے مارکیٹ کی نقل و حرکت کی مکمل پیش گوئی نہیں کر سکتے ہیں، غلط سگنل ہو سکتے ہیں.
مکمل پوزیشن کے اضافے کے ساتھ ریٹریکشن میں توسیع کا خطرہ ہے۔ ہر پوزیشن کے اضافے کے فیصد کو مناسب طریقے سے ایڈجسٹ کرسکتے ہیں۔
منافع لینے کا نقطہ بہت کم ترتیب دینے سے منافع کی صلاحیت محدود ہوسکتی ہے۔ مختلف مصنوعات کے لئے ایڈجسٹ کیا جاسکتا ہے۔
اکاؤنٹ کی حدود سے تجاوز کرنے سے بچنے کے لئے ہر پروڈکٹ کے لئے پوزیشن کھولنے کے لئے سرمایہ کی مناسب فیصد کو ترتیب دینے کی ضرورت ہے۔
اس حکمت عملی کو مندرجہ ذیل پہلوؤں میں بہتر بنایا جاسکتا ہے:
ٹیسٹ MACD پیرامیٹرز، پیرامیٹرز تلاش کریں جو مخصوص تجارتی مصنوعات کے لئے بہتر فٹ بیٹھیں.
ہر پوزیشن کے لئے پیسے فی صد اور retracement فی صد کو بہتر بنائیں، بہترین پیرامیٹر مجموعے تلاش کریں.
زیادہ سے زیادہ سطحوں کا تعین کرنے کے لئے بالترتیب طویل مدتی اور قلیل مدتی منافع لینے کے پوائنٹس کی جانچ کریں.
اکاؤنٹ کی مارجن کی صلاحیت کا اندازہ کریں، ہر پروڈکٹ کے لئے معقول زیادہ سے زیادہ پوزیشن کی حد مقرر کریں۔
سٹاپ نقصان کی منطق شامل کریں۔ اسٹاپ نقصان مؤثر طریقے سے نقصانات کو کنٹرول کرسکتا ہے جب مارکیٹ میں شدید تبدیلی واقع ہوتی ہے۔
خلاصہ میں ، یہ ایک عام رجحان کی پیروی کرنے والی حکمت عملی ہے۔ یہ مارکیٹ کے رجحان کی سمت کا تعین کرنے کے لئے ایم اے سی ڈی اشارے کا استعمال کرتا ہے ، رجحان کی پیروی کرنے کے لئے بیچوں میں پوزیشنوں کو شامل کرنے کا نقطہ نظر اختیار کرتا ہے ، اور جب جمع منافع ایک خاص سطح تک پہنچ جاتا ہے تو منافع حاصل کرتا ہے۔ یہ آسان اور عملی حکمت عملی نافذ کرنا آسان ہے اور مقداری تجارت کے ابتدائی افراد کے لئے موزوں ہے۔ پیرامیٹرز کو بہتر بنانے اور رسک کنٹرول منطق کو بڑھانے سے ، حکمت عملی زیادہ مضبوط ہوسکتی ہے۔
/*backtest start: 2023-11-26 00:00:00 end: 2023-12-26 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © TradingSoft_tech //@version=5 strategy("MAPM-V1", overlay=true, default_qty_value=10, max_bars_back=5000,default_qty_type = strategy.percent_of_equity, commission_value=0.1, initial_capital = 100, pyramiding=6, currency=currency.USD) ///////// Options SignalFast = input.int(300, step=10) SignalSlow = input.int(600, step=10) StepAddPurchases = input.float(2.5, step=0.1) VolumePurchases = input.int(6,step=1) Buy = input(true) Sell = input(true) longProfitPerc = input.float(title="Long Take Profit (%)", minval=0.0, step=0.1, defval=1) * 0.01 shortProfitPerc = input.float(title="Short Take Profit (%)", minval=0.0, step=0.1, defval=1) * 0.01 Martingale = input.float(1.6, minval = 1, step = 0.1) VolumeDepo = input.int(100, step=1) PercentOfDepo = input.float(10, step=1) Close = (close) EnterVolume = VolumeDepo*PercentOfDepo*0.01/Close ///////// Calculation indicator fastAverage = ta.ema(close, 8) slowAverage = ta.ema(close, 49) macd = fastAverage - slowAverage macdSignalF = ta.ema(macd,SignalFast) macdSignalS = ta.ema(macd,SignalSlow) // Test Start startYear = input(2005, "Test Start Year") startMonth = input(1, "Test Start Month") startDay = input(1, "Test Start Day") startTest = timestamp(startYear,startMonth,startDay,0,0) //Test End endYear = input(2050, "Test End Year") endMonth = input(12, "Test End Month") endDay = input(30, "Test End Day") endTest = timestamp(endYear,endMonth,endDay,23,59) timeRange = time > startTest and time < endTest ? true : false ///////// Plot Data //plot(macd, style = plot.style_histogram) //plot(macdSignalF*10000, style = plot.style_line, color=color.red) //plot(macdSignalS*10000, style = plot.style_line, color=color.blue) //plot(fastAverage, style = plot.style_line, color=color.red) //plot(slowAverage, style = plot.style_line, color=color.blue) ///////// Calculation of the updated value var x = 0.0 if strategy.opentrades>strategy.opentrades[1] x := x + 1 else if strategy.opentrades==0 x := 0 y = x+1 ///////// Calculation of reference price data entryPrice = strategy.opentrades==0? 0 : strategy.opentrades.entry_price(0) limitLong = strategy.position_avg_price * (1 + longProfitPerc) limitShort = strategy.position_avg_price * (1 - shortProfitPerc) SteplimitLong = entryPrice[0]*(1-StepAddPurchases*y/100) SteplimitShort = entryPrice[0]*(1+StepAddPurchases*y/100) ///////// Conditions for a long bool EntryLong = ta.crossover(macdSignalF, macdSignalS) and Buy and strategy.opentrades==0 and strategy.position_size==0 bool PurchasesLong = Buy and strategy.opentrades==x and strategy.position_size>0 and x<=VolumePurchases bool CancelPurchasesLong = strategy.position_size==0 and strategy.opentrades==0 bool TPLong = strategy.position_size>0 and strategy.opentrades!=0 ///////// Entry Long + add.purchases + cancel purchases + Take profit Long switch EntryLong => strategy.entry("Entry Long", strategy.long, qty = EnterVolume) PurchasesLong => strategy.entry("PurchasesLong", strategy.long, qty = EnterVolume*math.pow(Martingale,y), limit = SteplimitLong) CancelPurchasesLong => strategy.cancel("PurchasesLong") switch TPLong => strategy.exit("TPLong", qty_percent = 100, limit = limitLong) ///////// Conditions for a Short bool EntryShort = ta.crossunder(macdSignalF, macdSignalS) and Sell and strategy.opentrades==0 and strategy.position_size==0 bool PurchasesShort = Sell and strategy.opentrades==x and strategy.position_size<0 and x<=VolumePurchases bool CancelPurchasesShort = strategy.position_size==0 and strategy.opentrades==0 bool TPShort = strategy.position_size<0 and strategy.opentrades!=0 ///////// Entry Short + add.purchases + cancel purchases + Take profit Short switch EntryShort => strategy.entry("Entry Short", strategy.short, qty = EnterVolume) PurchasesShort => strategy.entry("PurchasesShort", strategy.short, qty = EnterVolume*math.pow(Martingale,y), limit = SteplimitShort) CancelPurchasesShort => strategy.cancel("PurchasesShort") switch TPShort => strategy.exit("TPShort", qty_percent = 100, limit = limitShort) /////////Calculation of conditions and reference data for level drawing InTradeLong = strategy.position_size<0 InTradeShort = strategy.position_size>0 PickInLong = strategy.opentrades.entry_price(0)*(1-StepAddPurchases*y/100) PickInShort = strategy.opentrades.entry_price(0)*(1+StepAddPurchases*y/100) /////////Displaying the level of Take Profit plot(InTradeLong ? na : limitLong, color=color.new(#00d146, 0), style=plot.style_linebr, linewidth=1) plot(InTradeShort ? na : limitShort, color=color.new(#00d146, 0), style=plot.style_linebr, linewidth=1) /////////Displaying the level of add.purchases plot(InTradeLong ? na : PickInLong, color=color.white, style=plot.style_linebr, linewidth=1) plot(InTradeShort ? na : PickInShort, color=color.white, style=plot.style_linebr, linewidth=1)