यह रणनीति मात्रात्मक मॉडल पर आधारित एक उच्च प्रदर्शन एल्गोरिथम ट्रेडिंग रणनीति है। यह मूल मॉडल के रूप में मोडेलियस वॉल्यूम मॉडल का उपयोग करती है और इसे और विस्तारित और अनुकूलित करती है। यह रणनीति बाजार में मात्रात्मक ट्रेडिंग अवसरों को पकड़ सकती है और स्थिर लाभ प्राप्त कर सकती है।
इस रणनीति का मूल मॉडल मोडेलियस वॉल्यूम मॉडल है। यह मॉडल मूल्य और वॉल्यूम परिवर्तनों का पता लगाकर बाजार में मात्रात्मक व्यापारिक अवसरों की पहचान करता है। विशेष रूप से, रणनीति कुछ नियमों के आधार पर वर्तमान के-लाइन की दिशा की गणना करने के लिए बंद मूल्य, खुली कीमत, उच्चतम मूल्य, सबसे कम मूल्य को जोड़ती है। जब के-लाइन दिशा बदलती है, तो व्यापारिक मात्रा के आधार पर मात्रात्मक व्यापारिक अवसर की गुणवत्ता का न्याय किया जाता है। इसके अलावा, रणनीति में प्रवेश और निकास समय निर्धारित करने में सहायता के लिए एसएआर संकेतक और चलती औसत संकेतक का भी संयोजन होता है।
मूल व्यापारिक तर्क यह है कि जब सूचक नकारात्मक से सकारात्मक में टूट जाता है तो लंबा हो जाता है और जब सूचक सकारात्मक से नकारात्मक में टूट जाता है तो छोटा हो जाता है। इसके अलावा, जोखिमों को नियंत्रित करने के लिए स्टॉप लॉस, ले लाभ, ट्रेलिंग स्टॉप लॉस स्थापित किए जाते हैं।
इस रणनीति का सबसे बड़ा लाभ यह है कि मॉडेलियस वॉल्यूम मॉडल प्रभावी रूप से मात्रात्मक ट्रेडिंग अवसरों की पहचान कर सकता है। पारंपरिक तकनीकी संकेतकों की तुलना में, यह मॉडल वॉल्यूम परिवर्तनों पर अधिक ध्यान देता है, जो आज के उच्च आवृत्ति वाले मात्रात्मक ट्रेडिंग में बहुत व्यावहारिक है। इसके अलावा, रणनीति के प्रवेश नियम अपेक्षाकृत सख्त हैं, जो यथासंभव अव्यवस्था की संभावना को कम करते हुए मात्रात्मक ट्रेडिंग अवसरों को खोने से प्रभावी ढंग से बच सकते हैं।
इस रणनीति का मुख्य जोखिम यह है कि मोडेलियस वॉल्यूम मॉडल स्वयं शोर से पूरी तरह से बच नहीं सकता है। जब असामान्य बाजार उतार-चढ़ाव होता है, तो इससे गलत ट्रेडिंग सिग्नल होंगे। इसके अलावा, रणनीति में पैरामीटर सेटिंग्स भी अंतिम परिणामों को प्रभावित करेंगी।
जोखिमों को नियंत्रित करने के लिए, मापदंडों को तदनुसार समायोजित किया जा सकता है और सहायक निर्णय के लिए अन्य संकेतकों के साथ जोड़ा जा सकता है। इसके अलावा, स्टॉप लॉस और ले लाभ को उचित रूप से निर्धारित किया जाना चाहिए।
इस रणनीति को अनुकूलित करने के लिए अभी भी जगह है। उदाहरण के लिए, मशीन लर्निंग एल्गोरिदम को पैरामीटर सेटिंग्स को गतिशील रूप से अनुकूलित करने के लिए माना जा सकता है। या निर्णय सटीकता में सुधार के लिए भावना विश्लेषण और अन्य संकेतकों को जोड़ना। इसके अलावा, एक बहु-विविधता मध्यस्थता मॉडल स्थापित करने के लिए विभिन्न किस्मों के बीच सहसंबंध का अध्ययन किया जा सकता है।
संक्षेप में, यह रणनीति मोडेलियस वॉल्यूम मात्रात्मक मॉडल के लाभों का उपयोग करती है और उच्च ऑपरेबिलिटी के साथ एल्गोरिदमिक ट्रेडिंग रणनीतियों का एक सेट डिजाइन करती है। इसे वास्तविक ट्रेडिंग में अपेक्षाकृत अच्छा और स्थिर रिटर्न प्राप्त करने के लिए पैरामीटर ट्यूनिंग, मॉडल विस्तार, मशीन लर्निंग आदि के माध्यम से और अनुकूलित और बढ़ाया जा सकता है।
/*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)