EMA اور RSI پر مبنی ٹریڈنگ کی حکمت عملی


تخلیق کی تاریخ: 2023-09-20 14:21:16 آخر میں ترمیم کریں: 2023-09-20 14:21:16
کاپی: 0 کلکس کی تعداد: 894
1
پر توجہ دیں
1617
پیروکار

جائزہ

اس حکمت عملی میں ای ایم اے اور آر ایس آئی دونوں اشارے کا امتزاج کیا گیا ہے تاکہ رجحان کی سمت کی نشاندہی کی جاسکے اور اس پر عمل درآمد کیا جاسکے۔ جب قیمت ای ایم اے سے اوپر ہو اور آر ایس آئی خریدنے کے مقام سے نیچے ہو تو بیعانہ؛ جب قیمت ای ایم اے سے نیچے ہو اور آر ایس آئی بیچنے کے مقام سے اوپر ہو تو بیعانہ۔ جبکہ آخری دو کے لائنوں کے اختتامی قیمت کے سائز کے تعلقات کا امتزاج کیا گیا ہے تاکہ رجحان کی سمت کا تعین کیا جاسکے اور رجحان کی تجارت کی جاسکے۔

حکمت عملی کا اصول

  1. 200 دن کے ای ایم اے کا حساب لگائیں ، جو رجحانات کا فیصلہ کرنے کے لئے ایک اوسط لائن اشارے ہے۔ ای ایم اے تیزی سے قیمتوں میں تبدیلیوں کا جواب دیتا ہے ، جس سے رجحانات کی سمت کا مؤثر اندازہ لگایا جاسکتا ہے۔

  2. 14 دن کے آر ایس آئی کا حساب لگائیں ، فیصلہ کریں کہ آیا یہ زیادہ خرید یا زیادہ فروخت ہے۔ آر ایس آئی 50 سے کم کو زیادہ فروخت سمجھا جاتا ہے ، 50 سے زیادہ کو زیادہ خرید سمجھا جاتا ہے۔ اس کے ساتھ ساتھ آر ایس آئی کے اوپر اور نیچے کے رجحان کو خریدنے اور بیچنے کا وقت طے کریں۔

  3. آخری دو K لائنوں کے اختتامی قیمت کے سائز کا موازنہ کریں ، رجحان کی سمت کا تعین کریں۔ آخری دو اختتامی قیمتوں میں اضافے کو بڑھتے ہوئے رجحان میں سمجھا جاتا ہے ، اور کمی کو گرنے والے رجحان میں سمجھا جاتا ہے۔

  4. جب قیمت 200 دن کے ای ایم اے سے اوپر اور آر ایس آئی 50 سے نیچے اور اوپر کی طرف بڑھتی ہے تو خریدنے کا اشارہ دیا جاتا ہے۔

  5. جب قیمت 200 دن کے ای ایم اے سے نیچے ہو اور آر ایس آئی 50 سے اوپر ہو اور نیچے کی طرف ہو تو بیچنے کا اشارہ دیا جاتا ہے۔

  6. اے ٹی آر اور حالیہ 14 K لائنوں کی اعلی ترین قیمتیں ، کم از کم قیمتیں اسٹاپ نقصان اور اسٹاپ آؤٹ پٹ کی گنتی کے لئے استعمال کی گئیں۔

  7. موبائل سٹاپ نقصان کی حکمت عملی کا استعمال کرتے ہوئے خطرے کو کنٹرول کریں.

