बाजार उद्धरण डेटा का समर्थन अनुसंधान, डिजाइन और बैकटेस्ट ट्रेडिंग रणनीतियों के लिए अपरिहार्य है। हर बाजार से सभी डेटा एकत्र करना यथार्थवादी नहीं है, आखिरकार, डेटा की मात्रा बहुत बड़ी है। डिजिटल मुद्रा बाजार के लिए, एफएमजेड प्लेटफॉर्म एक्सचेंजों और ट्रेडिंग जोड़े के लिए सीमित बैकटेस्ट डेटा का समर्थन करता है। यदि आप कुछ एक्सचेंजों और ट्रेडिंग जोड़े का बैकटेस्ट करना चाहते हैं जो अस्थायी रूप से एफएमजेड प्लेटफॉर्म द्वारा समर्थित नहीं थे, तो आप बैकटेस्ट के लिए एक कस्टम डेटा स्रोत का उपयोग कर सकते हैं, लेकिन इस आधार पर आपके पास डेटा होना आवश्यक है। इसलिए, एक बाजार उद्धरण संग्रह कार्यक्रम की तत्काल आवश्यकता है, जिसे वास्तविक समय में दृढ़ता से और सर्वोत्तम प्राप्त किया जा सकता है।
इस प्रकार, हम कई जरूरतों को हल कर सकते हैं, जैसेः
और कई और...
हम इसे प्राप्त करने के लिए पायथन का उपयोग करने की योजना क्यों? क्योंकि यह बहुत सुविधाजनक है
पायथन की पायमोंगो लाइब्रेरी
क्योंकि आप स्थायी भंडारण के लिए डेटाबेस का उपयोग करने की जरूरत है. डेटाबेस चयन का उपयोग करता हैMongoDB
और पायथन भाषा का उपयोग संग्रह कार्यक्रम लिखने के लिए किया जाता है, तो इस डेटाबेस के ड्राइवर पुस्तकालय की आवश्यकता है.
बस स्थापित करेंpymongo
पायथन पर।
होस्टिंग डिवाइस पर MongoDB स्थापित करें उदाहरण के लिए: मैकओएस MongoDB स्थापित करता है, विंडोज सिस्टम के समान ही MongoDB स्थापित करता है। ऑनलाइन कई ट्यूटोरियल हैं। उदाहरण के लिए मैकओएस सिस्टम की स्थापना लेंः
डाउनलोड करें डाउनलोड लिंकःhttps://www.mongodb.com/download-center?jmp=nav#community
अनज़िप करें
डाउनलोड करने के बाद, निर्देशिका में अनज़िप करेंः/usr/local
पर्यावरण चर विन्यस्त करें
टर्मिनल इनपुटःopen -e .bash_profile
, फ़ाइल खोलने के बाद लिखेंःexportPATH=${PATH}:/usr/local/MongoDB/bin
बचत के बाद, टर्मिनल में, उपयोग करता हैsource .bash_profile
परिवर्तनों को प्रभावी बनाने के लिए।
डेटाबेस फ़ाइल निर्देशिका और लॉग निर्देशिका को मैन्युअल रूप से कॉन्फ़िगर करें
निर्देशिका में संबंधित फ़ोल्डर बनाएँ/usr/local/data/db
.
निर्देशिका में संबंधित फ़ोल्डर बनाएँ/usr/local/data/logs
.
कॉन्फ़िगरेशन फ़ाइल संपादित करेंmongo.conf
:
#bind_ip_all = true # Any computer can connect
bind_ip = 127.0.0.1 # Local computer can access
port = 27017 # The instance runs on port 27017 (default)
dbpath = /usr/local/data/db # data folder storage address (db need to be created in advance)
logpath = /usr/local/data/logs/mongodb.log # log file address
logappend = false # whether to add or rewrite the log file at startup
fork = false # Whether to run in the background
auth = false # Enable user verification
आदेशः
./mongod -f mongo.conf
use admin;
db.shutdownServer();
कलेक्टर एफएमजेड प्लेटफॉर्म पर एक पायथन रोबोट रणनीति के रूप में काम करता है. मैं सिर्फ इस लेख के विचारों को दिखाने के लिए एक सरल उदाहरण लागू किया.
कलेक्टर प्रोग्राम कोडः
import pymongo
import json
def main():
Log("Test data collection")
# Connect to the database service
myDBClient = pymongo.MongoClient("mongodb://localhost:27017") # mongodb://127.0.0.1:27017
# Create a database
huobi_DB = myDBClient["huobi"]
# Print the current database table
collist = huobi_DB.list_collection_names()
Log("collist:", collist)
# Check if the table is deleted
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, "delete:", dropName)
ret = tab.drop()
collist = huobi_DB.list_collection_names()
if dropName in collist:
Log(dropName, "failed to delete")
else :
Log(dropName, "successfully deleted")
# Create the records table
huobi_DB_Records = huobi_DB["records"]
# Request data
preBarTime = 0
index = 1
while True:
r = _C(exchange.GetRecords)
if len(r) < 2:
Sleep(1000)
continue
if preBarTime == 0:
# Write all BAR data for the first time
for i in range(len(r) - 1):
# Write one by one
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)
पूर्ण रणनीतिक पता:https://www.fmz.com/strategy/199120
एक रणनीति रोबोट बनाएं जो डेटा का उपयोग करता है।
नोटः आपको
यहाँ पता हैःhttps://www.fmz.com/strategy/39066
import pymongo
import json
def main():
Log("Test using database data")
# Connect to the database service
myDBClient = pymongo.MongoClient("mongodb://localhost:27017") # mongodb://127.0.0.1:27017
# Create a database
huobi_DB = myDBClient["huobi"]
# Print the current database table
collist = huobi_DB.list_collection_names()
Log("collist:", collist)
# Query data printing
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)
# Use the line drawing library to draw the obtained K-line data
ext.PlotRecords(arrRecords, "K")
LogStatus(_D(), "records length:", len(arrRecords))
Sleep(10000)
यह देखा जा सकता है कि डेटा का उपयोग करने वाला रणनीति रोबोट कोड किसी भी एक्सचेंज इंटरफ़ेस तक नहीं पहुंचता है। डेटाबेस तक पहुंचकर डेटा प्राप्त किया जाता है। बाजार कलेक्टर प्रोग्राम वर्तमान BAR डेटा रिकॉर्ड नहीं करता है। यह पूर्ण स्थिति में K-लाइन BAR एकत्र करता है। यदि वर्तमान BAR वास्तविक समय डेटा की आवश्यकता है, तो इसे थोड़ा संशोधित किया जा सकता है।
वर्तमान उदाहरण कोड केवल प्रदर्शन के लिए है। जब डेटाबेस में तालिका में डेटा रिकॉर्ड तक पहुंचते हैं, तो सभी प्राप्त होते हैं। इस तरह, डेटा एकत्र करने के समय में वृद्धि के साथ, अधिक से अधिक डेटा एकत्र किए जाते हैं। सभी क्वेरी कुछ हद तक प्रदर्शन को प्रभावित करेंगे, और डिज़ाइन किया जा सकता है। केवल डेटा जो वर्तमान डेटा से नया है, क्वेरी किया जाता है और वर्तमान डेटा में जोड़ा जाता है।
डॉकर प्रोग्राम चला रहा है
डिवाइस पर जहां डॉकर स्थित है, MongoDB डेटाबेस सेवा चलाएँ
कलेक्टर FMZ प्लेटफ़ॉर्म WexApp सिमुलेशन एक्सचेंज के BTC_USDT ट्रेडिंग जोड़े एकत्र करने के लिए चलता है marekt उद्धरणः WexApp पताः https://wex.app/trade?currency=BTC_USDT
रोबोट ए डेटाबेस डेटा का उपयोग कर रहा हैः
रोबोट बी डेटाबेस डेटा का उपयोग कर रहा हैः
WexApp पृष्ठः
जैसा कि आप चित्र में देख सकते हैं, विभिन्न आईडी वाले रोबोट एक डेटा स्रोत का उपयोग करके के-लाइन डेटा साझा करते हैं।
एफएमजेड प्लेटफॉर्म के शक्तिशाली कार्यों पर भरोसा करते हुए, हम किसी भी चक्र में आसानी से के-लाइन डेटा एकत्र कर सकते हैं। उदाहरण के लिए, मैं एक 3 मिनट के-लाइन इकट्ठा करना चाहते हैं, क्या होगा अगर विनिमय 3 मिनट के-लाइन नहीं है? इससे कोई फर्क नहीं पड़ता, यह आसानी से प्राप्त किया जा सकता है।
हम कलेक्टर रोबोट की कॉन्फ़िगरेशन को संशोधित करते हैं, K लाइन अवधि 3 मिनट पर सेट की जाती है, और FMZ प्लेटफॉर्म स्वचालित रूप से कलेक्टर प्रोग्राम के लिए 3 मिनट की K लाइन का संश्लेषण करेगा।
हम मिटाने के लिए पैरामीटर का उपयोगthe name of the table
, सेटिंगः [
प्रारंभ करेंcollector program
, और फिर फिर से शुरूstrategy robot using the data
.
आप K-लाइन चार्ट खींचा देख सकते हैं, बार के बीच अंतराल 3 मिनट है, और प्रत्येक बार 3 मिनट की अवधि के साथ एक K-लाइन बार है।
अगले अंक में, हम कस्टम डेटा स्रोतों की आवश्यकताओं को लागू करने का प्रयास करेंगे।
पढ़ने के लिए धन्यवाद!