ٹریڈنگ ویو ایک اچھا مارکیٹ کی قیمتوں کا تعین کرنے کا آلہ ہے.
کےpine
اسکرپٹ بھی ایک طاقتور وجود ہے!
بیک ٹیسٹنگ، الارمنگ، اور مختلف ڈاکنگ ایک بہت ہی مکمل مالیاتی آلہ ہے.
لیکن دو مسائل ہیں جو ہمیں پریشان کر رہے ہیں...
آج ہمارا مضمون آپ کو ایکسچینج ڈاکنگ کے مسائل کو حل کرنے کے لئے لے جائے گا.
مجموعی طور پر خیال کچھ اس طرح ہے:
ٹی وی ((ٹریڈنگ ویو)pine
اسکرپٹ -> سگنل الارمwebhook
-> مقامیwebhook server
منتقلی کی درخواست -> FMZ بوٹ کام کرنے کی درخواست وصول کرتا ہے
چلو قدم بہ قدم چلتے ہیں۔
ٹریڈنگ ویو ویب سائٹ پر جائیں:
اگلا، ہم سب سے پہلے ایک تخلیقAlert
، تفصیلات کے لیے نیچے دی گئی شکل دیکھیں۔
تصویر میں کچھ پہلوؤں پر توجہ دینے کی ضرورت ہے، جب پیداAlert
.
درستگی کی مدت،webhook
پتہ، اورmessage
مواد کو اچھی طرح سے بنایا جانا چاہیے۔
ختم ہونے کی تاریخ، یہ ایک نظر میں پتہ چل جائے گا، اور یہ ختم ہو جائے گا جب یہ غیر قانونی ہو جائے گا...
Webhook
یو آر ایل، چلو پہلے اسے خالی رکھیں، ہم اسے بھرنے گا جب مقامیwebhook
سروس ختم ہو گئی ہے.
Message
یہاں، یہ سب سے بہتر ہے کہ ہم ایک واضح وضاحت ہے، تاکہbot
فرق کرناAlert
messages.
میں عام طور پر اس طرح مقرر: XXX حکمت عملی، حکم کی مقدار اور ٹریڈنگ سمت
اب تک، ٹریڈنگ ویو حصہ بنیادی طور پر کیا گیا ہے!
اگلا، چلو مقامی حاصلwebhook
سروس کام کیا!
اس قسم کا کام، گوگل یہ آپ کو بہت سے نتائج دکھائے گا. اس مضمون اس حصے کو چھوڑ دیں گے، آپ اسے اپنے آپ کو کر سکتے ہیں.
یہاں Python کے لئے ایک سادہ فریم ورک ہے:
GitHub: https://github.com/shawn-sterling/gitlab-webhook-receiver
محفوظ، پریشانی سے پاک اور آسان، لیکن مسائل بھی ہیں.
یہ چھوٹا سا فریم، یہ کرے گا!! خودکشی!! براہ مہربانی اس مسئلے پر توجہ!
تو، میں نے سرور پر ایک اور اسکرپٹ لکھا، جب
اس کے علاوہ، TradingView صرف بندرگاہ 80 تسلیم کرتا ہے، تو سروس بندرگاہ کو گڑبڑ نہیں کرتے.
اب تک، ہم نے کیا ہےMessage
سےAlert
حصہ. اگلا، ہم بوٹ حاصل کرنے کے لئے کس طرح؟
مجھے نہیں معلوم کہ آپ نے نیچے ایف ایم زیڈ کے انٹرفیس API دستاویز پر توجہ دی ہے:
ہم API کے ذریعے ہمارے چھوٹے روبوٹ کو کچھ احکامات منتقل کر سکتے ہیں! مخصوص درخواست مثال یہاں ہے، سرخ باکس کی ضرورت ہے کہ درخواست ہے.
یہاں بھی کچھ تیاری کا کام درکار ہے۔ FMZ API (avatar-> اکاؤنٹ کی ترتیبات-> API انٹرفیس) ایک بوٹ جو شروع کیا گیا ہے (ہم اس کی شناخت حاصل کرنا چاہتے ہیں، لہذا ہم سب سے پہلے ایک نئی شناخت بناتے ہیں) ، ایک عام روبوٹ کے یو آر ایل میں نمبر آئی ڈی ہے.
اگلا، ہم ویب ہک سروس کو تبدیل کرتے ہیں تاکہ پیغام موصول ہونے کے بعد، یہ خود بخود ایف ایم زیڈ بوٹ کو بھیج دیا جائے.
آخر میں، بھرا ہوا فارم بھریںwebhook
ٹریڈنگ ویو الرٹ میں ایڈریس ((فارمیٹ: http://xx.xx.xx.xx:80)
مندرجہ ذیل ہے:service
کوڈ میں تبدیل کر دیا، آپ کو ایک حوالہ کے طور پر استعمال کر سکتے ہیں:
#!/usr/bin/python -tt
# -*- coding: UTF-8 -*-
from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer
import json
import logging
import logging.handlers
import os
import re
import shutil
import subprocess
import time
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
try:
import md5
import urllib2
from urllib import urlencode
except:
import hashlib as md5
import urllib.request as urllib2
from urllib.parse import urlencode
############################################################
##### You will likely need to change some of the below #####
# log file for this script
log_file = '/root/webhook/VMA/webhook.log'
# Bot api licence
accessKey = ''
secretKey = ''
# HTTP config
log_max_size = 25165824 # 24 MB
log_level = logging.INFO
#log_level = logging.DEBUG # DEBUG is quite verbose
listen_port = 80
##### You should stop changing things unless you know what you are doing #####
##############################################################################
log = logging.getLogger('log')
log.setLevel(log_level)
log_handler = logging.handlers.RotatingFileHandler(log_file,
maxBytes=log_max_size,
backupCount=4)
f = logging.Formatter("%(asctime)s %(filename)s %(levelname)s %(message)s",
"%B %d %H:%M:%S")
log_handler.setFormatter(f)
log.addHandler(log_handler)
class webhookReceiver(BaseHTTPRequestHandler):
def run_it(self, cmd):
"""
runs a command
"""
p = subprocess.Popen(cmd.split(), stdout=subprocess.PIPE,
stderr=subprocess.STDOUT)
log.debug('running:%s' % cmd)
p.wait()
if p.returncode != 0:
log.critical("Non zero exit code:%s executing: %s" % (p.returncode,
cmd))
return p.stdout
def bot_conmand(self, method, *args):
"""
send conmand request to bot api
"""
d = {
'version': '1.0',
'access_key': accessKey,
'method': method,
'args': json.dumps(list(args)),
'nonce': int(time.time() * 1000),
}
d['sign'] = md5.md5(('%s|%s|%s|%d|%s' % (d['version'], d['method'], d['args'], d['nonce'], secretKey)).encode('utf-8')).hexdigest()
return json.loads(urllib2.urlopen('https://www.fmz.com/api/v1', urlencode(d).encode('utf-8')).read().decode('utf-8'))
def do_POST(self):
"""
receives post, handles it
"""
log.debug('got post')
message = 'OK'
self.rfile._sock.settimeout(5)
data_string = self.rfile.read(int(self.headers['Content-Length']))
log.info(data_string)
self.send_response(200)
self.send_header("Content-type", "text")
self.send_header("Content-length", str(len(message)))
self.end_headers()
self.wfile.write(message)
log.debug('TV connection should be closed now.')
#log.info(self.bot_conmand('GetRobotList', -1, -1, -1)) # GetRobotList(offset, length, robotStatus int)Pass -1 to get all
log.info(self.bot_conmand('CommandRobot', 169788, data_string)) # CommandRobot(robotId int64, cmd string)Send commands to the robot
def log_message(self, formate, *args):
"""
disable printing to stdout/stderr for every post
"""
return
def main():
"""
the main event.
"""
try:
server = HTTPServer(('', listen_port), webhookReceiver)
log.info('started web server...')
server.serve_forever()
except KeyboardInterrupt:
log.info('ctrl-c pressed, shutting down.')
server.socket.close()
if __name__ == '__main__':
main()
تمام مندرجہ بالا مواصلات کے نفاذ بیان کیا، ہمارے بوٹ ٹریڈنگ کی حکمت عملی بھی اس کے مطابق عملدرآمد کرنے کی ضرورت ہے، تاکہ ہم اپنے وصول سگنل کے عمل کو درست کرنے کے لئے.
مثال کے طور پر، انتباہ پیغام کے آغاز میں ڈیزائن، آپ کو آپ کی ترجیحات اور مخصوص ضروریات کے مطابق اسے ادا کر سکتے ہیں.
کوڈ مندرجہ ذیل ہے، معلومات حاصل کریں، ان کو فلٹر کریں، آپریشن کریں، اور ختم کریں.
function get_Command() { //Responsible function for interaction, interactively update relevant values in time, users can expand by themselves
var way = null; //route
var cmd = GetCommand(); // Get interactive command API
var cmd_arr = cmd.split(",");
if (cmd) {
// Define the route
if (cmd.indexOf("BUY,1") != -1) {
way = 1;
}
if (cmd.indexOf("SELL,1") != -1) {
way = 2;
}
if (cmd.indexOf("BUY,2") != -1) {
way = 3;
}
if (cmd.indexOf("SELL,2") != -1) {
way = 4;
}
// Branch selection operation
switch (way) {
case 1:
xxx
break;
case 2:
xxx
break;
case 3:
xxx
break;
case 4:
xxx
break;
default:
break;
}
}
}
یہ مضمون ختم ہوا، امید ہے کہ یہ آپ کی مدد کر سکتا ہے!