মাল্টি-রোবট মার্কেট শেয়ারিং সমাধান

লেখক:ছোট্ট স্বপ্ন, তৈরি করেছেনঃ 2020-07-15 16:25:20, আপডেট করা হয়েছেঃ 2023-09-27 19:36:39

img

মাল্টি-রোবট মার্কেট শেয়ারিং সমাধান

ডিজিটাল মুদ্রা পরিমাণগত লেনদেন রোবট ব্যবহার করার সময়, যখন একাধিক রোবটকে একটি সার্ভারে চালানো হয়, যদি বিভিন্ন এক্সচেঞ্জ অ্যাক্সেস করা হয় তবে এটি কোনও সমস্যা নয়, এপিআই অনুরোধের ফ্রিকোয়েন্সির সমস্যা হবে না। যদি একাধিক রোবটকে একসাথে চালানোর প্রয়োজন হয় এবং একই এক্সচেঞ্জ, একই লেনদেনের জন্য পরিমাণগত লেনদেনের কৌশল হয়। এই সময়ে এপিআই অনুরোধের ফ্রিকোয়েন্সি সীমাবদ্ধতার সমস্যা রয়েছে। তবে সর্বনিম্ন সার্ভার ব্যবহারের সাথে কীভাবে একাধিক রোবট অ্যাক্সেস ইন্টারফেসের সমস্যা সমাধান করা যায়?

আমরা একটি মার্কেট ফরওয়ার্ডিং বট বাস্তবায়ন করতে পারি, এক্সচেঞ্জ ইন্টারফেসে অ্যাক্সেস করতে পারি, মার্কেট ইত্যাদির ডেটা পেতে পারি এবং এটি কেবল এই বট দিয়েই সম্পন্ন করতে পারি।

রোবট পাঠানোর উদাহরণ

শুধুমাত্র এক্সচেঞ্জের ট্রেডিং ইন্টারফেস অ্যাক্সেস করার জন্য ডেটা সংগ্রহ এবং অন্যান্য বটকে ট্রেডিং সরবরাহ করার জন্য দায়ী।Pythonএই উদাহরণে, আমরা কেবলমাত্র কে-লাইন ডেটা সংগ্রহ করি এবং শেয়ারিং সরবরাহ করি, যা গভীরতার ডেটা যুক্ত করতে, বাজার ডেটা একত্রিত করতে এবং আরও অনেক কিছুতে প্রসারিত হতে পারে।

import _thread
import threading
import json
import math
from http.server import HTTPServer, BaseHTTPRequestHandler
from urllib.parse import parse_qs, urlparse

Records = None
lock = threading.RLock()
Counter = {}

def url2Dict(url):
    query = urlparse(url).query  
    params = parse_qs(query)  
    result = {key: params[key][0] for key in params}  
    return result

class Provider(BaseHTTPRequestHandler):
    def do_GET(self):
        global Records, lock, Counter
        try:
            self.send_response(200)
            self.send_header("Content-type", "application/json")
            self.end_headers()

            dictParam = url2Dict(self.path)
            # Log("服务接收到请求,self.path:", self.path, "query 参数:", dictParam)
            lock.acquire()
            # 记录
            if dictParam["robotId"] not in Counter:
                Counter[dictParam["robotId"]] = {"NumberOfRequests" : 0}
            Counter[dictParam["robotId"]]["NumberOfRequests"] += 1
            lock.release()
            
            # 写入数据应答
            self.wfile.write(json.dumps(Records).encode())
        except BaseException as e:
            Log("Provider do_GET error, e:", e)


def createServer(host):
    try:
        server = HTTPServer(host, Provider)
        Log("Starting server, listen at: %s:%s" % host)
        server.serve_forever()
    except BaseException as e:
        Log("createServer error, e:", e)
        raise Exception("stop")

def main():
    global Records, Counter
    LogReset(1)
    try:
        # _thread.start_new_thread(createServer, (("localhost", 9090), ))         # 本机测试
        _thread.start_new_thread(createServer, (("0.0.0.0", 9090), ))             # VPS服务器上测试
        Log("启动服务", "#FF0000")
    except BaseException as e:
        Log("启动服务失败!")
        Log("错误信息:", e)
        raise Exception("stop")
    while True:
        r = exchange.GetRecords()
        if not r :
            Log("K线行情获取失败", "#FF0000")
            continue
        else :
            Records = r
        # Counter
        tbl = {
            "type" : "table", 
            "title" : "统计信息", 
            "cols" : ["请求数据的机器人id", "请求次数"], 
            "rows" : [], 
        }
        for k in Counter:
            tbl["rows"].append([k, Counter[k]["NumberOfRequests"]])
        LogStatus(_D(), "数据收集中!", "\n", "`" + json.dumps(tbl) + "`")
        Sleep(500)
        

ডেটা রোবট নীতি কোড অনুরোধ

যেসব রোবট তথ্যের জন্য অনুরোধ করে, সেগুলি হল ট্রেডিং স্ট্র্যাটেজি রোবট, কিন্তু আমরা পরীক্ষামূলকভাবে ব্যবহার করি, কেবল অনুরোধের ডেটা (কে-লাইন ডেটা) লিখতে পারি এবং ডেটা আঁকতে পারি, যা আমরা ব্যবহার করতে পারি।JavaScriptসম্পাদনা, চিত্র আঁকার জন্য, "অঙ্কন লাইন ক্লাস লাইব্রেরি" টিক করতে হবে। নীতিমালা স্কয়ার অনুসন্ধানে এই ক্লাস লাইব্রেরিটি অনুলিপি করা যেতে পারে, কপি করার পরে নীতিমালা সম্পাদনা পৃষ্ঠায় টেমপ্লেট রেফারেন্সের একটি টুকরো নির্বাচন করা যেতে পারে।

var FuncGetRecords = exchange.GetRecords
exchange.GetRecords = function() {
    // 可以填写「行情转发机器人」所在设备的IP地址xxx.xxx.xxx.xxx
    var ret = HttpQuery("http://xxx.xxx.xxx.xxx:9090?robotId=" + _G())  
    var records = null
    try {
        records = JSON.parse(ret)
    } catch(e) {
        Log(e)
        records = null
    }
    return records 
}

function main(){
    LogReset(1)
    while(1) {
        var records = exchange.GetRecords()
        LogStatus(_D(), "机器人ID:", _G())
        if (!records) {
            Log("获取数据失败!", "#FF0000")
            Sleep(1000)
            continue
        }
        Log(records)
        $.PlotRecords(records, "K")
        Sleep(1000)
    }
}

বাস্তবিক কাজ

  • বাজারে ফেরত পাঠানোর রোবট চালুimg

  • পরীক্ষা রোবট চালু করুন, আইডিঃ 206353img

  • পরীক্ষা রোবট চালু করুন, আইডিঃ 206359img

  • পরীক্ষা রোবট চালু করুন, আইডিঃ ২০৬৩৬০img

এটি তিনটি বা এমনকি এন রোবটকে একটি লেনদেনের জন্য কে-লাইন ডেটা ভাগ করে নেওয়ার অনুমতি দেয়। এই ভিডিওতে, আপনি আপনার প্রিয় বন্ধুদের সাথে কথা বলতে পারেন।


সম্পর্কিত

আরো

শর্ট লাইন ওয়াং উইন উচ্চমূল্যের কৌশল বিক্রি করেশুভ মঙ্গল।

চুংফেন ৯১ 666