हाथ से हाथ मिलाकर आपको एक लेन-देन कलेक्टर बनाने के लिए सिखाया

लेखक:छोटे सपने, बनाया गयाः 2020-04-16 12:44:03, अद्यतनः 2023-10-11 19:57:00

img

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

यह कई जरूरतों को पूरा करता है, जैसेः

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

मैं 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)
        

पूरी रणनीति का पताःलिंक

डेटा का उपयोग करना

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

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)

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

चल रहा है

प्रबंधक प्रक्रिया चलाएँimg

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

कलेक्टर चल रहा है, आविष्कारक को एकत्र करने के लिए क्वांटिफाइड ट्रेडिंग प्लेटफॉर्म का एक एनालॉगwexAppकाBTC_USDTलेन-देन की जोड़ीः पताःwexApp img

डेटाबेस डेटा का उपयोग करने वाला रोबोट A:img

डेटाबेस डेटा का उपयोग करने वाला रोबोट बीःimg

wexAppपृष्ठःimg

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

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

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

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

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

प्रारंभ करें收集器程序, फिर से शुरू करें使用数据的策略机器人

img

img

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

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


संबंधित

अधिक

चुकिटीअद्भुत

ज़्लटीमशीर्ष

ज़्लटीमशीर्ष

उपदेशप्रशंसा

डसाइडासीशीर्ष

छोटे सपनेधन्यवाद समर्थन के लिए, मैं एक पायथन छोटा हूँ, मैं एक कुंजी फेंक रहा हूँ, अगर कोई बेहतर कार्यान्वयन या सुझाव है, तो मैं इसे सुधारने की उम्मीद करता हूँ।