Type/to search
8
Follow
1369
Followers
मल्टी-रोबोट बाजार साझाकरण समाधान
Original
Created 2020-07-15 16:25:20  Updated 2024-12-10 10:11:04
 4
 2634

img

मल्टी-रोबोट बाजार साझाकरण समाधान

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

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

बाजार अग्रेषण रोबोट का उदाहरण

यह केवल डेटा प्राप्त करने और अन्य रोबोटों को उद्धरण जानकारी प्रदान करने के लिए एक्सचेंज कोटेशन इंटरफ़ेस तक पहुंचने के लिए जिम्मेदार है। उपयोगPythonइस उदाहरण में, हम केवल K-लाइन डेटा प्राप्त करते हैं और साझाकरण प्रदान करते हैं। हम इसे गहराई डेटा, समग्र बाजार डेटा आदि जोड़ने के लिए विस्तारित कर सकते हैं।

python
import _thread import threading import json import math from http.server import HTTPServer, BaseHTTPRequestHandler from urllib.parse import parse_qs, urlparse Records = None lock = threading.RLock() Counter = {} def url2Dict(url): query = urlparse(url).query params = parse_qs(query) result = {key: params[key][0] for key in params} return result class Provider(BaseHTTPRequestHandler): def do_GET(self): global Records, lock, Counter try: self.send_response(200) self.send_header("Content-type", "application/json") self.end_headers() dictParam = url2Dict(self.path) # Log("服务接收到请求,self.path:", self.path, "query 参数:", dictParam) lock.acquire() # 记录 if dictParam["robotId"] not in Counter: Counter[dictParam["robotId"]] = {"NumberOfRequests" : 0} Counter[dictParam["robotId"]]["NumberOfRequests"] += 1 lock.release() # 写入数据应答 self.wfile.write(json.dumps(Records).encode()) except BaseException as e: Log("Provider do_GET error, e:", e) def createServer(host): try: server = HTTPServer(host, Provider) Log("Starting server, listen at: %s:%s" % host) server.serve_forever() except BaseException as e: Log("createServer error, e:", e) raise Exception("stop") def main(): global Records, Counter LogReset(1) try: # _thread.start_new_thread(createServer, (("localhost", 9090), )) # 本机测试 _thread.start_new_thread(createServer, (("0.0.0.0", 9090), )) # VPS服务器上测试 Log("启动服务", "#FF0000") except BaseException as e: Log("启动服务失败!") Log("错误信息:", e) raise Exception("stop") while True: r = exchange.GetRecords() if not r : Log("K线行情获取失败", "#FF0000") continue else : Records = r # Counter tbl = { "type" : "table", "title" : "统计信息", "cols" : ["请求数据的机器人id", "请求次数"], "rows" : [], } for k in Counter: tbl["rows"].append([k, Counter[k]["NumberOfRequests"]]) LogStatus(_D(), "数据收集中!", "\n", "`" + json.dumps(tbl) + "`") Sleep(500)

डेटा रोबोट रणनीति कोड का अनुरोध करें

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

javascript
var FuncGetRecords = exchange.GetRecords exchange.GetRecords = function() { // 可以填写「行情转发机器人」所在设备的IP地址xxx.xxx.xxx.xxx var ret = HttpQuery("http://xxx.xxx.xxx.xxx:9090?robotId=" + _G()) var records = null try { records = JSON.parse(ret) } catch(e) { Log(e) records = null } return records } function main(){ LogReset(1) while(1) { var records = exchange.GetRecords() LogStatus(_D(), "机器人ID:", _G()) if (!records) { Log("获取数据失败!", "#FF0000") Sleep(1000) continue } Log(records) $.PlotRecords(records, "K") Sleep(1000) } }

वास्तविक संचालन

  • बाजार अग्रेषण रोबोट शुरू करें
    img

  • परीक्षण रोबोट प्रारंभ करें, ID: 206353
    img

  • परीक्षण रोबोट प्रारंभ करें, ID: 206359
    img

  • परीक्षण रोबोट प्रारंभ करें, ID: 206360
    img

इस तरह, तीन या यहां तक ​​कि N रोबोट एक निश्चित ट्रेडिंग जोड़ी के K-लाइन डेटा को साझा कर सकते हैं।
यह तो बस एक शुरुआत है, कृपया संदेश छोड़ें।

Related Recommendations
Comment
All comments (2)

    好东东啊

    5 years ago

    666

    6 years ago
  • 1
Forums
PINE Language
Get the app
iPhone Download
© 2015 - ∞ INVENTOR PTE LTD (SG)