Type/to search
8
Follow
1363
Followers
आपको बाजार कलेक्टर को लागू करने के लिए कदम से कदम सिखाएं
Discussions
Created 2020-04-16 12:44:03  Updated 2024-12-12 20:55:38
 7
 4144

img

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

इससे कई आवश्यकताएं हल हो जाती हैं, जैसे:

  • डेटा स्रोत कई रोबोटों को प्रदान किए जा सकते हैं, जिससे प्रत्येक रोबोट द्वारा एक्सचेंज इंटरफ़ेस तक पहुंचने की आवृत्ति कम हो सकती है।
  • जब रोबोट शुरू होता है, तो यह पर्याप्त संख्या में K-लाइन BARs के साथ K-लाइन डेटा प्राप्त कर सकता है, इसलिए आपको रोबोट शुरू होने पर K-लाइन BARs की अपर्याप्त संख्या के बारे में चिंता करने की आवश्यकता नहीं है।
  • यह इन्वेंटर क्वांटिटेटिव ट्रेडिंग प्लेटफॉर्म की बैकटेस्टिंग प्रणाली के लिए एक कस्टम डेटा स्रोत प्रदान करने के लिए छोटी मुद्राओं का बाजार डेटा एकत्र कर सकता है, ताकि रणनीतियों का बैकटेस्ट करने के लिए बैकटेस्टिंग सिस्टम का उपयोग किया जा सके।
  • वगैरह..

इसे क्रियान्वित करने के लिए पायथन का उपयोग करने की योजना है, क्यों? क्योंकि यह सुविधाजनक है :)
यदि आपकी कोई आवश्यकता है, तो कार्रवाई करें!

तैयार करना

  • पायथन की पाइमोंगो लाइब्रेरी

    क्योंकि स्थायी भंडारण के लिए डेटाबेस की आवश्यकता होती है। डेटा चयन उपयोगMongoDBसंग्रह कार्यक्रम लिखने के लिए पायथन भाषा का उपयोग करें, इसलिए इस डेटाबेस की ड्राइवर लाइब्रेरी की आवश्यकता है।
    पायथन पर स्थापनाpymongoइतना ही।

  • होस्ट मशीन पर MongoDB स्थापित करें

    उदाहरण के लिए: MAC पर MongoDB इंस्टॉल करें। बेशक, WIN पर MongoDB इंस्टॉल करना भी ऐसा ही है। ऑनलाइन कई ट्यूटोरियल हैं। Apple MAC पर इंस्टॉलेशन को उदाहरण के तौर पर लें:

  • डाउनलोड करना
    डाउनलोड लिंक: https://www.mongodb.com/download-center?jmp=nav#community

  • खोलना
    डाउनलोड करने के बाद, इसे इस निर्देशिका में अनज़िप करें:/usr/local

  • पर्यावरण चर कॉन्फ़िगर करना
    टर्मिनल इनपुट:open -e .bash_profileफ़ाइल खोलने के बाद लिखें:export PATH=${PATH}:/usr/local/MongoDB/bin
    सेव करने के बाद, टर्मिनल का उपयोग करेंsource .bash_profileपरिवर्तनों को प्रभावी बनाएं।

  • डेटाबेस फ़ाइल निर्देशिका और लॉग निर्देशिका को मैन्युअल रूप से कॉन्फ़िगर करें
    एक निर्देशिका बनाएँ/usr/local/data/db. में संबंधित फ़ोल्डर.
    एक निर्देशिका बनाएँ/usr/local/data/logs. में संबंधित फ़ोल्डर.

  • कॉन्फ़िगरेशन फ़ाइल का संपादनmongo.conf

    #bind_ip_all = true # 任何机器可以连接 bind_ip = 127.0.0.1 # 本机可以访问 port = 27017 # 实例运行在27017端口(默认) dbpath = /usr/local/data/db # 数据文件夹存放地址(db要预先创建) logpath = /usr/local/data/logs/mongodb.log # 日志文件地址 logappend = false # 启动时 添加还是重写日志文件 fork = false # 是否后台运行 auth = false # 开启校验用户
  • MongoDB सेवा चलाएँ

    आदेश देना:

    ./mongod -f mongo.conf
  • सेवा रोकें

    use admin; db.shutdownServer();

कलेक्टर कार्यक्रम का क्रियान्वयन

कलेक्टर इन्वेंटर क्वांटिटेटिव ट्रेडिंग प्लेटफॉर्म पर पायथन रोबोट रणनीति के रूप में चलता है। पायथन में मेरी सीमित दक्षता के कारण, मैंने इस लेख के विचारों को प्रदर्शित करने के लिए केवल एक सरल उदाहरण लागू किया है।

कलेक्टर रणनीति कोड:

