وسائل لوڈ ہو رہے ہیں... لوڈنگ...

FMZ API ہدایات

مصنف:صفر, تخلیق: 2020-04-20 10:19:00, تازہ کاری: 2023-04-12 14:44:56

xchangeList()

GetExchangeList()سپورٹ کردہ تبادلے کی فہرست اور مطلوبہ ترتیب کی معلومات واپس کرتا ہے۔

  • پیرامیٹر کوئی نہیں

  • واپسی کی قیمت

    {
        "code": 0,
        "data": {
            "result": {
                "exchanges": [{
                    "website": "https://www.huobi.pro/",
                    "name": "Huobi",
                    "priority": 1,
                    "meta": "[{"desc": "Access Key", "required": true, "type": "string", "name": "AccessKey", "label": "Access Key"}, {"encrypt": true, "name": "SecretKey", "required": true, "label": "Secret Key", "type": "password", "desc": "Secret Key"}]",
                    "eid": "Huobi",
                    "logo": "huobi.png",
                    "id": 1
                }, {
                    "website": "https://www.kex.com/",
                    "name": "KEX",
                    "priority": -99,
                    "meta": "[{"desc": "Access Key", "required": true, "type": "string", "name": "AccessKey", "label": "Access Key"}, {"encrypt": true, "name": "SecretKey", "required": true, "label": "Secret Key", "type": "password", "desc": "Secret Key"}, {"encrypt": true, "required": true, "type": "password", "name": "Password", "label": "Trading Password"}]",
                    "eid": "KEX",
                    "logo": "",
                    "id": 43
                }, 
    
                 ...
          
                ]
            },
            "error": null
        }
    }
    

