یہ حکمت عملی ای ایم اے اور آر ایس آئی اشارے کو یکجا کرتی ہے تاکہ رجحان کی سمت کی نشاندہی کی جاسکے اور تجارتی فیصلے کیے جاسکے۔ جب قیمت ای ایم اے سے اوپر ہوتی ہے اور آر ایس آئی خریدنے کے مقام سے نیچے ہوتا ہے تو یہ طویل ہوجاتا ہے ، اور جب قیمت ای ایم اے سے نیچے ہوتی ہے اور آر ایس آئی فروخت کے مقام سے اوپر ہوتا ہے تو یہ مختصر ہوجاتا ہے۔ یہ رجحان کی تجارت کے لئے رجحان کی سمت کا تعین کرنے کے لئے آخری دو موم بتیوں کے درمیان تعلقات کا بھی استعمال کرتا ہے۔
200 دن کے ای ایم اے کو رجحان لائن اشارے کے طور پر شمار کریں۔ ای ایم اے قیمتوں میں تبدیلیوں کا تیزی سے جواب دیتا ہے اور مؤثر طریقے سے رجحان کی سمت کا تعین کرتا ہے۔
14 دن کے آر ایس آئی کا حساب لگانا تاکہ زیادہ خریدنے اور زیادہ فروخت ہونے والے حالات کا فیصلہ کیا جاسکے۔ 50 سے کم آر ایس آئی کو زیادہ فروخت سمجھا جاتا ہے ، جبکہ 50 سے زیادہ کو زیادہ خریدا جاتا ہے۔ داخلہ اور باہر نکلنے کے وقت کا تعین کرنے کے لئے آر ایس آئی کے اوپر یا نیچے کے رجحان کا بھی استعمال کریں۔
رجحان کی سمت کا تعین کرنے کے لئے آخری دو موم بتیوں کے اختتام کے درمیان سائز کے تعلقات کا موازنہ کریں۔ اضافی آخری دو اختتام ایک اپ ٹرینڈ کی نشاندہی کرتے ہیں ، جبکہ کم سے کم آخری دو اختتام ایک ڈاؤن ٹرینڈ کی نشاندہی کرتے ہیں۔
جب ایک اپ ٹرینڈ میں، قیمت 200 دن کے ای ایم اے سے اوپر، اور آر ایس آئی 50 سے نیچے اور بڑھتی ہوئی ہے، تو خریدنے کا اشارہ پیدا ہوتا ہے.
جب نیچے کا رجحان ہوتا ہے، قیمت 200 دن کے ای ایم اے سے نیچے ہوتی ہے، اور آر ایس آئی 50 سے اوپر ہوتا ہے اور گرتا ہے، تو فروخت کا سگنل پیدا ہوتا ہے۔
اے ٹی آر اور آخری 14 موم بتیوں کی اعلی ترین / کم ترین قیمتوں کا استعمال سٹاپ نقصان اور منافع لینے کا حساب کرنے کے لئے کیا جاتا ہے۔
خطرے کے انتظام کے لئے ٹرائلنگ اسٹاپ کی حکمت عملی اپنائیں.
دو اشارے کا امتزاج رجحان کی سمت کا تعین کرنے میں درستگی کو بہتر بناتا ہے۔ ای ایم اے اہم رجحان کا جائزہ لیتا ہے اور آر ایس آئی اور موم بتی کا تعلق مقامی رجحان اور انٹری / آؤٹ ٹائمنگ کا جائزہ لیتا ہے۔
آر ایس آئی مؤثر طریقے سے جھوٹے بریکآؤٹس سے بچتا ہے۔ آر ایس آئی اوور بکڈ / اوور سیلڈ کی حیثیت سے ای ایم اے کی تاخیر کی وجہ سے غیر ضروری تجارت سے بچتا ہے۔
ٹریلنگ سٹاپ مؤثر طریقے سے کبھی کبھار بڑے طول و عرض کے اتار چڑھاؤ کی وجہ سے نقصان کو کنٹرول کرتا ہے.
بہتر پیرامیٹر مجموعہ استحکام میں اضافہ کرتا ہے.
ای ایم اے اور آر ایس آئی بڑے پیمانے پر ضمنی بازاروں میں غلط سگنل پیدا کرنے کا امکان ہے ، جس سے گریز کرنا چاہئے۔
ایک بہت تنگ سٹاپ نقصان بار بار روکنے کا سبب بنتا ہے جبکہ ایک بہت وسیع سٹاپ نقصان نقصان کو کنٹرول کرنے میں ناکام رہتا ہے۔ اے ٹی آر پیرامیٹر کو مناسب طریقے سے ایڈجسٹ کرنا چاہئے۔
توڑ کے بعد واپس لینے کا امکان زیادہ ہے۔ رجحانات کو یاد کرنے سے بچنے کے لئے آر ایس آئی پیرامیٹر کو آرام دہ اور پرسکون ہونا چاہئے۔
بہتر سٹاپ نقصان پوائنٹس تلاش کرنے کے لئے ATR پیرامیٹر اور سٹاپ فاصلے کو ایڈجسٹ کریں.
بہتر پیرامیٹر مجموعے تلاش کرنے کے لئے EMA اور RSI پیرامیٹرز کو بہتر بنائیں.
سگنل کی درستگی کو بہتر بنانے کے لیے فلٹرنگ کے لیے دیگر اشارے شامل کریں، جیسے ایم اے سی ڈی، بولنگر بینڈ وغیرہ۔
مضبوطی کو مزید بڑھانے کے لئے مختلف مصنوعات کے درمیان ٹیسٹ پیرامیٹر اختلافات.
غلط سگنل کا شکار اوقات سے بچنے کے لئے مخصوص اوقات کے دوران حکمت عملی کو غیر فعال کرنے کی کوشش کریں۔
مجموعی طور پر حکمت عملی مستحکم واپسی ، زیادہ سے زیادہ کھوج اور شارپ تناسب کے ساتھ کافی مستحکم ہے۔ پیرامیٹر کی اصلاح اور اسٹاپ نقصان کی ایڈجسٹمنٹ کے ذریعہ اس میں مزید بہتری لائی جاسکتی ہے۔ مخصوص مارکیٹ کے حالات کے دوران غلط سگنلز پر بھی نظر رکھنے کی ضرورت ہے ، اور معاون اشارے یا وقت کے فلٹرز کے ذریعہ ان سے بچنے کی ضرورت ہے۔ اس حکمت عملی میں مستقل اصلاح کے ذریعے طویل مدتی مستحکم حکمت عملی بننے کی صلاحیت ہے۔
/*backtest start: 2023-01-01 00:00:00 end: 2023-08-10 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 // strategy("EMA RSI Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=1) /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Author : AJ Rupasinghege // Date : 06/11/2022 // Release : v6.0 // Description : If the last two closes are in ascending order, the rsi is below 50 and ascending, and the current candle is above 200 ema, then LONG. // If the last two closes are in descending order, the rsi is above 50 and descending, and the current candle is below 200 ema, then SHORT. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////// INPUTS ////////////////////////////////////////////////////////////// ema_length = input(200, "EMA Length") rsi_buy_value = input(50, "RSI Buy Value") rsi_sell_value = input(50, "RSI Sell Value") show_data = input.bool(0, "Show Data") ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////// VARIABLES ////////////////////////////////////////////////////////// var stop_loss = 0.0 var last_trade_entry_price = 0.0 var low_value= 0.0 var atr = 0.0 var high_value = 0.0 var stop_loss_points = 0.0 var limit = 0.0 var bar_id_entry = 0 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////// FUNCTIONS ////////////////////////////////////////////////////////// getTradeConditionsLong() => //@function Used to calculate stop_loss, stop_loss points, limit and label values for long trades //@param direction (float) // strategy.poistion.size //@returns stop_loss, stop_loss_points, limit //@Dependancies low_value, atr, last_trade_entry_price,bar_id_entry _stop_loss = low_value - atr _stop_lossPoints = (last_trade_entry_price - _stop_loss) *100000 _limit = last_trade_entry_price + (last_trade_entry_price - low_value + atr) value = "OpenValue: " + str.tostring(last_trade_entry_price) + "\n OpenBarIndex: " + str.tostring(bar_id_entry) + "\n LowValue: " + str.tostring(low_value) + "\n atr: " + str.tostring(atr) + "\n stop_loss: " + str.tostring(_stop_loss) + "\n Limit: " + str.tostring(_limit) [_stop_loss,_stop_lossPoints,_limit, value] getTradeConditionsShort() => //@function Used to calculate stop_loss, stop_loss points, limit and label values for short trades //@param direction (float) // strategy.poistion.size //@returns stop_loss, stop_loss_points, limit //@Dependancies high_value, atr, last_trade_entry_price,bar_id_entry _stop_loss = high_value + atr _stop_lossPoints = (_stop_loss -last_trade_entry_price) * 100000 _limit = last_trade_entry_price - (high_value - last_trade_entry_price + atr) value = "OpenValue: " + str.tostring(last_trade_entry_price) + "\n OpenBarIndex: " + str.tostring(bar_id_entry) + "\n HighValue: " + str.tostring(high_value) + "\n atr: " + str.tostring(atr) + "\n stop_loss: " + str.tostring(_stop_loss) + "\n Limit: " + str.tostring(_limit) [_stop_loss,_stop_lossPoints,_limit, value] ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////// SIGNALS ////////////////////////////////////////////////////////// ema = ta.ema(close,ema_length) rsi = ta.rsi(close,14) ema_buy_signal = ema < low ema_sell_signal = ema > high rsi_buy_signal = rsi < rsi_buy_value and rsi[1] < rsi[0] rsi_sell_signal = rsi > rsi_sell_value and rsi[1] > rsi[0] trend_buy_signal = close[2] < close[1] and close[1] < close[0] trend_sell_signal = close[2] > close[1] and close[1] > close[0] ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////// TRADES ////////////////////////////////////////////////////////// long = trend_buy_signal and ema_buy_signal and rsi_buy_signal short = trend_sell_signal and ema_sell_signal and rsi_sell_signal ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////// STRATEGY ////////////////////////////////////////////////////////// if long strategy.entry("Long", strategy.long) if short strategy.entry("Short", strategy.short) // Calculate Trade Entry Variables last_trade_entry_price := strategy.opentrades.entry_price(strategy.opentrades - 1) bar_id_entry := strategy.opentrades.entry_bar_index(strategy.opentrades - 1) atr := ta.atr(14) low_value := ta.lowest(14) high_value := ta.highest(14) // Exit Strategy for Long Positions if (strategy.position_size[1] != strategy.position_size and strategy.position_size>0) [_stop_loss,_stop_loss_points, _limit, value] = getTradeConditionsLong() stop_loss := _stop_loss stop_loss_points := _stop_loss_points limit := _limit if show_data label.new(bar_id_entry,stop_loss - 0.005,str.tostring(value),xloc = xloc.bar_index,yloc = yloc.price,style = label.style_none) strategy.exit("Long Exit", "Long", trail_offset = stop_loss_points/2, trail_points = stop_loss_points/2 , stop = stop_loss , limit = limit ) // Exit Strategy for Short Positions if (strategy.position_size[1] != strategy.position_size and strategy.position_size<0) [_stop_loss,_stop_loss_points, _limit, value] = getTradeConditionsShort() stop_loss := _stop_loss stop_loss_points := _stop_loss_points limit := _limit if show_data label.new(bar_id_entry,stop_loss + 0.005,str.tostring(value),xloc = xloc.bar_index,yloc = yloc.price,style = label.style_none) strategy.exit("Short Exit", "Short", trail_offset = stop_loss_points/2, trail_points = stop_loss_points/2 , stop = stop_loss , limit = limit ) ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////// PLOTS ////////////////////////////////////////////////////////// plot(ema, "SMA", color = color.blue, linewidth = 2 ) p1 = plot(strategy.position_size>0? stop_loss:na, style = plot.style_linebr , color = color.rgb(82, 240, 42) ) p2 = plot(strategy.position_size<0? stop_loss:na, style = plot.style_linebr , color = color.rgb(223, 85, 85) ) p3 = plot(strategy.position_size!=0?limit : na, style = plot.style_linebr , color = color.rgb(94, 85, 223, 100) ) fill(p1, p3, color = color.new(color.green, 90)) fill(p2, p3, color = color.new(#e98787, 90))