
यह रणनीति एक उच्च दक्षता वाली क्वांटिटेबल ट्रेडिंग रणनीति है, जो एक क्वांटिटेबल मॉडल पर आधारित है। रणनीति मॉडेलियस वॉल्यूम मॉडल को एक आधार मॉडल के रूप में उपयोग करती है, और इसके आधार पर विस्तारित और अनुकूलित की जाती है। यह रणनीति बाजार में क्वांटिटेबल ट्रेडिंग अवसरों को पकड़ सकती है, जिससे स्थिर मुनाफा हो सकता है।
इस रणनीति के केंद्र में मॉडेलियस वॉल्यूम मॉडल है। यह मॉडल बाजार में परिमाण व्यापार के अवसरों की पहचान करने के लिए मूल्य और लेनदेन की मात्रा में परिवर्तन का उपयोग करता है। विशेष रूप से, रणनीति वर्तमान K लाइन की दिशा की गणना करने के लिए एक नियम के अनुसार क्लोज प्राइस, ओपन प्राइस, हाई प्राइस और लोअर प्राइस का उपयोग करती है। जब K लाइन की दिशा बदलती है, तो व्यापार की मात्रा के आकार के आधार पर व्यापार के अवसरों की गुणवत्ता को मापने के लिए। इसके अलावा, रणनीति एसएआर सूचकांक और समान लाइन सूचकांक को भी शामिल करती है।
मूल व्यापारिक तर्क यह है कि जब संकेतक नकारात्मक से सकारात्मक में टूट जाता है, तो अधिक करें; जब संकेतक सकारात्मक से नकारात्मक में टूट जाता है, तो शून्य करें। इसके अलावा, रणनीति जोखिम को नियंत्रित करने के लिए स्टॉप, स्टॉप और ट्रैक स्टॉप को भी सेट करती है।
इस रणनीति का सबसे बड़ा लाभ यह है कि यह मॉडेलियस वॉल्यूम मॉडल का उपयोग करके क्वांटिफाइंग ट्रेडिंग अवसरों की प्रभावी पहचान करने में सक्षम है। पारंपरिक तकनीकी संकेतकों की तुलना में, यह मॉडल ट्रेड वॉल्यूम में बदलाव पर अधिक ध्यान देता है, जो वर्तमान में उच्च आवृत्ति वाले क्वांटिफाइंग ट्रेडिंग में बहुत व्यावहारिक है। इसके अलावा, रणनीति के प्रवेश नियम अपेक्षाकृत सख्त हैं, जो क्वांटिफाइंग ट्रेडिंग अवसरों को खोने से प्रभावी रूप से बचा सकते हैं और साथ ही क्रमबद्धता की संभावना को कम कर सकते हैं।
इस रणनीति का मुख्य जोखिम यह है कि मॉडेलियस वॉल्यूम मॉडल खुद को पूरी तरह से शोर से बचाने में सक्षम नहीं है। जब बाजार में असामान्य उतार-चढ़ाव होता है, तो यह ट्रेडिंग सिग्नल में त्रुटि का कारण बनता है। इसके अलावा, रणनीति में पैरामीटर सेटिंग्स अंतिम परिणामों को प्रभावित करती हैं।
जोखिम को नियंत्रित करने के लिए, पैरामीटर को उचित रूप से समायोजित किया जा सकता है, और अन्य संकेतकों के साथ मिलकर सहायक निर्णय किया जा सकता है। इसके अलावा, उचित रूप से स्टॉप लॉस और स्टॉप पोजीशन की आवश्यकता होती है।
इस रणनीति में अनुकूलन के लिए कुछ जगह भी है। उदाहरण के लिए, यह विचार किया जा सकता है कि पैरामीटर सेटिंग्स को गतिशील रूप से अनुकूलित करने के लिए मशीन लर्निंग एल्गोरिदम के साथ संयोजन किया जाए। या निर्णय की सटीकता में सुधार के लिए भावनात्मक विश्लेषण जैसे संकेतकों के साथ संयोजन किया जाए। इसके अलावा, विभिन्न नस्लों के बीच संबंध का अध्ययन करना और बहु-नस्ल सट्टा मॉडल बनाना संभव है।
कुल मिलाकर, इस रणनीति ने मॉडेलियस वॉल्यूम क्वांटिटेटिव मॉडल के लाभों का उपयोग किया है और एक परिचालन योग्य क्वांटिटेटिव ट्रेडिंग रणनीति तैयार की है। इसे पैरामीटर समायोजन, मॉडल विस्तार और मशीन सीखने के माध्यम से अनुकूलित किया जा सकता है, जिससे वास्तविक लेनदेन में बेहतर स्थिरता प्राप्त होती है।
/*backtest
start: 2022-12-15 00:00:00
end: 2023-12-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy(title="strategy modelius volume model ", shorttitle="mvm",overlay=true, calc_on_order_fills=true, default_qty_type=strategy.percent_of_equity, default_qty_value=50, overlay=false)
method = input(defval="ATR", options=["ATR", "Traditional", "Part of Price"], title="Renko Assignment Method")
methodvalue = input(defval=14.0, type=float, minval=0, title="Value")
pricesource = input(defval="Close", options=["Close", "Open / Close", "High / Low"], title="Price Source")
useClose = pricesource == "Close"
useOpenClose = pricesource == "Open / Close" or useClose
useTrueRange = input(defval="Auto", options=["Always", "Auto", "Never"], title="Use True Range instead of Volume")
isOscillating=input(defval=true, type=bool, title="Oscillating")
normalize=input(defval=false, type=bool, title="Normalize")
vol = useTrueRange == "Always" or (useTrueRange == "Auto" and na(volume))? tr : volume
op = useClose ? close : open
hi = useOpenClose ? close >= op ? close : op : high
lo = useOpenClose ? close <= op ? close : op : low
if method == "ATR"
methodvalue := atr(round(methodvalue))
if method == "Part of Price"
methodvalue := close/methodvalue
currclose = na
prevclose = nz(currclose[1])
prevhigh = prevclose + methodvalue
prevlow = prevclose - methodvalue
currclose := hi > prevhigh ? hi : lo < prevlow ? lo : prevclose
direction = na
direction := currclose > prevclose ? 1 : currclose < prevclose ? -1 : nz(direction[1])
directionHasChanged = change(direction) != 0
directionIsUp = direction > 0
directionIsDown = direction < 0
barcount = 1
barcount := not directionHasChanged and normalize ? barcount[1] + barcount : barcount
vol := not directionHasChanged ? vol[1] + vol : vol
res = barcount > 1 ? vol/barcount : vol
x=isOscillating and directionIsDown ? -res : res
TP = input(0) * 10
SL = input(0) * 10
TS = input(1) * 10
TO = input(3) * 10
CQ = 100
TPP = (TP > 0) ? TP : na
SLP = (SL > 0) ? SL : na
TSP = (TS > 0) ? TS : na
TOP = (TO > 0) ? TO : na
longCondition = crossover(x,0)
if (longCondition)
strategy.entry("Long", strategy.long)
shortCondition = crossunder(x,0)
if (shortCondition)
strategy.entry("Short", strategy.short)
strategy.exit("Close Short", "Short", qty_percent=CQ, profit=TPP, loss=SLP, trail_points=TSP, trail_offset=TOP)
strategy.exit("Close Long", "Long", qty_percent=CQ, profit=TPP, loss=SLP, trail_points=TSP, trail_offset=TOP)