DeleteNode ((نیڈ)

DeleteNode(Nid)ڈاکر نوڈ کو حذف کرتا ہے (IDہےNid) کے مطابقAPI KEYایف ایم زیڈ کوانٹ ٹریڈنگ پلیٹ فارم اکاؤنٹ کی درخواست میں۔

  • پیرامیٹرNidانٹیجر کی قسم ہے، یعنی ڈاکرID.

  • واپسی کی قیمت

    {
        "code":0,
        "data":{
            "result":true,
            "error":null
        }
    }
    

DeleteRobot(...)

DeleteRobot(RobotId, DeleteLogs)مخصوص ID کے ساتھ روبوٹ کو خارج کر دیتا ہے (روبوٹID: RobotId) کے مطابقAPI KEYFMZ Quant اکاؤنٹ کے تحت درخواست میں۔

  • پیرامیٹرRobotIdانٹیجر قسم کی ہے، یعنی روبوٹIDحذف کیا جائے۔DeleteLogsبولیائی قسم کا ہے۔DeleteLogsیہ فیصلہ کرنے کے لئے کہ آیا لاگ کو حذف کرنا ہے یا نہیں؛trueلاگ کو حذف کرنے کی نشاندہی کرتا ہے۔

  • واپسی کی قیمت

    // Return value after successful deletion
    {
        "code": 0,
        "data": {
            "result": 0,
            "error": null
        }
    }
    

GetStrategyList حاصل کریں (()

GetStrategyList()کے مطابق حکمت عملی کی معلومات حاصلAPI KEYایف ایم زیڈ کوانٹ ٹریڈنگ پلیٹ فارم اکاؤنٹ کی درخواست میں۔

  • پیرامیٹر کوئی نہیں

  • واپسی کی قیمت

    {
        "code": 0,
        "data": {
            "result": {
                "strategies": [{
                    "category": 0,
                    "username": "yifidslei",
                    "is_owner": true,
                    "name": "fmz simulation market test strategy",
                    "language": 0,
                    "hasToken": false,
                    "args": "[]",
                    "is_buy": false,
                    "public": 0,
                    "last_modified": "2018-01-18 12:36:03",
                    "date": "2018-01-17 09:19:32",
                    "forked": 0,
                    "id": 63372
                }, {
                    "category": 20,
                    "username": "bifndslez",
                    "is_owner": true,
                    "name": "Line drawing library",
                    "language": 0,
                    "hasToken": false,
                    "args": "[]",
                    "is_buy": false,
                    "public": 0,
                    "last_modified": "2017-05-08 09:44:18",
                    "date": "2017-04-19 10:38:14",
                    "forked": 0,
                    "id": 39677
                },
                
                ...
                ],
                "all": 20
            },
            "error": null
        }
    }
    

نیا روبوٹ ((ترتیبات)

NewRobot(Settings)پیرامیٹر کی ترتیبات کے مطابق ایک نیا بوٹ بناتا ہے،API KEYFMZ Quant اکاؤنٹ کی درخواست میں۔

  • پیرامیٹرSettingsہےJSONآبجیکٹ کی قسمSettingsہےJSONروبوٹ کی طرف سے تشکیل اعتراض.

    کےSettingsوضاحت مندرجہ ذیل ہے:

    Settings = {
        "name": "hedge test",
        /*
        Strategy parameters; the order does not have to be in correspondence with the parameter order, but the name must be the same as the parameter name 
        Note: the second element in the parameter array ["MAType", 0, 75882] is an array including three elements, in which the first one "MAType" is the parameter on the pattern referred by the bot-binding strategy, and the second one "0" is the specific value set by the parameter "MAType", and the third one "75882" is the pattern ID containing the parameter "MAType"
        */
        "args": [["Interval", 500], ["MAType", 0, 75882]],
        // Strategy ID, which can be obtained by "GetStrategyList" method
        "strategy": 25189,                      
        // K-line period parameter; "60" indicates 60 seconds
        "period": 60,                           
        // it can be specified to run on which docker; no writing of the attribute will lead to automatic assignment 
        "node" : 52924,                         
        // custom field
        "appid": "member2",
        // Specify a bot group
        "group": 1122,
        "exchanges": [
            // ZB; "pid" can be obtained by "GetPlatformList" method 
            {"pid": 15445, "pair": "ETH_BTC"},     
            // OKEX
            {"pid": 13802, "pair": "BCH_BTC"},     
            // In addition to the exchanges configured by the FMZ dashboard (pid identification), you can also set exchange configuration information that has not been configured to operate the bot 
            {"eid": "OKEX", "pair": "ETH_BTC", "meta" :{"AccessKey": "xxx", "SecretKey": "yyy"}},
            {"eid": "Huobi", "pair": "BCH_BTC", "meta" :{"AccessKey": "xxx", "SecretKey": "yyy"}}
        ]
    }
    

    نوٹ: جب آپ حساس معلومات استعمال کرتے ہیں، جیسے پلیٹ فارمAPI KEY، بشمول"meta":{"AccessKey":"xxx","SecretKey":"yyy"}کی تشکیل میںeid، آپ کو معلوم ہونا چاہئے کہ ایف ایم زیڈ ڈیٹا کو اسٹور نہیں کرتا ہے۔ ڈیٹا براہ راست ڈوکر پروگرام میں بھیجا جائے گا ، لہذا جب بھی بوٹ بنایا جاتا ہے یا دوبارہ شروع ہوتا ہے تو اس معلومات کو تشکیل دینا ضروری ہے۔

    پلیٹ فارم کی حمایت کرنے کے لئے پلگ ان کا استعمال کرتا ہے کہ بوٹ کو دوبارہ شروع کرنے کے لئے، جب ترتیبSettingsپیرامیٹر، آپ کو مندرجہ ذیل ترتیبات کے لئے کرنا چاہئےexchangesصفت:

    {"eid": "Exchange", "label" : "testXXX", "pair": "ETH_BTC", "meta" :{"AccessKey": "123", "SecretKey": "1234", "Front" : "http://127.0.0.1:6666/XXX"}}
    

    labelخاصیت موجودہ عام پروٹوکول کی طرف سے حاصل کیا جا سکتا ہے جس میں تبادلہ اعتراض کے لئے ایک لیبل مقرر کرنے کے لئے ہےexchange.GetLabel()اسٹریٹجی میں کردار.

  • ٹیسٹ کی حکمت عملی:

    • حکمت عملی پیرامیٹرInterval

    • JavaScriptحکمت عملی کا کوڈ

      function main(){
          Log(exchange.GetAccount())
          Log(exchange.GetTicker())
          Log(exchange.GetDepth())
          Log("Interval:", Interval)
      }
      
  • واپسی کی قیمت

    // Create the bot successfully 
    {
        "code": 0,
        "data": {
            "result": 74260,
            "error": null
        }
    }
    

پلگ ان چلائیں ((ترتیبات)

PluginRun(Settings)کال کرنے کے لئے توسیع API استعمال کرتا ہےڈیبگنگ کا آلہ function.

  • پیرامیٹرSettingsہےJSONاعتراض، یعنی ڈیبگنگ کے آلے میں ترتیبات (Settingsخصوصیت میں لکھا ٹیسٹ کوڈ پر مشتمل ہےsource).

  • ٹیسٹ کوڈPythonمثال:

    #!/usr/bin/python
    # -*- coding: utf-8 -*-
    import time
    import md5
    import urllib
    import json
    
    # API KEY has been blurred; you can use your own API KEY to test
    accessKey = 'f77XXXXXXXXXXXXXXX757'              
    # API KEY has been blurred; you can use your own API KEY to test
    secretKey = 'd8XXXXXXXXXXXXXXXX41ca97ea15'       
    
    def api(method, *args):
        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)).hexdigest()
        return json.loads(urllib.urlopen('https://www.fmz.com/api/v1', urllib.urlencode(d)).read())
    
    code = '''
    function main() {
        Log(exchange.GetTicker())
        exchange.SetTimeout(2000);
        return exchanges[0].GetTicker()
    }
    '''
    
    settings = { 
        # K-line period parameter "60" indicates 60 seconds
        "period": 60,                                 
        "source": code, 
        # The docker ID can specify which docker to run the bot on; if the value is -1, it means automatic assignment 
        "node" : 54913,                               
        "exchanges": [
            {"eid": "OKEX", "pair": "ETH_BTC", "meta" :{"AccessKey": "123abc", "SecretKey": "123abc"}},
            {"eid": "Huobi", "pair": "BCH_BTC", "meta" :{"AccessKey": "123abc", "SecretKey": "123abc"}}
        ]
    }
    
    print api("PluginRun", settings)
    

    نوٹ:{"eid": "OKEX", "pair": "ETH_BTC", "meta" :{"AccessKey": "123abc", "SecretKey": "123abc"}} {"eid": "Huobi", "pair": "BCH_BTC", "meta" :{"AccessKey": "123abc", "SecretKey": "123abc"}}کے لئےexchangesمیں وصفترتیبات، وصف صرف 1 پر مقرر کرنے کی ضرورت ہے، جب کال کرنے کے لئےPluginRunانٹرفیس (صرف ایک تبادلہ اعتراض کے لئے حمایت کی جا سکتی ہے جب آپ Debug Tool صفحہ استعمال کرتے ہیں).ترتیبات، لیکن ایک غلطی کی اطلاع دی جائے گی جب دوسرا تبادلہ اعتراض کوڈ میں تک رسائی حاصل کی جاتی ہے.

  • واپسی کی قیمتapi("PluginRun", settings)لوٹائے گئے نتائج:

    {
        u'code': 0, 
        u'data': {
            u'result': u'{"logs":[{"PlatformId":"","OrderId":"0","LogType":5,"Price":0,"Amount":0,"Extra":"{\\"Info\\":{\\"date\\":\\"1523715057\\",\\"ticker\\":{\\"high\\":\\"0.06400845\\",\\"vol\\":\\"117648.31546800\\",\\"last\\":\\"0.06204514\\",\\"low\\":\\"0.06178666\\",\\"buy\\":\\"0.06200001\\",\\"sell\\":\\"0.06208728\\"}},\\"High\\":0.06400845,\\"Low\\":0.06178666,\\"Sell\\":0.06208728,\\"Buy\\":0.06200001,\\"Last\\":0.06204514,\\"Volume\\":117648.315468,\\"OpenInterest\\":0,\\"Time\\":1523715057726}","Instrument":"","Direction":"","Time":1523715057726}],"result":"{\\"Info\\":{\\"date\\":\\"1523715057\\",\\"ticker\\":{\\"vol\\":\\"117648.31546800\\",\\"last\\":\\"0.06204514\\",\\"low\\":\\"0.06178666\\",\\"buy\\":\\"0.06200001\\",\\"sell\\":\\"0.06208728\\",\\"high\\":\\"0.06400845\\"}},\\"High\\":0.06400845,\\"Low\\":0.06178666,\\"Sell\\":0.06208728,\\"Buy\\":0.06200001,\\"Last\\":0.06204514,\\"Volume\\":117648.315468,\\"OpenInterest\\":0,\\"Time\\":1523715057774}"}\n', 
            u'error': None
        }
    }
    

GetRobotLogs(...)

GetRobotLogs(robotId, logMinId, logMaxId, logOffset, logLimit, profitMinId, profitMaxId, profitOffset, profitLimit, chartMinId, chartMaxId, chartOffset, chartLimit, chartUpdateBaseId, chartUpdateDate, summaryLimit)روبوٹ لاگ کی معلومات حاصل کرتا ہے (روبوٹID: robotId), کے مساویAPI KEYFMZ Quant اکاؤنٹ کی درخواست میں۔

  • پیرامیٹر

    پیرامیٹر کا نام قسم تبصرے
    روبوٹ عدد بوٹ آئی ڈی

    ٹیبل لاگڈیٹا بیس ٹیبل کے لاگ ڈیٹا سے پوچھتا ہے:

    پیرامیٹر کا نام قسم تبصرے
    logMinId عدد لاگ کی کم از کم شناخت
    logMaxId عدد ریکارڈ کی زیادہ سے زیادہ شناخت
    لاگ آفسیٹ عدد logMinId اور logMaxId کی طرف سے رینج کا تعین کیا جاتا ہے کے بعد، logOffset آفسیٹ (کتنے ریکارڈ کو چھوڑ دیا جاتا ہے) ڈیٹا حاصل کرنے کے لئے ابتدائی پوزیشن کے طور پر استعمال کیا جا کرنے کے لئے شروع ہوتا ہے
    logLimit عدد ابتدائی پوزیشن کا تعین کرنے کے بعد، منتخب کردہ ڈیٹا ریکارڈز کی تعداد

    ٹیبل منافعڈیٹا بیس ٹیبل کے منافع کے اعداد و شمار کو پوچھتا ہے:

    پیرامیٹر کا نام قسم تبصرے
    منافع MinId عدد ریکارڈ کی کم از کم شناخت
    منافعMaxId عدد ریکارڈ کی زیادہ سے زیادہ شناخت
    منافع آفسیٹ عدد آفسیٹ (کتنے ریکارڈ کو چھوڑ دیا جاتا ہے) شروع ہونے والی پوزیشن کے طور پر استعمال کیا جا کرنے کے لئے شروع ہوتا ہے
    منافع حد عدد ابتدائی پوزیشن کا تعین کرنے کے بعد، منتخب کردہ ڈیٹا ریکارڈز کی تعداد

    ٹیبل گرافڈیٹا بیس ٹیبل کے چارٹ کے اعداد و شمار کو پوچھتا ہے:

    پیرامیٹر کا نام قسم تبصرے
    چارٹ عدد ریکارڈ کی کم از کم شناخت
    چارٹMaxId عدد ریکارڈ کی زیادہ سے زیادہ شناخت
    چارٹ آفسیٹ عدد آفسیٹ
    چارٹ حد عدد حاصل کیے جانے والے ریکارڈوں کی تعداد
    چارٹUpdateBaseId عدد تازہ کاری شدہ بیس آئی ڈی کو دریافت کریں
    چارٹUpdateDate عدد ڈیٹا ریکارڈ ٹائم اسٹیمپ کو اپ ڈیٹ کرتا ہے جو اس ٹائم اسٹیمپ سے بڑے ریکارڈ کو فلٹر کرے گا

    خلاصہ حدحالت بار کے اعداد و شمار کو پوچھتا ہے:

    یہ بوٹ کے اسٹیٹس بار ڈیٹا سے استفسار کرتا ہے۔ پیرامیٹر کی قسم عدد ہے۔ 0 کی ترتیب کا مطلب ہے کہ اسٹیٹس بار کی معلومات سے استفسار کرنے کی ضرورت نہیں ہے ، اور غیر صفر نمبر کی ترتیب سے اسٹیٹس بار کی معلومات کی بائٹس کی تعداد ظاہر ہوتی ہے جس سے استفسار کیا جائے (انٹرفیس ڈیٹا کی مقدار کو محدود نہیں کرتا ہے ، لہذا آپ ایک بڑی تعداد کی وضاحت کرسکتے ہیں)summaryLimitتمام حیثیت بار کی معلومات حاصل کرنے کے لئے پیرامیٹر). حالت بار کے اعداد و شمار واپس اعداد و شمار میں محفوظ کیا جاتا ہےsummary.

    Pythonمثال:

    api('GetRobotLogs', 63024, 0, 0, 7, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)    # For the specific code, please refer to the above content: 4. Simple examples, which will not be repeated here; here only write the call and pass of "GetRobotLogs"
    
  • واپسی کی قیمت واپس کیے گئے ڈیٹا:

    {
        "code": 0,
        "data": {
            "result": {
                "status": 1,
                "updateTime": 1527049990197,
                "wd": 0,
                // The first data structure in logs is the log records in the strategy log table in the bot database
                "logs": [{            
                    "Max": 3984,
                    "Arr": [
                        [3977, 3, "Futures_OKCoin", "", 0, 0, "Sell(688.9, 2): 20016", 1526954372591, "", ""],
                        [3976, 5, "", "", 0, 0, "OKCoin:this_week too many positions, long: 2", 1526954372410, "", ""]
                    ],
                    "Total": 1503,
                    "Min": 2482
                }, {                  
                    // The second data structure in logs is the log records in the strategy log table in the bot database
                    "Max": 0,
                    "Arr": [],
                    "Total": 0,
                    "Min": 0
                }, {                  
                    // The third data structure in logs is the log records in the strategy log table in the bot database
                    "Max": 0,
                    "Arr": [],
                    "Total": 0,
                    "Min": 0
                }],
                "chart": "",
                "refresh": 1527049988000,
                "summary": "...", 
                "chartTime ": 0, 
                "node_id ": 50755, 
                "online ": true
            }, 
            "error ": null
        }
    }
    
  • ڈیٹا بیس میں حکمت عملی لاگ ٹیبل

    کےArrمندرجہ بالا واپس کیے گئے نتائج کے اعداد و شمار میں صفات کی قدر کا بیان:

    "Arr": [
        [3977, 3, "Futures_OKCoin", "", 0, 0, "Sell(688.9, 2): 20016", 1526954372591, "", ""],
        [3976, 5, "", "", 0, 0, "OKCoin:this_week too many positions, long: 2", 1526954372410, "", ""]
    ],
    
    آئی ڈی لاگ ٹائپ ایڈ حکم دیا قیمت رقم اضافی تاریخ معاہدہٹائپ سمت
    3977 3 فیوچر_اوکی کوئن "" 0 0 فروخت ((688.9, 2): 20016 1526954372591 "" ""
    3976 5 "" "" 0 0 OKCoin:this_week too many positions, long: 2 1526954372410 "" ""

    extraپرنٹ شدہ لاگ کا منسلک پیغام ہے۔

    مخصوص لکڑی کے اقسام کی نمائندگی:logTypeقدر:

    لاگ ٹائپ: 0 1 2 3 4 5 6
    logType کا مطلب: خریدیں فروخت واپس لیں غلطی منافع پیغام دوبارہ شروع کریں
    چینی معنی آرڈر کی قسم خریدیں فروخت کے آرڈر کی قسم کا نوشتہ واپس لیں غلطی آمدنی لاگ دوبارہ شروع کریں
  • ڈیٹا بیس میں آمدنی کے چارٹ کا لاگ ٹیبل چارٹ کی لاگ ٹیبل میں موجود اعداد و شمار حکمت عملی لاگ ٹیبل میں آمدنی لاگ کے مطابق ہیں۔

    "Arr": [
        [202, 2515.44, 1575896700315],
        [201, 1415.44, 1575896341568]
    ]
    

    مثال کے طور پر لاگ ڈیٹا میں سے ایک لے لو:

    [202, 2515.44, 1575896700315]
    

    202بطور لاگID; 2515.44آمدنی کے طور پر؛1575896700315جیسے ٹائم اسٹیمپ۔

  • ڈیٹا بیس میں چارٹ لاگ ٹیبل

    "Arr": [
        [23637, 0, "{\"close\":648,\"high\":650.5,\"low\":647,\"open\":650,\"x\":1575960300000}"],
        [23636, 5, "{\"x\":1575960300000,\"y\":3.0735}"]
    ]
    

    مثال کے طور پر لاگ ڈیٹا میں سے ایک لے لو:

    [23637, 0, "{\"close\":648,\"high\":650.5,\"low\":647,\"open\":650,\"x\":1575960300000}"],
    

    23637لاگ ہےID, 0چارٹ ڈیٹا سیریز کا انڈیکس ہے، اور آخری ڈیٹا"{\"close\":648,\"high\":650.5,\"low\":647,\"open\":650,\"x\":1575960300000}"لاگ ڈیٹا ہے۔ یہ ڈیٹا چارٹ پر K لائن ڈیٹا ہے۔

ٹریڈنگ پلگ ان

تعارف

تجارتی ٹرمینل کے افعال کو بہتر بنانے اور دستی تجارت کو بہتر بنانے کے لئے ، اب ایک پلگ ان فنکشن دستیاب ہے۔ مقام مندرجہ ذیل دکھایا گیا ہے۔

img

پلگ ان کا اصول

اصول ڈیبگنگ ٹول کی طرح ہی ہے: ڈاکر کو ٹریڈ ٹرمینل پیج پر ایک کوڈ کا ٹکڑا بھیجنے کے لئے ، اور چارٹ اور ٹیبلز کی واپسی کی حمایت کریں (ڈیبگنگ ٹول اپ گریڈ کے بعد بھی تعاون کرنے کے قابل ہے) ۔ فنکشن اسی طرح ہےڈیبگنگ کا آلہ، یہ صرف 3 منٹ کے لئے چلایا جا سکتا ہے، چارج کے بغیر. یہ کچھ سادہ چھوٹے افعال کا احساس کر سکتے ہیں، پیچیدہ حکمت عملی اب بھی حقیقی ٹریڈنگ میں چلانے کی ضرورت ہے.

پلگ ان لکھنا

صفحہ نئی حکمت عملی پر، حکمت عملی کی قسم مقرر کریں:Trading Plugin، جو حمایت کرتا ہےJavaScript, Python, cppاورMyLanguage.

img

پلگ ان کا استعمال

پلگ ان کوڈ ایک وقت کی مدت کے لئے عملدرآمد کر سکتے ہیں، اور یہ کچھ سادہ آپریشن انجام دے سکتے ہیں، جیسےآئس برگ آرڈر, زیر التواء احکامات, آرڈر منسوخیاورآرڈر کا حساب. اسی طرحڈیبگنگ کا آلہ، یہ استعمال کرتا ہےreturnنتائج واپس کرنے کے لئے، اور یہ بھی براہ راست چارٹ اور میزیں واپس کر سکتے ہیں. یہاں چند مثالیں ہیں، اور دیگر افعال کو خود کی طرف سے دریافت کیا جا سکتا ہے.

  • گہرائی اسنیپ شاٹ پر واپس جائیں

    // Return to the depth snapshot
    function main() {
        var tbl = { 
            type: 'table', 
            title: 'snapshot of the order depth @ ' + _D(), 
            cols: ['#', 'Amount', 'Ask', 'Bid', 'Amount'], 
            rows: []
        }
        var d = exchange.GetDepth()
        for (var i = 0; i < Math.min(Math.min(d.Asks.length, d.Bids.length), 15); i++) {
            tbl.rows.push([i, d.Asks[i].Amount, d.Asks[i].Price+'#ff0000', d.Bids[i].Price+'#0000ff', d.Bids[i].Amount])
        }
        return tbl
    }
    
    def main():
        tbl = {
            "type": "table",
            "title": "snapshot of the order depth @ " + _D(),
            "cols": ["#", "Amount", "Ask", "Bid", "Amount"],
            "rows": []
        }
        d = exchange.GetDepth()
        for i in range(min(min(len(d["Asks"]), len(d["Bids"])), 15)):
            tbl["rows"].append([i, d["Asks"][i]["Amount"], str(d["Asks"][i]["Price"]) + "#FF0000", str(d["Bids"][i]["Price"]) + "#0000FF", d["Bids"][i]["Amount"]])
        return tbl
    
    void main() {
        json tbl = R"({
            "type": "table",
            "title": "abc",
            "cols": ["#", "Amount", "Ask", "Bid", "Amount"],
            "rows": []   
        })"_json;
        
        tbl["title"] = "snapshot of the order depth @" + _D(); 
        auto d = exchange.GetDepth();
        for(int i = 0; i < 5; i++) {
            tbl["rows"].push_back({format("%d", i), format("%f", d.Asks[i].Amount), format("%f #FF0000", d.Asks[i].Price), format("%f #0000FF", d.Bids[i].Price), format("%f", d.Bids[i].Amount)});
        }
        
        LogStatus("`" + tbl.dump() + "`");
        // C++ does not support "return json" to display the table, and you can create a bot to display the table of the status bar 
    }
    

    img

  • کراس پیریڈ اسپریڈز کا تعین کریں

    // Draw cross-period spreads
    var chart = { 
        __isStock: true,    
        title : { text : 'spread analysis chart'},                     
        xAxis: { type: 'datetime'},                 
        yAxis : {                                        
            title: {text: 'spread'},                   
            opposite: false                   
        },
        series : [                    
            {name : "diff", data : []}
        ]
    }  
    
    function main() {
        exchange.SetContractType('quarter')
        var recordsA = exchange.GetRecords(PERIOD_M5)
        exchange.SetContractType('this_week')
        var recordsB = exchange.GetRecords(PERIOD_M5)
        
        for(var i = 0; i < Math.min(recordsA.length, recordsB.length); i++){
            var diff = recordsA[recordsA.length - Math.min(recordsA.length, recordsB.length) + i].Close - recordsB[recordsB.length - Math.min(recordsA.length, recordsB.length) + i].Close
            chart.series[0].data.push([recordsA[recordsA.length - Math.min(recordsA.length, recordsB.length) + i].Time, diff])
        }
        return chart
    }
    
    chart = {
        "__isStock": True,
        "title": {"text": "spread analysis chart"},
        "xAxis": {"type": "datetime"},
        "yAxis": {
            "title": {"text": "spread"}, 
            "opposite": False
        }, 
        "series": [
            {"name": "diff", "data": []}
        ]
    }  
    
    def main():
        exchange.SetContractType("quarter")
        recordsA = exchange.GetRecords(PERIOD_M5)
        exchange.SetContractType("this_week")
        recordsB = exchange.GetRecords(PERIOD_M5)  
    
        for i in range(min(len(recordsA), len(recordsB))):
            diff = recordsA[len(recordsA) - min(len(recordsA), len(recordsB)) + i].Close - recordsB[len(recordsB) - min(len(recordsA), len(recordsB)) + i].Close
            chart["series"][0]["data"].append([recordsA[len(recordsA) - min(len(recordsA), len(recordsB)) + i]["Time"], diff])
        return chart
    
    // C++ does not support "return json" structure drawing
    

    img

    زیادہ حکمت عملی میں دیگر مثالیں ہیں، جیسے:چھوٹی مقدار میں خرید / فروخت, حکمت عملی کا پتہ.

