یہ حکمت عملی دو مشہور اشارے: ایم اے سی ڈی اور رشتہ دار طاقت (آر ایس) پر مبنی ہے۔ ان کو جوڑ کر ، ہم طاقتور خرید سگنل حاصل کرتے ہیں۔ در حقیقت ، اس حکمت عملی کی خاص خصوصیت یہ ہے کہ یہ ایک اشارے سے اشارے بناتا ہے۔ اس طرح ، ہم ایک ایم اے سی ڈی تیار کرتے ہیں جس کا ذریعہ آر ایس کی قیمت ہے۔ حکمت عملی صرف خرید سگنل لیتی ہے ، فروخت سگنل کو نظرانداز کرتی ہے کیونکہ وہ زیادہ تر نقصان دہ ہیں۔ پیسہ مینجمنٹ کا ایک طریقہ بھی ہے جو ہمیں منافع کا ایک حصہ دوبارہ لگانے یا کافی نقصانات کی صورت میں آرڈرز کے سائز کو کم کرنے کی اجازت دیتا ہے۔
آر ایس ایک اشارے ہے جو رفتار اور مارکیٹ کی کارکردگی کے مفروضے کے درمیان غیر معمولی اندازہ کرتا ہے۔ یہ پیشہ ور افراد کے ذریعہ استعمال ہوتا ہے اور یہ سب سے زیادہ مضبوط اشارے میں سے ایک ہے۔ خیال یہ ہے کہ ان اثاثوں کا مالک بنیں جو ان کی ماضی کی کارکردگی کی بنیاد پر اوسط سے بہتر کارکردگی کا مظاہرہ کرتے ہیں۔ ہم اس فارمولے کا استعمال کرتے ہوئے آر ایس کا حساب لگاتے ہیں:
RS = موجودہ قیمت / RS مدت کے دوران سب سے زیادہ اعلی
اس طرح ہم موجودہ قیمت کو اس صارف کی طرف سے مقرر کردہ مدت کے دوران اس کی سب سے زیادہ قیمت کے سلسلے میں رکھ سکتے ہیں.
ایم اے سی ڈی ایک مشہور اشارے میں سے ایک ہے ، جو دو تیزی سے اور ایک آہستہ چلنے والے اوسط کے مابین فاصلے کی پیمائش کرتا ہے۔ ایک وسیع فاصلہ تیز رفتار کی نشاندہی کرتا ہے اور اس کے برعکس۔ ہم اس فاصلے کی قیمت کو پلاٹ کریں گے اور اس لائن کو میکڈ لائن کہیں گے۔ ایم اے سی ڈی تیسرا چلتا ہوا اوسط استعمال کرتا ہے جس کا دورانیہ پہلے دو سے کم ہوتا ہے۔ یہ آخری چلتا ہوا اوسط میکڈ لائن کو عبور کرتے وقت اشارہ دے گا۔ لہذا یہ میکڈ لائن کی اقدار کو بطور ذریعہ استعمال کرتے ہوئے بنایا گیا ہے۔
یہ نوٹ کرنا ضروری ہے کہ پہلے دو ایم اے کو RS اقدار کو بطور ماخذ استعمال کرتے ہوئے بنایا گیا ہے۔ لہذا ہم نے ابھی ایک اشارے کا اشارے بنایا ہے۔ اس طرح کا طریقہ بہت طاقتور ہے کیونکہ یہ شاذ و نادر ہی استعمال ہوتا ہے اور حکمت عملی میں قدر لاتا ہے۔
یہ حکمت عملی دو انفرادی طور پر بہت طاقتور اشارے کو جوڑتی ہے: ایم اے سی ڈی اور آر ایس۔ ایم اے سی ڈی قلیل مدتی رجحانات اور رفتار کی تبدیلیوں کو پکڑنے کے قابل ہے جبکہ آر ایس درمیانے اور طویل مدتی رجحانات کی مضبوطی کی عکاسی کرتا ہے۔ ان کا ایک ساتھ استعمال کرتے ہوئے قلیل مدتی اور طویل مدتی دونوں عوامل پر غور کیا جاتا ہے ، جس سے خرید سگنل زیادہ قابل اعتماد ہوجاتے ہیں۔
اس کے علاوہ ، یہ حکمت عملی آر ایس اشارے سے ایم اے سی ڈی نکالنے سے بہت منفرد ہے ، جس سے حکمت عملی کے اثر کو تخلیقی طور پر بڑھا دیا جاتا ہے۔ اس طرح کے جدید ڈیزائن سے الفا منافع کی وجہ سے ہونے کا امکان ہے کیونکہ بہت کم لوگ اس نقطہ نظر کا استعمال کرتے ہیں۔
آخر میں، حکمت عملی میں خطرہ مینجمنٹ اور سٹاپ نقصان کے طریقہ کار ہیں جو مؤثر طریقے سے خطرات کو کنٹرول کرتے ہیں اور ہر تجارت کے نقصانات کو محدود کرتے ہیں.
اس حکمت عملی کا سب سے بڑا خطرہ یہ ہے کہ RS اور MACD اشارے غلط سگنل دینے کا امکان ہے۔ اگرچہ دونوں اشارے مضبوط ہیں ، لیکن کوئی بھی تکنیکی اشارے مستقبل کی 100٪ پیش گوئی نہیں کرسکتا ہے اور اشارے کبھی کبھار ناکام ہوسکتے ہیں۔ نیز ، RS خود درمیانی اور طویل مدتی رجحانات کے فیصلے کی طرف متوجہ ہے اور قلیل مدتی میں گمراہ کن سگنل پیدا کرسکتا ہے۔
خطرات کو کم کرنے کے ل RS ، RS اور MACD کے پیرامیٹرز کو مخصوص تجارتی آلات اور مارکیٹ کے ماحول کو بہتر طور پر فٹ کرنے کے لئے ٹون کیا جاسکتا ہے۔ نیز ، زیادہ سخت اسٹاپ نقصان کی حد عائد کی جاسکتی ہے۔ عام طور پر ، ہر تجارت کے نقصان پر کنٹرول کرنے کے لئے اسٹاپ نقصان کا استعمال اس حکمت عملی کے خطرات سے نمٹنے کا بہترین طریقہ ہے۔
سب سے پہلے، ٹیسٹ کریں کہ کون سی مارکیٹ (مثال کے طور پر اسٹاک، فاریکس، کریپٹو وغیرہ) اس حکمت عملی کا بہترین اثر دیتا ہے، پھر اس بہترین اثاثہ پر توجہ مرکوز کریں.
دوسرا ، دستی طور پر ان کو ٹھیک کرنے کے بجائے RS اور MACD پیرامیٹرز کو خودکار طور پر بہتر بنانے کے لئے مشین لرننگ الگورتھم کا استعمال کرنے کی کوشش کریں۔ اس سے پیرامیٹرز کی موافقت میں بہتری آسکتی ہے۔
تیسرا ، تجارتی سگنل قائم کرنے کے لئے دوسرے اشارے شامل کرنے پر غور کریں ، سگنل کی درستگی کو بہتر بنانے کے لئے ایک کثیر عنصر ماڈل تشکیل دیں۔ مثال کے طور پر ، حجم کے اشارے شامل کرنا وغیرہ۔
یہ حکمت عملی مضبوط خرید سگنل فراہم کرنے کے لئے ایم اے سی ڈی اور آر ایس اشارے کو باہمی تعاون کے ساتھ استعمال کرتی ہے۔ اس کی نیاپن آر ایس اشارے سے ایم اے سی ڈی حاصل کرنے میں ہے ، جس سے کارکردگی کو بڑھانے کے لئے اشارے کے مابین جوڑ کا احساس ہوتا ہے۔ اس حکمت عملی میں واضح اندراج ، اسٹاپ نقصان اور منی مینجمنٹ میکانزم ہیں جو خطرات کو موثر انداز میں کنٹرول کرتے ہیں۔ اگلے اقدامات پیرامیٹر کی اصلاح ، سگنل کی نسل کو بہتر بنانا ، دوسرے عوامل وغیرہ کو شامل کرنا شامل ہیں۔
/*backtest start: 2022-12-14 00:00:00 end: 2023-12-20 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/ // © gsanson66 //This strategy calculates the Relative Strength and plot the MACD of this Relative Strenght //We take only buy signals send by MACD //@version=5 strategy("MACD OF RELATIVE STRENGHT STRATEGY", shorttitle="MACD RS STRATEGY", precision=4, overlay=false, initial_capital=1000, default_qty_type=strategy.cash, default_qty_value=950, commission_type=strategy.commission.percent, commission_value=0.18, slippage=3) //------------------------------TOOL TIPS--------------------------------// t1 = "Relative Strength length i.e. number of candles back to find the highest high and compare the current price with this high." t2 = "Relative Strength fast EMA length used to plot the MACD." t3 = "Relative Strength slow EMA length used to plot the MACD." t4 = "Macdline SMA length used to plot the MACD." t5 = "The maximum loss a trade can incur (in percentage of the trade value)" t6 = "Each gain or losse (relative to the previous reference) in an amount equal to this fixed ratio will change quantity of orders." t7 = "The amount of money to be added to or subtracted from orders once the fixed ratio has been reached." //----------------------------------------FUNCTIONS---------------------------------------// //@function Displays text passed to `txt` when called. debugLabel(txt, color, loc) => label.new(bar_index, loc, text=txt, color=color, style=label.style_label_lower_right, textcolor=color.black, size=size.small) //@function which looks if the close date of the current bar falls inside the date range inBacktestPeriod(start, end) => (time >= start) and (time <= end) //---------------------------------------USER INPUTS--------------------------------------// //Technical parameters rs_lenght = input.int(defval=300, minval=1, title="RS Length", group="Technical parameters", tooltip=t1) fast_length = input(title="MACD Fast Length", defval=14, group="Technical parameters", tooltip=t2) slow_length = input(title="MACD Slow Length", defval=26, group="Technical parameters", tooltip=t3) signal_length = input.int(title="MACD Signal Smoothing", minval=1, maxval=50, defval=10, group="Technical parameters", tooltip=t4) //Risk Management slMax = input.float(8, "Max risk per trade (in %)", minval=0, group="Risk Management", tooltip=t5) //Money Management fixedRatio = input.int(defval=400, minval=1, title="Fixed Ratio Value ($)", group="Money Management", tooltip=t6) increasingOrderAmount = input.int(defval=200, minval=1, title="Increasing Order Amount ($)", group="Money Management", tooltip=t7) //Backtesting period startDate = input(title="Start Date", defval=timestamp("1 Jan 2020 00:00:00"), group="Backtesting Period") endDate = input(title="End Date", defval=timestamp("1 July 2024 00:00:00"), group="Backtesting Period") //----------------------------------VARIABLES INITIALISATION-----------------------------// strategy.initial_capital = 50000 //Relative Strenght Calculation rs = close/ta.highest(high, rs_lenght) //MACD of RS Calculation [macdLine, signalLine, histLine] = ta.macd(rs, fast_length, slow_length, signal_length) //Money management equity = math.abs(strategy.equity - strategy.openprofit) var float capital_ref = strategy.initial_capital var float cashOrder = strategy.initial_capital * 0.95 //Backtesting period bool inRange = na //------------------------------CHECKING SOME CONDITIONS ON EACH SCRIPT EXECUTION-------------------------------// //Checking if the date belong to the range inRange := true //Checking performances of the strategy if equity > capital_ref + fixedRatio spread = (equity - capital_ref)/fixedRatio nb_level = int(spread) increasingOrder = nb_level * increasingOrderAmount cashOrder := cashOrder + increasingOrder capital_ref := capital_ref + nb_level*fixedRatio if equity < capital_ref - fixedRatio spread = (capital_ref - equity)/fixedRatio nb_level = int(spread) decreasingOrder = nb_level * increasingOrderAmount cashOrder := cashOrder - decreasingOrder capital_ref := capital_ref - nb_level*fixedRatio //Checking if we close all trades in case where we exit the backtesting period if strategy.position_size!=0 and not inRange strategy.close_all() debugLabel("END OF BACKTESTING PERIOD : we close the trade", color=color.rgb(116, 116, 116), loc=macdLine) //-----------------------------------EXIT SIGNAL------------------------------// if strategy.position_size>0 and histLine<0 strategy.close("Long") //-------------------------------BUY CONDITION-------------------------------------// if histLine>0 and not (strategy.position_size>0) and inRange qty = cashOrder/close stopLoss = close*(1-slMax/100) strategy.entry("Long", strategy.long, qty) strategy.exit("Exit Long", "Long", stop=stopLoss) //---------------------------------PLOTTING ELEMENT----------------------------------// hline(0, "Zero Line", color=color.new(#787B86, 50)) plot(macdLine, title="MACD", color=color.blue) plot(signalLine, title="Signal", color=color.orange) plot(histLine, title="Histogram", style=plot.style_columns, color=(histLine>=0 ? (histLine[1] < histLine ? #26A69A : #B2DFDB) : (histLine[1] < histLine ? #FFCDD2 : #FF5252))) plotchar(rs, "Relative Strenght", "", location.top, color=color.yellow)