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

FMZ API ہدایات

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

پی پی خالی اہم ((() { تبادلے[0].IO(base، https://api.huobipro.com”); }


The ZB exchange is special. There are two addresses: one is the market data interface address, and the other is the trading interface address. Switch the address:
```js
function main() {
    // The second parameter of exchange.IO is the trading interface address, and the third parameter is the market interface address, which is switched to an address that can be accessed domestically
    exchange.IO("base", "https://trade.zb.plus", "http://api.zb.plus")    
    // Print the account information
    Log(exchange.GetAccount())                                            
}
def main():
    exchange.IO("base", "https://trade.zb.plus", "http://api.zb.plus")
    Log(exchange.GetAccount())
void main() {
    exchange.IO("base", "https://trade.zb.plus", "http://api.zb.plus");
    Log(exchange.GetAccount());
}
  • مارکیٹ موڈ تبدیل کریں فی الحال تعاون یافتہ تبادلے:

    تبادلہ تبصرے
    ہوبی اسپاٹ WebSocket پروٹوکول کی حمایت کے بعد، کوڈexchange.IO(currency, ETH) کرنسی تبدیل کرنے کے لئے استعمال نہیں کیا جا سکتا
    • exchange.IO("websocket")

      مارکیٹ مواصلات پروٹوکول کو تبدیل کریںwebsocket(ڈیفالٹ آرام ہے) ، مارکیٹ کوٹس حاصل کرنے کا طریقہ سوئچنگ کے بعد تبدیل ہو جائے گا.exchange.GetTicker()اورexchange.GetDepth()پر تبدیل کیا جائے گاwebsocketپروٹوکول کو اپ ڈیٹ کرنے کے لئے ، خام فعال مارکیٹ کے اعداد و شمار کے حصول سے لے کر مارکیٹ کے اعداد و شمار کے غیر فعال حصول تک ، فی الحال صرف ہووبی ایکسچینج کی حمایت کی جاتی ہے۔

    جب مارکیٹ موڈ دھکا میکانزم ہے، آپ کو مقرر کرنے کے لئے مندرجہ ذیل تقریب کو کال کر سکتے ہیں:

    • exchange.IO("mode", 0)فوری واپسی کا موڈ۔ اگر موجودہ مارکیٹ کے اعداد و شمار کو تبادلے سے موصول نہیں کیا گیا ہے تو ، پرانے مارکیٹ کے اعداد و شمار کو فوری طور پر واپس کردیا جائے گا۔ اگر نیا ڈیٹا موجود ہے تو ، نیا ڈیٹا واپس کردیا جائے گا۔

    • exchange.IO("mode", 1)کیش موڈ (ڈیفالٹ موڈ) ۔ اگر ایکسچینج کے تازہ ترین مارکیٹ کے اعداد و شمار موصول نہیں ہوئے ہیں (پچھلے انٹرفیس سے حاصل کردہ اعداد و شمار کے مقابلے میں) ، وصول کرنے کا انتظار کریں اور پھر واپس آجائیں۔ اگر اس فنکشن کو کال کرنے سے پہلے تازہ ترین مارکیٹ کے اعداد و شمار موصول ہوئے ہیں تو ، تازہ ترین اعداد و شمار فوری طور پر واپس آجائیں گے۔

    • exchange.IO("mode", 2)جبری اپ ڈیٹ موڈ۔ درج کریں اور انتظار کریں جب تک کہ تبادلے کا اگلا تازہ ترین پش ڈیٹا موصول نہ ہو اور پھر واپس آجائیں۔

    اگر آپ پہلی بار میں تازہ ترین مارکیٹ کی معلومات حاصل کرنا چاہتے ہیں تو، آپ کو تبدیل کر سکتے ہیںwebsocketاور نہ پکاروSleepآپریشن، اور فوری طور پر اعداد و شمار کی جانچ.exchange.GetTicker()اورexchange.GetDepth()افعال کیش موڈ میں کام کرتے ہیں، جیسے:

    function main () {
        exchange.IO("websocket")
        while (true) {
            Log(exchange.GetTicker())
        }
    }
    
    def main():
        exchange.IO("websocket")
        while True:
            Log(exchange.GetTicker())
    
    void main() {
        exchange.IO("websocket");
        while(true) {
            Log(exchange.GetTicker());
        }
    }
    
  • ایکسچینج لیوریج اکاؤنٹ موڈ

    استعمالexchange.IO("trade_margin")لیوریج اکاؤنٹ موڈ میں تبدیل کرنے کے لئے ، آرڈر دینے اور اکاؤنٹ کے اثاثوں تک رسائی حاصل کرنے کے لئے ایکسچینج کے لیوریج انٹرفیس کا استعمال کریں گے۔ استعمالexchange.IO("trade_normal")عام اکاؤنٹ موڈ پر واپس سوئچ کرنے کے لئے.

    معاون تبادلہ:

    تبادلہ خصوصی تبصرے
    OKX لیوریج اکاؤنٹ موڈ کے تجارتی جوڑے عام لوگوں سے مختلف ہیں ، اور کچھ تجارتی جوڑے دستیاب نہیں ہوسکتے ہیں۔exchange.IO("cross", true)لیورجڈ اکاؤنٹ کی مکمل پوزیشن پر سوئچ کرنے کے لئے اورexchange.IO("cross", false)الگ تھلگ پوزیشن پر سوئچ کرنے کے لئے.
    ہوبی لیوریج اکاؤنٹ موڈ کے تجارتی جوڑے عام لوگوں سے مختلف ہیں ، اور کچھ تجارتی جوڑے دستیاب نہیں ہوسکتے ہیں۔ ہووبی لیوریج اکاؤنٹ کو کراس پوزیشن اور الگ تھلگ پوزیشن میں تقسیم کیا گیا ہے۔ استعمال کریںtrade_marginلیوریج اکاؤنٹ میں الگ تھلگ پوزیشن پر سوئچ کرنے کے لئے؛trade_super_marginلیوریج اکاؤنٹ پر کراس پوزیشن پر سوئچ کرنے کے لئے؛trade_normalایک عام کرنسی موڈ پر سوئچ کرنے کے لئے
    ZB فنڈز کو صرف کیو سی میں منتقل کیا جاسکتا ہے۔ لیوریج ٹریڈنگ سیکٹر میں ، مختلف ٹریڈنگ جوڑوں کے مابین فنڈز آزاد ہیں ، یعنی ETH_QC ٹریڈنگ جوڑی کے تحت کیو سی سکے کی تعداد BTC_QC میں نظر نہیں آتی ہے۔
    بائننس لیوریج اکاؤنٹس کو کراس پوزیشن اور الگ تھلگ پوزیشن میں تقسیم کیا گیا ہے۔trade_marginالگ تھلگ پوزیشن میں سوئچ کرنے کے لئے؛ استعمالtrade_super_marginکراس پوزیشن پر سوئچ کرنے کے لئے؛ استعمالtrade_normalایک عام کرنسی موڈ پر سوئچ کرنے کے لئے
    دروازہ لیوریج اکاؤنٹس کو کراس پوزیشن اور الگ تھلگ پوزیشن میں تقسیم کیا گیا ہے۔trade_marginالگ تھلگ پوزیشن میں سوئچ کرنے کے لئے؛ استعمالtrade_super_marginکراس پوزیشن پر سوئچ کرنے کے لئے؛ استعمالtrade_normalایک عام کرنسی موڈ پر سوئچ کرنے کے لئے
    AscendEx استعمالexchange.IO("trade_margin")لیوریج اکاؤنٹ موڈ پر سوئچ کرنے اور استعمال کرنے کے لئےexchange.IO("trade_normal")عام اکاؤنٹ موڈ پر واپس سوئچ کرنے کے لئے.

تبادلہ.لاگ ((...)

exchange.Log(LogType, Price, Amount)جب بلایا جاتا ہے تو کوئی آرڈر نہیں دیتا، اور یہ صرف تبادلہ لاگ کی معلومات کو آؤٹ پٹ کرنے کے لئے ٹریڈنگ کی معلومات ریکارڈ کرتا ہے۔

نوٹ:

  • یہ فنکشن ایک رکن فنکشن ہےexchangeاشیاء، جس میں عالمی تقریب سے مختلف ہےLog().
  • پیرامیٹر کی قدر:LogTypeلے سکتے ہیںLOG_TYPE_BUY, LOG_TYPE_SELL, LOG_TYPE_CANCELاورPriceقیمت کے طور پر، اورAmountمقدار کے طور پر.LogTypeہےLOG_TYPE_CANCEL, Priceپیرامیٹر آرڈر ID ہے.

استعمالexchange.Log(LogType, Price, Amount)لائیو ٹریڈنگ کے بعد کی جانچ کرنا، آرڈر کی مشابہت کرنا اور آرڈرز کی ریکارڈنگ میں مدد کرنا۔

استعمال کا سب سے عام معاملہ یہ ہے:exchange.IOتاہم، مشروط احکامات رکھنے کے لئے تبادلے کے تخلیق مشروط آرڈر انٹرفیس تک رسائی حاصل کرنے کے لئے.exchange.IOفنکشن بوٹ لاگ ریکارڈنگ میں تبادلہ لاگ کی معلومات کو آؤٹ پٹ نہیں کرے گا. اس طرح آپ استعمال کر سکتے ہیںexchange.Log(LogType, Price, Amount)لاگ آؤٹ پٹ کو مکمل کرنے کے لئے تاکہ آرڈر دینے کی معلومات کو ریکارڈ کیا جاسکے۔

var id = 123
function main() {
    // Order type: buy; price: 999; quantity: 0.1
    exchange.Log(LOG_TYPE_BUY, 999, 0.1)      
    // Cancel the order
    exchange.Log(LOG_TYPE_CANCEL, id)         
}
id = 123
def main():
    exchange.Log(LOG_TYPE_BUY, 999, 0.1)
    exchange.Log(LOG_TYPE_CANCEL, id)
void main() {
    auto id = 123;
    exchange.Log(LOG_TYPE_BUY, 999, 0.1);
    exchange.Log(LOG_TYPE_CANCEL, id);
}

تبادلہ.HMAC(...)

exchange.HMAC(Algo, OutputAlgo, Data, Key)کی حمایت کرتا ہےHMACکی خفیہ کاری کا حسابایم ڈی 5/sha256/sha512/ش1، اور صرف لائیو ٹریڈنگ چلانے کی حمایت کی جاتی ہے.

exchange.HMAC("sha256", "hex", "xxxxx", "{{secretkey}}")نقل کرنے کے لئےaccessKey، استعمال"{{accesskey}}". نقل کرنے کے لئےsecretKey، استعمال"{{secretkey}}"؛ یا آپ سادہ متن استعمال کر سکتے ہیں"abc-123-xxxx". "{{accessKey}}","{{secretkey}}"صرف اس وقت درست ہے جب یہ فنکشن استعمال کیا جاتا ہے۔OutputAlgoحمایت: hex، base64.مخصوص مثال

Push BitMEX پوزیشن تبدیلیاں (wss پروٹوکول)

function main() {
    var APIKEY = "your Access Key(Bitmex API ID)"
    var expires = parseInt(Date.now() / 1000) + 10
    var signature = exchange.HMAC("sha256", "hex", "GET/realtime" + expires, "{{secretkey}}")
    var client = Dial("wss://www.bitmex.com/realtime", 60)
    var auth = JSON.stringify({args: [APIKEY, expires, signature], op: "authKeyExpires"})
    var pos = 0
    client.write(auth)
    client.write('{"op": "subscribe", "args": "position"}')
    while (true) {
        bitmexData = client.read()
        if(bitmexData.table == 'position' && pos != parseInt(bitmexData.data[0].currentQty)){
            Log('position change', pos, parseInt(bitmexData.data[0].currentQty), '@')
            pos = parseInt(bitmexData.data[0].currentQty)
        }
    }
}
import time
def main():
    APIKEY = "your Access Key(Bitmex API ID)"
    expires = int(time.time() + 10)
    signature = exchange.HMAC("sha256", "hex", "GET/realtime" + str(expires), "{{secretkey}}")
    client = Dial("wss://www.bitmex.com/realtime", 60)
    auth = json.dumps({"args": [APIKEY, expires, signature], "op": "authKeyExpires"})
    pos = 0
    client.write(auth)
    client.write('{"op": "subscribe", "args": "position"}')
    while True:
        bitmexData = json.loads(client.read())
        if "table" in bitmexData and bitmexData["table"] == "position" and len(bitmexData["data"]) != 0 and pos != bitmexData["data"][0]["currentQty"]:   
            Log("position change", pos, bitmexData["data"][0]["currentQty"], "@")
            pos = bitmexData["data"][0]["currentQty"]
void main() {
    auto APIKEY = "your Access Key(Bitmex API ID)";
    auto expires = Unix() + 10;
    auto signature = exchange.HMAC("sha256", "hex", format("GET/realtime%d", expires), "{{secretkey}}");
    
    auto client = Dial("wss://www.bitmex.com/realtime", 60);
    json auth = R"({"args": [], "op": "authKeyExpires"})"_json;

    auth["args"].push_back(APIKEY);
    auth["args"].push_back(expires);
    auth["args"].push_back(signature);
    auto pos = 0;
    client.write(auth.dump());
    client.write("{\"op\": \"subscribe\", \"args\": \"position\"}");
    while(true) {
        auto bitmexData = json::parse(client.read());
        if(bitmexData["table"] == "position" && bitmexData["data"][0].find("currentQty") != bitmexData["data"][0].end() && pos != bitmexData["data"][0]["currentQty"]) {
            Log("Test");
            Log("position change", pos, bitmexData["data"][0]["currentQty"], "@");
            pos = bitmexData["data"][0]["currentQty"];
        }
    }
}

تبادلہ.Go(...)

exchange.Go(Method, Args...)ایک ملٹی تھریڈڈ غیر متزلزل معاون فنکشن ہے ، جو تمام معاون افعال کے آپریشن کو غیر متزلزل بیک وقت (جو صرف کریپٹوکرنسی تبادلے کی حمایت کرتا ہے) میں تبدیل کرسکتا ہے۔ پیرامیٹر ویلیو:Method، تار کی قسم، یعنی فنکشن کا نام بیک وقت بلایا.

نوٹ:

  • یہ فنکشن صرف کثیر تھریڈڈ ایگزیکشن ٹاسکس تخلیق کرتا ہے جب براہ راست ٹریڈنگ میں چلتا ہے۔ بیک ٹیسٹ کثیر تھریڈڈ بیک وقت ایگزیکشن ٹاسکس کی حمایت نہیں کرتا ہے (بیک ٹیسٹ دستیاب ہے ، لیکن یہ پھر بھی ترتیب وار عمل میں لایا جاتا ہے) ۔
  • کے بعدexchange.Goتقریب ایک اعتراض واپس،waitفنکشن کو کال کیا جاتا ہے تاکہ موضوع کے ذریعے موضوع کے ذریعہ واپس آنے والے ڈیٹا کو بازیافت کیا جاسکے۔ موضوع کو کال کرکے ڈیٹا حصول کے بعد خود بخود جاری کردیا جائے گا۔waitمکمل ہو گیا ہے.wait، اگر ٹائم آؤٹ بھی ہوتا ہے تو تھریڈ جاری نہیں ہوگا؛ اس طرح ، تھریڈ کو صرف تھریڈ کا نتیجہ حاصل کرکے خود بخود جاری کیا جائے گا (اس سے کوئی فرق نہیں پڑتا ہے کہ بیک وقت رسائی حاصل کردہ انٹرفیس کو کامیابی کے ساتھ بلایا گیا ہے یا ناکام رہا ہے) ۔
  • سادہ الفاظ میں، کوئی بات نہیں ہے کہ لاگو thread کامیابی یا ناکامی، نتیجہ حاصل کیا جانا چاہئے کی طرف سےwaitتقریب، اور موضوع کے ذریعہ لاگو موضوع وسائلexchange.Goفنکشن ڈاکر کی طرف سے خود کار طریقے سے جاری کیا جاتا ہے.
  • اگر واپسی کا نتیجہwaitفنکشن آخر میں حاصل نہیں کیا جاتا ہے، موضوع وسائل خود کار طریقے سے جاری نہیں کیا جائے گا، جس میں لاگو موضوعات کے جمع ہونے کا سبب بنے گا؛ اگر موضوعات کی تعداد 2000 سے زیادہ ہے تو ایک غلطی کی اطلاع دی جائے گی:"too many routine wait, max is 2000".

معاون افعال:GetTicker, GetDepth, GetTrades, GetRecords, GetAccount, GetOrders, GetOrder, CancelOrder, Buy, Sell, GetPositionاورIO.

function main(){
    // The following four operations are executed concurrently and asynchronously by multiple threads, without time-consuming, but with immediate return.
    var a = exchange.Go("GetTicker")
    var b = exchange.Go("GetDepth") 
    var c = exchange.Go("Buy", 1000, 0.1)
    var d = exchange.Go("GetRecords", PERIOD_H1)
           
    // Call the "wait" method, to wait for the return of the asynchronously obtained "ticker" result 
    var ticker = a.wait()            
    // Return the depth; it is possible to return null, if the acquisition fails 
    var depth = b.wait()             
    // Return the order number; limit the timeout in 1 second; the timeout returns "undefined"; this object can continue to call "wait" to wait if the last "wait" is timeout 
    var orderId = c.wait(1000)
    if(typeof(orderId) == "undefined") {
        // Timeout, reacquire
        orderId = c.wait()
    }
    var records = d.wait()
}
def main():
    a = exchange.Go("GetTicker")
    b = exchange.Go("GetDepth")
    c = exchange.Go("Buy", 1000, 0.1)
    d = exchange.Go("GetRecords", PERIOD_H1)

    ticker, ok = a.wait()
    depth, ok = b.wait()
    orderId, ok = c.wait(1000)
    if ok == False:
        orderId, ok = c.wait()
    records, ok = d.wait()
void main() {
    auto a = exchange.Go("GetTicker");
    auto b = exchange.Go("GetDepth");
    auto c = exchange.Go("Buy", 1000, 0.1);
    auto d = exchange.Go("GetRecords", PERIOD_H1);

    Ticker ticker;
    Depth depth;
    Records records;
    TId orderId;
    a.wait(ticker);
    b.wait(depth);
    if(!c.wait(orderId, 300)) {
        c.wait(orderId);
    }
    d.wait(records);
}

نوٹ:

  • فیصلہ کرنے کے لئےundefined، استعمالtypeof(xx)==="undefined"، کیونکہnull == undefinedجاوا اسکرپٹ میں دستیاب ہے۔
function main() {
    var d = exchange.Go("GetRecords", PERIOD_H1)
    // Wait for K-line result
    var records = d.wait()
    // Here we wait for an asynchronous operation that has been waited and ended; it will return null, and record the error
    var ret = d.wait()
}
def main():
    d = exchange.Go("GetRecords", PERIOD_H1)
    records, ok = d.wait()
    ret, ok = d.wait()
void main() {
    auto d = exchange.Go("GetRecords", PERIOD_H1);
    Records records;
    d.wait(records);
    Records ret;
    d.wait(ret);
}

کے درمیان فرقPythonاورJavaScriptکیا یہPythonہےwaitفنکشن دو پیرامیٹرز لوٹاتا ہے: پہلا نتیجہ ہے جو غیر متزلزل API کی طرف سے لوٹایا جاتا ہے؛ دوسرا اشارہ کرتا ہے کہ آیا غیر متزلزل کال مکمل ہوگئی ہے.

Pythonمثال:

def main():
    d = exchange.Go("GetRecords", PERIOD_D1)
    # "ok" must return "True", unless the strategy is stopped
    ret, ok = d.wait()          
    # If the waiting times out, or "wait" for an ended instance, "ok" returns "False"
    ret, ok = d.wait(100)       
    ret, ok = d.wait(100)       

بیک وقت متعدد تبادلے کی قیمتیں حاصل کریں:

function main() {
    while(true) {
        var beginTS = new Date().getTime()
        var arrRoutine = []
        var arrTicker = []
        var arrName = []
        for(var i = 0; i < exchanges.length; i++) {
            arrRoutine.push(exchanges[i].Go("GetTicker"))
            arrName.push(exchanges[i].GetName())
        }

        for(var i = 0; i < arrRoutine.length; i++) {
            arrTicker.push(arrRoutine[i].wait())
        }
        var endTS = new Date().getTime()

        var tbl = {
            type: "table", 
            title: "Market Quotes", 
            cols: ["Index", "Name", "Latest Executed Price"], 
            rows: []
        }
        
        for(var i = 0; i < arrTicker.length; i++) {
            tbl.rows.push([i, arrName[i], arrTicker[i].Last])
        }

        LogStatus(_D(), "The total time to acquire multiple platforms concurrently is:", endTS - beginTS, "millisecond", "\n", "`" + JSON.stringify(tbl) + "`")
        Sleep(500)
    }
}
import time 
import json
def main():
    while True:
        beginTS = time.time()
        arrRoutine = []
        arrTicker = []
        arrName = []
        for i in range(len(exchanges)):
            arrRoutine.append(exchanges[i].Go("GetTicker"))
            arrName.append(exchanges[i].GetName())

        for i in range(len(exchanges)):
            ticker, ok = arrRoutine[i].wait()
            arrTicker.append(ticker)

        endTS = time.time()
        tbl = {
            "type": "table", 
            "title": "Market Quote", 
            "cols": ["Index", "Name", "Latest Executed Price"], 
            "rows": [] 
        }

        for i in range(len(arrTicker)):
            tbl["rows"].append([i, arrName[i], arrTicker[i]["Last"]])

        LogStatus(_D(), "The total time to acquire multiple platforms concurrently is:", endTS - beginTS, "second", "\n", "`" + json.dumps(tbl) + "`")
        Sleep(500)
void main() {
    while(true) {
        int length = exchanges.size();
        auto beginTS = UnixNano() / 1000000;
        Ticker arrTicker[length] = {};
        string arrName[length] = {};
        
        // Note that to add a few exchange objects, here we need to execute the "exchanges[n].Go" function several times. In this example, we need to add four exchange objects, which can be modified in details
        auto r0 = exchanges[0].Go("GetTicker");
        auto r1 = exchanges[1].Go("GetTicker");
        auto r2 = exchanges[2].Go("GetTicker");
        auto r3 = exchanges[3].Go("GetTicker");
        GoObj *arrRoutine[length] = {&r0, &r1, &r2, &r3};
        
        for(int i = 0; i < length; i++) {
            arrName[i] = exchanges[i].GetName();
        }

        for(int i = 0; i < length; i++) {
            Ticker ticker;
            arrRoutine[i]->wait(ticker);
            arrTicker[i] = ticker;
        }        
        auto endTS = UnixNano() / 1000000;

        json tbl = R"({
            "type": "table", 
            "title": "Market Quote", 
            "cols": ["Index", "Name", "Latest Executed Price"], 
            "rows": [] 
        })"_json;

        for(int i = 0; i < length; i++) {
            json arr = R"(["", "", ""])"_json;
            arr[0] = format("%d", i);
            arr[1] = arrName[i];
            arr[2] = format("%f", arrTicker[i].Last);
            tbl["rows"].push_back(arr);
        }

        LogStatus(_D(), "The total time to acquire multiple platforms concurrently is:", format("%d", endTS - beginTS), "millisecond", "\n", "`" + tbl.dump() + "`");
        Sleep(500);
    }
}

کے لئے بیک وقت کالیںexchange.IO("api", ...)فنکشن:

function main() {
    /*  
       Use the OKX placing order interface to test
        POST /api/v5/trade/order        
    */
    
    var beginTS = new Date().getTime()
    var param = {"instId":"BTC-USDT-SWAP","tdMode":"cross","side":"buy","ordType":"limit","px":"16000","sz":"1","posSide":"long"}
    var ret1 = exchange.Go("IO", "api", "POST", "/api/v5/trade/order", "", JSON.stringify(param))
    var ret2 = exchange.Go("IO", "api", "POST", "/api/v5/trade/order", "", JSON.stringify(param))
    var ret3 = exchange.Go("IO", "api", "POST", "/api/v5/trade/order", "", JSON.stringify(param))
    
    var id1 = ret1.wait()
    var id2 = ret2.wait()
    var id3 = ret3.wait()
    var endTS = new Date().getTime()    

    Log("id1:", id1)
    Log("id2:", id2)
    Log("id3:", id3)
    Log("Time for placing orders concurrently:", endTS - beginTS, "millisecond")
}
import time
import json
def main():
    beginTS = time.time()
    param = {"instId":"BTC-USDT-SWAP","tdMode":"cross","side":"buy","ordType":"limit","px":"16000","sz":"1","posSide":"long"}
    ret1 = exchange.Go("IO", "api", "POST", "/api/v5/trade/order", "", json.dumps(param))
    ret2 = exchange.Go("IO", "api", "POST", "/api/v5/trade/order", "", json.dumps(param))
    ret3 = exchange.Go("IO", "api", "POST", "/api/v5/trade/order", "", json.dumps(param))

    id1, ok1 = ret1.wait()
    id2, ok2 = ret2.wait()
    id3, ok3 = ret3.wait()
    endTS = time.time()

    Log("id1:", id1)
    Log("id2:", id2)
    Log("id3:", id3)
    Log("Time for placing orders concurrently:", endTS - beginTS, "second")
void main() {
    auto beginTS = UnixNano() / 1000000;
    json param = R"({"instId":"BTC-USDT-SWAP","tdMode":"cross","side":"buy","ordType":"limit","px":"16000","sz":"1","posSide":"long"})"_json;
    auto ret1 = exchange.Go("IO", "api", "POST", "/api/v5/trade/order", "", param.dump());
    auto ret2 = exchange.Go("IO", "api", "POST", "/api/v5/trade/order", "", param.dump());
    auto ret3 = exchange.Go("IO", "api", "POST", "/api/v5/trade/order", "", param.dump());

    json id1 = R"({})"_json;
    json id2 = R"({})"_json;
    json id3 = R"({})"_json;

    ret1.wait(id1);
    ret2.wait(id2);
    ret3.wait(id3);
    auto endTS = UnixNano() / 1000000;

    Log("id1:", id1);
    Log("id2:", id2);
    Log("id3:", id3);
    Log("Time for placing orders concurrently:", endTS - beginTS, "millisecond");
}

اکاؤنٹ کی معلومات

تبادلہ.GetAccount()

exchange.GetAccount()تبادلہ اکاؤنٹ کی معلومات واپس کرتا ہے۔ واپسی کی قیمت:Account structure.

  • Accountساخت
function main(){
    var account = exchange.GetAccount()
    Log("Account information, Balance:", account.Balance, "FrozenBalance:", account.FrozenBalance, "Stocks:",
        account.Stocks, "FrozenStocks:", account.FrozenStocks)
}
def main():
    account = exchange.GetAccount()
    Log("Account information, Balance", account["Balance"], "FrozenBalance:", account["FrozenBalance"], "Stocks:", 
        account["Stocks"], "FrozenStocks:", account["FrozenStocks"])
void main() {
    auto account = exchange.GetAccount();
    Log("Account information, Balance", account.Balance, "FrozenBalance:", account.FrozenBalance, "Stocks:", 
        account.Stocks, "FrozenStocks:", account.FrozenStocks);
}

اگر تبادلے کا مقصد ایک cryptocurrency فیوچر ایکسچینج پر مقرر کیا جاتا ہے اور ایک معاہدے پر تبدیل کر دیا جاتا ہےUSDTکے طور پر مارجن (دیکھیںexchange.SetContractTypeفنکشن کو تبدیل کرنے کا طریقہ جاننے کے لئے) ، اثاثے لےUSDTمارجن کے طور پر، جس کی خصوصیت میں ریکارڈ کیا جاتا ہےBalanceاورFrozenBalance.

function main(){
    // Switch the trading pair
    exchange.IO("currency", "BTC_USDT")     
    // Take OKX futures as an example; set the contract as the contract of the week, and the current trading pair is BTC_USDT, so the current contract is BTC USDT-margined contract of this week
    exchange.SetContractType("this_week")   
    // Acquire the data of the current account assets
    var account = exchange.GetAccount()
    // The available balance of USDT as margin
    Log(account.Balance)
    // The frozen amount of USDT as margin
    Log(account.FrozenBalance)
}
def main():
    exchange.IO("currency", "BTC_USDT")
    exchange.SetContractType("this_week")    
    account = exchange.GetAccount()
    Log(account["Balance"])
    Log(account["FrozenBalance"])
void main() {
    exchange.IO("currency", "BTC_USDT");
    exchange.SetContractType("this_week");    
    auto account = exchange.GetAccount();
    Log(account.Balance);
    Log(account.FrozenBalance);
}

تبادلہ.GetName()

exchange.GetName()تبادلہ کا نام لوٹاتا ہے۔ واپسی کی قیمت: تار کی قسم۔ عام طور پر اس کا استعمال تبادلہ نام کا تعین کرنے کے لئے کیا جاتا ہے۔exchangeیاexchanges[n]حکمت عملی کوڈ میں اشیاء.

function main() {
    Log("Determine the exchange object to be OKX:", exchange.GetName() == "OKEX")
}
def main():
    Log("Determine the exchange object to be OKX:", exchange.GetName() == "OKEX")
void main() {
    Log("Determine the exchange object to be OKX:", exchange.GetName() == "OKEX");
}

ڈوکر کے لائن ورژن کو کمانڈ کرنے کے لئے، آپ کو استعمال کر سکتے ہیں-1تبادلہ ناموں کی ایک فہرست پرنٹ کرنے کا حکم.

تبادلہ.GetLabel()

exchange.GetLabel()تبادلہ کا اپنی مرضی کے مطابق لیبل لوٹاتا ہے۔ واپسی کی قیمت: تار کی قسم۔

img

کےexchangeیاexchanges[n]حکمت عملی کوڈز میں اشیاء عام طور پر تبادلہ اشیاء کی تشکیل کے دوران مقرر کردہ لیبلز کی طرف سے مقرر کیا جاتا ہے.

تبادلہ.GetCurrency()

exchange.GetCurrency()تبادلہ کی طرف سے آپریٹ کرنسی کے جوڑے کا نام لوٹاتا ہے، اور cryptocurrency پلیٹ فارم ایک تار لوٹاتا ہے، جیسےLTC_BTCواپسی کی قیمت: تار کی قسم.

تبادلہ.سیٹ کرنسی(...)

کےexchange.SetCurrency(Symbol)تبادلہ اعتراض کی موجودہ ٹریڈنگ جوڑی سوئچ کرنے کے لئے استعمال کیا جاتا ہے.exchange.IO ("currency","BTC_USDT")یہ بیک ٹسٹنگ سسٹم میں ٹریڈنگ جوڑے سوئچنگ کی حمایت کرتا ہے، اور ٹریڈنگ کے جوڑے کا نامpricing currencybacktesting کے نظام میں ٹریڈنگ کے جوڑوں کو تبدیل کرتے وقت تبدیل نہیں کیا جا سکتا (مثال کے طور پر،BTC_USDTپر تبدیل کیا جا سکتا ہےLTC_USDT، لیکن اسے تبدیل نہیں کیا جا سکتاLTC_BTC) ایک ٹریڈنگ جوڑی پر سوئچ کرنے کے بعد ابتدائی طور پر غیر بیک ٹسٹنگ صفحے پر مقرر کیا گیا تھا،trading coins0 ہے (مثال کے طور پر بیک ٹسٹ کے دوران، بیک ٹسٹ پیج پر ٹریڈنگ جوڑی کی ابتدائی قیمت ہےBTC_USDT، بی ٹی سی کی تعداد 3 ہے اور USDT کی تعداد 10000 ہے۔ اگر آپ فوری طور پر سوئچ کریںLTC_USDT، کی تعدادtrading coinsسوئچنگ کے بعد 0 ہو جائے گا، جس کا مطلب اکاؤنٹ میں LTC کی تعداد 0 ہے، لیکن سوئچنگ ٹریڈنگ جوڑوں کی مشترکہ USDT رقم اب بھی 10000 ہے).

function main() {
    var ticker = exchange.GetTicker() 
    Log(ticker)
    Log(exchange.GetAccount())    
    // Switch trading pairs, and pay attention to changes in market quote data and account information after switching
    Log("Switch LTC_USDT: ", exchange.SetCurrency("LTC_USDT"))
    ticker = exchange.GetTicker()
    Log(ticker)
    Log(exchange.GetAccount())
}
def main():
    ticker = exchange.GetTicker()
    Log(ticker)
    Log(exchange.GetAccount())
    Log(" Switch LTC_USDT: ", exchange.SetCurrency("LTC_USDT"))
    ticker = exchange.GetTicker()
    Log(ticker)
    Log(exchange.GetAccount())
void main() {
    auto ticker = exchange.GetTicker();
    Log(ticker);
    Log(exchange.GetAccount());
    exchange.SetCurrency("LTC_USDT");
    Log(" Switch LTC_USDT: ");
    ticker = exchange.GetTicker();
    Log(ticker);
    Log(exchange.GetAccount());
}

بیک ٹسٹ آپریشن کا نتیجہ:

img

تبادلہ.GetQuoteCurrency()

exchange.GetQuoteCurrency()تبادلہ کی طرف سے آپریٹ کی بنیاد کرنسی کا نام لوٹاتا ہے. مثال کے طور پر،BTC_CNYواپسیCNY، اورETH_BTCواپسیBTCواپسی کی قیمت: تار کی قسم.

فیوچر ٹریڈنگ

کریپٹوکرنسی فیوچر ایکسچینج اشیاء کے لئے معاہدے کا کوڈ اس کے کال کرنے سے پہلے مخصوص کیا جانا چاہئےبازار, حکماور دیگر انٹرفیس، اورexchange.SetContractTypeموجودہ معاہدے کا کوڈ مقرر کرنے کے لئے فنکشن استعمال کرنے کی ضرورت ہے. تبادلے کے اعتراض کی موجودہ ٹریڈنگ جوڑی سوئچ کرتے وقت، آپ کو کال کرنے کی ضرورت ہےexchange.SetContractTypeمعاہدہ کوڈ کو ری سیٹ کرنے کی تقریب۔ پلیٹ فارم کے ذریعہ تعاون یافتہ ڈیجیٹل کرنسی تبادلہ معاہدے کے کوڈز کے لئے ، براہ کرم ملاحظہ کریںexchange.SetContractType function.

تبادلہ.GetPosition()

exchange.GetPosition()موجودہ پوزیشن کی معلومات حاصل کرتا ہے۔ واپسی کا قدر:positionاگر کوئی پوزیشن نہیں ہے تو، یہ ایک خالی صف واپس کرتا ہے، یعنی[].

  • Positionساخت

عام طور پر ، کریپٹوکرنسی فیوچر معاہدوں کو دو اقسام میں تقسیم کیا جاتا ہے:

  • فراہمی کا معاہدہ جب ایک معاہدہ ایک ترسیل کے معاہدے پر مقرر کیا جاتا ہے،exchange.GetPosition()فنکشن، اور موجودہ ٹریڈنگ جوڑی کے تحت ترسیل کے معاہدے میں تمام پوزیشنوں کو واپس کیا جائے گا.

  • دائمی معاہدہ جب ایک معاہدہ ایک دائمی معاہدے پر مقرر کیا جاتا ہے، کال کریںexchange.GetPosition()فنکشن، اور موجودہ ٹریڈنگ جوڑی کے تحت دائمی معاہدے میں تمام پوزیشنوں کو واپس کیا جائے گا.

/*
    Note: if there is no position, it will returns an empty array, so you should judge whether the data returned by the interface is a null array, before you use the returned data
    For example:
    When the exchange is set to OKX futures, if the contract is set to be a delivery contract, when the position data of the current week, the next week, and the quarter is obtained, the data type will be an array of position structure.
    When the exchange is set to OKX futures, if the contract is set to a perpetual contract, the array of position structure containing the position data of the perpetual contract will be obtained.
*/

function main(){
    exchange.SetContractType("this_week")
    exchange.SetMarginLevel(10)
    exchange.SetDirection("buy")
    exchange.Buy(10000, 2)
    var position = exchange.GetPosition()
    if(position.length > 0){
        Log("Amount:", position[0].Amount, "FrozenAmount:", position[0].FrozenAmount, "Price:",
            position[0].Price, "Profit:", position[0].Profit, "Type:", position[0].Type,
            "ContractType:", position[0].ContractType)
    }
}
def main():
    exchange.SetContractType("this_week")
    exchange.SetMarginLevel(10)
    exchange.SetDirection("buy")
    exchange.Buy(10000, 2)
    position = exchange.GetPosition()
    if len(position) > 0:
        Log("Amount:", position[0]["Amount"], "FrozenAmount:", position[0]["FrozenAmount"], "Price:", 
            position[0]["Price"], "Profit:", position[0]["Profit"], "Type:", position[0]["Type"], 
            "ContractType:", position[0]["ContractType"])
void main() {
    exchange.SetContractType("this_week");
    exchange.SetMarginLevel(10);
    exchange.SetDirection("buy");
    exchange.Buy(10000, 2);
    auto position = exchange.GetPosition();
    if(position.size() > 0) {
        Log("Amount:", position[0].Amount, "FrozenAmount:", position[0].FrozenAmount, "Price:", 
            position[0].Price, "Profit:", position[0].Profit, "Type:", position[0].Type, 
            "ContractType:", position[0].ContractType);
    } 
}

تبادلہ.سیٹ مارجن لیول(...)

exchange.SetMarginLevel(MarginLevel)لیوریج کا سائز مقرر کرتا ہے۔ پیرامیٹر ویلیو: عددی قسم۔

کریپٹوکرنسی فیوچر آرڈرز رکھنے کے لئے لیوریج کا سائز مقرر کریں، مثال کے طور پر:

function main() {
    exchange.SetMarginLevel(10)
}
def main():
    exchange.SetMarginLevel(10)
void main() {
    exchange.SetMarginLevel(10);
}

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

حکمت عملی کے ڈیزائن میں فائدہ اٹھانے کی ترتیب کے لئے نوٹ:

  • صرف کریپٹوکرنسی فیوچر کی حمایت کی جاتی ہے۔
  • بیک ٹسٹ سوئچنگ لیورج کی حمایت کرتا ہے.

تبادلہ.SetDirection(...)

exchange.SetDirection(Direction)سیٹexchange.Buyیاexchange.Sellمستقبل کے احکامات کی جگہ کے لئے ہدایات بنانے کے لئے. پیرامیٹر کی قیمت: تار کی قسم.

کےSetDirectionفنکشن فیوچر ٹریڈنگ کی سمت اور آرڈر رکھنے کی فنکشن کے درمیان مطابقت طے کرتا ہے:

آرڈر دینے کا فنکشن SetDirection فنکشن کے لئے پیرامیٹر سیٹنگ سمت تبصرے
exchange.Buy خریدیں کھلی لمبی پوزیشن خریدنا
exchange.Buy ختم فروخت مختصر پوزیشن بند کرنا
exchange.Sell فروخت کھلی مختصر پوزیشن بیچنا
exchange.Sell closebuy طویل پوزیشن بند کرنا

پیرامیٹرDirectionچار پیرامیٹرز لے سکتے ہیں، بشمولbuy, closebuy, sellاورclosesell.

function main(){
    // Make an example for setting OKX futures weekly contract
    exchange.SetContractType("this_week")    
    // Set 5 times of leverage
    exchange.SetMarginLevel(5)
    // Set the order placing type into placing long order
    exchange.SetDirection("buy")
    // Place an order with the contract quantity of 2, at the price of 10,000
    exchange.Buy(10000, 2)              
    exchange.SetMarginLevel(5)
    exchange.SetDirection("closebuy")
    exchange.Sell(1000, 2)
}
def main():
    exchange.SetContractType("this_week")
    exchange.SetMarginLevel(5)
    exchange.SetDirection("buy")
    exchange.Buy(10000, 2)
    exchange.SetMarginLevel(5)
    exchange.SetDirection("closebuy")
    exchange.Sell(1000, 2)
void main() {
    exchange.SetContractType("this_week");
    exchange.SetMarginLevel(5);
    exchange.SetDirection("buy");
    exchange.Buy(10000, 2);
    exchange.SetMarginLevel(5);
    exchange.SetDirection("closebuy");
    exchange.Sell(1000, 2);
}

تبادلہ.SetContractType(...)

exchange.SetContractType(ContractType)معاہدے کی قسم مقرر کریں۔ پیرامیٹر ویلیو: سٹرنگ ٹائپ۔ کریپٹوکرنسی کی حکمت عملیوں میں ، مثال کے طور پر BTC_USDT لے لو۔ جب تجارت کے جوڑوں کو تبدیل کریںexchange.SetCurrency("BTC_USDT")یاexchange.IO("currency", "BTC_USDT")، آپ کو استعمال کرنے کی ضرورت ہےexchange.SetContractTypeنئے ٹریڈنگ جوڑی کے تحت کام کرنے کی ضرورت ہے کہ موجودہ معاہدے کا تعین کرنے کے لئے معاہدے کو ری سیٹ کرنے کی تقریب.currency-based contractیا ایکU-based contractکی بنیاد پرتجارتی جوڑامثال کے طور پر، جب ٹریڈنگ جوڑی کوBTC_ USDT، استعمال کی تقریبexchange.SetContractTypeمعاہدے کا کوڈ مقرر کرنے کے لئےswap، جو بی ٹی سی کے یو ایس ڈی ٹی پر مبنی دائمی معاہدے کے طور پر مقرر کیا گیا ہے۔BTC_ USD، استعمال کی تقریبexchange.SetContractTypeمعاہدے کا کوڈ مقرر کرنے کے لئےswap، جو بی ٹی سی کے کرنسی پر مبنی دائمی معاہدے کے طور پر مقرر کیا گیا ہے۔

جب تک کہ دوسری صورت میں بیان نہیں کیا جاتا،ترسیل کا معاہدہکریپٹوکرنسی فیوچر معاہدے میں عام طور پر درج ذیل کوڈ شامل ہیں:

  • this_week: ہفتہ وار معاہدہ
  • next_week: اگلے ہفتے کا معاہدہ
  • quarter: سہ ماہی معاہدہ
  • next_quarter: اگلی سہ ماہی کا معاہدہ

جب تک کہ دوسری صورت میں بیان نہیں کیا جاتا،دائمی معاہدہکریپٹوکرنسی فیوچر معاہدے میں عام طور پر درج ذیل کوڈ شامل ہیں:

  • swap: دائمی معاہدہ

موجودہ معاہدے کو ہفتہ وار معاہدے میں سیٹ کریں:

function main() {
    // Set to weekly contract
    exchange.SetContractType("this_week") 
}
def main():
    exchange.SetContractType("this_week")
void main() {
    exchange.SetContractType("this_week");
}

ہر سپورٹ شدہ کریپٹوکرنسی ایکسچینج کے معاہدے کے نام پر تفصیلی تفصیل مندرجہ ذیل ہے:

  • OKX مستقل معاہدے پر مقرر:exchange.SetContractType("swap")اس ہفتے کے معاہدے پر مقرر:exchange.SetContractType("this_week")اگلے ہفتے کے معاہدے پر مقرر:exchange.SetContractType("next_week")سہ ماہی معاہدے پر مقرر:exchange.SetContractType("quarter")اگلے سہ ماہی کے معاہدے پر مقرر:exchange.SetContractType("next_quarter")OKX USDT مارجن والے معاہدے کو موجودہ معاہدے سے مطابقت رکھنے والے USDT تصفیہ کا استعمال کرتے ہوئے معاہدے میں تبدیل کیا جاسکتا ہےtrading pair(یا تبادلہ اشیاء کا اضافہ کرتے وقت اسے براہ راست مقرر کریں). مثال کے طور پر:

    function main() {
        // The default trading pair is BTC_USD, the contract is set to the weekly contract, and the contract is the crypto-margined contract
        exchange.SetContractType("this_week")
        Log("ticker:", exchange.GetTicker())
        
        // Switch trading pairs, and then set a contract to a USDT-margined contract, which is different from the crypto-margined contract
        exchange.IO("currency", "BTC_USDT")   
        exchange.SetContractType("swap")
        Log("ticker:", exchange.GetTicker())
    }
    
    def main():
        exchange.SetContractType("this_week")
        Log("ticker:", exchange.GetTicker())
        exchange.IO("currency", "BTC_USDT")
        exchange.SetContractType("swap")
        Log("ticker:", exchange.GetTicker())
    
    void main() {
        exchange.SetContractType("this_week");
        Log("ticker:", exchange.GetTicker());
        exchange.IO("currency", "BTC_USDT");
        exchange.SetContractType("swap");
        Log("ticker:", exchange.GetTicker());
    }
    
  • مستقبل_HuobiDM اس ہفتے کے معاہدے پر مقرر:exchange.SetContractType("this_week")اگلے ہفتے کے معاہدے پر مقرر:exchange.SetContractType("next_week")سہ ماہی معاہدے پر مقرر:exchange.SetContractType("quarter")اگلے سہ ماہی کے معاہدے پر مقرر:exchange.SetContractType("next_quarter")مستقل معاہدے پر مقرر:exchange.SetContractType("swap")

    پلیٹ فارم USDT کے ساتھ مارجن والے معاہدوں کی حمایت کرتا ہے۔ مثال کے طور پر بی ٹی سی معاہدے کو لے لو۔ آپ صرف USDT کے ساتھ مارجن والے معاہدے میں تبدیل ہوسکتے ہیںexchange.SetCurrency("BTC_USDT")، یا موجودہ ٹریڈنگ جوڑی کوBTC_USDTبراہ راست جب آپ بوٹ پیرامیٹرز کو ترتیب دیتے ہیں اور تبادلہ اشیاء شامل کرتے ہیں۔ تجارتی جوڑی کو تبدیل کرنے کے بعد ، آپ کو کال کرنے کی ضرورت ہےexchange.SetContractTypeکام دوبارہ معاہدہ قائم کرنے کے لئے.

  • فیوچر_بٹ ایم ای ایکس مستقل معاہدے پر مقرر:exchange.SetContractType("XBTUSD"), exchange.SetContractType("APTUSDT"). معاہدہ کسی خاص وقت پر طے ہوتا ہے ، اور مزید تفصیلات کے ل each ہر معاہدے کا کوڈ چیک کرنے کے لئے بٹ ایم ای ایکس کی سرکاری ویب سائٹ پر لاگ ان کریں۔ مثال کے طور پر:exchange.SetContractType("XBTM19").

  • فیوچر_گیٹی او اس ہفتے کے معاہدے پر مقرر:exchange.SetContractType("this_week"). اگلے ہفتے کے معاہدے پر مقرر:exchange.SetContractType("next_week"). سہ ماہی معاہدے پر مقرر:exchange.SetContractType("quarter"). اگلے سہ ماہی کے معاہدے پر مقرر:exchange.SetContractType("next_quarter"). مستقل معاہدے پر مقرر:exchange.SetContractType("swap"). ایکسچینج USDT کے ساتھ مارجن والے معاہدوں کی حمایت کرتا ہے۔ مثال کے طور پر بی ٹی سی معاہدے کو لے لو۔ آپ صرف USDT کے ساتھ مارجن والے معاہدے میں تبدیل کر سکتے ہیںexchange.SetCurrency("BTC_USDT")، یا موجودہ ٹریڈنگ جوڑی کوBTC_USDTبراہ راست جب آپ لائیو ٹریڈنگ پیرامیٹرز کو ترتیب دیتے ہیں اور تبادلہ اشیاء شامل کرتے ہیں. ٹریڈنگ جوڑی سوئچ کرنے کے بعد، آپ کو کال کرنے کی ضرورت ہےexchange.SetContractTypeکام دوبارہ معاہدہ قائم کرنے کے لئے.

  • فیوچر_ڈیریبیٹ مستقل معاہدے پر مقرر:exchange.SetContractType("BTC-PERPETUAL")Deribit USDC معاہدے کی حمایت؛ کالexchange.SetContractType("ADA_USDC-PERPETUAL")اے ڈی اے یو ایس ڈی سی مارجن کے ساتھ مستقل معاہدہ قائم کرنے کے لئے. معاہدہ کسی خاص وقت پر طے ہوتا ہے ، اور مزید تفصیلات کے ل each ہر معاہدے کے کوڈ کی جانچ پڑتال کرنے کے لئے ڈیریبٹ کی سرکاری ویب سائٹ پر لاگ ان کریں ، جیسے:exchange.SetContractType("BTC-27APR18").

  • فیوچر_کوکوئن

    • کریپٹو مارجن معاہدہ؛ مثال کے طور پر، ٹریڈنگ جوڑی کو مقرر کریںBTC_USD، اور پھر معاہدے کا کوڈ مقرر کریں، جسے کریپٹو مارجنڈ معاہدہ کہا جاتا ہے۔ مستقل معاہدے پر مقرر:exchange.SetContractType("swap")سہ ماہی معاہدے پر مقرر:exchange.SetContractType("quarter")اگلے سہ ماہی کے معاہدے پر مقرر:exchange.SetContractType("next_quarter")
    • یو ایس ڈی ٹی مارجن کے ساتھ معاہدہ: مثال کے طور پر، ٹریڈنگ جوڑی کو مقرر کریںBTC_USDT، اور پھر معاہدے کا کوڈ مقرر کریں ، جو USDT مارجنڈ معاہدہ ہے۔ مستقل معاہدے پر مقرر:exchange.SetContractType("swap").
  • فیوچر_بائننس بائننس فیوچر ڈیفالٹ کے مطابق کوئی معاہدہ کی حیثیت مقرر نہیں کرتا ہے، لہذا آپ کو پہلے معاہدہ مقرر کرنے کی ضرورت ہے۔ مستقل معاہدے پر مقرر:exchange.SetContractType("swap")بائننس فیوچر کے دائمی معاہدے یو ایس ڈی ٹی مارجن والے معاہدے ہوسکتے ہیں۔ مثال کے طور پر ،BTCیو ایس ڈی ٹی مارجنڈ معاہدہ، ٹریڈنگ جوڑی کوBTC_USDTبائننس فیوچر کے دائمی معاہدوں میں کریپٹو مارجن والے معاہدے بھی شامل ہیں۔ مثال کے طور پر ، کریپٹو مارجن والے معاہدے میں ، ٹریڈنگ جوڑی کوBTC_USD.

    سہ ماہی معاہدے پر مقرر:exchange.SetContractType("quarter")ترسیل کے معاہدوں میں کریپٹو مارجن والے معاہدے شامل ہیں (یعنی استعمال شدہ کرنسی کو مارجن کے طور پر لے کر) ۔ مثال کے طور پر ، کی سہ ماہی معاہدے میںBTC، ٹریڈنگ جوڑی پر مقرر کیا جاتا ہےBTC_USD، اور پھر معاہدے کا کوڈ مقررexchange.SetContractType("quarter")، جو بی ٹی سی کریپٹو مارجنڈ سہ ماہی معاہدہ مقرر کر رہا ہے.

    اگلے سہ ماہی کے معاہدے پر مقرر:exchange.SetContractType("next_quarter")مثال کے طور پر، کی سہ ماہی crypto-مارجن معاہدے میںBTC، ٹریڈنگ جوڑی پر مقرر کیا جاتا ہےBTC_USD، اور پھر معاہدے کا کوڈ مقررexchange.SetContractType("next_quarter)بائننس یو ایس ڈی ٹی مارجنڈ ترسیل معاہدوں کا حصہ سپورٹ کرتا ہے، جیسے بی ٹی سی ٹریڈنگ جوڑی کوBTC_USDT، اور پھر معاہدے کا کوڈ مقرر کریں.

  • فیوچر_بی باکس بی باکس مستقل معاہدے کا کوڈ:swap. مستقل معاہدے پر مقرر:exchange.SetContractType("swap").

  • مستقبل_AOFEX AOFEX مستقل معاہدے کا کوڈ:swap. مستقل معاہدے پر مقرر:exchange.SetContractType("swap").

  • فیوچر_BFX BFX مستقل معاہدہ کا کوڈ:swap. مستقل معاہدے پر مقرر:exchange.SetContractType("swap").

  • فیوچر_بیبٹ بائی بٹ موجودہ ٹریڈنگ جوڑی کے مستقل معاہدے کے لئے ڈیفالٹ ہے۔ معاہدہ کا کوڈ:swap. سہ ماہی معاہدے کا کوڈ:quarter. اگلی سہ ماہی کے معاہدے کا کوڈ:next_quarter.

  • فیوچر_کراکن کرکن ڈیفالٹ طور پر معاہدہ کی حیثیت مقرر نہیں کرتا، لہذا آپ کو معاہدہ کا کوڈ مقرر کرنے کی ضرورت ہے. معاہدہ کا کوڈ:swap: دائمی معاہدہ.month: ماہانہ معاہدہquarter: سہ ماہی معاہدہ.next_quarterاگلی سہ ماہی کا معاہدہ.

  • فیوچر_بٹ فائنکس Bitfinex موجودہ ٹریڈنگ جوڑی کے دائمی معاہدے کے لئے ڈیفالٹ کرتا ہے۔ معاہدے کا کوڈ:swap.

  • فیوچر_بٹ گیٹ Bitget موجودہ ٹریڈنگ جوڑی کے دائمی معاہدے کے لئے ڈیفالٹس. معاہدے کا کوڈ:swap. ٹریڈنگ جوڑی پر مقرر کیا گیا ہےBTC_USD، جس میں کریپٹو مارجن والے معاہدے کی نشاندہی کی گئی ہے۔BTC_USDT، جس میں یو ایس ڈی ٹی مارجن والے معاہدے کی نشاندہی کی گئی ہے۔ نقلی معاہدوں میں تجارتی جوڑے کو درج ذیل میں ترتیب دیا جاسکتا ہے:SBTC_USDاورBTC_SUSDT.

  • فیوچر_ڈی آئی ڈی ایکس dYdX مستقل معاہدے کا معاہدہ کوڈ:swap. مستقل معاہدے پر مقرر:exchange.SetContractType("swap"). dYdX صرف USDT مارجن کے ساتھ معاہدوں ہے.

  • فیوچر_MEXC MEXC مستقل معاہدے کا معاہدہ کوڈ:swap. مستقل معاہدے پر مقرر:exchange.SetContractType("swap"). ٹریڈنگ جوڑی پر مقرر کیا گیا ہےBTC_USD، جس میں کریپٹو مارجن والے معاہدے کی نشاندہی کی گئی ہے۔BTC_USDT، جس میں USDT مارجن والے معاہدے کی نشاندہی کی گئی ہے۔

جب cryptocurrency حکمت عملی لکھنے، فونexchange.SetContractType(ContractType)فنکشن اور معاہدے کے پیرامیٹر کے ذریعہ مقرر کردہ تفصیلی معاہدے کی معلوماتContractTypeواپس کر دیا جائے گا.

مثال کے طور پر، تبادلہ اعتراض کے طور پر مقرر OKX معاہدے کی حکمت عملی کوڈ چلانے:

function main(){
    // Set to weekly contract
    var ret = exchange.SetContractType("this_week")     
    // Return the information of the weekly contract
    Log(ret)
}
def main():
    ret = exchange.SetContractType("this_week")
    Log(ret)
void main() {
    auto ret = exchange.SetContractType("this_week");
    Log(ret);
}

میں حکمت عملی چلائیںJavaScriptزبان، اور پرنٹretاعداد و شمار، یعنی تفصیلی معلوماتthis_weekمعاہدہ:

{
    "instrument":"BTC-USD-191101",
    "InstrumentID":"BTC-USD-191101"
}   

تبادلہ.GetContractType()

exchange.GetContractType()تبادلہ آبجیکٹ کا فی الحال مقرر کردہ معاہدے کا کوڈ لوٹاتا ہے (exchange), واپسی کی قیمت: تار.

function main () {
    Log(exchange.SetContractType("this_week")) 
    Log(exchange.GetContractType())
}
def main():
    Log(exchange.SetContractType("this_week"))
    Log(exchange.GetContractType())
void main() {
    Log(exchange.SetContractType("this_week"));
    Log(exchange.GetContractType());
}

Futures_OP غلطیاں

مندرجہ ذیل ٹیبل میں کریپٹوکرنسی فیوچر معاہدوں کے تبادلے کے اشیاء سے متعلق غلطی کی معلومات بیان کی گئی ہے۔

قدر فنکشن ڈسپلے میں خرابی ٹرگر فنکشن تفصیل
0 فیوچر_او پی 0 exchange.SetMarginLevel لیوریج فنکشن کو بلانے میں غلطی
1 فیوچر_او پی 1 exchange.SetDirection فیوچر ٹریڈنگ سمت فنکشن کی ترتیب میں غلطی
2 فیوچر_او پی 2 exchange.SetContractType معاہدہ فنکشن کی ترتیب میں غلطی
3 فیوچر_او پی 3 exchange.GetPosition پوزیشن فنکشن حاصل کرنے میں غلطی
4 فیوچر_او پی 4 exchange.IO IO فنکشن کو کال کرنے میں غلطی

اختیارات کی تجارت

کریپٹو کرنسی کے اختیارات

استعمالexchange.SetContractTypeمعاہدوں کو مقرر کرنے کے لئے فنکشن؛ مختلف تبادلے کے مختلف اختیارات معاہدے کے کوڈز ہیں.

ایف ایم زیڈ کوانٹ ٹریڈنگ پلیٹ فارم کے ذریعہ تعاون یافتہ کریپٹوکرنسی آپشن ایکسچینجز

  • ڈیریبیٹ Deribit تبادلے کے لئے، یہ صرف ضروری ہے کہexchange.SetContractTypeایک اختیارات کے معاہدے کے طور پر معاہدے کو قائم کرنے کے لئے تقریب. اختیارات کے معاہدے کی ترتیب کے بعد، جیسے مارکیٹ انٹرفیس کال کرتے وقتGetTicker، اختیارات کے معاہدے کے تمام مارکیٹ کے اعداد و شمار حاصل کیا جاتا ہے.exchange.Sellاورexchange.Buyایک آرڈر رکھنے کے لئے افعال، اور ایک آرڈر رکھنے کے دوران ٹریڈنگ سمت پر توجہ دینا، اور کی طرف سے ٹریڈنگ سمت مقررexchange.SetDirectionاستعمال کریںexchange.Cancelایک آرڈر منسوخ کرنے کے لئے تقریب؛exchange.GetPositionپوزیشنوں کو استفسار کرنے کے لئے تقریب.

    حوالہ کے لئے حکمت عملی کا کوڈ:ڈیریبٹ آپشنز کی جانچ کی حکمت عملی

  • OKX معاہدوں کا قیام ، احکامات کی جگہ ، احکامات کو منسوخ کرنا ، احکامات کی انکوائری کرنا ، اور مارکیٹ کی قیمتوں کا تعین کرنا ، وغیرہ اسی طرح کا عمل ہےDeribit، اور معاہدہ کوڈ کی شکل ہےBTC-USD-200626-4500-C. آپ انٹرفیس کے ذریعے معاہدے سے متعلق معلومات کی تلاش کر سکتے ہیںhttps://www.okx.com/api/v5/public/instruments.

    مثال کے طور پر بی ٹی سی آپشن معاہدوں کی معلومات کو تلاش کرنے کے لئے:

    function main() {
        Log(HttpQuery("https://www.okx.com/api/v5/public/instruments?instType=OPTION&uly=BTC-USD"))
    }
    
    import json
    import urllib.request
    def main():
        ret = json.loads(urllib.request.urlopen("https://www.okx.com/api/v5/public/instruments?instType=OPTION&uly=BTC-USD").read().decode('utf-8'))
        Log(ret)
    
    void main() {
        Log(HttpQuery("https://www.okx.com/api/v5/public/instruments?instType=OPTION&uly=BTC-USD"));
    }
    
  • مستقبل_HuobiDM مثال کے طور پر، Huobi اختیارات معاہدے کا کوڈ:BTC-USDT-201225-P-13000؛ معاہدہ ایکBTCمعاہدہ؛ مشق کی تاریخ 25 دسمبر 2020 ہے۔ اختیارات پٹ آپشنز (پی یو ٹی) ہیں۔ ہڑتال کی قیمت 13،000 ڈالر ہے۔ کال آپشنز کے لئے خریدار کی طرف سے ادا کردہ پریمیم USDT ہے، جس سے پتہ چلتا ہے کہ اکاؤنٹ کے اثاثوں میں USDT استعمال کیا جاتا ہے۔ بیچنے والے کا مارجن کرنسی ہے، جو اثاثوں میں کرنسی کی ضمانت دی جاتی ہے۔ فروخت کے اختیارات کے لئے خریدار کی طرف سے ادا کردہ پریمیم USDT ہے، جس سے پتہ چلتا ہے کہ اکاؤنٹ کے اثاثوں میں USDT استعمال کیا جاتا ہے؛ بیچنے والے کا مارجن USDT ہے، جو اثاثوں میں USDT کی طرف سے ضمانت دی جاتی ہے.

  • فیوچر_بیبٹ یہ Bybit تبادلے کے USDC آپشن کی حمایت کرتا ہے، اور ٹریڈنگ جوڑی کوETH_USDC، کال فنکشنexchange.SetContractTypeمعاہدے کو ایک آپشن معاہدے کے طور پر مقرر کرنے کے لئے۔ آپشن معاہدے کا مثال کا کوڈ:ETH-25NOV22-1375-P.

نیٹ ورک کی ترتیبات

تبادلہ.سیٹ بیس ((بیس)

کےexchange.SetBase(Base)تقریب تبادلہ اشیاء میں ریکارڈ API بیس ایڈریس سوئچ کرنے کے لئے استعمال کیا جاتا ہے؛ مثال کے طور پر، سوئچ کرنے کے لئےOKXڈومین نامhttps://aws.okx.com، کے ساتھ ہم آہنگexchange.IO("base","https://aws.okx.com")سوئچنگ کا طریقہ۔ بیک ٹیسٹ سسٹم ایکسچینج کے API بیس ایڈریس کو سوئچ کرنے کی حمایت نہیں کرتا ہے (بیک ٹیسٹ سسٹم ایک سینڈ باکس ماحول ہے ، ایکسچینج تک رسائی کے لئے کوئی حقیقی انٹرفیس نہیں) ۔

function main() {
    // Use the default base address
    Log(exchange.GetTicker())
    // Switch to https://aws.okx.com
    exchange.SetBase("https://aws.okx.com")
    Log(exchange.GetTicker())
}
def main():
    Log(exchange.GetTicker())
    exchange.SetBase("https://aws.okx.com")
    Log(exchange.GetTicker())
void main() {
    Log(exchange.GetTicker());
    exchange.SetBase("https://aws.okx.com");
    Log(exchange.GetTicker());
}

تبادلہ.SetProxy(...)

exchange.SetProxy(...)تبادلہ تک رسائی حاصل کرنے کے لئے پراکسی سرور پر سوئچ کرتا ہے۔ اس فنکشن میں کوئی واپسی کی قیمت نہیں ہے (متغیرات کے ذریعہ حاصل کی گئی ہے ، اور آپ جو حاصل کرتے ہیں وہ ہےundefined) اگر پراکسی کی ترتیب ناکام ہوجاتی ہے تو ، جب انٹرفیس کو بلایا جاتا ہے تو ایک نل ویلیو لوٹایا جائے گا ، صرفآرام کرناپروٹوکول.exchanges[n]ایک پراکسی مقرر کر سکتے ہیں. پراکسی قائم کرنے کے بعد, تبادلہ انٹرفیس پراکسی کے ذریعے حاصل کیا جائے گا.

پہلا شامل تبادلہ اعتراض لے لوexchange، یعنی:exchanges[0]مثال کے طور پر:

  • صارف نام اور پاس ورڈ کے بغیر پراکسی سیٹ کریں:exchange.SetProxy("socks5://127.0.0.1:8889")
  • پراکسی سیٹ کریں، اور صارف نام اور پاس ورڈ درج کریں:exchange.SetProxy("socks5://username:password@127.0.0.1:8889") (usernameصارف کا نام ہے،passwordپاس ورڈ ہے.)
  • معمول کے موڈ پر سوئچ کریں، بغیر پراکسی:exchange.SetProxy("")

تبادلہ آبجیکٹ کی طرف سے درخواست کردہ آئی پی ایڈریس مقرر کرنے کے لئے حمایت.

  • عالمی تفصیلات کی ڈاکرwindowsسسٹم انٹرفیس ورژن براہ راست مقرر کیا جا سکتا ہے، مندرجہ ذیل تصویر کے طور پر دکھایا گیا ہے:

img

کمانڈ پرامپٹ استعمال پیرامیٹر کے ذریعہ کام کرنے والے دیگر ڈاکرز-Iآئی پی ایڈریس کی وضاحت کرنے کے لئے:

img

  • تبادلہ کی بنیاد پر:

    function main(){
        exchange.SetProxy("ip://10.0.3.15")
        exchange.GetTicker()                      // The reque

مزید