استعمال کا طریقہ

  • ٹریڈنگ ٹرمینل کے پلگ ان ماڈیول شامل کریں جیسا کہ شبیہہ میں دکھایا گیا ہے، Trade ٹرمینل کے صفحے پر ماڈیول شامل مینو کھولیں، ٹریڈنگ ٹرمینل پلگ ان میںحکمت عملی لائبریریموجودہ FMZ اکاؤنٹ کی فہرست میں خود کار طریقے سے دکھایا جائے گا، شامل کرنے کے لئے پلگ ان تلاش کریں اور Add پر کلک کریں.

    img

  • پلگ ان چلائیں Execute پر کلک کریں ، اور ٹریڈنگ ٹرمینل پلگ ان چلانے لگے گا۔ پلگ ان لاگ کو ظاہر نہیں کرے گا ، لیکن یہ ڈسپلے ٹیبل واپس کرسکتا ہے۔

  • پلگ ان چلانے کا وقت پلگ ان کا زیادہ سے زیادہ چلانے کا وقت 3 منٹ ہے۔ اور یہ 3 منٹ سے زیادہ ہونے کے بعد خود بخود چلانے سے باز آجائے گا۔

الفا فیکٹر تجزیہ کا آلہ

تعارف

تجزیہ فارمولا مارکیٹ کوٹ کے حساب کے طریقہ کار کا حوالہ دیتا ہےalpha101کےworldquant: http://q.fmz.com/chart/doc/101_Formulaic_Alphas.pdf، جو بنیادی طور پر اس کے گرامر کے ساتھ مطابقت رکھتا ہے (غیر نافذ کردہ خصوصیات کی وضاحت کے ساتھ) ، اور بہتر بنایا گیا ہے۔ یہ وقت کی سیریز پر تیزی سے حساب کتاب کرنے اور خیالات کی توثیق کے لئے استعمال کیا جاتا ہے،ایڈریس استعمال کریں.

