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

مصنف:چاؤ ژانگ، تاریخ: 2023-12-12 15:20:29
ٹیگز:

img

جائزہ

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

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

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

  1. جب ایس ایم آئی oversold ہے (نیچے کی حد سے نیچے) تو اسے خریدنے کا اشارہ سمجھا جاتا ہے
  2. جب RSI حد سے نیچے ہے تو اسے خریدنے کا اشارہ سمجھا جاتا ہے
  3. جب SMI oversold اور RSI دونوں اسی حد سے نیچے واقع ہوتے ہیں تو ، خریدنے کا اشارہ ٹرگر ہوتا ہے
  4. فروخت سگنل منطق اسی طرح کی ہے

اس کے علاوہ ، اس حکمت عملی میں دوہری سگنل موڈ ہے۔ اس موڈ میں کسی بھی تجارت کو متحرک کرنے کے لئے ایس ایم آئی اور آر ایس آئی دونوں سگنل کی ضرورت ہوتی ہے۔ اس سے غلط سگنل کو مؤثر طریقے سے کم کیا جاسکتا ہے۔

مزید برآں ، رنگ فلٹر اور موم بتی جسم فلٹر شامل ہیں۔ ان فلٹرز کے لئے نسبتا large بڑی موم بتی کا جسم درکار ہوتا ہے اور آخری موم بتی کھلنے سے زیادہ اونچی ہوتی ہے۔ اس سے تجارتی غلط بریک آؤٹ سے مزید بچا جاسکتا ہے۔

فوائد

  1. زیادہ خریدنے / زیادہ فروخت کے لئے ایس ایم آئی اور رشتہ دار طاقت کے لئے آر ایس آئی کا استعمال کریں ، دوہری تصدیق سے غلط سگنل کم ہوسکتے ہیں
  2. ڈبل سگنل موڈ غیر موثر تجارت کو بہت کم کر سکتا ہے
  3. رنگ اور جسم فلٹرز مؤثر طریقے سے جھوٹے breakouts فلٹر کر سکتے ہیں
  4. حکمت عملی منطق سادہ اور صاف ہے
  5. زیادہ تر پیرامیٹرز حسب ضرورت ہیں

خطرات اور اصلاح

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

خلاصہ

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


/*backtest
start: 2023-12-04 00:00:00
end: 2023-12-06 19:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=2
strategy(title = "Noro's Stochastic Strategy v1.3", shorttitle = "Stochastic str 1.3", overlay = false, 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, %")
usesmi = input(true, defval = true, title = "Use SMI Strategy")
usersi = input(true, defval = true, title = "Use RSI Strategy")
usecol = input(true, defval = true, title = "Use Color-Filter")
usebod = input(true, defval = true, title = "Use Body-Filter")
a = input(2, defval = 2, minval = 2, maxval = 50, title = "SMI Percent K Length")
b = input(2, defval = 2, minval = 2, maxval = 50, title = "SMI Percent D Length")
limitsmi = input(50, defval = 50, minval = 1, maxval = 100, title = "SMI Limit")
periodrsi = input(2, defval = 2, minval = 2, maxval = 50, title = "RSI Period")
limitrsi = input(10, defval = 10, minval = 1, maxval = 50, title = "RSI Limit")
double = input(false, defval = false, title = "SMI+RSI Mode")
showbg = input(false, defval = false, title = "Show background")
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(close), 0), periodrsi)
fastdown = rma(-min(change(close), 0), periodrsi)
fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown))

//Stochastic Momentum Index
ll = lowest (low, a)
hh = highest (high, a)
diff = hh - ll
rdiff = close - (hh+ll)/2
//avgrel = ema(ema(rdiff,b),b)
//avgdiff = ema(ema(diff,b),b)
avgrel = sma(sma(rdiff,b),b)
avgdiff = sma(sma(diff,b),b)
SMI = avgdiff != 0 ? (avgrel/(avgdiff/2)*100) : 0
SMIsignal = ema(SMI,b)

//Lines
plot(SMI, color = blue, linewidth = 3, title = "Stochastic Momentum Index")
plot(SMIsignal, color = red, linewidth = 3, title = "SMI Signal Line")
plot(limitsmi, color = black, title = "Over Bought")
plot(-1 * limitsmi, color = black, title = "Over Sold")
plot(0, color = blue, title = "Zero Line")

//Color-Filter
gb = close > open or usecol == false
rb = close < open or usecol == false

//Body Filter
nbody = abs(close - open)
abody = sma(nbody, 10)
body = nbody > abody / 3 or usebod == false

//Signals
up1 = SMI < -1 * limitsmi and rb and body and usesmi
dn1 = SMI > limitsmi and gb and body and usesmi
up2 = fastrsi < limitrsi and rb and body and usersi
dn2 = fastrsi > 100 - limitrsi and gb and body and usersi
exit = ((strategy.position_size > 0 and close > open) or (strategy.position_size < 0 and close < open)) and body

//Background
redb = (SMI > limitsmi and usesmi) or (fastrsi > 100 - limitrsi and usersi)
limeb = (SMI < -1 * limitsmi and usesmi) or (fastrsi < limitrsi and usersi)
col = showbg == false ? na : redb ? red : limeb ? lime : na
bgcolor(col, transp = 50)

//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]

signalup = ((up1 or up2) and double == false) or (up1 and up2 and double)
if signalup
    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)))

signaldn = ((dn1 or dn2) and double == false) or (dn1 and dn2 and double)
if signaldn
    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()

مزید