python
import pymongo import json def main(): Log("测试数据收集") # 连接数据库服务 myDBClient = pymongo.MongoClient("mongodb://localhost:27017") # mongodb://127.0.0.1:27017 # 创建数据库 huobi_DB = myDBClient["huobi"] # 打印目前数据库表 collist = huobi_DB.list_collection_names() Log("collist:", collist) # 检测是否删除表 arrDropNames = json.loads(dropNames) if isinstance(arrDropNames, list): for i in range(len(arrDropNames)): dropName = arrDropNames[i] if isinstance(dropName, str): if not dropName in collist: continue tab = huobi_DB[dropName] Log("dropName:", dropName, "删除:", dropName) ret = tab.drop() collist = huobi_DB.list_collection_names() if dropName in collist: Log(dropName, "删除失败") else : Log(dropName, "删除成功") # 创建records表 huobi_DB_Records = huobi_DB["records"] # 请求数据 preBarTime = 0 index = 1 while True: r = _C(exchange.GetRecords) if len(r) < 2: Sleep(1000) continue if preBarTime == 0: # 首次写入所有BAR数据 for i in range(len(r) - 1): # 逐根写入 bar = r[i] huobi_DB_Records.insert_one({"index": index, "High": bar["High"], "Low": bar["Low"], "Open": bar["Open"], "Close": bar["Close"], "Time": bar["Time"], "Volume": bar["Volume"]}) index += 1 preBarTime = r[-1]["Time"] elif preBarTime != r[-1]["Time"]: bar = r[-2] huobi_DB_Records.insert_one({"index": index, "High": bar["High"], "Low": bar["Low"], "Open": bar["Open"], "Close": bar["Close"], "Time": bar["Time"], "Volume": bar["Volume"]}) index += 1 preBarTime = r[-1]["Time"] LogStatus(_D(), "preBarTime:", preBarTime, "_D(preBarTime):", _D(preBarTime/1000), "index:", index) Sleep(10000)

पूर्ण पॉलिसी पता:जोड़ना

डेटा का उपयोग

डेटा का उपयोग करने वाले रणनीतिक बॉट बनाएं।
नोट: आपको जांचना होगारेखाचित्र लाइब्रेरीयदि आपके पास यह नहीं है, तो आप इसे अपनी रणनीति लाइब्रेरी में कॉपी कर सकते हैं।
img

python
import pymongo import json def main(): Log("测试使用数据库数据") # 连接数据库服务 myDBClient = pymongo.MongoClient("mongodb://localhost:27017") # mongodb://127.0.0.1:27017 # 创建数据库 huobi_DB = myDBClient["huobi"] # 打印目前数据库表 collist = huobi_DB.list_collection_names() Log("collist:", collist) # 查询数据打印 huobi_DB_Records = huobi_DB["records"] while True: arrRecords = [] for x in huobi_DB_Records.find(): bar = { "High": x["High"], "Low": x["Low"], "Close": x["Close"], "Open": x["Open"], "Time": x["Time"], "Volume": x["Volume"] } arrRecords.append(bar) # 使用画线类库,把取到的K线数据画出来 ext.PlotRecords(arrRecords, "K") LogStatus(_D(), "records length:", len(arrRecords)) Sleep(10000)

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

दौड़ना

होस्ट प्रोग्राम चलाएँ
img

होस्ट के डिवाइस पर, चलाएँMongoDBडेटाबेस सेवाएँ
./mongod -f mongo.conf
img

कलेक्टर आविष्कारक के मात्रात्मक व्यापार मंच की नकली डिस्क इकट्ठा करने के लिए दौड़ता हैwexAppकाBTC_USDTट्रेडिंग जोड़े:
पता:wexApp
img

रोबोट A डेटाबेस डेटा का उपयोग कर रहा है:
img

रोबोट बी डेटाबेस डेटा का उपयोग कर रहा है:
img

wexAppपेज:
img

जैसा कि चित्र में देखा जा सकता है, अलग-अलग आईडी वाले रोबोट एक ही डेटा स्रोत से के-लाइन डेटा साझा करते हैं।

किसी भी अवधि का K-लाइन डेटा एकत्रित करें

इन्वेंटर के क्वांटिटेटिव ट्रेडिंग प्लेटफॉर्म के शक्तिशाली कार्यों पर भरोसा करते हुए, हम आसानी से किसी भी अवधि का के-लाइन डेटा एकत्र कर सकते हैं।
उदाहरण के लिए, मैं 3 मिनट की के-लाइन लेना चाहता हूं, यदि एक्सचेंज के पास 3 मिनट की के-लाइन नहीं है तो मुझे क्या करना चाहिए? यह ठीक है, इसे आसानी से प्राप्त किया जा सकता है।

हम कलेक्टर रोबोट के विन्यास को संशोधित करते हैं और K-लाइन अवधि को 3 मिनट पर सेट करते हैं। इन्वेंटर क्वांटिटेटिव ट्रेडिंग प्लेटफ़ॉर्म स्वचालित रूप से कलेक्टर प्रोग्राम के लिए 3 मिनट की K-लाइन को संश्लेषित करेगा।
img

हम पैरामीटर का उपयोग करते हैं删除表的名称,स्थापित करना:["records"]पहले से एकत्रित 1-मिनट K-लाइन डेटा तालिका को हटाएँ। 3 मिनट का K-लाइन डेटा एकत्र करने के लिए तैयार रहें।

चालू होना收集器程序, पुनः आरंभ करें使用数据的策略机器人

img

img

खींचे गए K-लाइन चार्ट से आप देख सकते हैं कि BAR के बीच का अंतराल 3 मिनट है, और प्रत्येक BAR 3 मिनट की अवधि वाला एक K-लाइन स्तंभ है।

अगले अंक में, हम कस्टम डेटा स्रोतों की आवश्यकताओं को क्रियान्वित करने का प्रयास करेंगे।
पढ़ने के लिए धन्यवाद

Related Recommendations
Comment
All comments (6)

    Wonderful

    6 years ago

    6 years ago

    6 years ago

    6 years ago

    感谢支持,我是python小白,抛砖引玉,有更好的实现或者建议的话,期待完善。

    6 years ago

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