صفحہ تعارف:

img

افعال اور آپریٹر

"{}" ذیل میں پلیس ہولڈر کی نمائندگی کرتا ہے، تمام اظہار بڑے اور چھوٹے حرف کے حساس نہیں ہیں، اور x ڈیٹا ٹائم سیریز کی نمائندگی کرتا ہے

  • abs(x), log(x), sign(x)لفظی طور پر مطلق قدر، لوگرتھم اور علامت فنکشن کا مطلب ہے، بالترتیب.

مندرجہ ذیل آپریٹرز، بشمول+, -, *, /, >, <، ان کے معیار کے معنی بھی پورا کرتے ہیں؛==سمان یا نہیں؛||کا مطلب ہے or؛x? y: zترنری آپریٹر کی نشاندہی کرتا ہے.

  • rank(x): ٹرانس سیکشن کی درجہ بندی، جس میں مقام کی فیصد واپس آتی ہے۔ متعدد امیدواروں کے ہدف پول کی وضاحت کرنا ضروری ہے ، جو ایک واحد مارکیٹ کے لئے حساب نہیں لگایا جاسکتا ہے اور براہ راست اصل نتیجہ واپس کرے گا۔
  • delay(x, d): تسلسل کے d مدت سے پہلے کی قدر.
  • sma(x, d): ترتیب کے d مدت کا سادہ چلتا ہوا اوسط.
  • correlation(x, y, d): پچھلے d ادوار کے دوران وقت کی سیریز x اور y کے correlation ضارب.
  • covariance(x, y, d): گزشتہ d ادوار میں وقت سیریز x اور y کے covariance.
  • scale(x, a): یہ اعداد و شمار کو معمول پر لاتا ہے، تاکہsum(abs(x)) = a(a ڈیفالٹ 1 پر).
  • delta(x, d): وقت کی سیریز x کی موجودہ قیمت منہا مدت d سے پہلے کی قیمت.
  • signedpower(x, a): x^a.
  • decay_linear(x, d): وقت کی سیریز x کے وزن شدہ d-period چلتی اوسط، وزن کے ساتھ d، d-1، d-2... 1 (معمولی).
  • indneutralize(x, g): صنعت کی درجہ بندی کے لئے غیر جانبدار پروسیسنگ g، فی الحال معاون نہیں ہے.
  • ts_{O}(x, d): ماضی کے d ادوار میں ٹائم سیریز x پر O آپریشن انجام دیں (O خاص طور پر min اور max وغیرہ کی نمائندگی کرسکتا ہے ، جو بعد میں متعارف کرایا گیا ہے) ، d کو ایک عدد میں تبدیل کیا جائے گا۔
  • ts_min(x, d): پچھلی d مدت کی کم از کم قیمت.
  • ts_max(x, d): گذشتہ d ادوار کی زیادہ سے زیادہ قیمت.
  • ts_argmax(x, d): ts_max(x, d) position.
  • ts_argmin(x, d): ts_min(x, d) position.
  • ts_rank(x, d): گذشتہ d ادوار کے وقت سیریز x اقدار کی چھانٹ (فیصد چھانٹ).
  • min(x, d): ts_min(x, d).
  • max(x, d): ts_max(x, d).
  • sum(x, d): گذشتہ d ادوار کا مجموعہ
  • product(x, d): پچھلے d ادوار کی پیداوار
  • stddev(x, d): پچھلی d مدت کے معیاری انحراف.

ان پٹ ڈیٹا

ان پٹ کے اعداد و شمار بڑے اور چھوٹے حرفوں پر حساس نہیں ہیں؛ ڈیفالٹ ڈیٹا ویب صفحے پر منتخب کردہ علامت ہے، یا یہ براہ راست مخصوص کیا جا سکتا ہے، جیسے:binance.ada_bnb

  • returns: اختتامی قیمت کی واپسی.
  • open, close, high, low, volume: یعنی کھلنے کی قیمت، بند ہونے کی قیمت، سب سے زیادہ قیمت، سب سے کم قیمت اور مدت کے دوران ٹریڈنگ کا حجم.
  • vwap: حجم وزن شدہ عملدرآمد شدہ قیمت، ابھی تک لاگو نہیں کیا گیا، جو فی الحال اختتامی قیمت ہے.
  • cap: کل مارکیٹ ویلیو، ابھی تک لاگو نہیں کیا گیا ہے۔
  • IndClass: صنعت کی درجہ بندی، ابھی تک لاگو نہیں کیا گیا ہے.

دیگر

ایک ہی وقت میں متعدد نتائج (فہرست کے ذریعہ ظاہر کردہ) آؤٹ پٹ کی حمایت کی جاتی ہے۔ مثال کے طور پر ،[sma(close, 10), sma(high, 30)]چارٹ پر دو لائنیں کھینچیں گے۔ وقت کی سیریز کے اعداد و شمار کو ان پٹ کرنے کے علاوہ ، یہ ایک سادہ کیلکولیٹر کے طور پر بھی استعمال کیا جاسکتا ہے۔

اپینڈکس

جنرل پروٹوکول