طاقت کا تجزیہ

  1. ڈبل اشارے رجحان کی سمت کا تعین کرنے کے لئے مل کر ، درستگی کو بہتر بناتے ہیں۔ ای ایم اے اہم رجحان کا تعین کرتا ہے ، آر ایس آئی اور کے لائن تعلقات مقامی رجحانات اور خرید و فروخت کا وقت کا تعین کرتے ہیں۔

  2. RSI اشارے نے مؤثر طریقے سے جھوٹے بریک سے بچنے کے لئے. RSI کی خالی حالت کے ذریعے ای ایم اے اشارے کے پیچھے آنے والی غیر ضروری تجارت سے بچنے کے لئے.

  3. موبائل سٹاپ نقصان مؤثر طریقے سے انفرادی بڑے طول و عرض کے اتار چڑھاو کی وجہ سے ہونے والے نقصان کو کنٹرول کرتا ہے۔

  4. اصلاح شدہ پیرامیٹرز کا مجموعہ حکمت عملی کے پیرامیٹرز کو زیادہ مستحکم بنا دیتا ہے۔

خطرے کا تجزیہ

  1. بڑے طول و عرض کے جھٹکے کے حالات میں ، EMA اور RSI میں غلط سگنل پیدا کرنے کا امکان زیادہ ہوتا ہے ، اور اس طرح کے حالات سے گریز کیا جانا چاہئے۔

  2. اسٹاپ نقصان کا نقطہ بہت چھوٹا ہے جس کی وجہ سے اکثر نقصان ہوتا ہے۔ اسٹاپ نقصان کا نقطہ بہت زیادہ ہے جس کی وجہ سے نقصان کو کنٹرول کرنا مشکل ہے۔ اے ٹی آر پیرامیٹرز کو مناسب طریقے سے ایڈجسٹ کیا جانا چاہئے۔

  3. دن کے وقت EMA کو توڑنے کے بعد پھر سے ایڈجسٹ کرنے کا امکان زیادہ ہے ، اس وقت RSI پیرامیٹرز کو مناسب طریقے سے نرمی دی جانی چاہئے ، تاکہ رجحان سے محروم نہ ہو۔

اصلاح کی سمت

  1. ATR پیرامیٹرز اور اسٹاپ ڈسٹنس کو مناسب طریقے سے ایڈجسٹ کریں تاکہ بہتر اسٹاپ پوائنٹس مل سکیں۔

  2. EMA اور RSI اشارے کے پیرامیٹرز کو بہتر بنانے کے لئے، زیادہ مناسب پیرامیٹرز کا مجموعہ تلاش کریں.

  3. دیگر معاون اشارے کو فلٹر کرنے کے لئے شامل کریں ، جیسے MACD ، برن بینڈ ، وغیرہ ، سگنل کی درستگی کو بہتر بنائیں۔

  4. مختلف پرجاتیوں کے پیرامیٹرز کی ترتیبات میں فرق کی جانچ کی جاسکتی ہے ، جس سے پیرامیٹرز کی استحکام میں مزید اضافہ ہوتا ہے۔

  5. حکمت عملی کو مخصوص وقت کے دوران بند کرنے کی کوشش کی جاسکتی ہے تاکہ غلط سگنل پیدا کرنے میں آسانی سے بچنے کے لئے۔

خلاصہ کریں۔

یہ حکمت عملی مجموعی طور پر مستحکم ہے ، منافع مستحکم ہے ، زیادہ سے زیادہ واپسی اور شارپ کی شرح بھی بہت عمدہ ہے۔ پیرامیٹرز کی اصلاح اور اسٹاپ نقصان کی ایڈجسٹمنٹ کے ذریعہ حکمت عملی کی تاثیر کو مزید بڑھاوا دیا جاسکتا ہے۔ اس کے ساتھ ہی ، کسی خاص صورتحال میں پیدا ہونے والے غلط سگنلوں سے بھی محتاط رہنے کی ضرورت ہے۔ معاون اشارے یا وقت کے فلٹرنگ کے ذریعہ ان حالات سے بچنے کے لئے۔ یہ حکمت عملی ایک مستحکم حکمت عملی بننے کی امید رکھتی ہے جو مستقل طور پر بہتر بنانے کے قابل ہے۔

حکمت عملی کا ماخذ کوڈ
/*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))