बाजार उद्धरण कलेक्टर को लागू करने के लिए आप सिखाओ

लेखक:अच्छाई, बनाया गयाः 2020-05-30 10:03:39, अद्यतन किया गयाः 2023-11-02 19:52:02

img

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

इस प्रकार, हम कई जरूरतों को हल कर सकते हैं, जैसेः

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

और कई और...

हम इसे प्राप्त करने के लिए पायथन का उपयोग करने की योजना क्यों? क्योंकि यह बहुत सुविधाजनक है

तैयार

  • पायथन की पायमोंगो लाइब्रेरी क्योंकि आप स्थायी भंडारण के लिए डेटाबेस का उपयोग करने की जरूरत है. डेटाबेस चयन का उपयोग करता है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
  • MongoDB सेवा चलाएँ

आदेशः

./mongod -f mongo.conf
  • MongoDB सेवा रोकें
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

उपयोग डेटा

एक रणनीति रोबोट बनाएं जो डेटा का उपयोग करता है। नोटः आपको python PlotLine Template की जाँच करने की आवश्यकता है, यदि आपके पास यह नहीं है, तो आप अपनी रणनीति पुस्तकालय में रणनीति वर्ग से एक की प्रतिलिपि बना सकते हैं।

img

यहाँ पता हैः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 वास्तविक समय डेटा की आवश्यकता है, तो इसे थोड़ा संशोधित किया जा सकता है।

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

दौड़ो

डॉकर प्रोग्राम चला रहा है

img

डिवाइस पर जहां डॉकर स्थित है, MongoDB डेटाबेस सेवा चलाएँ

img

कलेक्टर FMZ प्लेटफ़ॉर्म WexApp सिमुलेशन एक्सचेंज के BTC_USDT ट्रेडिंग जोड़े एकत्र करने के लिए चलता है marekt उद्धरणः WexApp पताः https://wex.app/trade?currency=BTC_USDT

img

रोबोट ए डेटाबेस डेटा का उपयोग कर रहा हैः

img

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

img

WexApp पृष्ठः

img

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

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

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

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

img

हम मिटाने के लिए पैरामीटर का उपयोगthe name of the table, सेटिंगः [records] पहले एकत्रित 1 मिनट के-लाइन डेटा तालिका को मिटा दें. 3 मिनट के-लाइन डेटा एकत्र करने के लिए तैयार रहें.

प्रारंभ करेंcollector program, और फिर फिर से शुरूstrategy robot using the data.

img

img

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

अगले अंक में, हम कस्टम डेटा स्रोतों की आवश्यकताओं को लागू करने का प्रयास करेंगे।

पढ़ने के लिए धन्यवाद!


संबंधित

अधिक