ایف ایم زیڈ کوانٹ ٹریڈنگ پلیٹ فارم کے لئے جس نے ابھی تک ایکسچینج اے پی آئی انٹرفیس کو احاطہ نہیں کیا ہے ، اس تک عام پروٹوکول پلگ ان پروگرام لکھ کر رسائی حاصل کی جاسکتی ہے۔ آپ اس عام پروٹوکول کو کسی بھی تبادلے تک رسائی حاصل کرنے کے لئے استعمال کرسکتے ہیں جو تجارت کے لئے API انٹرفیس فراہم کرتا ہے ، اور مندرجہ ذیل دو پروٹوکول تعاون یافتہ ہیں:

کے درمیان فرقFIXپروٹوکول پلگ ان پروگرام اورRESTپروٹوکول پلگ ان پروگرام صرف پروٹوکول پلگ ان پروگرام اور تبادلے کے انٹرفیس کے مابین تعامل ہے۔ پروٹوکول پلگ ان پروگرام میں ڈوکر پروگرام کے تعامل اور ڈیٹا فارمیٹ کی ایک جیسی تفصیل سے پروسیسنگ ہے جیسے ایف ایم زیڈ کوانٹ۔ تفصیلات کے لئے ، براہ کرم مذکورہ بالا لنکس میں مثالوں کا حوالہ دیں۔

ٹریڈنگ ٹرمینل

ایف ایم زیڈ کوانٹ ٹریڈنگ پلیٹ فارم ایک ماڈیولر اور حسب ضرورتتجارتصفحہ۔ آپ آزادانہ طور پر مختلف ڈیٹا ماڈیولز اور تجارتی فنکشن ماڈیولز شامل کرسکتے ہیں ، اور یہاں تک کہ اپنے کوڈ ماڈیولز (ٹریڈنگ ٹرمینل پلگ ان) تیار کرسکتے ہیں۔ اس کے انتہائی لچکدار اور مفت استعمال کے ساتھ ، یہ دستی تجارت اور نیم پروگراماتی تجارت کے صارفین کو بھی بہت آسان بناتا ہے۔ Trade صفحے پر مختلف ماڈیولز کو گھسیٹا اور زوم کیا جاسکتا ہے ، ماڈیولز سے منسلک تجارتی جوڑوں اور تبادلے کی ترتیبات کو تبدیل کیا جاسکتا ہے ، اور ایک ہی قسم کے متعدد ماڈیولز شامل کیے جاسکتے ہیں۔

img

ڈیبگنگ ٹول

ڈیبگ ٹولصفحہ صرف حمایت کرتے ہوئے، بوٹ کی طرف سے تیزی سے کوڈ کی جانچ کرنے کے لئے ایک ماحول فراہم کرتا ہےJavaScript currently.

img

ریموٹ ترمیم

یہ مقامی ایڈیٹر FMZ مقدار ٹریڈنگ پلیٹ فارم کے لئے ریموٹ ہم وقت سازی کی حکمت عملی کوڈ کی حمایت کرتا ہے اور یہ حمایت کرتا ہےSublime Text/Atom/Vim/VSCodeایڈیٹر۔ حکمت عملی میں ترمیم کے صفحے پر ، کلک کریں ریموٹ ایڈیٹ موجودہ حکمت عملی کی ریموٹ ہم وقت سازی کی کلید (ٹوکن) ظاہر کرنے کے لئے پلگ ان ڈاؤن لوڈ ایڈریس بٹن کو کھولنے کے لئے۔

img

کلک کریں اپ ڈیٹ کی موجودہ کلید کی نمائش کو تازہ کرنے کے لئے، اور کلک کریں خارج کی موجودہ حکمت عملی کی خفیہ کلید (ٹوکن) کو حذف کرنے کے لئے.

img

مختلف ایڈیٹرز کے پلگ ان کی تنصیب کے طریقے قدرے مختلف ہیں۔ آپ مخصوص ریموٹ ہم وقت سازی پلگ ان آئٹم پر جانے کے لئے ڈاؤن لوڈ کے بٹن پر کلک کر سکتے ہیں۔

img

بوٹ پیرامیٹرز درآمد اور برآمد کریں

img

لائیو ٹریڈنگ چلانے کے دوران، آپ کو حقیقی بوٹ کی ترتیب کے پیرامیٹر ڈیٹا کو بچانے کی ضرورت ہے، آپ برآمد بٹن پر کلک کر سکتے ہیں. برآمد کی حکمت عملی پیرامیٹرز میں محفوظ کیا جائے گاJSONفائل، اور برآمد کی حکمت عملی پیرامیٹر کی ترتیب بھی حقیقی بوٹ میں دوبارہ درآمد کیا جا سکتا ہے. کلک کریں Import بٹن موجودہ حقیقی بوٹ میں محفوظ حکمت عملی بوٹ پیرامیٹرز درآمد کرنے کے لئے. پھر، کلک کریں Save محفوظ کرنے کے لئے.

حکمت عملی درآمد اور برآمد فائلیں

img

  • ماخذ کوڈ ڈاؤن لوڈ کریں حکمت عملی ماخذ کوڈ برآمد کریں، اور برآمد فائل کی قسم حکمت عملی پروگرامنگ زبان پر مبنی ہے. جاوا اسٹریٹجی توسیع کے ساتھ فائلوں برآمد کرتا ہےjs؛ python حکمت عملی توسیع کے ساتھ فائلوں کو برآمد کرتا ہےpy; C ++ حکمت عملی توسیع کے ساتھ فائلوں کو برآمدcpp; مائی لینگویج حکمت عملی توسیع کے ساتھ فائلوں کو برآمد کرتا ہےtxt. نوٹ کریں کہ صرف حکمت عملی کا ماخذ کوڈ برآمد کیا جاتا ہے، حکمت عملی کے پیرامیٹرز، ٹیمپلیٹ کے حوالہ جات وغیرہ شامل نہیں.

  • برآمداتی حکمت عملی مکمل حکمت عملی برآمد کریں، بشمول تمام حکمت عملی کی معلومات، جیسے حکمت عملی کا ماخذ کوڈ اور پیرامیٹر ڈیزائن. برآمد فائل ایک ہےxml file.

  • درآمد کی حکمت عملی استعمال کریںxmlفائل برآمد تقریب کی طرف سے برآمد، اور منتخب کرنے کے لئے حکمت عملی ترمیم کے صفحے پر درآمد بٹن پر کلک کریںxmlدرآمد کرنے کے لئے ، یعنی ، آپ ایک مکمل حکمت عملی درآمد کرسکتے ہیں۔ درآمد کرنے کے بعد ، آپ کو حکمت عملی کو محفوظ کرنے کے لئے محفوظ کریں بٹن پر کلک کرنے کی ضرورت ہے۔

کثیر لسانی مدد

حکمت عملی کے نام اور حکمت عملی پیرامیٹر کی وضاحت میں لکھا جا سکتا ہےChinese|English، ویب صفحات کی طرف سے تسلیم زبان میں خود کار طریقے سے دکھایا جاتا ہے.

img

img

دوسری جگہوں پر، جیسے:حکمت عملی کی تفصیل, استعمال کی ہدایاتاور دیگر نصوص میںMarkdownشکل، استعمال کرتے ہوئے[trans]Chinese|English[/trans]یا[trans]Chinese||English[/trans]خود کار طریقے سے شناخت کا اثر بھی حاصل کرسکتا ہے۔ مندرجہ بالا مثال کا اثر مندرجہ ذیل شکل میں دکھایا گیا ہے:

  • چینی زبان میں صفحہ دکھائیں:img

  • صفحہ انگریزی میں دکھائیں:img

زبان تبدیل کرنے کے بعد، یہ ویب صفحہ کو تازہ کرنے کے بعد اثرات لے گا.

افعال جو حکمت عملی کوڈ میں تار لکھ سکتے ہیں وہ بھی زبان سوئچنگ کی حمایت کرتے ہیں ، جیسے فنکشنLog، فنکشنLogStatus، وغیرہ

function main() {
    Log("[trans]日志|log[/trans]")
    var table = {
        type: "table", 
        title: "[trans]操作|option[/trans]", 
        cols: ["[trans]列1|col1[/trans]", "[trans]列2|col2[/trans]", "[trans]操作|option[/trans]"],
        rows: [ 
            ["[trans]比特币|BTC[/trans]", "[trans]以太坊|ETH[/trans]", {"type": "button", "cmd": "coverAll", "name": "平仓|cover", "description": "描述|description"}]  // Note: It doesn't need to add [trans] tag in the button
        ]
    }
    LogStatus("[trans]信息|message[/trans]", "\n`" + JSON.stringify(table) + "`")
    throw "[trans]错误|error[/trans]"
}
import json
def main():
    Log("[trans]日志|log[/trans]")
    table = {
        "type": "table", 
        "title": "[trans]操作|option[/trans]", 
        "cols": ["[trans]列1|col1[/trans]", "[trans]列2|col2[/trans]", "[trans]操作|option[/trans]"],
        "rows": [ 
            ["[trans]比特币|BTC[/trans]", "[trans]以太坊|ETH[/trans]", {"type": "button", "cmd": "coverAll", "name": "平仓|cover", "description": "描述|description"}]
        ]
    }
    LogStatus("[trans]信息|message[/trans]", "\n`" + json.dumps(table) + "`")
    raise Exception("[trans]错误|error[/trans]")
