RSI سگنل ٹریکنگ ریورس ٹریڈنگ کی حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2023-09-28 10:54:24
ٹیگز:

جائزہ

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

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

سگنل کی شناخت

آر ایس آئی اشارے سے زیادہ خرید / فروخت کی سطح کی نشاندہی ہوتی ہے۔ جب آر ایس آئی زیادہ خرید کی حد سے تجاوز کرتا ہے تو زیادہ خرید جاتا ہے ، جب زیادہ فروخت کی حد سے تجاوز کرتا ہے تو زیادہ فروخت ہوتا ہے۔

overbought = rsi > uplimit
oversold = rsi < dnlimit

اگر RSI آخری بار میں overbought گیا تھا اور اس بار میں exits overbought گیا تھا، ایک خرید سگنلup1چالو ہو جاتا ہے. اگر RSI گزشتہ بار oversold اور اس بار oversold سے باہر نکلتا تھا، ایک فروخت سگنلdn1پیدا ہوتا ہے۔

up1 = bar == -1 and strategy.position_size == 0 and overbought[1] and overbought == false
dn1 = bar == 1 and strategy.position_size == 0 and oversold[1] and oversold == false

باہر نکلنے کی منطق

اگر بار سمت پوزیشن سمت کے ساتھ سیدھ میں ہے، اور بار جسم اس کے 10 مدت کے اوسط کے نصف سے زیادہ ہے، ایک باہر نکلنے کا اشارہ چالو کیا جاتا ہے.

exit = (((strategy.position_size > 0 and bar == 1) or  
         (strategy.position_size < 0 and bar == -1)) and  
        body > abody / 2)

فوائد

  1. یاد آر ایس آئی الٹ سگنل ٹریک کریں، بروقت overbought / oversold پوائنٹس کو پکڑنے کی ضرورت سے بچنے.

  2. موڑ پوائنٹس کو پکڑنے کے لئے RSI کی ریورس پراپرٹی کا فائدہ اٹھائیں.

  3. باہر نکلنے کی منطق میں بار سمت اور سائز کو شامل کریں تاکہ واپس آنے کے بعد مزید ٹریکنگ سے بچنے کے لۓ.

خطرات اور حل

  1. RSI سے غلط سگنل کا خطرہ

    • حل: غلط سگنل سے بچنے کے لئے سگنل کو دوسرے اشارے سے تصدیق کریں
  2. قیمتوں کو پہلے سے ہی نقصان کا خطرہ بڑھتی ہوئی، ٹریکنگ سگنل کے دوران نمایاں طور پر واپس ھیںچ لیا ہے ہو سکتا ہے

    • حل: اندراج پر پوزیشن کا سائز کم کریں، یا اندراج کے وقت کو بہتر بنائیں
  3. مکمل منافع بخش واپسی سے پہلے قبل از وقت باہر نکلنے کا خطرہ

    • حل: منافع حاصل کرنے کے امکانات کو بڑھانے کے لئے باہر نکلنے کے منطق کو بہتر بنائیں

بہتر مواقع

  1. مختلف مارکیٹوں کی بنیاد پر اوور خریدے / اوور سیلڈ کی سطح، نظرثانی کی مدت وغیرہ جیسے پیرامیٹرز کو بہتر بنائیں

  2. پوزیشن سائزنگ کو ایڈجسٹ کریں، جیسے سائز کو کم کرنے کے لئے جب سگنل کو ٹریک کریں

  3. ٹریک سگنل سے باہر فلٹرز شامل کرکے انٹری ٹائمنگ کو بہتر بنائیں

  4. منافع میں اضافہ کرنے کے لئے باہر نکلنے کو بہتر بنائیں ، جیسے منافع کی روک تھام

  5. نقصانات کو کم کرنے کے لئے اسٹاپ کو بہتر بنائیں ، جیسے ٹریلنگ اسٹاپ یا مخروط اسٹاپ

خلاصہ

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


/*backtest
start: 2023-09-20 00:00:00
end: 2023-09-27 00:00:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=2
strategy(title = "Noro's Anti RSI Strategy v1.0", shorttitle = "Anti RSI str 1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
usemar = input(false, defval = false, title = "Use Martingale")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %")
rsiperiod1 = input(14, defval = 14, minval = 2, maxval = 50, title = "RSI Period")
rsilimit1 = input(25, defval = 25, minval = 1, maxval = 100, title = "RSI limit")
showarr = input(false, defval = false, title = "Show Arrows")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//RSI
uprsi1 = rma(max(change(close), 0), rsiperiod1)
dnrsi1 = rma(-min(change(close), 0), rsiperiod1)
rsi = dnrsi1 == 0 ? 100 : uprsi1 == 0 ? 0 : 100 - (100 / (1 + uprsi1 / dnrsi1))
uplimit = 100 - rsilimit1
dnlimit = rsilimit1

//Body
body = abs(close - open)
abody = sma(body, 10)

//Signals
bar = close > open ? 1 : close < open ? -1 : 0
overbought = rsi > uplimit
oversold = rsi < dnlimit

up1 = bar == -1 and strategy.position_size == 0 and overbought[1] and overbought == false
dn1 = bar == 1 and strategy.position_size == 0 and oversold[1] and oversold == false
up2 = bar == -1 and strategy.position_size > 0 and overbought == false
dn2 = bar == 1 and strategy.position_size < 0 and oversold == false

norma = overbought == false and oversold == false
exit = (((strategy.position_size > 0 and bar == 1) or (strategy.position_size < 0 and bar == -1)) and body > abody / 2)

//Arrows
col = exit ? black : up1 or dn1 or up2 or dn2 ? blue : na
needup = up1 or up2
needdn = dn1 or dn2
needexitup = exit and strategy.position_size < 0
needexitdn = exit and strategy.position_size > 0
plotarrow(showarr and needup ? 1 : na, colorup = blue, colordown = blue, transp = 0)
plotarrow(showarr and needdn ? -1 : na, colorup = blue, colordown = blue, transp = 0)
plotarrow(showarr and needexitup ? 1 : na, colorup = black, colordown = black, transp = 0)
plotarrow(showarr and needexitdn ? -1 : na, colorup = black, colordown = black, transp = 0)

//Trading
profit = exit ? ((strategy.position_size > 0 and close > strategy.position_avg_price) or (strategy.position_size < 0 and close < strategy.position_avg_price)) ? 1 : -1 : profit[1]
mult = usemar ? exit ? profit == -1 ? mult[1] * 2 : 1 : mult[1] : 1
lot = strategy.position_size == 0 ? strategy.equity / close * capital / 100 * mult : lot[1]

if up1 or up2
    if strategy.position_size < 0
        strategy.close_all()
        
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))

if dn1 or dn2
    if strategy.position_size > 0
        strategy.close_all()
        
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    
if time > timestamp(toyear, tomonth, today, 23, 59) or exit
    strategy.close_all()

مزید