प्रोग्रामेटिक ट्रेडिंग, क्वांटिफाइड ट्रेडिंग में अनुसंधान रणनीतियों, डिजाइन रणनीतियों और रीसेट विश्लेषण में बाजार डेटा का समर्थन अनिवार्य है। बाजार पर सभी डेटा एकत्रित नहीं किए जाते हैं और वास्तविक नहीं हैं, क्योंकि डेटा की मात्रा बहुत अधिक है। डिजिटल मुद्रा बाजार के लिए, आविष्कारक क्वांटिफाइड ट्रेडिंग प्लेटफॉर्म पर सीमित एक्सचेंजों, ट्रेडिंग जोड़े के लिए रीसेट डेटा का समर्थन करते हैं। यदि आप कुछ अस्थायी रूप से डेटा का समर्थन नहीं करने वाले एक्सचेंजों, ट्रेडों को रीसेट करना चाहते हैं, तो आप कस्टम डेटा स्रोतों का उपयोग करके रीसेट कर सकते हैं, लेकिन यह इस शर्त पर है कि आपके पास डेटा है। इसलिए एक बाजार संग्रहण कार्यक्रम की तत्काल आवश्यकता है, और इसे स्थायी रूप से संग्रहीत किया जा सकता है, अधिमानतः वास्तविक समय में भी उपलब्ध है।
यह कई जरूरतों को पूरा करता है, जैसेः
मैं Python का उपयोग करने की योजना बना रहा हूं, क्यों? क्योंकि यह बहुत सुविधाजनक है:) अगर जरूरत है, तो शुरू करो!
पायथन का पायमोंगो संग्रह
डेटाबेस का उपयोग करने के लिए, स्थायी रूप से सहेजें।MongoDB
, जो कि पायथन भाषा में लिखे गए संग्रहण प्रोग्राम हैं, इसलिए इस डेटाबेस के लिए ड्राइवर की आवश्यकता है।
पायथन पर स्थापित करेंpymongo
यह ठीक है।
MongoDB को होस्टिंग डिवाइस पर स्थापित करें
उदाहरण के लिएः मैक पर मोंगोडीबी स्थापित करें, और निश्चित रूप से Win सिस्टम पर मोंगोडीबी स्थापित करें, बहुत सारे ऑनलाइन ट्यूटोरियल हैं, उदाहरण के लिए Apple के मैक सिस्टम पर स्थापित करने के लिएः
डाउनलोड करें डाउनलोड लिंकः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();
कलेक्टर एक आविष्कारक द्वारा क्वांटिफाइड ट्रेडिंग प्लेटफॉर्म पर पाइथन रोबोट की रणनीति के रूप में काम करता है. अपने स्वयं के सीमित पायथन स्तर के कारण, यह केवल एक सरल उदाहरण को लागू करता है, जो इस लेख के विचारों को प्रदर्शित करता है.
कलेक्टर्स की नीति कोडः
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)
पूरी रणनीति का पताःलिंक
एक रणनीतिक रोबोट जो डेटा का उपयोग करता है। ध्यान देंः चयन करना आवश्यक है"ड्राइंग लाइन क्लासरूम"यदि आप अपने जीवनसाथी के बारे में नहीं जानते हैं, तो आप एक को अपनी नीति संग्रह में कॉपी कर सकते हैं।
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)
यह देखा जा सकता है कि डेटा का उपयोग करने वाली रणनीति रोबोट कोड में किसी भी एक्सचेंज इंटरफ़ेस तक नहीं पहुंचती है, डेटाबेस तक पहुंचकर डेटा प्राप्त करती है, बाजार कलेक्टर प्रोग्राम वर्तमान बार का डेटा रिकॉर्ड नहीं करता है, जो कि पूर्ण स्थिति के के लाइन बार को एकत्र करता है, यदि वर्तमान बार के वास्तविक समय डेटा की आवश्यकता होती है, तो थोड़ा संशोधित किया जा सकता है। वर्तमान उदाहरण कोड, केवल प्रदर्शन के लिए, डेटाबेस में तालिकाओं में डेटा रिकॉर्ड को एक्सेस करते समय सभी को प्राप्त करता है, ताकि डेटा संग्रह समय बढ़ने के साथ, और अधिक डेटा एकत्र करने के साथ, सभी पूछताछ कुछ हद तक प्रदर्शन को प्रभावित कर सकें, केवल वर्तमान डेटा से नए डेटा की जांच करने के लिए डिज़ाइन किया जा सकता है, वर्तमान डेटा में जोड़ा जा सकता है।
प्रबंधक प्रक्रिया चलाएँ
होस्ट के डिवाइस पर चल रहा हैMongoDB
डेटाबेस सेवाएँ./mongod -f mongo.conf
कलेक्टर चल रहा है, आविष्कारक को एकत्र करने के लिए क्वांटिफाइड ट्रेडिंग प्लेटफॉर्म का एक एनालॉगwexApp
काBTC_USDT
लेन-देन की जोड़ीः
पताःwexApp
डेटाबेस डेटा का उपयोग करने वाला रोबोट A:
डेटाबेस डेटा का उपयोग करने वाला रोबोट बीः
wexApp
पृष्ठः
जैसा कि चित्र में दिखाया गया है, विभिन्न आईडी वाले रोबोट एक डेटा स्रोत का उपयोग करके के-लाइन डेटा साझा करते हैं।
आविष्कारक के क्वांटिफाइड ट्रेडिंग प्लेटफॉर्म की शक्तिशाली सुविधाओं का उपयोग करके, हम आसानी से किसी भी चक्र के के-लाइन डेटा को इकट्ठा कर सकते हैं। उदाहरण के लिए, मैं 3 मिनट के लाइनों को इकट्ठा करना चाहता हूं, और एक्सचेंजों के पास 3 मिनट के लाइन नहीं है?
हमने कलेक्टर रोबोट के कॉन्फ़िगरेशन को संशोधित किया, K-लाइन चक्र को 3 मिनट के लिए सेट किया, और आविष्कारक ने क्वांटिफाइड ट्रेडिंग प्लेटफॉर्म को स्वचालित रूप से 3 मिनट के K-लाइन को कलेक्टर प्रोग्राम के लिए संश्लेषित किया।
हम पैरामीटर का उपयोग करते हैं.删除表的名称
, सेटिंग्सः["records"]
पहले एकत्रित 1 मिनट के-लाइन डेटा तालिका हटाएं. 3 मिनट के-लाइन डेटा एकत्र करने के लिए तैयार हैं.
प्रारंभ करें收集器程序
, फिर से शुरू करें使用数据的策略机器人
。
जैसा कि आप देख सकते हैं कि K रेखा चार्ट में, BAR के बीच का अंतराल 3 मिनट है, और प्रत्येक BAR 3 मिनट के चक्र के लिए K रेखा स्तंभ है।
अगले चरण में, हम कस्टम डेटा स्रोतों की आवश्यकता को पूरा करने का प्रयास करेंगे। पढ़ने के लिए धन्यवाद
चुकिटीअद्भुत
ज़्लटीमशीर्ष
ज़्लटीमशीर्ष
उपदेशप्रशंसा
डसाइडासीशीर्ष
आविष्कारक मात्रा - छोटे सपनेधन्यवाद समर्थन के लिए, मैं एक पायथन छोटा हूँ, मैं एक कुंजी फेंक रहा हूँ, अगर कोई बेहतर कार्यान्वयन या सुझाव है, तो मैं इसे सुधारने की उम्मीद करता हूँ।