void main() {
    Log("[trans]日志|log[/trans]");
    json table = R"({
        "type": "table", 
        "title": "[trans]操作|option[/trans]", 
        "cols": ["[trans]列1|col1[/trans]", "[trans]列2|col2[/trans]", "[trans]操作|option[/trans]"],
        "rows": [ 
            ["[trans]比特币|BTC[/trans]", "[trans]以太坊|ETH[/trans]", {"type": "button", "cmd": "coverAll", "name": "平仓|cover", "description": "描述|description"}]
        ]
    })"_json;
    LogStatus("[trans]信息|message[/trans]", "\n`" + table.dump() + "`");
    Panic("[trans]错误|error[/trans]");
}

ویکس ایپ سمیلیشن مارکیٹ

  • 24 گھنٹے نان اسٹاپ آپریشن، طاقتور ٹریڈنگ میچنگ سسٹم، حقیقی ٹریڈنگ کا تقلید.
  • ایک طاقتور مارکیٹ بنانے والا بوٹ جو اچھی لیکویڈیٹی اور آرڈر بک کی گہرائی فراہم کرتا ہے۔
  • مکمل API انٹرفیس کی حمایت، نہ صرف FMZ مقدار میں تجربہ کیا جا سکتا ہے، بلکہ خود کی طرف سے API انٹرفیس سے رابطہ قائم کر سکتے ہیں، ایڈریس:ویکس ایپ.

ڈوکر پروگرام پیرامیٹرز

ڈوکر سافٹ ویئر ڈاؤن لوڈ کرنے کے بعد، ڈکمپریشن کے بعد قابل عمل فائل (فائل کا نام:robot) ڈوکر پروگرام ہے؛ ڈوکر پروگرام کے لئے پیرامیٹرز کو ڈوکر کی تعیناتی کے دوران مخصوص کیا جاسکتا ہے۔

  • -v: موجودہ docker پروگرام کے ورژن اور تالیف وقت سمیت معلومات کی جانچ پڑتال. مکمل عملدرآمد کمانڈ پر مبنی ہےApple Mac System: ./robot -v.
  • -s: ڈوکر پروگرام چلانے کے دوران FMZ کوانٹ ٹریڈنگ پلیٹ فارم کے ساتھ بات چیت کرنے کے لئے مخصوص ایڈریس. مکمل عملدرآمد کمانڈ پر مبنی ہےApple Mac System: ./robot -s node.fmz.com/xxxxxxx; xxxxxxxایف ایم زیڈ کوانٹ ٹریڈنگ پلیٹ فارم پر ہر اکاؤنٹ کا منفرد شناختی ID ہے۔ کمانڈ کو انجام دینے کے بعد ، متعلقہ ایف ایم زیڈ کوانٹ ٹریڈنگ پلیٹ فارم اکاؤنٹ کے پاس ورڈ کو داخل کرنے کا اشارہ ہوگا۔
  • -p: آپ کو براہ راست پاس ورڈ درج کرنے کے لئے چلانے کے حکم میں پیرامیٹر کی وضاحت کر سکتے ہیں، جس کی سفارش نہیں کی جاتی ہے، کیونکہ پاس ورڈ پیرامیٹر موجودہ نظام ریکارڈ میں چھوڑ دیا جائے گا.node.fmz.com/xxxxxxxہے:abc123456. مکمل عملدرآمد کمانڈ پر مبنی ہےApple Mac System: ./robot -s node.fmz.com/xxxxxxx -p abc123456.
  • -n: چل رہا ہے ڈوکر پروگرام کو لیبل کی معلومات منسلک. مکمل عملدرآمد کمانڈ پر مبنی ہےApple Mac System: ./robot -n macTest -s node.fmz.com/xxxxxxx. ایک ہو جائے گاmacTestپلیٹ فارم ڈوکر مینجمنٹ پیج پر ڈوکر کی معلومات میں ٹیکسٹ لیبل۔
  • -l: موجودہ ڈوکر کی طرف سے حمایت کی تبادلہ کی فہرست پرنٹ. مکمل عملدرآمد کمانڈ پر مبنی ہےApple Mac System: ./robot -l، یعنی، حمایت کی تبادلے کے ناموں کو آؤٹ پٹ کیا جا سکتا ہے.

بوٹ غلطی اور غیر معمولی باہر نکلنے کے عام وجوہات

  • حکمت عملی جامد گرامر کی غلطیاں (ایسی غلطیاں واضح ہیں ، اور عام طور پر آپ حکمت عملی میں ترمیم کرنے والے صفحے پر غلطی کا نشان دیکھ سکتے ہیں) ، جو بیک ٹیسٹ کے دوران پایا اور درست کیا جاسکتا ہے۔
  • حکمت عملی رن ٹائم کی غلطیاں ، سب سے عام مثال قانونی فیصلہ کیے بغیر فنکشن کی واپسی کی قیمت کا براہ راست استعمال ہے۔
  • بہت زیادہ مواد جو ردی کی ٹوکری میں جمع نہیں کیا جاسکتا ہے عالمی متغیرات میں محفوظ کیا جاتا ہے ، جس کے نتیجے میں میموری کا زیادہ استعمال ہوتا ہے۔
  • غیر متزلزل استعمال کرتے وقتexchange.Goفنکشن، کوئی معقول نہیں ہےwaitآپریشن کے دوران coroutine کے اختتام کا انتظار کرنے کے لئے، coroutines کی ایک بڑی تعداد کے نتیجے میں.
  • ریکوریسی فنکشن کالز کی بہت سی تہوں کی وجہ سے کوروٹینز کا اسٹیک سائز زیادہ ہو جاتا ہے۔
  • انٹرفیس بزنس کی غلطیوں اور نیٹ ورک کی درخواست کی غلطیوں وغیرہ۔ اس طرح کے غلطی کے پیغامات میں متعلقہ تبادلہ آبجیکٹ کے نام ، فنکشن کے نام ، غلطی سے متعلق پیغامات اور وجوہات ، اور دیگر معلومات سمیت معلومات دکھائی جائیں گی۔ اس طرح کی غلطیاں اصل تجارت میں غیر معمولی رکاوٹ کا سبب نہیں بنیں گی (اس طرح کی غلطیاں عام طور پر اسباب ہیں ، لیکن براہ راست وجوہات نہیں ہیں۔ براہ راست وجوہات عام طور پرپروگرام کی استثناء کے بغیر براہ راست استعمال کی وجہ سے انٹرفیس واپسی قدر قانونی حیثیت کا فیصلہ کرنے کے لئے).
  • پلیٹ فارم کے نیچے کی غلطیوں، عام مثال یہ ہےDecrypt: Secret key decrypt failed، جو لائیو ٹریڈنگ شروع کرنے میں ناکامی کا سبب بنے گا۔ غلطی کی وجہ یہ ہے کہ ایف ایم زیڈ اکاؤنٹ کا پاس ورڈ تبدیل کرنے سے تمام تشکیل شدہAPI KEYغیر قانونی ہونا۔ مسئلہ حل کرنے کے لئے ،API KEYدوبارہ ترتیب دینے کی ضرورت ہے، اور ڈاکر کو دوبارہ شروع کرنے کی ضرورت ہے.
  • پائیتھون کی حکمت عملی کی خدمات حاصل کرتے وقت ، پلیٹ فارم کے ذریعہ خفیہ کردہ پائیتھون اور حکمت عملی کے رن ٹائم میں پائیتھون کے مابین ورژن کی عدم مطابقت کی وجہ سے ایک غلطی کی اطلاع دی گئی ہے۔ValueError: bad marshal data (unknown type code). اپ گریڈ یا حکمت عملی کی طرف سے چلایا جاتا ہے کہ حکمت عملی کی طرف سے حمایت ورژن میں سے ایک پر پطرون ماحول نصب:Python 2.7, Python 3.5اورPython 3.6.
  • interruptغلطی؛ غلطی اس وجہ سے ہے کہ صارف کلک کرتا ہےروکو بوٹجب پروگرام ایک آپریشن انجام دیتا ہے (جیسے پلیٹ فارم انٹرفیس تک رسائی حاصل کرنا) ، اور بوٹ موجودہ آپریشن کے ذریعہ طباعت شدہ غلطی کا پیغام روکتا ہے اور اسے روکتا ہے۔ غلطی کا کوئی اثر نہیں ہوتا ہے اور یہ صرف لاگ ریکارڈ ہے۔

