اسٹوکاسٹک مومنٹم ڈبل اشارے کی حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2023-10-07 16:45:25
ٹیگز:

جائزہ

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

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

حکمت عملی دو اسٹوکاسٹک اشارے ایس ایم آئی اور آر ایس آئی کا استعمال کرتے ہوئے طویل اور مختصر کا فیصلہ کرتی ہے۔ ایس ایم آئی کا حساب بار رینج اور قریبی قیمت کی حرکت پذیر اوسط کی بنیاد پر کیا جاتا ہے ، جو الٹ پوائنٹس کی نشاندہی کرنے میں اچھا ہے۔ آر ایس آئی زیادہ خریدنے اور زیادہ فروخت کی حیثیت کا تعین کرنے کے لئے بیل اور ریچھ کی طاقت کا موازنہ کرتا ہے۔ جب ایس ایم آئی -50 سے نیچے اور آر ایس آئی 20 سے نیچے ہوتا ہے تو حکمت عملی طویل ہوجاتی ہے۔ جب ایس ایم آئی 50 سے اوپر اور آر ایس آئی 80 سے اوپر ہوتا ہے تو مختصر ہوجاتا ہے۔

غلط بریک آؤٹس کو فلٹر کرنے کے لئے ، حکمت عملی 10 پیریڈ باڈی ایس ایم اے کا 1/3 بھی بطور بریک آؤٹ فلٹر کی حالت استعمال کرتی ہے۔ جب باڈی ایس ایم اے کے 1/3 سے گزرتی ہے تو ، بریک آؤٹ درست سمجھا جاتا ہے۔

اس کے علاوہ، یہ حکمت عملی اختیاری مارٹنگل کو اپناتی ہے، جو کھوئے ہوئے تجارت پر بہت زیادہ پیمانے پر ہے، پچھلے نقصانات کو بحال کرنے کی کوشش کرتے ہیں.

بیک ٹیسٹ کی فعالیت تاریخ کی حد میں داخل کرکے حکمت عملی کی بیک ٹیسٹ کرتی ہے۔

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

حکمت عملی دوہری اسٹوکاسٹک اشارے اور فلٹرز کو یکجا کرتی ہے، جو مؤثر طریقے سے الٹ پوائنٹس کی نشاندہی کرنے، درمیانی مدت کے رجحانات کو پکڑنے اور قیمتوں میں اتار چڑھاؤ کو ٹریک کرنے کے قابل ہے.

  • ایس ایم آئی کے پاس ریورس پوائنٹ کی شناخت کی مضبوط صلاحیت ہے اور وہ زیادہ خریدنے اور زیادہ فروخت کرنے کی صورتحال کو مؤثر طریقے سے طے کرسکتا ہے۔
  • آر ایس آئی کو شامل کرنے سے لاپتہ تجارت سے بچتا ہے.
  • جسم فلٹر جھوٹے breakouts کو ہٹاتا ہے اور سگنل کی درستگی کو بہتر بناتا ہے.
  • اختیاری مارٹنگیل حکمت عملی نقصانات کا ایک حصہ کی وصولی کی اجازت دیتا ہے.

خطرے کا تجزیہ

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

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

اصلاح کی ہدایات

  • بہترین فیصلے کی تاثیر کے لئے ایس ایم آئی اور آر ایس آئی پیرامیٹرز کو بہتر بنائیں۔
  • درست سگنل فلٹر کرنے کے امکان کو کم کرنے کے لئے فلٹر پیرامیٹرز کو ایڈجسٹ کریں.
  • Martingale پیمانے اپ اوقات اور تناسب کو بہتر بنائیں.
  • رجحان کے خلاف تجارت سے بچنے کے لئے رجحان کے اشارے شامل کریں.
  • ایک ہی تجارت پر نقصانات کو محدود کرنے کے لئے سٹاپ نقصان شامل کریں.

خلاصہ

اس حکمت عملی میں واپسی کے مقامات کو حاصل کرنے کے لئے دوہری اسٹوکاسٹک اشارے ، فلٹرز اور مارٹنگیل کے ساتھ تجارتی سگنل کے انتخاب اور پیچھا کرنے کے لئے مل کر کام کیا جاتا ہے۔ یہ درمیانی مدتی رجحانات کی مؤثر طریقے سے نشاندہی کرسکتا ہے اور قیمت میں اتار چڑھاؤ کو ٹریک کرسکتا ہے ، جو اعلی جیت کی شرح کے حصول کے خواہاں سرمایہ کاروں کے لئے موزوں ہے۔ اشارے میں تاخیر اور مارکیٹ کے خطرات پر توجہ دیں ، پیرامیٹر کی اصلاح اور اسٹاپ نقصان کے ذریعہ خطرات کا انتظام کریں۔


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

//@version=2
// strategy(title = "CS Basic Scripts - Stochastic Special (Strategy)", shorttitle = "Stochastic Special", 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")
usebod = input(true, defval = true, title = "Use Body-Filter")
a = input(5, "SMI Percent K Length")
b = input(3, "SMI Percent D Length")
limit = input(50, defval = 50, minval = 1, maxval = 100, title = "SMI Limit")

//Backtesting Input Range
fromyear = input(2017, defval = 2017, 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), 7)
fastdown = rma(-min(change(close), 0), 7)
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)
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(limit, color = black, title = "Over Bought")
plot(-1 * limit, color = black, title = "Over Sold")
plot(0, color = blue, title = "Zero Line")

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

//Signals
up1 = SMI < -1 * limit and close < open and body and usesmi
dn1 = SMI > limit and close > open and body and usesmi
up2 = fastrsi < 20 and close < open and body and usersi
dn2 = fastrsi > 80 and close > open and body and usersi
exit = ((strategy.position_size > 0 and close > open) or (strategy.position_size < 0 and close < open)) and body

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

مزید