یہ حکمت عملی طویل اور مختصر سگنل پیدا کرنے کے لئے متحرک اوسط کنورجنس تغیر (MACD) اشارے کا استعمال کرتی ہے اور منافع حاصل کرنے کے لئے متحرک طور پر باہر نکلنے والے پوائنٹس کو مقرر کرکے اچھے رجحان کے حالات میں واپسی کی تجارت کرتی ہے۔
اس حکمت عملی کا بنیادی حصہ لمبی سگنلز کے لئے ایم اے سی ڈی گولڈن کراس اور مختصر سگنلز کے لئے ڈیتھ کراس پر مبنی ہے۔ خاص طور پر ، جب ایم اے سی ڈی لائن نیچے سے سگنل لائن کے اوپر سے گزرتی ہے تو ، ایک گولڈن کراس لمبی سگنل کے طور پر تیار ہوتا ہے۔ جب ایم اے سی ڈی لائن اوپر سے سگنل لائن کے نیچے سے گزرتی ہے تو ، موت کا کراس مختصر سگنل کے طور پر تیار ہوتا ہے۔
سونے کے کراس سگنلز پر ، اگر بند ہونے کی قیمت ای ایم اے سے اوپر ہے تو طویل ہوجائیں۔ موت کے کراس سگنلز پر ، اگر بند ہونے کی قیمت ای ایم اے سے نیچے ہے تو مختصر ہوجائیں۔ اس سے واپسی کے رجحان کے تحت تجارت کو یقینی بنایا جاتا ہے۔
پوزیشنوں میں داخل ہونے کے بعد ، حکمت عملی اسٹاپ نقصان اور منافع کو متحرک طور پر باہر نکلنے کو کنٹرول کرنے کے لئے استعمال کرتی ہے۔ خاص طور پر ، لمبی پوزیشنوں کے لئے اسٹاپ نقصان داخلہ قیمت * (1 - زیادہ سے زیادہ ڈراؤنڈ) پر مقرر کیا جاتا ہے۔ منافع حاصل کرنا داخلہ قیمت * (1 + TARGET_STOP_RATIO * زیادہ سے زیادہ ڈراؤنڈ) پر مقرر کیا جاتا ہے۔ مختصر پوزیشنوں کے لئے اس کے برعکس۔ یہاں زیادہ سے زیادہ ڈراؤنڈ متحرک طور پر سوئنگ کم سے بند ہونے تک قیمت میں کمی کی فیصد کے طور پر شمار کیا جاتا ہے۔ TARGET_STOP_RATIO ڈیفالٹ 2 ہے ، جس کا مطلب ہے کہ خطرہ / انعام کا تناسب 2 ہے۔
اس متحرک اسٹاپ حکمت عملی کا فائدہ یہ ہے کہ یہ مارکیٹ کی اتار چڑھاؤ کی بنیاد پر اسٹاپ نقصان اور رسک / انعام تناسب کو ایڈجسٹ کرسکتا ہے۔ یہ اعلی اتار چڑھاؤ کے دوران سخت اسٹاپ نقصان کے ساتھ تیزی سے باہر نکلتا ہے جبکہ کم اتار چڑھاؤ کے ماحول کے دوران لوز اسٹاپ کے ساتھ منافع کو ٹریک کرتا ہے۔
ایم اے سی ڈی واپسی کے مواقع کی نشاندہی کرنے کے لئے ایک موثر اشارے ہے۔
ای ایم اے فلٹر اس بات کو یقینی بناتا ہے کہ طویل تجارت صرف ایک بڑھتی ہوئی رجحان مارکیٹ میں ہوتی ہے.
متحرک خارجی کنٹرول سسٹم منافع کو زیادہ سے زیادہ کرتا ہے جبکہ مؤثر طریقے سے خطرے کا انتظام کرتا ہے۔
تیز رفتار موجودگی کی ضرورت کی نگرانی کے وقت کو کم کرتی ہے، مصروف سرمایہ کاروں کے لئے مناسب بناتا ہے.
MACD سائیڈ ویز مارکیٹوں کے دوران اکثر اتار چڑھاؤ کرتا ہے ، جو جعلی سگنل پیدا کرتا ہے۔ یہ مخالف رجحان کی تجارت سے بچنے کے لئے EMA فلٹر شامل کرکے حل کیا جاتا ہے۔
انتہائی اتار چڑھاؤ کی وجہ سے ڈائنامک اسٹاپ بہت لچکدار ہوسکتا ہے۔ مارکیٹ کی انتہائی حرکتوں کا سامنا کرتے وقت مقررہ رسک / انعامی تناسب پر غور کریں۔
ہر تجارت کے لئے محدود منافع کا مارجن کثرت سے تجارت کی ضرورت ہے۔ سرمایہ کاروں کو نفسیاتی برداشت اور وقت کے عزم کی ضرورت ہے۔ اگر وہ بہت مصروف ہیں تو زیادہ وقت کے فریم میں تبدیل ہوسکتے ہیں۔
سگنل کے معیار کو بہتر بنانے کے لئے علامت کی خصوصیات پر مبنی MACD پیرامیٹرز کو ٹھیک کریں.
بہترین تلاش کرنے کے لئے رجحان فلٹر کے طور پر مختلف چلتی اوسط کا تجربہ کریں.
باہر نکلنے کی حکمت عملی کو بہتر بنانے کے لئے TARGET_STOP_RATIO حساب اور زیادہ سے زیادہ ڈراؤنڈ کی تعریف کی جانچ کریں.
سگنل کے معیار کو بہتر بنانے کے لئے حجم، اتار چڑھاؤ وغیرہ جیسے دیگر عوامل شامل کریں.
مزید خصوصیات کو نکالنے کے لئے مشین لرننگ ماڈلز کی تلاش کریں اور زیادہ ذہین باہر نکلنے کے لئے انکولی کثیر عنصر ماڈلز بنائیں۔
یہ حکمت عملی مجموعی طور پر عملی طور پر مضبوط قیمت رکھتی ہے۔ میک ڈی کو بنیادی تجارتی سگنل کے طور پر ، رجحان فلٹر اور متحرک باہر نکلنے کے کنٹرول کے اضافی ماڈیولز میک ڈی ڈی کی کارکردگی کو نمایاں طور پر بہتر بنا سکتے ہیں۔ باہر نکلنے کا کنٹرول حکمت عملی کی اصلاح کے لئے ضروری ہے اور یہ حکمت عملی اس شعبے میں کافی حد تک جدت طرازی کرتی ہے۔ مزید تحقیق اور درخواست کے قابل ہے۔
/*backtest start: 2022-12-05 00:00:00 end: 2023-12-11 00:00:00 period: 1d basePeriod: 1h 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/ // © maxencetajet //@version=5 strategy("MACD Strategy", overlay=true, initial_capital=1000, slippage=25) src = input(title="Source", defval=close) target_stop_ratio = input.float(title='Risk/Reward', defval=2, minval=0.5, maxval=100) risk = input.float(2, title="Risk per Trade %") riskt = risk / 100 + 1 useDateFilter = input.bool(true, title="Filter Date Range of Backtest", group="Backtest Time Period") backtestStartDate = input(timestamp("5 June 2022"), title="Start Date", group="Backtest Time Period", tooltip="This start date is in the time zone of the exchange " + "where the chart's instrument trades. It doesn't use the time " + "zone of the chart or of your computer.") backtestEndDate = input(timestamp("5 July 2022"), title="End Date", group="Backtest Time Period", tooltip="This end date is in the time zone of the exchange " + "where the chart's instrument trades. It doesn't use the time " + "zone of the chart or of your computer.") inTradeWindow = true emaV = input.int(200, title="Length", group="EMA") swingHighV = input.int(7, title="Swing High", group="number of past candles") swingLowV = input.int(7, title="Swing Low", group="number of past candles") ema = ta.ema(src, emaV) fast_length = input(title="Fast Length", defval=12, group="MACD") slow_length = input(title="Slow Length", defval=26, group="MACD") signal_length = input.int(title="Signal Smoothing", minval = 1, maxval = 50, defval = 9, group="MACD") sma_source = input.string(title="Oscillator MA Type", defval="EMA", options=["SMA", "EMA"], group="MACD") sma_signal = input.string(title="Signal Line MA Type", defval="EMA", options=["SMA", "EMA"], group="MACD") 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) macd = fast_ma - slow_ma signal = sma_signal == "SMA" ? ta.sma(macd, signal_length) : ta.ema(macd, signal_length) hist = macd - signal longcondition = close > ema and ta.crossover(macd, signal) and macd < 0 shortcondition = close < ema and ta.crossunder(macd, signal) and macd > 0 float risk_long = na float risk_short = na float stopLoss = na float takeProfit = na float entry_price = na risk_long := risk_long[1] risk_short := risk_short[1] swingHigh = ta.highest(high, swingHighV) swingLow = ta.lowest(low, swingLowV) lotB = (strategy.equity*riskt-strategy.equity)/(close - swingLow) lotS = (strategy.equity*riskt-strategy.equity)/(swingHigh - close) if strategy.position_size == 0 and longcondition and inTradeWindow risk_long := (close - swingLow) / close strategy.entry("long", strategy.long, qty=lotB) if strategy.position_size == 0 and shortcondition and inTradeWindow risk_short := (swingHigh - close) / close strategy.entry("short", strategy.short, qty=lotS) if strategy.position_size > 0 stopLoss := strategy.position_avg_price * (1 - risk_long) takeProfit := strategy.position_avg_price * (1 + target_stop_ratio * risk_long) entry_price := strategy.position_avg_price strategy.exit("long exit", "long", stop = stopLoss, limit = takeProfit) if strategy.position_size < 0 stopLoss := strategy.position_avg_price * (1 + risk_short) takeProfit := strategy.position_avg_price * (1 - target_stop_ratio * risk_short) entry_price := strategy.position_avg_price strategy.exit("short exit", "short", stop = stopLoss, limit = takeProfit) plot(ema, color=color.white, linewidth=2, title="EMA") p_ep = plot(entry_price, color=color.new(color.white, 0), linewidth=2, style=plot.style_linebr, title='entry price') p_sl = plot(stopLoss, color=color.new(color.red, 0), linewidth=2, style=plot.style_linebr, title='stopLoss') p_tp = plot(takeProfit, color=color.new(color.green, 0), linewidth=2, style=plot.style_linebr, title='takeProfit') fill(p_sl, p_ep, color.new(color.red, transp=85)) fill(p_tp, p_ep, color.new(color.green, transp=85))