0
تشویش
72
دیکھنا

"ٹریڈنگ ویو" اشارے کا استعمال کرتے ہوئے FMZ روبوٹ کے ساتھ انٹرفیس

تخلیق کردہ: 2020-06-19 11:08:22, تازہ کاری: 2025-01-14 20:34:25
comments   0
hits   1090

Interfacing with FMZ robot using “Tradingview” indicator

پس منظر کا تعارف

ٹریڈنگ ویو ایک اچھا مارکیٹ کی قیمتوں کا تعین کرنے کا آلہ ہے.

کےpineاسکرپٹ بھی ایک طاقتور وجود ہے!

بیک ٹیسٹنگ، الارمنگ، اور مختلف ڈاکنگ ایک بہت ہی مکمل مالیاتی آلہ ہے.

لیکن دو مسائل ہیں جو ہمیں پریشان کر رہے ہیں...

  • ایک مہنگا رکنیت کا نظام ہے
  • دوسرا یہ کہ بہت کم تبادلے ہوتے ہیں جہاں سگنل براہ راست تجارت کے قابل ہوتے ہیں، ایسا لگتا ہے کہ دو یا تین ہوتے ہیں۔

آج ہمارا مضمون آپ کو ایکسچینج ڈاکنگ کے مسائل کو حل کرنے کے لئے لے جائے گا.

نفاذ

مجموعی طور پر خیال کچھ اس طرح ہے:

ٹی وی ((ٹریڈنگ ویو)pineاسکرپٹ -> سگنل الارمwebhook-> مقامیwebhook serverمنتقلی کی درخواست -> FMZ بوٹ کام کرنے کی درخواست وصول کرتا ہے

چلو قدم بہ قدم چلتے ہیں۔

ٹریڈنگ ویو ویب سائٹ پر جائیں:

https://www.tradingview.com/

اگلا، ہم سب سے پہلے ایک تخلیقAlert، تفصیلات کے لیے نیچے دی گئی شکل دیکھیں۔

Interfacing with FMZ robot using “Tradingview” indicator

تصویر میں کچھ پہلوؤں پر توجہ دینے کی ضرورت ہے، جب پیداAlert.

درستگی کی مدت،webhookپتہ، اورmessageمواد کو اچھی طرح سے بنایا جانا چاہیے۔

ختم ہونے کی تاریخ، یہ ایک نظر میں پتہ چل جائے گا، اور یہ ختم ہو جائے گا جب یہ غیر قانونی ہو جائے گا...


```Message``` here, it is best we have a clear explanation, in order to let the ```bot``` distinguish from ```Alert``` messages.

I generally set it like this: XXX strategy, order quantity and trading direction

So far, the TradingView part is basically done!

Next, let's get the local ```webhook``` service job done!

This kind of work, Google it will show you lots of results. this article will skip this part, you can do it by yourself.

here is a simple framework for python:

گٹ ہب:https://github.com/shawn-sterling/gitlab-webhook-receiver


Safe, worry-free and convenient, but there are also issues.

This little frame, it will!! Suicide!! Please pay attention to this issue!

So, I wrote another script on the server, When "die" or "offline" appears in the log, I will restart it. later on, i still feel not safe, so i set it restart regularly. Find an unimportant time every hour... Give it a restart, it has been safely running for two months now and there is no more signal losses.

In addition, TradingView only recognizes the port 80, so don't mess up the service port.

So far, We have done the ```Message``` from ```Alert``` part. Next, how do we get Bot?

I don't know if you have paid attention to the interface API document of FMZ at the bottom:

 ![Interfacing with FMZ robot using "Tradingview" indicator](/upload/asset/6e82463afe0dfbc15d96.png) 

We can pass some commands to our little Bot through API!
The specific request example is here, the red box is the request we need.

 ![Interfacing with FMZ robot using "Tradingview" indicator](/upload/asset/6e8cc24e284428b14724.png) 

Here also needs some preparation work.
FMZ API (avatar->account settings->API interface),
A Bot that has been started (we want to get its ID, so we create a new ID first), the number in the URL of a general robot is the ID.

 ![Interfacing with FMZ robot using "Tradingview" indicator](/upload/asset/6e6055878d778eea6265.png) 

Next, we transform the webhook service so that after receiving the message, it will be automatically forwarded to the FMZ Bot.

Finally, don’t forget to fill in the completed ```webhook``` address in the TradingView Alert(format: http://xx.xx.xx.xx:80)

The following is the ```service``` code I changed, you can use it as a reference:

#!/usr/bin/python -tt

-- کوڈنگ: UTF-8 --

سے BaseHTTPServer درآمد BaseHTTPRequestHandler، HTTPServer json درآمد کریں درآمد لاگنگ درآمد لاگنگ۔ ہینڈلرز درآمدات درآمد درآمد کریں درآمد کا ذیلی عمل درآمد کا وقت درآمد ایس ایس ایل ssl._create_default_https_context = ssl._create_unverified_context

کوشش کریں: درآمد md5 درآمد urllib2 سے urllib درآمد urlencode سوائے: hashlib کو md5 میں درآمد کریں urllib.request کو urllib2 کے طور پر درآمد کریں سے urllib.parse درآمد urlencode

############################################################

آپ کو شاید مندرجہ ذیل میں سے کچھ تبدیلیاں کرنے کی ضرورت ہو گی

اس اسکرپٹ کے لئے لاگ فائل

log_file = /root/webhook/VMA/webhook.log

بوٹ اے پی آئی لائسنس

accessKey = secretKey =

HTTP ترتیب دیں

log_max_size = 25165824 # 24 MB log_level = لاگنگ.INFO #log_level = logging.DEBUG # DEBUG کافی لفظی ہے

listen_port = 80

آپ کو چیزوں کو تبدیل کرنے سے روکنا چاہئے جب تک کہ آپ نہیں جانتے کہ آپ کیا کر رہے ہیں

##############################################################################

log = logging.getLogger ((log) log.setLevel ((log_level) log_handler = logging.handlers.RotatingFileHandler ((لاگ_فائل، maxBytes=log_max_size، backupCount=4) f = logging.Formatter(%(asctime) s %(فائل نام) s %(سطح نام) s %(پیغام) s ، %B %d %H:%M:%S) log_handler.setFormatter ((f) log.addHandler ((لاگ_ہینڈلر)

کلاس 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

ڈیف اہم ((): اہم واقعہ. کوشش کریں: سرور = HTTPServer (((, listen_port), webhookReceiver) log.info ((ویب سرور شروع...) سرور.serve_forever() سوائے KeyboardInterrupt کے: log.info ((ctrl-c دبایا، بند.) سرور.سوکٹ.بند کریں

اگرنام == ‘اہم: اہم (()


# Implementation within FMZ platform trading strategy

All the above described the communication implementation, our Bot trading strategy also needs to be processed accordingly, in order for us to fix our receiving signal process.

For example, the Alert Message designed at the beginning, You can play it according to your preferences and specific needs. 

The code is as follows, get the information, filter them, do the operation, and end.

فنکشن get_Command() { //انٹریکشن کے لئے ذمہ دار فنکشن، وقت میں انٹرایکٹو متعلقہ اقدار کو اپ ڈیٹ، صارفین کو خود کی طرف سے توسیع کر سکتے ہیں var way = null؛ //route var cmd = GetCommand(); // انٹرایکٹو کمانڈ 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;
     }
 }

} “`

یہ مضمون ختم ہوا، امید ہے کہ یہ آپ کی مدد کر سکتا ہے!

متعلقہ سفارشات
مزید معلومات