RSI اشارے دوہری حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2023-09-19 19:43:19
ٹیگز:

جائزہ

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

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

بنیادی منطق میں شامل ہیں:

  1. RSI قدر کا حساب لگانا
  2. RSI کی اوپری اور نچلی حدود کا تعین
  3. جب RSI اوپری حد سے تجاوز کرتا ہے تو مختصر ہوجاتا ہے
  4. جب آر ایس آئی نیچے کی حد سے تجاوز کرتا ہے تو طویل عرصے تک جانا
  5. منافع لینے اور نقصان روکنے کی سطح کا تعین
  6. جب RSI الٹ جاتا ہے یا منافع/سٹاپ نقصان حاصل ہوتا ہے تو باہر نکلنے والی پوزیشنیں

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

فوائد

  • RSI مؤثر طریقے سے overbought / oversold مارکیٹ ریاستوں کی نشاندہی کرتا ہے
  • آر ایس آئی کی ٹھوس نظریاتی بنیاد ہے
  • اپنی مرضی کے مطابق پیرامیٹرز مختلف آلات اور حالات میں اپنانے
  • غیر منقولہ منافع/سٹاپ نقصان کنٹرولز کا خطرہ

خطرات اور تخفیف

  • RSI کے غلط سگنل کے نقصانات کی قیادت کرنے کا امکان
  • آر ایس آئی کی سطحوں کی مسلسل اصلاح کی ضرورت ہے
  • ہلکی قیمت کی کارروائی کے دوران اکثر اسٹاپ لگ سکتے ہیں

تخفیف:

  1. سگنلز کی تصدیق اور جھوٹے سگنلز سے بچنے کے لیے اضافی عوامل
  2. آلہ کی خصوصیات کی بنیاد پر RSI کی سطح کو بہتر بنائیں
  3. وِپسا خطرات کو کم کرنے کے لئے سٹاپ نقصان کی جگہ کو ایڈجسٹ کریں

بہتر مواقع

اسٹریٹیجی کو مندرجہ ذیل طریقوں سے بہتر بنایا جاسکتا ہے:

  1. آٹو آر ایس آئی سطح کی اصلاح کے لئے مشین لرننگ

  2. جھوٹے بریک آؤٹ سے بچنے کے لئے حجم کی تصدیق

  3. ملٹی فیکٹر کی تصدیق کے لئے چلنے والے اوسط جیسے اضافی عوامل

  4. مارکیٹ کی اتار چڑھاؤ کی بنیاد پر موافقت پذیر رکاوٹیں

  5. فنڈز کی آمد و رفت/خروج کا اندازہ لگانے کے لیے حجم کا تجزیہ

  6. غیر منسلک حکمت عملیوں کے ساتھ مل کر پورٹ فولیو کو کم کرنے کے لئے

نتیجہ

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


/*backtest
start: 2023-08-19 00:00:00
end: 2023-09-18 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("4All V3", shorttitle="Strategy", overlay=true)

/////////////// Component Code Start ///////////////
testStartYear = input(2011, "Backtest Start Year") 
testStartMonth = input(8, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(2018, "Backtest Stop Year")
testStopMonth = input(9, "Backtest Stop Month")
testStopDay = input(29, "Backtest Stop Day")
// testStopDay = testStartDay + 1
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

// A switch to control background coloring of the test period
testPeriodBackground = input(title="Color Background?", type=bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na
bgcolor(testPeriodBackgroundColor, transp=97)

testPeriod() => true
/////////////// Component Code Stop ///////////////

src = close
len = input(4, minval=1, title="Length")

up = rma(max(change(src), 0), len)
down = rma(-min(change(src), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))

rsin = input(5)
sn = 100 - rsin
ln = 0 + rsin

/////////////// STRATEGY ///////////////
ts = input(99999, "Trailing Stop") / 10000
tp = input(15, "Take Profit") / 10000
sl = input(23, "Stop Loss") / 10000

pyr = input(1, "Pyramiding")

short = crossover(rsi, sn)
long = crossunder(rsi, ln)

totalLongs = 0
totalLongs := nz(totalLongs[1])
totalShorts = 0
totalShorts := nz(totalShorts[1])

totalLongsPrice = 0
totalLongsPrice := nz(totalLongsPrice[1])
totalShortsPrice = 0
totalShortsPrice := nz(totalShortsPrice[1])

sectionLongs = 0
sectionLongs := nz(sectionLongs[1])
sectionShorts = 0
sectionShorts := nz(sectionShorts[1])

if long
    sectionLongs := sectionLongs + 1
    sectionShorts := 0

if short
    sectionLongs := 0
    sectionShorts := sectionShorts + 1

longCondition = long and sectionLongs >= pyr
shortCondition = short and sectionShorts >= pyr

last_long = na
last_short = na
last_long := longCondition ? time : nz(last_long[1])
last_short := shortCondition ? time : nz(last_short[1])

long_signal = crossover(last_long, last_short)
short_signal = crossover(last_short, last_long)

last_open_long_signal = na
last_open_short_signal = na
last_open_long_signal := long_signal ? open : nz(last_open_long_signal[1])
last_open_short_signal := short_signal ? open : nz(last_open_short_signal[1])

last_long_signal = na
last_short_signal = na
last_long_signal := long_signal ? time : nz(last_long_signal[1])
last_short_signal := short_signal ? time : nz(last_short_signal[1])

in_long_signal = last_long_signal > last_short_signal
in_short_signal = last_short_signal > last_long_signal

last_high = na
last_low = na
last_high := not in_long_signal ? na : in_long_signal and (na(last_high[1]) or high > nz(last_high[1])) ? high : nz(last_high[1])
last_low := not in_short_signal ? na : in_short_signal and (na(last_low[1]) or low < nz(last_low[1])) ? low : nz(last_low[1])

long_ts = not na(last_high) and high <= (last_high - ts) //and high >= last_open_long_signal
short_ts = not na(last_low) and low >= (last_low + ts) //and low <= last_open_short_signal

long_tp = high >= (last_open_long_signal + tp)
short_tp = low <= (last_open_short_signal - tp)

long_sl = low <= (last_open_long_signal - sl)
short_sl = high >= (last_open_short_signal + sl)

leverage = input(1, "Leverage")
long_call = last_open_long_signal - (0.8 + 0.2 * (1/leverage)) / leverage * last_open_long_signal
short_call = last_open_short_signal + (0.78 + 0.2 * (1/leverage)) / leverage * last_open_short_signal
long_call_signal = low <= long_call
short_call_signal = high >= short_call

if testPeriod()
    strategy.entry("Long", strategy.long, when=longCondition)
    strategy.entry("Short", strategy.short, when=shortCondition)
    
    strategy.close("Long", when=long_call_signal)
    strategy.close("Short", when=short_call_signal)
    strategy.close("Long", when=long_tp)
    strategy.close("Short", when=short_tp)
    strategy.close("Long", when=long_sl)
    strategy.close("Short", when=short_sl)
    strategy.close("Long", when=long_ts)
    strategy.close("Short", when=short_ts)

مزید