
गतिज आघात रणनीति एक मात्रात्मक व्यापार रणनीति है जिसमें यादृच्छिक गतिज संकेतकों और अपेक्षाकृत मजबूत संकेतकों का संयोजन किया जाता है। यह रणनीति बाजार में ओवरबॉट और ओवरसोल्ड क्षेत्रों का आकलन करने के लिए यादृच्छिक गतिज संकेतकों का उपयोग करती है, जो तेजी से आरएसआई संकेतकों के फ़िल्टर सिग्नल के साथ काम करती है, और फिर वास्तविक फ़िल्टर के माध्यम से अधिक विश्वसनीय ट्रेडिंग सिग्नल का चयन करती है।
यादृच्छिक गतिशीलता सूचकांक (एसएमआई) एक तकनीकी सूचक है जिसका उपयोग अक्सर मात्रात्मक लेनदेन के लिए किया जाता है। यह गतिशीलता सूचकांक और कंपन सूचकांक के फायदे को जोड़ता है।
विशेष रूप से, एसएमआई की गणना के लिए सूत्र हैः
SMI = (Close - (HH + LL)/2)/(0.5*(HH - LL)) * 100
इनमें, एचएच पिछले एन दिनों की उच्चतम कीमत है और एलएल पिछले एन दिनों की निम्नतम कीमत है।
इस प्रकार, एसएमआई गतिशीलता के रुझान निर्णय और आघात के उलट निर्णय को जोड़ता है। जब एसएमआई 80 से ऊपर होता है तो यह ओवरबॉट होता है और 20 से नीचे ओवरबॉट होता है। रणनीति ओवरबॉट ओवरबॉट क्षेत्र में एक व्यापार संकेत देती है।
एक अपेक्षाकृत मजबूत सूचकांक (RSI) एक सामान्य रूप से उपयोग किया जाने वाला ओवरबोर्ड ओवरसोल्ड संकेतक है। इस रणनीति में 7 चक्रों के साथ तेजी से आरएसआई का उपयोग किया जाता है, ताकि अल्पावधि में ओवरबोर्ड ओवरसोल्ड स्थिति का आकलन किया जा सके।
जब आरएसआई 20 से नीचे होता है तो यह ओवरसोल होता है और 80 से ऊपर होता है तो यह ओवरबॉट होता है। रणनीति ओवरबॉट ओवरसोल क्षेत्र में ट्रेडिंग सिग्नल देती है।
इस रणनीति में एंटिटी फिल्टर भी शामिल है, जो K-लाइन एंटिटी के आकार की गणना करके आंशिक संकेतों को फ़िल्टर करता है। केवल K-लाइन एंटिटी एक निश्चित थ्रेशोल्ड से अधिक होने पर ही एक ट्रेडिंग सिग्नल जारी करेगा।
यह कुछ झूठे सिग्नल को फ़िल्टर कर सकता है और सिग्नल की विश्वसनीयता को बढ़ा सकता है।
इस रणनीति में रैंडम गतिशीलता सूचक, तेजी से आरएसआई सूचक और वास्तविकता फ़िल्टर के तीन भागों को शामिल किया गया है। कई संकेतकों के संयोजन से संकेत की सटीकता में सुधार हो सकता है और रणनीति की स्थिरता को बढ़ाया जा सकता है।
यादृच्छिक गतिशीलता सूचक और तेजी से आरएसआई सूचक बाजार के ओवरबॉट और ओवरबॉट स्थिति का सटीक आकलन करते हैं। रणनीति ओवरबॉट और ओवरबॉट क्षेत्र में स्थिति खोलने के लिए है, जो कम खरीद और उच्च बेचने के व्यापार सिद्धांत का पालन करती है।
रणनीतियाँ बहु-हेड और शून्य-हेड द्वि-दिशात्मक ट्रेडों को लागू करती हैं, जिससे बाजार में ट्रेडिंग के अवसरों को अधिकतम किया जा सकता है।
एक भौतिक फ़िल्टर जोड़े जाने से अधिकांश शोर को फ़िल्टर किया जा सकता है, जिससे कंपन के दौरान शोर को रोका जा सके।
द्वि-दिशात्मक ट्रेडिंग की रणनीति के लिए, मल्टी हेड और बार-बार स्विचिंग एक संभावित जोखिम बिंदु है। उचित रूप से अनुकूलित पोजीशन लॉजिक इस जोखिम को कम कर सकता है।
जब सूचक संकेत देता है, तो बहुत कम समय में बड़ी संख्या में अनुवर्ती व्यापारी एकत्र हो सकते हैं, जिससे बाजार में उलटफेर का जोखिम होता है। सूचक पैरामीटर को अनुकूलित करके इस जोखिम को कम किया जा सकता है।
चरम स्थितियों में, सभी मॉडल विफल हो सकते हैं। इस तरह के जोखिमों को उचित स्टॉपलॉस सेटिंग्स के माध्यम से नियंत्रित करने की आवश्यकता है।
एसएमआई चक्र, आरएसआई चक्र, भौतिक फ़िल्टर थ्रेशोल्ड आदि जैसे विभिन्न मानकों के संयोजनों का परीक्षण करके रणनीति रिटर्न को बढ़ाने के लिए सर्वोत्तम मानकों की खोज की जा सकती है।
एटीआर या अस्थिरता के आधार पर गतिशील स्टॉप लॉस तंत्र के निर्माण से व्यक्तिगत और समग्र जोखिम पर बेहतर नियंत्रण किया जा सकता है।
मशीन लर्निंग एल्गोरिदम को मॉडल के माध्यम से भविष्य के संकेतक मूल्य के भविष्य के रुझान की भविष्यवाणी करने के लिए पेश किया गया। यह संकेतक के मोड़ को पहले से निर्धारित कर सकता है और रणनीति की आगे की क्षमता को बढ़ा सकता है।
कुल मिलाकर, इस रणनीति में रैंडम गतिशीलता सूचक, तेजी से आरएसआई सूचक और वास्तविक फ़िल्टर शामिल हैं, जो एक पूर्ण ओवरबॉट और ओवरबॉट निर्णय प्रणाली प्रदान करता है। बहु-सूचक संयोजन ने संकेत की सटीकता में सुधार किया है, और द्वि-दिशात्मक व्यापार और जोखिम नियंत्रण तंत्र रणनीति को अधिक संतुलित बनाता है। इस रणनीति को लगातार पैरामीटर और मॉडल के अनुकूलन के माध्यम से बेहतर रिटर्न प्राप्त करने की उम्मीद है।
/*backtest
start: 2023-12-22 00:00:00
end: 2024-01-21 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//Noro
//2018
//@version=2
strategy(title = "Noro's Stochastic Strategy v1.1", shorttitle = "Stochastic str 1.1", 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")
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 = SMIsignal < -1 * limit and close < open and body and usesmi
dn1 = SMIsignal > 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()