بوٹس اور حکمت عملی گروپنگ

ایف ایم زیڈ کوانٹ ٹریڈنگ پلیٹ فارم کے بوٹ اور حکمت عملی صفحے پر ، آپ کلک کرسکتے ہیںگروپ کی ترتیبحکمت عملیوں اور گروپوں میں حقیقی ٹریڈنگ کا انتظام کرنے کے لئے دائیں بٹن پر.نمونہ, جاوا اسٹریٹجیاوربیک ٹسٹ کے لئے حکمت عملیبالترتیب تین گروپوں میں تقسیم کیا جا سکتا ہے.

ذیلی اکاؤنٹ اور لائیو بوٹ

ذیلی اکاؤنٹ پلیٹ فارم میں لاگ ان ہونے کے بعد، ڈیش بورڈ اور اکاؤنٹ پر کلک کریں تاکہ FMZ اکاؤنٹ [انتظامی صفحہ] پر جائیں (https://www.fmz.com/m/account ذیلی اکاؤنٹ پر کلک کریں ذیلی اکاؤنٹ تخلیق کا صفحہ دیکھنے کے لئے، بوٹ منتخب کریں کہ شامل ذیلی اکاؤنٹ میں رسائی حاصل کر سکتے ہیںدستیاب اجازتیںکنٹرول، اور ذیلی اکاؤنٹس مقررصارف کا ناماورذیلی اکاؤنٹ لاگ ان کا پاس ورڈمیںصارف کی معلوماتکنٹرول۔ ذیلی اکاؤنٹ بنانے کے لئے sub-member بٹن پر کلک کریں۔ شامل کردہ ذیلی اکاؤنٹ موجودہ صفحے پر ظاہر ہوگا اور اسے modified ، locked/unlocked ، اور deleted کیا جاسکتا ہے۔

ذیلی اکاؤنٹس محدود اجازت ہے؛ صرف مجاز بوٹس کی ترتیبات میںدستیاب اجازتیںذیلی اکاؤنٹس میں دیکھا جا سکتا ہے. مجاز بوٹ کے پاس پیرامیٹرز کو تبدیل کرنے ، رواں تجارت کو روکنے اور دوبارہ شروع کرنے کا اختیار ہے ، لیکن وہ بوٹ کے ذریعہ تشکیل کردہ تبادلے کے اعتراض کو تبدیل نہیں کرسکتا ہے۔ ذیلی اکاؤنٹس کے استعمال کے منظرنامے عام پر ہیں:

  • A. یہ لاگ ان کرنے اور منظم کرنے کے لئے آسان ہے جب مقداری ٹیم متعدد بوٹ کی حکمت عملی کا انتظام کرتی ہے.
  • B. جب حکمت عملی کرایہ کے لئے ہے تو ڈیبگنگ.

لائیو ٹریڈنگ ویو ایف ایم زیڈ پلیٹ فارم کی بوٹس کی فہرست میںبوٹ صفحہ، موجودہ صف کے بوٹس کو عوامی طور پر ظاہر کرنے کے لئے عوامی بٹن پر کلک کریں۔ فی الحال براہ راست بوٹس کو دیکھنے کے دو طریقے ہیں:

    1. [براہ راست دیکھیں] پر بوٹس دکھائیں (https://www.fmz.com/liveعوامی بٹن پر کلک کرنے کے بعد، ایف ایم زیڈ پلیٹ فارم پر شائع صفحہ منتخب کریںعوامی حصہ.
    1. دیکھنے کے لئے ایک نجی لنک بنائیں. عوامی بٹن پر کلک کرنے اور منتخب کرنے کے بعداندرونی حصہ، آپ کی حکمت عملی بوٹ کے نجی لائیو دیکھنے کے صفحے میں لاگ ان کرنے کے لئے ایک نجی لنک پیدا کرنے کے لئے ایک درست مدت مقرر کر سکتے ہیں.

حکمت عملی کا اشتراک اور کرایہ

پراسٹریٹیجیصفحہ، حکمت عملی کے دائیں جانب Action بٹن پر کلک کرنے کے بعد، پاپ اپ مینو اشتراک اور کرایہ کے لئے اختیارات ہیں.

حکمت عملی کا اشتراک

  • عوامی اشتراک شیئرنگ بٹن پر کلک کرنے کے بعد، ایک ڈائیلاگ باکس پاپ اپ ہو جائے گا، اور آپ پبلک شیئرنگ منتخب کر سکتے ہیں، تاکہ حکمت عملی مکمل طور پر پلیٹ فارم مزید حکمت عملی میں مشترکہ ہے، اور کسی بھی صارف کی حکمت عملی کاپی کر سکتے ہیں.

  • اندرونی اشتراک شراکت بٹن پر کلک کرنے کے بعد، ایک ڈائیلاگ باکس پاپ اپ ہو جائے گا، اور آپ اندرونی اشتراک منتخب کر سکتے ہیں۔کاپی پیج ایڈریساورکاپی کوڈاس حکمت عملی کی تخلیق کی جائے گی۔ اسے نامزد ایف ایم زیڈ پلیٹ فارم صارفین کو تقسیم کیا جاسکتا ہے۔ صارفین کو جو اس حکمت عملی کی ضرورت ہے انہیں صرفکاپی پیج ایڈریسلنک، میں لاگ ان کرنے کے لئےکاپی پیجاور اسٹریٹجی حاصل کرنے کے لئے کاپی کوڈ درج کریں۔ حکمت عملی حاصل کرنے کے بعد ، یہ خود بخود حکمت عملی صفحے پر ظاہر ہوگا۔

حکمت عملی کرایہ

  • عوامی فروخت رینٹ بٹن پر کلک کرنے کے بعد ، ایک ڈائیلاگ باکس پاپ اپ ہوگا ، اور آپ پبلک سیل منتخب کرسکتے ہیں۔ اس حکمت عملی کو فہرست سازی کے لئے لاگو کیا جاسکتا ہے (منظوری سے مشروط) ۔

  • اندرونی فروخت رینٹ بٹن پر کلک کرنے کے بعد، ایک ڈائیلاگ باکس پاپ اپ ہو جائے گا، اور آپ کو منتخب کر سکتے ہیں اندرونی فروخت . استعمال کرنے کے لئے دنوں کی تعداد، زیادہ سے زیادہ متوازی تعداد اور حکمت عملی ٹوکن کی تعداد کو منتخب کرنے کے بعد،رجسٹریشن صفحہ کا پتہاورحکمت عملی ٹوکنکی حکمت عملی پیدا کی جائے گی. یہ مخصوص FMZ صارفین کو تقسیم کیا جا سکتا ہے. اس حکمت عملی کی ضرورت ہے جو صارفین کو صرفرجسٹریشن صفحہ کا پتہلنک، لاگ ان کرنے کے لئےرجسٹریشن کا صفحہ. پھر ، حکمت عملی کو استعمال کرنے کا حق حاصل کرنے کے لئے حکمت عملی کا ٹوکن درج کریں۔ حکمت عملی کو حکمت عملی صفحے پر بھی دکھایا جائے گا ، لیکن صرف بیک ٹیسٹ اور بوٹ کو استعمال کرنے کے حق کے ساتھ۔ حکمت عملی کے سورس کوڈ جیسی معلومات تک رسائی حاصل نہیں ہے۔

اہم نوٹ: تخلیق اور تقسیم کرتے وقتحکمت عملی ٹوکن، براہ کرم اس بات کی احتیاط سے تصدیق کریں کہ یہ اسٹریٹیجی ٹوکن ہے یا کاپی کوڈ، تاکہ غلطی سے حکمت عملی کا اشتراک نہ کیا جائے۔

بیک ٹیسٹنگ سسٹم میں شارپ الگورتھم

function returnAnalyze(totalAssets, profits, ts, te, period, yearDays) {
    // force by days
    period = 86400000
    if (profits.length == 0) {
        return null
    }
    var freeProfit = 0.03 // 0.04
    var yearRange = yearDays * 86400000
    var totalReturns = profits[profits.length - 1][1] / totalAssets
    var annualizedReturns = (totalReturns * yearRange) / (te - ts)

    // MaxDrawDown
    var maxDrawdown = 0
    var maxAssets = totalAssets
    var maxAssetsTime = 0
    var maxDrawdownTime = 0
    var maxDrawdownStartTime = 0
    var winningRate = 0
    var winningResult = 0
    for (var i = 0; i < profits.length; i++) {
        if (i == 0) {
            if (profits[i][1] > 0) {
                winningResult++
            }
        } else {
            if (profits[i][1] > profits[i - 1][1]) {
                winningResult++
            }
        }
        if ((profits[i][1] + totalAssets) > maxAssets) {
            maxAssets = profits[i][1] + totalAssets
            maxAssetsTime = profits[i][0]
        }
        if (maxAssets > 0) {
            var drawDown = 1 - (profits[i][1] + totalAssets) / maxAssets
            if (drawDown > maxDrawdown) {
                maxDrawdown = drawDown
                maxDrawdownTime = profits[i][0]
                maxDrawdownStartTime = maxAssetsTime
            }
        }
    }
    if (profits.length > 0) {
        winningRate = winningResult / profits.length
    }
    // trim profits
    var i = 0
    var datas = []
    var sum = 0
    var preProfit = 0
    var perRatio = 0
    var rangeEnd = te
    if ((te - ts) % period > 0) {
        rangeEnd = (parseInt(te / period) + 1) * period
    }
    for (var n = ts; n < rangeEnd; n += period) {
        var dayProfit = 0.0
        var cut = n + period
        while (i < profits.length && profits[i][0] < cut) {
            dayProfit += (profits[i][1] - preProfit)
            preProfit = profits[i][1]
            i++
        }
        perRatio = ((dayProfit / totalAssets) * yearRange) / period
        sum += perRatio
        datas.push(perRatio)
    }

    var sharpeRatio = 0
    var volatility = 0
    if (datas.length > 0) {
        var avg = sum / datas.length;
        var std = 0;
        for (i = 0; i < datas.length; i++) {
            std += Math.pow(datas[i] - avg, 2);
        }
        volatility = Math.sqrt(std / datas.length);
        if (volatility !== 0) {
            sharpeRatio = (annualizedReturns - freeProfit) / volatility
        }
    }

    return {
        totalAssets: totalAssets,
        yearDays: yearDays,
        totalReturns: totalReturns,
        annualizedReturns: annualizedReturns,
        sharpeRatio: sharpeRatio,
        volatility: volatility,
        maxDrawdown: maxDrawdown,
        maxDrawdownTime: maxDrawdownTime,
        maxAssetsTime: maxAssetsTime,
        maxDrawdownStartTime: maxDrawdownStartTime,
        winningRate: winningRate
    }
}

خصوصی تبادلہ ہدایات

  • فیوچر_بائننس یہ بائننس فیوچر کی دوہری پوزیشن موڈ کی حمایت کرتا ہے؛ آپ استعمال کر سکتے ہیںexchange.IOتبدیل کرنے کے لئے:

    function main() {
        var ret = exchange.IO("api", "POST", "/fapi/v1/positionSide/dual", "dualSidePosition=true")
        // ret : {"code":200,"msg":"success"}
        Log(ret)
    }
    
    def main():
        ret = exchange.IO("api", "POST", "/fapi/v1/positionSide/dual", "dualSidePosition=false")
        Log(ret)
    
    void main() {
        auto ret = exchange.IO("api", "POST", "/fapi/v1/positionSide/dual", "dualSidePosition=true");
        Log(ret);
    }
    

    یہ کراس پوزیشن / الگ تھلگ پوزیشن کے درمیان سوئچنگ کی حمایت

    function main() {
        exchange.SetContractType("swap")
        exchange.IO("cross", true)    // Switch to crossed position
        exchange.IO("cross", false)   // Switch to isolated position
    }
    
    def main():
        exchange.SetContractType("swap")
        exchange.IO("cross", True)
        exchange.IO("cross", False)
    
    void main() {
        exchange.SetContractType("swap");
        exchange.IO("cross", true);
        exchange.IO("cross", false);
    }
    
  • مستقبل_HuobiDM یہ دستخط میں حصہ لینے والے Huobi فیوچر کے ایڈریس کو تبدیل کرنے کی حمایت کرتا ہے، جو ڈیفالٹ کی طرف سے سوئچ نہیں کیا جاتا ہے۔ اگر آپ کو اس فنکشن کو غیر فعال کرنے کی ضرورت ہے تو، آپ استعمال کر سکتے ہیںexchange.IO("signHost", "")ایک خالی تار مقرر کرنے کے لئے. استعمالexchange.IO("signHost", "https://aaa.xxx.xxx")دستخط کی تصدیق میں حصہ لینے والے Huobi Futures کے بیس ایڈریس کو تبدیل کرنا۔ استعمالexchange.IO("base", "https://bbb.xxx.xxx")یاexchange.SetBase("https://bbb.xxx.xxx")پلیٹ فارم انٹرفیس کے بیس ایڈریس کو تبدیل کرنے کے لئے. جب ٹریڈنگ جوڑی پر سیٹ کیا جاتا ہےXXX_USDT، فنکشن استعمال کریںexchange.SetContractType("swap")معاہدے کا کوڈ مقرر کرنے کے لئےswapمستقل معاہدہ، استعمال کرتے ہوئےexchange.IO("cross", true)تبدیل کر سکتے ہیںUSDTکراس پوزیشن موڈ میں مارجنڈ دائمی معاہدہ.exchange.IO("cross", false)الگ تھلگ پوزیشن موڈ پر واپس سوئچ کرنے کے لئے. ابتدائی ڈیفالٹ الگ تھلگ پوزیشن موڈ ہے.

  • ہوبی یہ Huobi اسپاٹ لیوریج ٹوکن کی حمایت کرتا ہے، جیسے:LINK*(-3); تبادلہ کے ذریعہ بیان کردہ کوڈ یہ ہے:link3susdt، جس میں لکھا جاتا ہے جب FMZ ٹریڈنگ جوڑی مقرر کرتا ہےLINK3S_USDT. یہ بھی ممکن ہے کہ حکمت عملی میں ٹریڈنگ کے جوڑوں کو تبدیل کیا جائے:

    function main() {
        exchange.SetCurrency("LINK3S_USDT")
        Log(exchange.GetTicker())
    }
    
    def main():
        exchange.SetCurrency("LINK3S_USDT")
        Log(exchange.GetTicker())
    
    void main() {
        exchange.SetCurrency("LINK3S_USDT");
        Log(exchange.GetTicker());
    }
    
  • OKX OKX انٹرفیس OKX کی تخروپن بوٹ ٹیسٹنگ ماحول پر سوئچ کر سکتے ہیں؛ کا استعمال کرتے ہوئےexchange.IO("simulate", true)آپ سیمولیٹڈ ٹریڈنگ ماحول میں سوئچ کر سکتے ہیں۔ اگر آپ حقیقی ٹریڈنگ ماحول میں سوئچ کرنا چاہتے ہیں تو،exchange.IO("simulate", false)تبدیل کرنے کے لئے. ابتدائی ڈیفالٹ حقیقی تجارتی ماحول ہے. یہ اکاؤنٹ مارجن طریقوں سوئچنگ کی حمایت کرتا ہے؛ استعمالexchange.IO("cross", true)کراس پوزیشن موڈ پر سوئچ کرنے اور استعمال کرنے کے لئےexchange.IO("cross", false)الگ تھلگ پوزیشن موڈ پر سوئچ کرنے کے لئے، ابتدائی ڈیفالٹ کراس پوزیشن موڈ ہے.

  • فیوچر_بی باکس استعمالexchange.IO("cross", true)کراس پوزیشن موڈ پر سوئچ کرنے اور استعمال کرنے کے لئےexchange.IO("cross", false)الگ تھلگ پوزیشن موڈ پر سوئچ کرنے کے لئے؛ ابتدائی ڈیفالٹ کراس پوزیشن موڈ ہے. تبادلے موجودہ زیر التواء احکامات اور مارکیٹ کے تاریخی ٹریڈنگ ریکارڈ کو تلاش کرنے کے لئے انٹرفیس کی درخواست کی حمایت نہیں کرتا، توGetOrdersاورGetTradesافعال کی حمایت نہیں کر رہے ہیں.

  • فیوچر_بٹ گیٹ استعمالexchange.IO("cross", true)کراس پوزیشن موڈ پر سوئچ کرنے اور استعمال کرنے کے لئےexchange.IO("cross", false)الگ تھلگ پوزیشن موڈ پر سوئچ کرنے کے لئے.

  • مستقبل_AOFEX استعمالexchange.IO("cross", true)کراس پوزیشن موڈ پر سوئچ کرنے اور استعمال کرنے کے لئےexchange.IO("cross", false)الگ تھلگ پوزیشن موڈ پر سوئچ کرنے کے لئے.

  • فیوچر_MEXC استعمالexchange.IO("cross", true)کراس پوزیشن موڈ پر سوئچ کرنے اور استعمال کرنے کے لئے` ` تبادلہ.IO("کراس"،


مزید