وسائل لوڈ ہو رہے ہیں... لوڈنگ...

ای ایم اے اور آر ایس آئی ٹرینڈ ٹریڈنگ کی حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2023-09-20 14:21:16
ٹیگز:

جائزہ

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

حکمت عملی منطق

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

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

  3. رجحان کی سمت کا تعین کرنے کے لئے آخری دو موم بتیوں کے اختتام کے درمیان سائز کے تعلقات کا موازنہ کریں۔ اضافی آخری دو اختتام ایک اپ ٹرینڈ کی نشاندہی کرتے ہیں ، جبکہ کم سے کم آخری دو اختتام ایک ڈاؤن ٹرینڈ کی نشاندہی کرتے ہیں۔

  4. جب ایک اپ ٹرینڈ میں، قیمت 200 دن کے ای ایم اے سے اوپر، اور آر ایس آئی 50 سے نیچے اور بڑھتی ہوئی ہے، تو خریدنے کا اشارہ پیدا ہوتا ہے.

  5. جب نیچے کا رجحان ہوتا ہے، قیمت 200 دن کے ای ایم اے سے نیچے ہوتی ہے، اور آر ایس آئی 50 سے اوپر ہوتا ہے اور گرتا ہے، تو فروخت کا سگنل پیدا ہوتا ہے۔

  6. اے ٹی آر اور آخری 14 موم بتیوں کی اعلی ترین / کم ترین قیمتوں کا استعمال سٹاپ نقصان اور منافع لینے کا حساب کرنے کے لئے کیا جاتا ہے۔

  7. خطرے کے انتظام کے لئے ٹرائلنگ اسٹاپ کی حکمت عملی اپنائیں.

فوائد کا تجزیہ

  1. دو اشارے کا امتزاج رجحان کی سمت کا تعین کرنے میں درستگی کو بہتر بناتا ہے۔ ای ایم اے اہم رجحان کا جائزہ لیتا ہے اور آر ایس آئی اور موم بتی کا تعلق مقامی رجحان اور انٹری / آؤٹ ٹائمنگ کا جائزہ لیتا ہے۔

  2. آر ایس آئی مؤثر طریقے سے جھوٹے بریکآؤٹس سے بچتا ہے۔ آر ایس آئی اوور بکڈ / اوور سیلڈ کی حیثیت سے ای ایم اے کی تاخیر کی وجہ سے غیر ضروری تجارت سے بچتا ہے۔

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

  4. بہتر پیرامیٹر مجموعہ استحکام میں اضافہ کرتا ہے.

خطرے کا تجزیہ

  1. ای ایم اے اور آر ایس آئی بڑے پیمانے پر ضمنی بازاروں میں غلط سگنل پیدا کرنے کا امکان ہے ، جس سے گریز کرنا چاہئے۔

  2. ایک بہت تنگ سٹاپ نقصان بار بار روکنے کا سبب بنتا ہے جبکہ ایک بہت وسیع سٹاپ نقصان نقصان کو کنٹرول کرنے میں ناکام رہتا ہے۔ اے ٹی آر پیرامیٹر کو مناسب طریقے سے ایڈجسٹ کرنا چاہئے۔

  3. توڑ کے بعد واپس لینے کا امکان زیادہ ہے۔ رجحانات کو یاد کرنے سے بچنے کے لئے آر ایس آئی پیرامیٹر کو آرام دہ اور پرسکون ہونا چاہئے۔

بہتری کی ہدایات

  1. بہتر سٹاپ نقصان پوائنٹس تلاش کرنے کے لئے ATR پیرامیٹر اور سٹاپ فاصلے کو ایڈجسٹ کریں.

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

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

  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))

مزید