متعلقہ مضامین:https://www.fmz.com/bbs-topic/5969
چونکہ HTTPServer خود میں کچھ نقائص ہیں، اس کے بجائے ThreadingHTTPServer استعمال کرنے پر غور کریں۔ حوالہ جات:https://docs.python.org/3.7/library/http.server.htmlاس کے لئے پیٹن ورژن 3.7 کی ضرورت ہے۔
ایچ ٹی ٹی پی سرور کے مسئلے کی معلومات:https://www.zybuluo.com/JunQiu/note/1350528
''' 请求格式:http://x.x.x.x:xxxx/data?access_key=xxx&secret_key=yyy&type=buy&amount=0.001 策略机器人参数: - 类型:加密字符串,AccessKey , SecretKey ,可以用FMZ平台的低权限的API KEY,或者自己生成KEY也可以。 - 类型:字符串,合约ID,ContractType - 类型:数值,端口号,Port ''' import re import _thread import json from http.server import ThreadingHTTPServer, BaseHTTPRequestHandler from urllib.parse import parse_qs, urlparse def url2Dict(url): query = urlparse(url).query params = parse_qs(query) result = {key: params[key][0] for key in params} return result class Executor(BaseHTTPRequestHandler): def do_GET(self): try: dictParam = url2Dict(self.path) Log("测试", dictParam) except Exception as e: Log("Provider do_GET error, e:", e) def do_POST(self): try: self.send_response(200) self.send_header("Content-type", "application/json") self.end_headers() dictParam = url2Dict(self.path) # 测试POST请求Body信息 data = self.rfile.read(200) # 指定了读取长度 Log("data:", data) # 打印POST请求的数据,可以根据请求中的数据具体再让机器人执行对应的操作 # 校验 if len(dictParam) == 4 and dictParam["access_key"] == AccessKey and dictParam["secret_key"] == SecretKey: del dictParam["access_key"] del dictParam["secret_key"] Log("接收到请求", "参数:", dictParam, "#FF0000") ''' map[access_key:xxx amount:0.001 secret_key:yyy type:buy] ''' isSpot = True if exchange.GetName().find("Futures") != -1: if ContractType != "": exchange.SetContractType(ContractType) isSpot = False else : raise "未设置期货合约" q = None if exchange.GetName() == "Futures_CTP" and UseMarketOrderForCTP == False: q = ext.NewTaskQueue() if isSpot and dictParam["type"] == "buy": exchange.Buy(-1, float(dictParam["amount"])) Log(exchange.GetAccount()) elif isSpot and dictParam["type"] == "sell": exchange.Sell(-1, float(dictParam["amount"])) Log(exchange.GetAccount()) elif not isSpot and dictParam["type"] == "long": exchange.SetDirection("buy") if not q: exchange.Buy(-1, float(dictParam["amount"])) else : q.pushTask(exchange, ContractType, "buy", float(dictParam["amount"]), lambda task, ret: Log(task["desc"], ret, "#FF0000")) Log("持仓:", exchange.GetPosition()) elif not isSpot and dictParam["type"] == "short": exchange.SetDirection("sell") if not q: exchange.Sell(-1, float(dictParam["amount"])) else : q.pushTask(exchange, ContractType, "sell", float(dictParam["amount"]), lambda task, ret: Log(task["desc"], ret, "#FF0000")) Log("持仓:", exchange.GetPosition()) elif not isSpot and dictParam["type"] == "cover_long": exchange.SetDirection("closebuy") if not q: exchange.Sell(-1, float(dictParam["amount"])) else : q.pushTask(exchange, ContractType, "closebuy", float(dictParam["amount"]), lambda task, ret: Log(task["desc"], ret, "#FF0000")) Log("持仓:", exchange.GetPosition()) elif not isSpot and dictParam["type"] == "cover_short": exchange.SetDirection("closesell") if not q: exchange.Buy(-1, float(dictParam["amount"])) else : q.pushTask(exchange, ContractType, "closesell", float(dictParam["amount"]), lambda task, ret: Log(task["desc"], ret, "#FF0000")) Log("持仓:", exchange.GetPosition()) if q is not None: while q.size() > 0: q.poll() Sleep(500) # 处理body数据 if isDealBodyMsg: if exchange.GetName().find("Futures") != -1: Log("data:", data.decode('utf-8')) # 测试 if re.search(r'buy', data.decode('utf-8')): Log("触发buy") exchange.SetContractType(ct) exchange.SetDirection("buy") exchange.Buy(-1, amount) elif re.search(r'sell', data.decode('utf-8')): Log("触发sell") exchange.SetContractType(ct) exchange.SetDirection("sell") exchange.Sell(-1, amount) # 写入数据应答 self.wfile.write(json.dumps({"state": "ok"}).encode()) except Exception as e: Log("Provider do_POST error, e:", e) def createServer(host): try: server = ThreadingHTTPServer(host, Executor) Log("Starting server, listen at: %s:%s" % host) server.serve_forever() except Exception as e: Log("createServer error, e:", e) raise Exception("stop") def main(): # 开启一个线程 try: _thread.start_new_thread(createServer, (("0.0.0.0", Port), )) # VPS服务器上测试 except Exception as e: Log("错误信息:", e) raise Exception("stop") if exchange.GetName().find("Futures") != -1: exchange.SetContractType(ContractType) Log("账户资产信息:", _C(exchange.GetAccount)) while True: if exchange.GetName() == "Futures_CTP": if exchange.IO("status"): LogStatus(_D(), "CTP连接") else: LogStatus(_D(), "CTP未连接") else: LogStatus(_D()) Sleep(2000)
eth8888/upload/asset/2457669d9c32568732cb7.jpg کھولیں اصلی ڈسک اس غلطی کو اشارہ کرتا ہے، جہاں غلط ہے
eth8888/upload/asset/2457669d9c32568732cb7.jpg کھولیں اصلی ڈسک اس غلطی کو اشارہ کرتا ہے، جہاں غلط ہے
ہوانگ کی تلوارٹیچر: کیا میں ویکی میسج کر سکتا ہوں؟
ہوانگ کی تلوار2021/11/21 11:53:33 CMD 199866 buy=0.1, منتظم نے یہ پیغام موصول کیا اور روبوٹ میں کوئی حرکت نہیں ہوئی
سپرونمیں نے ایک رات میں اسے دیکھا اور سمجھ نہیں آیا، کیا آپ اسے تبدیل کر سکتے ہیں؟ رابطہ کریں V: شاید ہاں
ڈینج 1کیا آپ ایک مکمل ٹی وی سگنل کی فہرست لکھ سکتے ہیں؟ مثال کے طور پر، کس طرح جسم میں معلومات حاصل کرنے کے لئے؟
DietQuantٹیچر، کس طرح تبدیل کرنے کے لئے ایک ڈسک میں دو کرنسیوں کو شامل کرنے کے لئے؟
خواب آٹھ ہندسوں میں ہیںاوکے ، کیا آپ OKv5 کی مشابہت والی ڈسک نکال سکتے ہیں؟ ایک چھوٹا سا سفید ، نہیں جانتا کہ اسے کیسے بنایا جائے ، اور اصل ڈسک کے بارے میں بات کرنے کی ہمت نہیں کرتا؟
ایس ایس ایکس ایکس ڈیایک سوال ہے، استاد، ورژن 3.7 کیا ہے؟ کیا یہ ڈپلوئم ایڈمنسٹریٹر کا ورژن ہے؟ میں اسے کیسے اپ ڈیٹ کر سکتا ہوں؟
2021-08-11 11:08:55 خرابی Traceback (most recent call last): فائل "
qq3390214355میں نے اسے ایک رات میں دیکھا ہے اور میں سمجھ نہیں پا رہا ہوں ، کیا آپ اسے دوبارہ لکھ سکتے ہیں ، کیسے رابطہ کریں؟
چن نیشنسناستاد ہیلو، ٹی وی پر براہ راست انتباہ کرنے کی حکمت عملی کی تجارت کی سمت کی ویب ہک ایڈریس کیا ہے؟
لنبناچھا، شکریہ استاد، میں اسے آزماؤں گا!!!
لنبناستاد صاحب، ہیلو، کیا آپ مجھے کچھ تفصیلات دے سکتے ہیں کہ معاہدے کا کوڈ کس طرح لکھا گیا ہے؟
ایجاد کاروں کی مقدار - خوابایف ایم زیڈ اے پی آئی دستاویزات میں آخر میں اوکیکس سوئچ ڈسک کی تقریب ہے۔
N95ٹی وی سگنل وصول کرنے کی حکمت عملی ، اینالاگ ڈسک کو کیسے تبدیل کیا جائے؟ یہ ہمیشہ مجھے اشارہ کرتا ہے کہ ماحول مطابقت نہیں رکھتا ہے۔
ایجاد کاروں کی مقدار - خوابغلطی کی وجہ یہ ہے کہ python کے پاس کوئی متعلقہ ماڈیول نہیں ہے ThreadingHTTPServer
چابی986کیا آپ نے اس مسئلے کو حل کیا ہے؟
eth8888ٹھیک ہے
ایجاد کاروں کی مقدار - خوابیہ سفارش نہیں کی جاتی ہے کہ ٹی وی کی نگرانی کے لیے ایسی درخواستیں کی جائیں۔ ایف ایم زیڈ کی توسیع شدہ اے پی آئی کا استعمال کریں۔
ایجاد کاروں کی مقدار - خوابیہ حکمت عملی تجارتی مستقبل کی مثال کے طور پر استعمال کی جاتی ہے ، اگر ڈیجیٹل کرنسی کو چلانے کے لئے معاہدہ کوڈ کی ضرورت ہو تو اس کی حکمت عملی کو تبدیل کریں۔
ایجاد کاروں کی مقدار - خواباس حکمت عملی کا ایک سادہ مثال یہ ہے کہ حکمت عملی کے روبوٹ نے ایک سروس بنائی ہے جو ٹی وی سے آنے والے سگنل کی درخواستوں کو سننے کے لئے استعمال ہوتی ہے۔ `` # پی او ایس ٹی ٹیسٹ جسم کی معلومات کی درخواست کرتا ہے data = self.rfile.read ((200) # پڑھنے کی لمبائی کی وضاحت کرتا ہے لاگ (("data:", data) # POST درخواست کے اعداد و شمار کو پرنٹ کرتا ہے ، جو درخواست میں موجود اعداد و شمار کے مطابق روبوٹ کو متعلقہ کارروائی کرنے کے لئے مخصوص ہوسکتا ہے۔ `` اس کوڈ میں ایک تبصرہ لکھا ہوا ہے، اور یہ ٹی وی کی درخواستوں کو سنبھالنے کے لئے جسم کی معلومات ہے۔ کیا آپ کو کوڈ کو دیکھنے میں دشواری ہوگی؟
ایجاد کاروں کی مقدار - خواباس کے علاوہ ، آپ کو اپنی حکمت عملی کو اپنی ضروریات کے مطابق تبدیل کرنا چاہئے۔
ایجاد کاروں کی مقدار - خوابایف ایم زیڈ پر اوکیکس ڈسک کو ترتیب دینے کے لئے API KEY ، پھر کوڈ میں ایک جملہ کا اضافہ کریں۔
ایجاد کاروں کی مقدار - خوابمیں سمجھا نہیں، اندازہ لگا رہا ہوں کہ جب میں نے اسے استعمال کیا تو میں نے کیا غلط کیا، چیک کریں۔
چن نیشنسنشکریہ، اگر میرا ویب ہک ایڈریس خریدنے کی طرف اشارہ کرتا ہے، لیکن ٹی وی حکمت عملی الارم اشارہ فروخت کرنے کے بارے میں ہے؟
ایجاد کاروں کی مقدار - خوابhttps://www.fmz.com/bbs-topic/5969 میں مضامین اور حکمت عملیوں میں مثالیں ہیں۔
ایجاد کاروں کی مقدار - خوابhttps://www.fmz.com/api#exchange.setcontracttype... فنکشن کی تفصیل میں ہے، آپ دیکھ سکتے ہیں۔
PY008معاہدے کا کوڈ کیا ہے؟
ایجاد کاروں کی مقدار - خوابہم نے اس کے بارے میں کیا سوچا ہے؟
ایجاد کاروں کی مقدار - خواباگر آپ کسی ایکسچینج کے لئے معاہدہ کر رہے ہیں تو ، ٹی وی پر ویب ہک ایڈریس لکھیں: ایک اور معاہدہ: `` http://x.x.x.x:xxxx/data?access_key=xxx&secret_key=yyy&type=long&amount=1 `` ایک اور معاہدہ: `` http://x.x.x.x:xxxx/data?access_key=xxx&secret_key=yyy&type=cover_long&amount=1 `` یاد رکھیں کہ پالیسی کے پیرامیٹرز میں، معاہدہ کوڈ مقرر کریں۔