اس حکمت عملی میں ای ایم اے اور آر ایس آئی دونوں اشارے کا امتزاج کیا گیا ہے تاکہ رجحان کی سمت کی نشاندہی کی جاسکے اور اس پر عمل درآمد کیا جاسکے۔ جب قیمت ای ایم اے سے اوپر ہو اور آر ایس آئی خریدنے کے مقام سے نیچے ہو تو بیعانہ؛ جب قیمت ای ایم اے سے نیچے ہو اور آر ایس آئی بیچنے کے مقام سے اوپر ہو تو بیعانہ۔ جبکہ آخری دو کے لائنوں کے اختتامی قیمت کے سائز کے تعلقات کا امتزاج کیا گیا ہے تاکہ رجحان کی سمت کا تعین کیا جاسکے اور رجحان کی تجارت کی جاسکے۔
200 دن کے ای ایم اے کا حساب لگائیں ، جو رجحانات کا فیصلہ کرنے کے لئے ایک اوسط لائن اشارے ہے۔ ای ایم اے تیزی سے قیمتوں میں تبدیلیوں کا جواب دیتا ہے ، جس سے رجحانات کی سمت کا مؤثر اندازہ لگایا جاسکتا ہے۔
14 دن کے آر ایس آئی کا حساب لگائیں ، فیصلہ کریں کہ آیا یہ زیادہ خرید یا زیادہ فروخت ہے۔ آر ایس آئی 50 سے کم کو زیادہ فروخت سمجھا جاتا ہے ، 50 سے زیادہ کو زیادہ خرید سمجھا جاتا ہے۔ اس کے ساتھ ساتھ آر ایس آئی کے اوپر اور نیچے کے رجحان کو خریدنے اور بیچنے کا وقت طے کریں۔
آخری دو K لائنوں کے اختتامی قیمت کے سائز کا موازنہ کریں ، رجحان کی سمت کا تعین کریں۔ آخری دو اختتامی قیمتوں میں اضافے کو بڑھتے ہوئے رجحان میں سمجھا جاتا ہے ، اور کمی کو گرنے والے رجحان میں سمجھا جاتا ہے۔
جب قیمت 200 دن کے ای ایم اے سے اوپر اور آر ایس آئی 50 سے نیچے اور اوپر کی طرف بڑھتی ہے تو خریدنے کا اشارہ دیا جاتا ہے۔
جب قیمت 200 دن کے ای ایم اے سے نیچے ہو اور آر ایس آئی 50 سے اوپر ہو اور نیچے کی طرف ہو تو بیچنے کا اشارہ دیا جاتا ہے۔
اے ٹی آر اور حالیہ 14 K لائنوں کی اعلی ترین قیمتیں ، کم از کم قیمتیں اسٹاپ نقصان اور اسٹاپ آؤٹ پٹ کی گنتی کے لئے استعمال کی گئیں۔
موبائل سٹاپ نقصان کی حکمت عملی کا استعمال کرتے ہوئے خطرے کو کنٹرول کریں.
ڈبل اشارے رجحان کی سمت کا تعین کرنے کے لئے مل کر ، درستگی کو بہتر بناتے ہیں۔ ای ایم اے اہم رجحان کا تعین کرتا ہے ، آر ایس آئی اور کے لائن تعلقات مقامی رجحانات اور خرید و فروخت کا وقت کا تعین کرتے ہیں۔
RSI اشارے نے مؤثر طریقے سے جھوٹے بریک سے بچنے کے لئے. RSI کی خالی حالت کے ذریعے ای ایم اے اشارے کے پیچھے آنے والی غیر ضروری تجارت سے بچنے کے لئے.
موبائل سٹاپ نقصان مؤثر طریقے سے انفرادی بڑے طول و عرض کے اتار چڑھاو کی وجہ سے ہونے والے نقصان کو کنٹرول کرتا ہے۔
اصلاح شدہ پیرامیٹرز کا مجموعہ حکمت عملی کے پیرامیٹرز کو زیادہ مستحکم بنا دیتا ہے۔
بڑے طول و عرض کے جھٹکے کے حالات میں ، EMA اور RSI میں غلط سگنل پیدا کرنے کا امکان زیادہ ہوتا ہے ، اور اس طرح کے حالات سے گریز کیا جانا چاہئے۔
اسٹاپ نقصان کا نقطہ بہت چھوٹا ہے جس کی وجہ سے اکثر نقصان ہوتا ہے۔ اسٹاپ نقصان کا نقطہ بہت زیادہ ہے جس کی وجہ سے نقصان کو کنٹرول کرنا مشکل ہے۔ اے ٹی آر پیرامیٹرز کو مناسب طریقے سے ایڈجسٹ کیا جانا چاہئے۔
دن کے وقت EMA کو توڑنے کے بعد پھر سے ایڈجسٹ کرنے کا امکان زیادہ ہے ، اس وقت RSI پیرامیٹرز کو مناسب طریقے سے نرمی دی جانی چاہئے ، تاکہ رجحان سے محروم نہ ہو۔
ATR پیرامیٹرز اور اسٹاپ ڈسٹنس کو مناسب طریقے سے ایڈجسٹ کریں تاکہ بہتر اسٹاپ پوائنٹس مل سکیں۔
EMA اور RSI اشارے کے پیرامیٹرز کو بہتر بنانے کے لئے، زیادہ مناسب پیرامیٹرز کا مجموعہ تلاش کریں.
دیگر معاون اشارے کو فلٹر کرنے کے لئے شامل کریں ، جیسے MACD ، برن بینڈ ، وغیرہ ، سگنل کی درستگی کو بہتر بنائیں۔
مختلف پرجاتیوں کے پیرامیٹرز کی ترتیبات میں فرق کی جانچ کی جاسکتی ہے ، جس سے پیرامیٹرز کی استحکام میں مزید اضافہ ہوتا ہے۔
حکمت عملی کو مخصوص وقت کے دوران بند کرنے کی کوشش کی جاسکتی ہے تاکہ غلط سگنل پیدا کرنے میں آسانی سے بچنے کے لئے۔
یہ حکمت عملی مجموعی طور پر مستحکم ہے ، منافع مستحکم ہے ، زیادہ سے زیادہ واپسی اور شارپ کی شرح بھی بہت عمدہ ہے۔ پیرامیٹرز کی اصلاح اور اسٹاپ نقصان کی ایڈجسٹمنٹ کے ذریعہ حکمت عملی کی تاثیر کو مزید بڑھاوا دیا جاسکتا ہے۔ اس کے ساتھ ہی ، کسی خاص صورتحال میں پیدا ہونے والے غلط سگنلوں سے بھی محتاط رہنے کی ضرورت ہے۔ معاون اشارے یا وقت کے فلٹرنگ کے ذریعہ ان حالات سے بچنے کے لئے۔ یہ حکمت عملی ایک مستحکم حکمت عملی بننے کی امید رکھتی ہے جو مستقل طور پر بہتر بنانے کے قابل ہے۔
/*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))