मात्रात्मक मॉडलों पर आधारित उच्च प्रदर्शन एल्गोरिथम ट्रेडिंग रणनीति

लेखक:चाओझांग, दिनांक: 2023-12-22 13:14:33
टैगः

img

अवलोकन

यह रणनीति मात्रात्मक मॉडल पर आधारित एक उच्च प्रदर्शन एल्गोरिथम ट्रेडिंग रणनीति है। यह मूल मॉडल के रूप में मोडेलियस वॉल्यूम मॉडल का उपयोग करती है और इसे और विस्तारित और अनुकूलित करती है। यह रणनीति बाजार में मात्रात्मक ट्रेडिंग अवसरों को पकड़ सकती है और स्थिर लाभ प्राप्त कर सकती है।

रणनीतिक सिद्धांत

इस रणनीति का मूल मॉडल मोडेलियस वॉल्यूम मॉडल है। यह मॉडल मूल्य और वॉल्यूम परिवर्तनों का पता लगाकर बाजार में मात्रात्मक व्यापारिक अवसरों की पहचान करता है। विशेष रूप से, रणनीति कुछ नियमों के आधार पर वर्तमान के-लाइन की दिशा की गणना करने के लिए बंद मूल्य, खुली कीमत, उच्चतम मूल्य, सबसे कम मूल्य को जोड़ती है। जब के-लाइन दिशा बदलती है, तो व्यापारिक मात्रा के आधार पर मात्रात्मक व्यापारिक अवसर की गुणवत्ता का न्याय किया जाता है। इसके अलावा, रणनीति में प्रवेश और निकास समय निर्धारित करने में सहायता के लिए एसएआर संकेतक और चलती औसत संकेतक का भी संयोजन होता है।

मूल व्यापारिक तर्क यह है कि जब सूचक नकारात्मक से सकारात्मक में टूट जाता है तो लंबा हो जाता है और जब सूचक सकारात्मक से नकारात्मक में टूट जाता है तो छोटा हो जाता है। इसके अलावा, जोखिमों को नियंत्रित करने के लिए स्टॉप लॉस, ले लाभ, ट्रेलिंग स्टॉप लॉस स्थापित किए जाते हैं।

लाभ विश्लेषण

इस रणनीति का सबसे बड़ा लाभ यह है कि मॉडेलियस वॉल्यूम मॉडल प्रभावी रूप से मात्रात्मक ट्रेडिंग अवसरों की पहचान कर सकता है। पारंपरिक तकनीकी संकेतकों की तुलना में, यह मॉडल वॉल्यूम परिवर्तनों पर अधिक ध्यान देता है, जो आज के उच्च आवृत्ति वाले मात्रात्मक ट्रेडिंग में बहुत व्यावहारिक है। इसके अलावा, रणनीति के प्रवेश नियम अपेक्षाकृत सख्त हैं, जो यथासंभव अव्यवस्था की संभावना को कम करते हुए मात्रात्मक ट्रेडिंग अवसरों को खोने से प्रभावी ढंग से बच सकते हैं।

जोखिम विश्लेषण

इस रणनीति का मुख्य जोखिम यह है कि मोडेलियस वॉल्यूम मॉडल स्वयं शोर से पूरी तरह से बच नहीं सकता है। जब असामान्य बाजार उतार-चढ़ाव होता है, तो इससे गलत ट्रेडिंग सिग्नल होंगे। इसके अलावा, रणनीति में पैरामीटर सेटिंग्स भी अंतिम परिणामों को प्रभावित करेंगी।

जोखिमों को नियंत्रित करने के लिए, मापदंडों को तदनुसार समायोजित किया जा सकता है और सहायक निर्णय के लिए अन्य संकेतकों के साथ जोड़ा जा सकता है। इसके अलावा, स्टॉप लॉस और ले लाभ को उचित रूप से निर्धारित किया जाना चाहिए।

अनुकूलन दिशाएँ

इस रणनीति को अनुकूलित करने के लिए अभी भी जगह है। उदाहरण के लिए, मशीन लर्निंग एल्गोरिदम को पैरामीटर सेटिंग्स को गतिशील रूप से अनुकूलित करने के लिए माना जा सकता है। या निर्णय सटीकता में सुधार के लिए भावना विश्लेषण और अन्य संकेतकों को जोड़ना। इसके अलावा, एक बहु-विविधता मध्यस्थता मॉडल स्थापित करने के लिए विभिन्न किस्मों के बीच सहसंबंध का अध्ययन किया जा सकता है।

सारांश

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


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

अधिक