تیزی سے RSI بریکآؤٹ ٹریڈنگ کی حکمت عملی

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

یہ حکمت عملی تیزی سے آر ایس آئی اشارے کا استعمال کرتے ہوئے آر ایس آئی انتہائی تجارت کرتی ہے اور موم بتی کے جسم کے سائز کی بنیاد پر اندراجات کو فلٹر کرتی ہے تاکہ وِپساؤ سے بچ سکے۔ اس کا مقصد تیزی سے الٹ جانے کو پکڑنے کے لئے زیادہ خرید / زیادہ فروخت کی سطحوں کی فوری نشاندہی کرنا ہے۔

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

  1. تیز رفتار RSI کا حساب لگائیں اور overbought/oversold thresholds مقرر کریں۔

  2. جسم فلٹرنگ کے لئے موم بتی کے جسم کے سائز کے EMA کا حساب لگائیں.

  3. جب آر ایس آئی اوور بک لائن سے اوپر اور جسم ای ایم اے کے آدھے سے اوپر سے گزرتا ہے تو طویل ہوجاتا ہے۔ مختصر کے لئے الٹا۔

  4. باہر نکلیں جب RSI اصل حد سے نیچے اور جسم EMA سے اوپر واپس گزرتا ہے۔

  5. Min/max اضافی سگنل کی تصدیق فراہم کر سکتا ہے۔

فوائد:

  1. فاسٹ آر ایس آئی سگنل کی پیداوار کو تیز کرتا ہے اور تاخیر سے بچتا ہے۔

  2. جسم کے سائز کے فلٹرز موم بتیوں کے معمولی شور کو کم کرتے ہیں۔

  3. Min/max سگنل کے معیار کو بہتر بناتا ہے۔

خطرات:

  1. جسمانی فلٹرنگ کچھ درست اشاروں کو نظر انداز کر سکتی ہے۔

  2. Whipsaws اب بھی رینج مارکیٹوں میں RSI کے لئے ممکن ہے.

  3. ریورس ٹریڈنگ کے لئے سخت رسک مینجمنٹ کی ضرورت ہے۔

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


/*backtest
start: 2023-01-01 00:00:00
end: 2023-09-11 00:00:00
period: 2d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(title = "Noro's Fast RSI Strategy v1.3", shorttitle = "Fast RSI str 1.3", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 5)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
rsiperiod = input(7, defval = 7, minval = 2, maxval = 50, title = "RSI Period")
limit = input(30, defval = 30, minval = 1, maxval = 100, title = "RSI limit")
rsisrc = input(close, defval = close, title = "RSI Price")
rb = input(1, defval = 1, minval = 1, maxval = 5, title = "RSI Bars")
usemm = input(false, defval = false, title = "Use Min/Max")
showarr = input(false, defval = false, title = "Show Arrows")
fromyear = input(2018, defval = 2018, 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")

//Fast RSI
fastup = rma(max(change(rsisrc), 0), rsiperiod)
fastdown = rma(-min(change(rsisrc), 0), rsiperiod)
fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown))

//Limits
bar = close > open ? 1 : close < open ? -1 : 0
uplimit = 100 - limit
dnlimit = limit

//RSI Bars
ur = fastrsi > uplimit
dr = fastrsi < dnlimit
uprsi = rb == 1 and ur ? 1 : rb == 2 and ur and ur[1] ? 1 : rb == 3 and ur and ur[1] and ur[2] ? 1 : rb == 4 and ur and ur[1] and ur[2] and ur[3] ? 1 : rb == 5 and ur and ur[1] and ur[2] and ur[3] and ur[4] ? 1 : 0
dnrsi = rb == 1 and dr ? 1 : rb == 2 and dr and dr[1] ? 1 : rb == 3 and dr and dr[1] and dr[2] ? 1 : rb == 4 and dr and dr[1] and dr[2] and dr[3] ? 1 : rb == 5 and dr and dr[1] and dr[2] and dr[3] and dr[4] ? 1 : 0

//Body
body = abs(close - open)
emabody = ema(body, 30)

//MinMax
min = min(close, open)
max = max(close, open)

//Signals
up1 = bar == -1 and (strategy.position_size == 0 or close < strategy.position_avg_price) and dnrsi and body > emabody / 4
dn1 = bar == 1 and (strategy.position_size == 0 or close > strategy.position_avg_price) and uprsi and body > emabody / 4
up2 = min < min[1] and bar == -1 and bar[1] == -1 and usemm
dn2 = max > max[1] and bar == 1 and bar[1] == 1 and usemm
exit = ((strategy.position_size > 0 and fastrsi > dnlimit and bar == 1) or (strategy.position_size < 0 and fastrsi < uplimit and bar == -1)) and body > emabody / 2

//Arrows
col = exit ? black : up1 or dn1 ? blue : up2 or dn2 ? red : na
needup = up1 or (up2 and usemm)
needdn = dn1 or (dn2 and usemm)
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
if up1 or up2
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 00, 00)))

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

مزید