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

FMZ API ہدایات

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

میں آخری 10 نوشتہ جات اور باقی صاف لاگ ری سیٹ کریں ((10)
}


```Python
def main():
    LogReset(10)
void main() {
    LogReset(10);
}

لوگ ویکیوم

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

مارکیٹ کوٹس API

مارکیٹ انٹرفیس کے اہم افعال:

فنکشن کا نام تفصیل
گیٹ ٹکر ٹِک کوٹس ڈیٹا حاصل کریں
ریکارڈ حاصل کریں K لائن ڈیٹا حاصل کریں
گہرائی حاصل کریں آرڈر بک ڈیٹا حاصل کریں (آرڈر گہرائی ڈیٹا)
گیٹ ٹریڈز مارکیٹ میں تازہ ترین تجارتی ریکارڈ حاصل کریں

مندرجہ ذیل افعال کے ذریعے بلایا جا سکتاexchangeیاexchanges[0]اشیاء؛ مثال کے طور پر: افعال، جیسےexchange.GetTicker();یاexchanges[0].GetTicker();، موجودہ ٹریڈنگ کے جوڑوں کی مارکیٹ کی قیمتوں کا تعین کرتا ہے اور معاہدوں کو مقرر کرتا ہے.

نیٹ ورک تک رسائی کے ساتھ API افعال کو کال کرنے کے لئے اہم تجاویز:کسی بھی API فنکشن کو بلاتے وقت جو پلیٹ فارم انٹرفیس تک رسائی حاصل کرتا ہے (جیسےexchange.GetTicker(), exchange.Buy(Price, Amount), exchange.CancelOrder(Id)، وغیرہ) ، رسائی کی ناکامی کا سبب مختلف وجوہات کی بناء پر ہوسکتا ہے۔ لہذا ہمیں ان افعال کو کال کرنے کے لئے غلطی برداشت کرنے والی پروسیسنگ کرنا ہوگی۔ مثال کے طور پر:exchange.GetTicker()مارکیٹ کے اعداد و شمار حاصل کرنے کی تقریب، پلیٹ فارم سرور کے مسائل اور نیٹ ورک ٹرانسمیشن کے مسائل وغیرہ کی وجہ سے، نتیجے میں ہو سکتا ہے کہ واپسی کی قیمتexchange.GetTicker()فنکشن ہےnull. پھر، واپسی کی قیمتexchange.GetTicker()غلطی برداشت پروسیسنگ کی طرف سے نمٹا جانا چاہئے.

اعداد و شمار کی طرف سے واپسexchange.GetTicker()مندرجہ ذیل کوڈ میں فنکشنtickerمتغیر، اور ہم استعمال کرنے سے پہلے غلطی رواداری کے ساتھ نمٹنے کی ضرورت ہےticker variable.

function main() {
    var ticker = exchange.GetTicker()
    if(!ticker){
        // Recall once, or use other processing logic
        ticker = exchange.GetTicker()
    }
}
def main():
    ticker = exchange.GetTicker()
    if not ticker:
        ticker = exchange.GetTicker()
void main() {
    auto ticker = exchange.GetTicker();
    if(!ticker.Valid) {
        ticker = exchange.GetTicker();
        Log("Test");
    }
}

اس کے علاوہ، حکمت عملی کی خرابی برداشت کارکردگی کی جانچ کے لئے، FMZ نے خاص طور پر ایک منفردغلطی برداشت کرنے والا موڈبیک ٹسٹ۔ بیک ٹسٹ سسٹم بے ترتیب طور پر کچھ API کالز واپس کرسکتا ہے جو سیٹ پیرامیٹرز کے مطابق نیٹ ورک تک رسائی حاصل کرنے پر پیش آئیں گے ، اور کچھ ناکام کالوں کی واپسی کی اقدار واپس کرسکتے ہیں۔ آپ بوٹ میں پروگرام کی استحکام کو جلدی سے جانچ سکتے ہیں۔ حکمت عملی ترمیم کے صفحے پر بیک ٹیسٹ سسٹم کے صفحے پر سوئچ کریں، پر کلک کریںالٹا مثلثڈراپ ڈاؤن کنٹرول Start Backtest بٹن کے دائیں جانب، اور Backtest Fault Tolerant بٹن پاپ اپ ہو جائے گا.

تبادلہ.GetTicker()

exchange.GetTicker()موجودہ ٹریڈنگ جوڑوں اور معاہدوں کی موجودہ مارکیٹ کوٹس حاصل کرتا ہے، واپسی کا قدر:Tickerساخت. بیک ٹسٹ سسٹم میں،Tickerڈیٹا واپس کیاexchange.GetTicker()فنکشن، جہاںHighاورLowروبوٹ میں فروخت 1 اور خرید 1 کے موجودہ وقت سے لی گئی نقلی اقدار ہیں۔ حقیقی چلانے میں کریپٹوکرنسی ایکسچینج کے ذریعہ بیان کردہ ایک خاص مدت میں سب سے زیادہ قیمت اور سب سے کم قیمت ہے۔Tick interface.

function main(){
    var ticker = exchange.GetTicker()
    /*
        The platform interface may not be accessible due to network problems (even if the device's docker program can open the platform website, the API may not be accessible)
        At this time, ticker is null, when accessing ticker. When it is "High", it will cause an error; so when testing, ensure that you can access the platform interface
    */
    Log("High:", ticker.High, "Low:", ticker.Low, "Sell:", ticker.Sell, "Buy:", ticker.Buy, "Last:", ticker.Last, "Volume:", ticker.Volume)
}
def main():
    ticker = exchange.GetTicker()
    Log("High:", ticker["High"], "Low:", ticker["Low"], "Sell:", ticker["Sell"], "Buy:", ticker["Buy"], "Last:", ticker["Last"], "Volume:", ticker["Volume"])
void main() {
    auto ticker = exchange.GetTicker();
    Log("High:", ticker.High, "Low:", ticker.Low, "Sell:", ticker.Sell, "Buy:", ticker.Buy, "Last:", ticker.Last, "Volume:", ticker.Volume);
}

حقیقی بوٹ میں (backtest نہیں) ،Infoکی واپسی کی قیمت میں وصفexchange.GetTicker()فنکشن انٹرفیس بلایا جاتا ہے جب واپس اصل ڈیٹا ذخیرہ.

تبادلہ.گٹ گہرائی()

exchange.GetDepth()موجودہ ٹریڈنگ جوڑوں اور معاہدوں کے تبادلہ آرڈر بک کے اعداد و شمار حاصل کرتا ہے۔ واپسی کی قیمت:Depth structure.

Depthڈھانچہ ڈھانچے کے دو صفوں پر مشتمل ہے، یعنیAsks[]اورBids[], AsksاورBidsمندرجہ ذیل ساخت متغیرات پر مشتمل ہے:

ڈیٹا ٹائپ متغیر کا نام تفصیل
نمبر قیمت قیمت
نمبر رقم رقم

مثال کے طور پر، اگر میں موجودہ فروخت دوسری قیمت حاصل کرنا چاہتے ہیں، میں اس طرح کا کوڈ لکھ سکتے ہیں:

function main(){
    var depth = exchange.GetDepth()
    /*
       The platform interface may not be accessible due to network reasons (even if the device's docker program can open the platform website, the API may not be accessible)
       At this time, depth is null. When accessing depth.Asks[1].Price, it will cause an error; so when testing, ensure that you can access the platform interface
    */
    var price = depth.Asks[1].Price
    Log("Sell 2 price is:", price)
}
def main():
    depth = exchange.GetDepth()
    price = depth["Asks"][1]["Price"]
    Log("Sell 2 price is:", price)
void main() {
    auto depth = exchange.GetDepth();
    auto price = depth.Asks[1].Price;
    Log("Sell 2 price is:", price);
}

تبادلہ.GetTrades()

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

// In the simulated backtest, the data is empty; to have a trading history, there must be a real bot running
function main(){
    var trades = exchange.GetTrades()
    /*
        The platform interface may not be accessible due to network reasons (even if the device's docker program can open the platform website, the API may not be accessible)
        At this time, "trades" is null. When accessing trades[0].Id, it will cause an error; so when testing, ensure that you can access the platform interface
    */
    Log("id:", trades[0].Id, "time:", trades[0].Time, "Price:", trades[0].Price, "Amount:", trades[0].Amount, "type:", trades[0].Type)
}
def main():
    trades = exchange.GetTrades()
    Log("id:", trades[0]["Id"], "time:", trades[0]["Time"], "Price:", trades[0]["Price"], "Amount:", trades[0]["Amount"], "type:", trades[0]["Type"])
void main() {
    auto trades = exchange.GetTrades();
    Log("id:", trades[0].Id, "time:", trades[0].Time, "Price:", trades[0].Price, "Amount:", trades[0].Amount, "type:", trades[0].Type);
}

تبادلہ.GetRecords()

exchange.GetRecords(Period)K-لائن کے اعداد و شمار کو لوٹاتا ہے. K-لائن مدت بوٹ تخلیق کرتے وقت مخصوص کیا جاتا ہے؛ اگر آپ پیرامیٹرز کی وضاحت کرتے ہیں جبexchange.GetRecords()جب فنکشن کو بلایا جاتا ہے تو ، حاصل کردہ ڈیٹا پیرامیٹر پیریڈ کے مطابق K- لائن ڈیٹا ہوگا۔ اگر کوئی مخصوص پیرامیٹر نہیں ہے تو ، K- لائن ڈیٹا کو بوٹ پیرامیٹرز پر مقرر کردہ K- لائن مدت یا بیک ٹسٹ پیج پر مقرر کردہ K- لائن مدت کے مطابق واپس کیا جاتا ہے۔

پیرامیٹرPeriod:

  • پیریڈ_M1: 1 منٹ سے مراد ہے
  • مدت_M5: 5 منٹ سے مراد ہے
  • PERIOD_M15: 15 منٹ سے مراد ہے
  • پیریڈ_M30: 30 منٹ سے مراد ہے
  • PERIOD_H1: 1 گھنٹے سے مراد ہے
  • PERIOD_D1: 1 دن سے مراد ہے کے پیرامیٹر قدرPeriodصرف اوپر بیان کردہ معیاری ادوار کو ہی پاس کر سکتے ہیں، بلکہ سیکنڈ کی اکائی میں نمبر بھی پاس کر سکتے ہیں۔

کی واپسی کی قیمتexchange.GetRecords(Period)فنکشن: واپسی کی قیمت کی ایک صف ہےRecordڈھانچے، واپس K لائن کے اعداد و شمار وقت کے ساتھ ساتھ جمع کیا جائے گا، جمع K لائن سلاخوں کی اوپری حد کی طرف سے متاثر کیا جاتا ہےexchange.SetMaxBarLenفنکشن کی ترتیب۔ ڈیفالٹ اوپری حد 5000 K- لائن بار ہے جب یہ سیٹ نہیں ہوتی ہے۔ جب K- لائن ڈیٹا K- لائن بار جمع کرنے کی حد تک پہنچ جاتا ہے تو ، اسے K- لائن بار شامل کرکے اور سب سے پہلے K- لائن بار کو حذف کرکے اپ ڈیٹ کیا جائے گا (جیسے قطار میں / باہر) ۔ کچھ تبادلے K- لائن انٹرفیس فراہم نہیں کرتے ہیں ، پھر ڈوکر مارکیٹ ٹرانزیکشن ریکارڈ کے اعداد و شمار کو حقیقی وقت میں جمع کرتا ہے تاکہ K لائنز تیار کی جائیں۔

K لائن سلاخوں کی تعداد جبGetRecordsفنکشن ابتدائی طور پر بلایا جاتا ہے.

  • بیک ٹسٹنگ کی مدت کے آغاز کے وقت پہلی 1000 K لائن بارز بیک ٹسٹنگ سسٹم میں ابتدائی K لائن ڈیٹا کے طور پر پہلے سے لی جاتی ہیں۔
  • حقیقی بوٹ کے دوران حاصل کیے جانے والے K- لائن باروں کی مخصوص تعداد اس ڈیٹا کی زیادہ سے زیادہ مقدار پر مبنی ہے جو ایکسچینج کے K- لائن انٹرفیس کے ذریعہ حاصل کی جاسکتی ہے۔

کے لئےexchange.GetRecords(Period)کی کارکردگی، bot اور backtest کےکریپٹوکرنسیدونوں اپنی مرضی کے مطابق ادوار کی حمایت، اور پیرامیٹرPeriodسیکنڈ کی تعداد ہے۔ مثلاً:

function main() {
    // Print K-line data with a K-line period of 120 seconds (2 minutes)
    Log(exchange.GetRecords(60 * 2))         
    // Print K-line data with a K-line period of 5 minutes
    Log(exchange.GetRecords(PERIOD_M5))      
}
def main():
    Log(exchange.GetRecords(60 * 2))
    Log(exchange.GetRecords(PERIOD_M5))
void main() {
    Log(exchange.GetRecords(60 * 2)[0]);
    Log(exchange.GetRecords(PERIOD_M5)[0]);
}

ترتیبPeriod5 پر پیرامیٹر 5 سیکنڈ کی مدت کے ساتھ K لائن کے اعداد و شمار کی درخواست کرنا ہے. اگرPeriodپیرامیٹر 60 سے یکساں طور پر تقسیم نہیں کیا جاتا ہے (یعنی نمائندگی کی مدت دستیاب منٹ کی مدت ہے) ، نظام کی نچلی پرت کے متعلقہ انٹرفیس کا استعمال کرتا ہےGetTradesتجارتی ریکارڈ کے اعداد و شمار حاصل کرنے اور مطلوبہ K لائن کے اعداد و شمار کو مرتب کرنے کے لئے. اگرPeriodپیرامیٹر کو 60 سے یکساں طور پر تقسیم کیا جاتا ہے ، پھر مطلوبہ K لائن کے اعداد و شمار کو کم از کم 1 منٹ کے K لائن کے اعداد و شمار کا استعمال کرتے ہوئے ترکیب کیا جاتا ہے (اگر ممکن ہو تو مطلوبہ K لائن کے اعداد و شمار کو ترکیب کرنے کے لئے زیادہ مدت کا استعمال کرتے ہوئے) ۔

function main(){
    var records = exchange.GetRecords(PERIOD_H1)
    /*
        The platform interface may not be accessible due to network reasons (even if the device's docker program can open the platform website, the API may not be accessible)
        At this time, "records" is null. When accessing records[0].Time, it will cause an error; so when testing, ensure that you can access the platform interface
    */
    Log("The first k-line data is, Time:", records[0].Time, "Open:", records[0].Open, "High:", records[0].High)
    Log("The second k-line data is, Time:", records[1].Time ,"Close:", records[1].Close)
    Log("Current K-line (latest)", records[records.length-1], "Current K-line (latest)", records[records.length-2])
}
def main():
    records = exchange.GetRecords(PERIOD_H1)
    Log("The first k-line data is, Time:", records[0]["Time"], "Open:", records[0]["Open"], "High:", records[0]["High"])
    Log("The second k-line data is, Time:", records[1]["Time"], "Close:", records[1]["Close"])
    Log("Current K-line (latest)", records[-1], "Current K-line (latest)", records[-2])
void main() {
    auto records = exchange.GetRecords(PERIOD_H1);
    Log("The first k-line data is, Time:", records[0].Time, "Open:", records[0].Open, "High:", records[0].High);
    Log("The second k-line data is, Time:", records[1].Time, "Close:", records[1].Close);
    Log("Current K-line (latest)", records[records.size() - 1], "Current K-line (latest)", records[records.size() - 2]);
}

exchange.GetRecords()فنکشن K لائن کے اعداد و شمار حاصل کرنے کے لئے دو شرائط ہیں:

  • تبادلہ ایک K لائن ڈیٹا انٹرفیس فراہم کرتا ہے۔ اس معاملے میں ، حاصل کردہ ڈیٹا تبادلہ کے ذریعہ براہ راست واپس آنے والے ڈیٹا ہیں۔

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

نظام میں تخروپن کی سطح کے بیک ٹسٹ کو سیٹ کرنے کی ضرورت ہےبنیادی K لائن مدت(جب backtesting کے نظام backtesting کے سطح کا مشابہت کرتا ہے تو، سیٹ کے مطابق ٹک ڈیٹا پیدا کرنے کے لئے متعلقہ K لائن کے اعداد و شمار کا استعمال کیا جاتا ہےبنیادی K لائن مدت); یہ نوٹ کیا جانا چاہئے کہ حکمت عملی میں حاصل کردہ K لائن کے اعداد و شمار کی مدت کم نہیں ہوسکتی ہےبنیادی K لائن کی مدتکیونکہ تخروپن کی سطح کے بیک ٹیسٹ میں ، ہر مدت کے K لائن ڈیٹا کو بیک ٹیسٹ سسٹم میں بنیادی K لائن ادوار کے مطابق K لائن ڈیٹا کے ذریعہ ترکیب کیا جاتا ہے۔

اندرcppزبان، آپ کو آپ کے اپنے K لائن کے اعداد و شمار کی تعمیر کرنے کی ضرورت ہے تو، مندرجہ ذیل کوڈ مثالیں ہیں:

#include <sstream>
void main() { 
    Records r;
    r.Valid = true;
    for (auto i = 0; i < 10; i++) {
        Record ele;
        ele.Time = i * 100000;
        ele.High = i * 10000;
        ele.Low = i * 1000;
        ele.Close = i * 100;
        ele.Open = i * 10;
        ele.Volume = i * 1;
        r.push_back(ele);
    }
    // Output display: Records[10]
    Log(r);                      
    auto ma = TA.MA(r,10);       
    // Output display: [nan,nan,nan,nan,nan,nan,nan,nan,nan,450]
    Log(ma);                     
}

تبادلہ.GetPeriod()

کےexchange.GetPeriod()فنکشن میں حکمت عملی چلانے جب FMZ پلیٹ فارم ویب سائٹ کے صفحے پر مقرر K لائن مدت واپسبیک ٹسٹاوربوٹ. واپسی کی قیمت سیکنڈ کے یونٹ میں ایک عدد ہے. واپسی کی قیمت: عددی قسم.

function main() {
    // For example, in the backtest and bot, set the K-line period on the website page of FMZ platform to 1 hour
    var period = exchange.GetPeriod()
    Log("K-line period:", period / (60 * 60), "hour")
}
def main():
    period = exchange.GetPeriod()
    Log("K-line period:", period / (60 * 60), "hour")
void main() {
    auto period = exchange.GetPeriod();
    Log("K-line period:", period / (60 * 60.0), "hour");
}

تبادلہ.SetMaxBarLen(Len)

کےexchange.SetMaxBarLen(Len)فنکشن cryptocurrency حکمت عملی کے رن ٹائم کے دوران دو پہلوؤں کو متاثر کرتا ہے:

  • پہلی بار حاصل کی جانے والی K لائن بار (BAR) کی تعداد کو متاثر کرتا ہے۔
  • K لائن بار (BAR) کی اوپری حد کو متاثر کرنا۔
function main() {
    exchange.SetMaxBarLen(50)
    var records = exchange.GetRecords()
    Log(records.length, records)
}
def main():
    exchange.SetMaxBarLen(50)
    r = exchange.GetRecords()
    Log(len(r), r)
void main() {
    exchange.SetMaxBarLen(50);
    auto r = exchange.GetRecords();
    Log(r.size(), r[0]);
}

تبادلہ.GetRawJSON()

exchange.GetRawJSON()گزشتہ کی طرف سے واپس خام مواد (سلسلے) لوٹاتا ہےRESTدرخواست ، جس کا استعمال خود ہی ڈیٹا کو تجزیہ کرنے کے لئے کیا جاسکتا ہے۔ واپسی کی قیمت: تار کی قسم ، صرف کرپٹوکرنسی لائیو ٹریڈنگ ماحول میں موزوں ہے۔ بیک ٹیسٹ اس فنکشن کی حمایت نہیں کرتا ہے۔ میں حکمت عملیcppزبان اس فنکشن کی حمایت نہیں کرتا.

function main(){
    exchange.GetAccount(); 
    var obj = JSON.parse(exchange.GetRawJSON());
    Log(obj);
}
import json
def main():
    exchange.GetAccount()
    obj = json.loads(exchange.GetRawJSON())
    Log(obj)
void main() {
    auto obj = exchange.GetAccount();
    // C++ doe not support "GetRawJSON" function
    Log(obj);
}

تبادلہ.GetRate()

exchange.GetRate()تبادلے میں فی الحال استعمال ہونے والی کرنسی کی شرح تبادلہ اور فی الحال دکھائی جانے والی قیمتوں کی کرنسی کو واپس کرتا ہے ، اور 1 کی واپسی کی قیمت سے پتہ چلتا ہے کہ زر مبادلہ کی شرح تبادلہ غیر فعال ہے۔ واپسی کی قیمت: عددی قسم۔

نوٹ:

  • اگرexchange.SetRate()کرنسی کی شرح مقرر کرنے کے لئے بلایا نہیں کیا گیا ہے، کرنسی کی شرح کی قیمت کی طرف سے واپسexchange.GetRate()ڈیفالٹ طور پر 1 ہے، یعنی فی الحال دکھایا گیا زر مبادلہ کی شرح تبادلہ نہیں کیا گیا ہے۔
  • اگرexchange.SetRate()کرنسی کی شرح کی قیمت مقرر کرنے کے لئے استعمال کیا گیا ہے، جیسے،exchange.SetRate(7)، تب ٹریڈنگ پلیٹ فارم کی گردش کرنسی کی نمائندگی کرنے والے موجودہ تبادلے کے اعتراض کی تمام قیمت کی معلومات ، جیسے قیمتیں ، گہرائی ، آرڈر کی قیمتیں ، وغیرہ ، تبادلوں کے لئے پہلے سے طے شدہ زر مبادلہ کی شرح 7 سے ضرب کی جائیں گی۔
  • اگرexchangeقیمتوں کا تعین کرنے والی کرنسی کے طور پر امریکی ڈالر کے ساتھ تبادلہ کے مترادف ہے، کال کرنے کے بعدexchange.SetRate(7)، بوٹ کی تمام قیمتوں کو 7 سے ضرب کر کے CNY کے قریب قیمتوں میں تبدیل کیا جائے گا. اس وقت کرنسی کی شرح کی قیمت کا استعمال کرتے ہوئے حاصل کیا جاتا ہےexchange.GetRate()ہے 7.

تبادلہ.GetUSDCNY()

exchange.GetUSDCNY()امریکی ڈالر کی تازہ ترین زر مبادلہ کی شرح واپس کرتا ہے (ڈیٹا ماخذ فراہم کردہyahooواپسی کی قیمت: عددی قسم.

exchange.SetData ((کلید، قدر)

کےexchange.SetData(Key, Value)یہ فنکشن اس وقت لوڈ ہونے والے ڈیٹا کو ترتیب دینے کے لئے استعمال کیا جاتا ہے جب حکمت عملی چل رہی ہے ، جو کوئی بھی معاشی اشارے ، صنعت کے اعداد و شمار ، متعلقہ انڈیکس وغیرہ ہوسکتی ہے۔ اس کا استعمال تجارتی حکمت عملیوں کے لئے تمام مقداری معلومات کی مقدار کے لئے کیا جاسکتا ہے اور بیک ٹیسٹ سسٹم میں استعمال کرنے میں بھی مدد مل سکتی ہے۔

کال کرنے کا طریقہexchange.SetData(Key, Value)فنکشن:

  • براہ راست حکمت عملی میں ڈیٹا لکھیں اعداد و شمار کی شکل کے طور پر کی ضرورت ہےdataمندرجہ ذیل مثال میں متغیر.

    /*backtest
    start: 2020-01-21 00:00:00
    end: 2020-02-12 00:00:00
    period: 1d
    basePeriod: 1d
    exchanges: [{"eid":"Bitfinex","currency":"BTC_USD"}]
    */
    function main() {
        var data = [
            [1579536000000, "abc"],
            [1579622400000, 123],
            [1579708800000, {"price": 123}],
            [1579795200000, ["abc", 123, {"price": 123}]]
        ]
        exchange.SetData("test", data)
        while(true) {
            Log(exchange.GetData("test"))
            Sleep(1000)
        }
    }
    
    '''backtest
    start: 2020-01-21 00:00:00
    end: 2020-02-12 00:00:00
    period: 1d
    basePeriod: 1d
    exchanges: [{"eid":"Bitfinex","currency":"BTC_USD"}]
    '''  
    
    def main():
        data = [
            [1579536000000, "abc"],
            [1579622400000, 123],
            [1579708800000, {"price": 123}],
            [1579795200000, ["abc", 123, {"price": 123}]]
        ]
        exchange.SetData("test", data)
        while True:
            Log(exchange.GetData("test"))
            Sleep(1000)
    
    /*backtest
    start: 2020-01-21 00:00:00
    end: 2020-02-12 00:00:00
    period: 1d
    basePeriod: 1d
    exchanges: [{"eid":"Bitfinex","currency":"BTC_USD"}]
    */  
    
    void main() {
        json data = R"([
            [1579536000000, "abc"],
            [1579622400000, 123],
            [1579708800000, {"price": 123}],
            [1579795200000, ["abc", 123, {"price": 123}]]
        ])"_json;
        
        exchange.SetData("test", data);
        while(true) {
            Log(exchange.GetData("test"));
            Sleep(1000);
        }
    }
    

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

    img

    جیسا کہ ہم دیکھ سکتے ہیں، وقت کا موازنہ ٹائم اسٹیمپ1579622400000ہے2020-01-22 00: 00: 00جب اسٹریٹجی پروگرام اس وقت کے بعد چلتا ہے تو ، اگلے ڈیٹا ٹائم اسٹیمپ سے پہلے1579708800000، یعنی، وقت سے پہلے2020-01-23 00: 00: 00، کال کریںexchange.GetData(Source)اعداد و شمار حاصل کرنے کے لئے تقریب. تمام حاصل مواد ہے[1579622400000, 123]. پروگرام چلانے کے لئے جاری ہے اور وقت کی تبدیلیوں کے طور پر، اعداد و شمار ٹکڑا ٹکڑا اعداد و شمار اس طرح حاصل.

  • بیرونی روابط کے ذریعے ڈیٹا کی درخواست کریں

    مطلوبہ ڈیٹا فارمیٹ

    {
        "schema":["time","data"],
        "data":[
            [1579536000000, "abc"],
            [1579622400000, 123],
            [1579708800000, {"price": 123}],
            [1579795200000, ["abc", 123, {"price": 123}]]
        ]
    }
    

    کہاںschemaلوڈ کردہ ڈیٹا کے مرکزی جسم میں ہر ریکارڈ کا ڈیٹا فارمیٹ ہے، فارمیٹ مقرر کیا جاتا ہے["time", "data"]، کے مطابقdataاعداد و شمار کی ایک ایک کر کے صفات کی شکل.dataخاصیت ڈیٹا کا بنیادی جسم اسٹور کرتی ہے ، اور ڈیٹا کا ہر ٹکڑا ملی سیکنڈ کی سطح کے ٹائم اسٹیمپ اور ڈیٹا مواد پر مشتمل ہوتا ہے (ڈیٹا مواد کسی بھی JSON کوڈڈ ڈیٹا ہوسکتا ہے) ۔

    ٹیسٹنگ کے لئے سروس پروگرام میں لکھا ہےGoزبان:

    package main
    import (
        "fmt"
        "net/http"
        "encoding/json"
    )  
    
    func Handle (w http.ResponseWriter, r *http.Request) {
        defer func() {
            fmt.Println("req:", *r)
            ret := map[string]interface{}{
                "schema": []string{"time","data"},
                "data": []interface{}{
                    []interface{}{1579536000000, "abc"},
                    []interface{}{1579622400000, 123},
                    []interface{}{1579708800000, map[string]interface{}{"price":123}},
                    []interface{}{1579795200000, []interface{}{"abc", 123, map[string]interface{}{"price":123}}},
                },
            }
            b, _ := json.Marshal(ret)
            w.Write(b)
        }()
    }  
    
    func main () {
        fmt.Println("listen http://localhost:9090")
        http.HandleFunc("/data", Handle)
        http.ListenAndServe(":9090", nil)
    }
    

    درخواست موصول ہونے کے بعد، پروگرام ڈیٹا کا جواب دیتا ہے:

    {
        "schema":["time","data"],
        "data":[
            [1579536000000, "abc"],
            [1579622400000, 123],
            [1579708800000, {"price": 123}],
            [1579795200000, ["abc", 123, {"price": 123}]]
        ]
    }
    

    ٹیسٹ کی حکمت عملی کا کوڈ:

    /*backtest
    start: 2020-01-21 00:00:00
    end: 2020-02-12 00:00:00
    period: 1d
    basePeriod: 1d
    exchanges: [{"eid":"Bitfinex","currency":"BTC_USD"}]
    */
    function main() {
        while(true) {
            Log(exchange.GetData("http://xxx.xx.x.xx:9090/data"))
            Sleep(1000)
        }
    }
    
    '''backtest
    start: 2020-01-21 00:00:00
    end: 2020-02-12 00:00:00
    period: 1d
    basePeriod: 1d
    exchanges: [{"eid":"Bitfinex","currency":"BTC_USD"}]
    '''  
    
    def main():
        while True:
            Log(exchange.GetData("http://xxx.xx.x.xx:9090/data"))
            Sleep(1000)
    
    /*backtest
    start: 2020-01-21 00:00:00
    end: 2020-02-12 00:00:00
    period: 1d
    basePeriod: 1d
    exchanges: [{"eid":"Bitfinex","currency":"BTC_USD"}]
    */  
    
    void main() {
        while(true) {
            Log(exchange.GetData("http://xxx.xx.x.xx:9090/data"));
            Sleep(1000);
        }
    }
    

تبادلہ.GetData ((ماخذ)

کےexchange.GetData(Source)تقریب کی طرف سے بھری ہوئی ڈیٹا حاصل کرنے کے لئے استعمال کیا جاتا ہےexchange.SetData(Key, Value)بیرونی لنک کے ذریعہ فراہم کردہ ڈیٹا کو بیک ٹسٹ سسٹم میں استعمال کیا جاسکتا ہے۔ بیک ٹسٹ کے دوران ایک بار ڈیٹا حاصل کیا جاتا ہے ، اور اصل تجارت کے دوران ایک منٹ کے لئے ڈیٹا کیش ہوجاتا ہے۔

  • براہ راست لکھے گئے ڈیٹا کا کال کرنے کا طریقہ حاصل کرنا

    /*backtest
    start: 2020-01-21 00:00:00
    end: 2020-02-12 00:00:00
    period: 1d
    basePeriod: 1d
    exchanges: [{"eid":"Bitfinex","currency":"BTC_USD"}]
    */
    function main() {
        exchange.SetData("test", [[1579536000000, _D(1579536000000)], [1579622400000, _D(1579622400000)], [1579708800000, _D(1579708800000)]])
        while(true) {
            Log(exchange.GetData("test"))
            Sleep(1000 * 60 * 60 * 24)
        }
    }
    
    '''backtest
    start: 2020-01-21 00:00:00
    end: 2020-02-12 00:00:00
    period: 1d
    basePeriod: 1d
    exchanges: [{"eid":"Bitfinex","currency":"BTC_USD"}]
    '''  
    def main():
        exchange.SetData("test", [[1579536000000, _D(1579536000000/1000)], [1579622400000, _D(1579622400000/1000)], [1579708800000, _D(1579708800000/1000)]])
        while True:
            Log(exchange.GetData("test"))
            Sleep(1000 * 60 * 60 * 24)
    
    /*backtest
    start: 2020-01-21 00:00:00
    end: 2020-02-12 00:00:00
    period: 1d
    basePeriod: 1d
    exchanges: [{"eid":"Bitfinex","currency":"BTC_USD"}]
    */    
    void main() {
        json arr = R"([[1579536000000, ""], [1579622400000, ""], [1579708800000, ""]])"_json;
        arr[0][1] = _D(1579536000000);
        arr[1][1] = _D(1579622400000);
        arr[2][1] = _D(1579708800000);
        exchange.SetData("test", arr);
        while(true) {
            Log(exchange.GetData("test"));
            Sleep(1000 * 60 * 60 * 24);
        }
    }
    
  • بیرونی روابط سے ڈیٹا کو کال کرنے کا طریقہ

    function main() {
        Log(exchange.GetData("http://xxx.xx.x.xx:9090/data"))
        Log(exchange.GetData("https://www.fmz.com/upload/asset/32bf73a69fc12d36e76.json"))
    }
    
    def main():
        Log(exchange.GetData("http://xxx.xx.x.xx:9090/data"))
        Log(exchange.GetData("https://www.fmz.com/upload/asset/32bf73a69fc12d36e76.json"))
    
    void main() {
        Log(exchange.GetData("http://xxx.xx.x.xx:9090/data"));
        Log(exchange.GetData("https://www.fmz.com/upload/asset/32bf73a69fc12d36e76.json"));
    }
    
  • پلیٹ فارم ڈیٹا سینٹر کے بنیادی ڈیٹا کا استعمال کریں استعمال کریںexchange.GetData(Source)حاصل کرنے کے لئے تقریببنیادی اعداد و شمار.

جب کال کریںexchange.GetData(Source)آپ کیش ٹائم آؤٹ کو ملی سیکنڈ میں ترتیب دینے کے لئے دوسرے پیرامیٹر میں پاس کرسکتے ہیں۔ اصلی بوٹ میں ڈیفالٹ ایک منٹ کیش ٹائم آؤٹ ہے۔ بیک ٹیسٹ سسٹم میں ، جب ڈیٹا کی درخواست کرنے کے لئے رسائی انٹرفیس کا استعمال کرتے ہو تو ، بیک ٹیسٹ سسٹم پیرامیٹرز from (ٹائم اسٹیمپ سیکنڈ) ، to (ٹائم اسٹیمپ سیکنڈ) ، مدت (بنیادی K لائن مدت ، ٹائم اسٹیمپ ملی سیکنڈ) اور دیگر پیرامیٹرز کو خود بخود درخواست میں شامل کرے گا ، تاکہ حاصل ہونے والے ڈیٹا کی وقت کی حد کا تعین کیا جاسکے۔

ٹریڈنگ API

مندرجہ ذیل افعال کے ذریعے بلایا جا سکتا ہےexchangeیاexchanges[0]اعتراض۔ مثال کے طور پر:exchange.Sell(100, 1);اگلا آرڈر 100 کی قیمت اور ایکسچینج پر 1 کی مقدار کے ساتھ فروخت آرڈر ہے.

تبادلہ.خریداری ((قیمت، رقم)

exchange.Buy(Price, Amount)ایک خرید آرڈر رکھنے اور ایک آرڈر ID واپس کرنے کے لئے استعمال کیا جاتا ہے. پیرامیٹر قدر:Priceنمبر کی قسم میں آرڈر کی قیمت ہے، اورAmountرقم کی قسم میں آرڈر کی رقم ہے۔ واپسی کی قیمت: تار کی قسم یا عددی قسم (مخصوص قسم ہر ایکسچینج پلیٹ فارم کی واپسی کی قسم پر منحصر ہے) ۔

واپس کردہ آرڈر نمبر کا استعمال آرڈر کی معلومات کو تلاش کرنے اور احکامات کو منسوخ کرنے کے لئے کیا جا سکتا ہے.

function main() {
    var id = exchange.Buy(100, 1);
    Log("id:", id);
}
def main():
    id = exchange.Buy(100, 1)
    Log("id:", id)
void main() {
    auto id = exchange.Buy(100, 1);
    Log("id:", id);
}
  • فیوچر آرڈر

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

    // The following is the wrong call
    function main() {
        exchange.SetContractType("quarter")
      
        // Set short direction
        exchange.SetDirection("sell")     
        // Place a buy order, and you will get an error, so you can only sell short
        var id = exchange.Buy(50, 1)      
    
        // Set short direction
        exchange.SetDirection("buy")      
        // Place a sell order, and you will get an error, so you can only buy long
        var id2 = exchange.Sell(60, 1)    
      
        // Set close long position direction
        exchange.SetDirection("closebuy")    
        // Place a buy order, and you will get an error, so you can only sell short
        var id3 = exchange.Buy(-1, 1)        
      
        // Set close short position direction
        exchange.SetDirection("closesell")   
        // Place a sell order, and you will get an error, so you can only buy long
        var id4 = exchange.Sell(-1, 1)       
    }
    
    # The following is the wrong call
    def main():
        exchange.SetContractType("quarter")
        exchange.SetDirection("sell")
        id = exchange.Buy(50, 1)
        exchange.SetDirection("buy")
        id2 = exchange.Sell(60, 1)
        exchange.SetDirection("closebuy")
        id3 = exchange.Buy(-1, 1)
        exchange.SetDirection("closesell")
        id4 = exchange.Sell(-1, 1)
    
    // The following is the wrong call
    void main() {
        exchange.SetContractType("quarter");
        exchange.SetDirection("sell");
        auto id = exchange.Buy(50, 1);
        exchange.SetDirection("buy");
        auto id2 = exchange.Sell(60, 1);
        exchange.SetDirection("closebuy");
        auto id3 = exchange.Buy(-1, 1);
        exchange.SetDirection("closesell");
        auto id4 = exchange.Sell(-1, 1);
    }
    

    غلطی کا پیغام:

    direction is sell, invalid order type Buy
    direction is buy, invalid order type Sell
    direction is closebuy, invalid order type Buy
    direction is closesell, invalid order type Sell
    
  • مارکیٹ آرڈر

    نوٹ: ایکسچینج آرڈر انٹرفیس کو مارکیٹ آرڈرز کی حمایت کے لئے درکار ہے (جب آرڈر کی قسم خرید آرڈر ہے تو ، آرڈر کی رقم کا پیرامیٹر کوٹ کرنسی میں رقم ہے) ، اور مارکیٹ آرڈر کا طریقہ cryptocurrency مستقبل کے احکامات کی جگہ کے لئے استعمال کیا جاتا ہے ، اور مقدار پیرامیٹر کی اکائی ہےمعاہدوں کی تعدادکچھ لائیو ٹریڈنگ ایکسچینج ڈیجیٹل کرنسیوں کے لئے مارکیٹ آرڈر انٹرفیس کی حمایت نہیں کرتے ہیں.

    // For example, trading pairs: ETH_BTC, bought in by market order
    function main() {
        // Buy a market order, and buy ETH coins equal to 0.1 BTC (quote currency) 
        exchange.Buy(-1, 0.1)    
    }
    
    def main():
        exchange.Buy(-1, 0.1)
    
    void main() {
        exchange.Buy(-1, 0.1);
    }
    

تبادلہ.فروخت ((قیمت، رقم)

exchange.Sell(Price, Amount)فروخت کا آرڈر دیتا ہے اور آرڈر آئی ڈی واپس کرتا ہے۔ پیرامیٹر ویلیو:Priceآرڈر کی قیمت ہے، عددی قسم.Amountآرڈر کی رقم ، عددی قسم ہے۔ واپسی کی قیمت: تار کی قسم یا عددی قسم (مخصوص قسم ہر تبادلے کی واپسی کی قسم پر منحصر ہے) ۔

واپس آرڈر نمبر، جو آرڈر کی معلومات کو تلاش کرنے اور احکامات کو منسوخ کرنے کے لئے استعمال کیا جا سکتا ہے.

function main(){
    var id = exchange.Sell(100, 1)
    Log("id:", id)
}
def main():
    id = exchange.Sell(100, 1)
    Log("id:", id)
void main() {
    auto id = exchange.Sell(100, 1);
    Log("id:", id);
}
  • فیوچر آرڈر

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

  • مارکیٹ آرڈر

    نوٹ: پلیٹ فارم آرڈر کی جگہ کا انٹرفیس مارکیٹ کے احکامات کی حمایت کرنے کی ضرورت ہے. (جب آرڈر کی قسم ایک فروخت آرڈر ہے، آرڈر کی رقم پیرامیٹر فروخت آپریٹنگ سککوں کی تعداد ہے) ، اور cryptocurrency فیوچر مارکیٹ کے احکامات کی شکل کی طرف سے احکامات کی جگہ اور آرڈر کی رقم پیرامیٹر یونٹ ہےمعاہدوں کی تعدادحقیقی تجارت میں چند ڈیجیٹل کرنسی تبادلے مارکیٹ آرڈر انٹرفیس کی حمایت نہیں کرتے.

    // For example, trading pairs: ETH_BTC, sold out by market order 
    function main() {
        // Note: Sell by a market order, and sell 0.2 ETH coins 
        exchange.Sell(-1, 0.2)   
    }
    
    def main():
        exchange.Sell(-1, 0.2)
    
    void main() {
        exchange.Sell(-1, 0.2);
    }
    

تبادلہ.آرڈر منسوخ کریں

exchange.CancelOrder(orderId)، اس فنکشن کا مقصد Id کے ساتھ ایک آرڈر منسوخ کرنا ہے. پیرامیٹر کی قیمت:Idہے آرڈر نمبر، سٹرنگ کی قسم یا عددی قسم میں (مخصوص قسم ہر پلیٹ فارم پر آرڈر رکھنے پر واپسی کی قسم پر منحصر ہے) ؛ واپسی کی قیمت: bool کی قسم.

آپریشن کا نتیجہ واپس کریں؛trueاس کا مطلب یہ ہے کہ آرڈر منسوخ کرنے کی درخواست کامیابی کے ساتھ بھیجی گئی ہے۔falseکا مطلب ہے کہ منسوخ آرڈر کی درخواست بھیجنے میں ناکام ہے (رجوع کی قیمت صرف اس بات کی نشاندہی کرتی ہے کہ بھیجنے کی درخواست کامیاب ہے یا نہیں ، لہذا کال کرنا بہتر ہےexchange.GetOrders()چیک کرنے کے لئے کہ پلیٹ فارم آرڈر منسوخ کرتا ہے).

function main(){
    var id = exchange.Sell(99999, 1)
    exchange.CancelOrder(id)
}
def main():
    id = exchange.Sell(99999, 1)
    exchange.CancelOrder(id)
void main() {
    auto id = exchange.Sell(99999, 1);
    exchange.CancelOrder(id);
}

FMZ کا API فنکشن ، جو لاگ آؤٹ پٹ افعال تیار کرسکتا ہے ، جیسے:Log(...), exchange.Buy(Price, Amount)اورexchange.CancelOrder(Id)آپ کو کچھ اضافی پیداوار پیرامیٹرز کے ساتھ ضروری پیرامیٹرز کی پیروی کر سکتے ہیں، جیسے:exchange.CancelOrder(orders[j].Id, orders[j])اس طرح، یہ منسوخ کر رہا ہےorders[j]حکم ہے کہ اس حکم کی معلومات کی پیداوار کے ساتھ ہے، یعنیOrderکی ساختorders[j].

function main() {
    Log("data1", "data2", "data3", "...")
    var data2 = 200
    var id = exchange.Sell(100000, 0.1, "Incidental data1", data2, "...")
    exchange.CancelOrder(id, "Incidental data1", data2, "...")
    LogProfit(100, "Incidental data1", data2, "...")
}
def main():
    Log("data1", "data2", "data3", "...")
    data2 = 200
    id = exchange.Sell(100000, 0.1, "Incidental data1", data2, "...")
    exchange.CancelOrder(id, "Incidental data1", data2, "...")
    LogProfit(100, "Incidental data1", data2, "...")
void main() {
    Log("data1", "data2", "data3", "...");
    int data2 = 200;
    auto id = exchange.Sell(100000, 0.1, "Incidental data1", data2, "...");
    exchange.CancelOrder(id, "Incidental data1", data2, "...");
    LogProfit(100, "Incidental data1", data2, "...");
}

تبادلہ.GetOrder ((ID)

exchange.GetOrder(orderId)آرڈر نمبر کے مطابق آرڈر کی تفصیلات حاصل کرتا ہے۔ پیرامیٹر ویلیو:Idحاصل کرنے کے لئے سیریز نمبر ہے، اورIdتار یا عددی قسم کا ہے (مخصوص قسم ہر تبادلہ کی واپسی کی قسم پر منحصر ہے) ۔ واپسی کی قیمت:Orderساخت. (کچھ تبادلے کی طرف سے حمایت نہیں)

  • Orderساخت
  • AvgPriceاشارہ کرتا ہے کہ اوسط عملدرآمد شدہ قیمت (کچھ تبادلے اس فیلڈ کی حمایت نہیں کرتے ہیں؛ اگر وہ اس کی حمایت نہیں کرتے ہیں تو اسے 0 پر مقرر کریں).
function main(){
    var id = exchange.Sell(1000, 1)
    // The parameter id is the order number, you need to fill in the number of the order you want to query
    var order = exchange.GetOrder(id)      
    Log("Id:", order.Id, "Price:", order.Price, "Amount:", order.Amount, "DealAmount:",
        order.DealAmount, "Status:", order.Status, "Type:", order.Type)
}
def main():
    id = exchange.Sell(1000, 1)
    order = exchange.GetOrder(id)
    Log("Id:", order["Id"], "Price:", order["Price"], "Amount:", order["Amount"], "DealAmount:", 
        order["DealAmount"], "Status:", order["Status"], "Type:", order["Type"])
void main() {
    auto id = exchange.Sell(1000, 1);
    auto order = exchange.GetOrder(id);
    Log("Id:", order.Id, "Price:", order.Price, "Amount:", order.Amount, "DealAmount:", 
        order.DealAmount, "Status:", order.Status, "Type:", order.Type);
}

تبادلہ.GetOrders()

exchange.GetOrders()تمام نامکمل احکامات حاصل کرتا ہے۔ واپسی کی قیمت:Orderساخت کی صف. کے لئےOrderڈھانچہ، براہ مہربانی ملاحظہ کریںexchange.GetOrder()تقریب کی وضاحت. جب تبادلہ اعتراض کی طرف سے نمائندگی اکاؤنٹexchangeکوئی زیر التواء احکامات نہیں ہیں، کال کریںexchange.GetOrders()ایک خالی صف واپس کرنے کے لئے، یعنی:[].

function main(){
    exchange.Sell(1000, 1)
    exchange.Sell(1000, 1)
    var orders = exchange.GetOrders()
    Log("Information for unfinished order 1, ID:", orders[0].Id, "Price:", orders[0].Price, "Amount:", orders[0].Amount,
        "DealAmount:", orders[0].DealAmount, "type:", orders[0].Type)
    Log("Information for unfinished order 2, ID:", orders[1].Id, "Price:", orders[1].Price, "Amount:", orders[1].Amount,
        "DealAmount:", orders[1].DealAmount, "type:", orders[1].Type)
}
def main():
    exchange.Sell(1000, 1)
    exchange.Sell(1000, 1)
    orders = exchange.GetOrders()
    Log("Information for unfinished order 1, ID:", orders[0]["Id"], "Price:", orders[0]["Price"], "Amount:", orders[0]["Amount"], 
        "DealAmount:", orders[0]["DealAmount"], "type:", orders[0]["Type"])
    Log("Information for unfinished order 2, ID:", orders[1]["Id"], "Price:", orders[1]["Price"], "Amount:", orders[1]["Amount"],
        "DealAmount:", orders[1]["DealAmount"], "type:", orders[1]["Type"])
void main() {
    exchange.Sell(1000, 1);
    exchange.Sell(1000, 1);
    auto orders = exchange.GetOrders();
    Log("Information for unfinished order 1, ID:", orders[0].Id, "Price:", orders[0].Price, "Amount:", orders[0].Amount, 
        "DealAmount:", orders[0].DealAmount, "type:", orders[0].Type);
    Log("Information for unfinished order 2, ID:", orders[1].Id, "Price:", orders[1].Price, "Amount:", orders[1].Amount,
        "DealAmount:", orders[1].DealAmount, "type:", orders[1].Type);
}

کےexchange.GetOrders()تقریب فی الحال مقرر کی نامکمل حکم کی معلومات حاصل کرتا ہےتجارتی جوڑایہ نوٹ کیا جانا چاہئے کہ کریپٹوکرنسی فیوچر میں نہ صرف تجارتی جوڑوں بلکہ معاہدے کے کوڈز کے درمیان بھی اختلافات ہیں۔

// Test OKX contract tradings, to know whether "GetOrders" gets all unfinished contract orders
function main(){
    // The next weekly buy order; the price of the order minus 50 guarantees no execution; pending orders
    exchange.SetContractType("this_week")
    exchange.SetDirection("buy")
    var ticker = exchange.GetTicker()
    Log(ticker)
    exchange.Buy(ticker.Last - 50, 1)

    // The next quarterly sell order; the price plus 50 guarantees that it will not be executed, and the pending order has been switched to a quarterly contract
    exchange.SetContractType("quarter")
    exchange.SetDirection("sell")
    ticker = exchange.GetTicker()
    Log(ticker)
    exchange.Sell(ticker.Last + 50, 1)

    // Get the unfinished orders
    Log("orders", exchange.GetOrders())
}
def main():
    exchange.SetContractType("this_week")
    exchange.SetDirection("buy")
    ticker = exchange.GetTicker()
    Log(ticker)
    exchange.Buy(ticker["Last"] - 50, 1)

    exchange.SetContractType("quarter")
    exchange.SetDirection("sell")
    ticker = exchange.GetTicker()
    Log(ticker)
    exchange.Sell(ticker["Last"] + 50, 1)

    Log("orders", exchange.GetOrders())
void main() {
    exchange.SetContractType("this_week");
    exchange.SetDirection("buy");
    auto ticker = exchange.GetTicker();
    Log(ticker);
    exchange.Buy(ticker.Last - 50, 1);

    exchange.SetContractType("quarter");
    exchange.SetDirection("sell");
    ticker = exchange.GetTicker();
    Log(ticker);
    exchange.Sell(ticker.Last + 50, 1);

    Log("orders", exchange.GetOrders());
}

غیر مکمل آرڈر کی معلومات:

[{"Id":17116430886,"Amount":1,"Price":808.4,"DealAmount":0,"AvgPrice":0,"Status":0,"Type":1,"ContractType":"quarter"}]

یہ دیکھا جا سکتا ہے کہ cryptocurrency ٹریڈنگ میں، احکامات کی طرف سے حاصل کیاexchange.GetOrders()صرف اس وقت طے شدہ معاہدے کے نامکمل احکامات ہیں۔

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

exchange.SetPrecision(PricePrecision, AmountPrecision)قیمت اور علامت کے آرڈر کی رقم کی اعشاریہ درستگی مقرر کرتا ہے۔ یہ ترتیب دینے کے بعد خود بخود کاٹ دیا جائے گا۔ پیرامیٹر ویلیو:PricePrecisionقیمت کے اعداد و شمار میں اعشاریہ کے مقامات کی تعداد کو کنٹرول کرنے کے لئے استعمال کیا جاتا ہے؛AmountPrecisionنمبر کی قسم کا ہے، آرڈر کی رقم کے بعد اعشاریہ نقطہ کو کنٹرول کرنے کے لئے استعمال کیا جاتا ہے.PricePrecisionاورAmountPrecisionانٹیجر نمبر ہونا ضروری ہے۔ بیک ٹیسٹ اس فنکشن کی حمایت نہیں کرتا ہے ، اور بیک ٹیسٹ عددی درستگی کو خود بخود پروسیس کیا جائے گا۔

function main(){
    // Set the decimal precision of the price to 2 digits, and set the precision of the quantity of the symbol order to 3 digits
    exchange.SetPrecision(2, 3)
}    
def main():
    exchange.SetPrecision(2, 3)
void main() {
    exchange.SetPrecision(2, 3);
}

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

exchange.SetRate(Rate)ایکسچینج میں گردش کرنسی کی زر مبادلہ کی شرح مقرر کرتا ہے۔ پیرامیٹر ویلیو:Rateہےnumberقسم۔ واپسی کا قدر:number type.

function main(){
    Log(exchange.GetTicker())
    // Set the exchange rate conversion
    exchange.SetRate(7)
    Log(exchange.GetTicker())
    // Set to 1, without conversion
    exchange.SetRate(1)
}
def main():
    Log(exchange.GetTicker())
    exchange.SetRate(7)
    Log(exchange.GetTicker())
    exchange.SetRate(1)
void main() {
    Log(exchange.GetTicker());
    exchange.SetRate(7);
    Log(exchange.GetTicker());
    exchange.SetRate(1);
}

نوٹ:

  • اگر آپ نے زر مبادلہ کی شرح کی قیمت کو استعمال کرتے ہوئے مقرر کیا ہےexchange.SetRate(Rate)، جیسے 7، پھر، موجودہ مارکیٹ کی قیمت، گہرائی، اور آرڈر کی قیمت سمیت تمام قیمت کی معلومات، موجودہ کرنسی کی نمائندگی کرتا ہے.exchangeاشیاء، تبدیل کرنے کے لئے مقرر 7 کی شرح تبادلہ سے ضرب کیا جائے گا.

  • مثال کے طور پرexchangeایک زر مبادلہ کی شرح ہے جو امریکی ڈالر میں ہے۔exchange.SetRate(7)کہا جاتا ہے، حقیقی تجارت کی تمام قیمتوں کو 7 سے ضرب دی جائے گی اور CNY کے قریب قیمتوں میں تبدیل کیا جائے گا.

exchange.IO(…)

exchange.IO("api", httpMethod, resource, params, raw)، تبادلے کے دیگر فعال انٹرفیس کو کال کریں۔ پیرامیٹر ویلیو:httpMehodتار کی قسم ہے؛ یہ درخواست کی قسم میں بھرتا ہے، جیسے:POSTیاGET. resourceتار کی قسم ہے، یہ درخواست کے راستے میں بھرتا ہے.paramsتار کی قسم ہے، یہ درخواست پیرامیٹرز میں بھرتا ہے.rawاصل JSON سٹرنگ پیرامیٹر ہے اور اسے چھوڑا جا سکتا ہے.exchange.IO("api", httpMethod, resource, params, raw)فنکشن کال ایکسچینج انٹرفیس تک رسائی حاصل کرے گی۔ جب کوئی غلطی واقع ہوتی ہے اور کال ناکام ہوجاتی ہے تو ، یہ ایک صفر قدر (نیٹ ورک کی درخواست کے ساتھ فنکشن ، جیسےGetTicker()اورGetAccount()، وغیرہ کالز ناکام ہونے پر null اقدار واپس). صرف لائیو ٹریڈنگ کالنگ کی حمایت کرتا ہےexchange.IO("api", ...) function.

OKX بیچ آرڈر کی مثال کے لئے، پیرامیٹر کا استعمال کریںrawآرڈر پیرامیٹرز کو منتقل کرنے کے لئے:

function main() {
    var arrOrders = [
        {"instId":"BTC-USDT-SWAP","tdMode":"cross","side":"buy","ordType":"limit","px":"16000","sz":"1","posSide":"long"},
        {"instId":"BTC-USDT-SWAP","tdMode":"cross","side":"buy","ordType":"limit","px":"16000","sz":"2","posSide":"long"}
    ]
    
    // Call exchange.IO to directly access the platform batch ordering interface
    var ret = exchange.IO("api", "POST", "/api/v5/trade/batch-orders", "", JSON.stringify(arrOrders))
    Log(ret)
}
import json
def main():
    arrOrders = [
        {"instId":"BTC-USDT-SWAP","tdMode":"cross","side":"buy","ordType":"limit","px":"16000","sz":"1","posSide":"long"}, 
        {"instId":"BTC-USDT-SWAP","tdMode":"cross","side":"buy","ordType":"limit","px":"16000","sz":"2","posSide":"long"}
    ]
    ret = exchange.IO("api", "POST", "/api/v5/trade/batch-orders", "", json.dumps(arrOrders))
    Log(ret)
void main() {
    json arrOrders = R"([
        {"instId":"BTC-USDT-SWAP","tdMode":"cross","side":"buy","ordType":"limit","px":"16000","sz":"1","posSide":"long"},
        {"instId":"BTC-USDT-SWAP","tdMode":"cross","side":"buy","ordType":"limit","px":"16000","sz":"2","posSide":"long"}
    ])"_json;
    auto ret = exchange.IO("api", "POST", "/api/v5/trade/batch-orders", "", arrOrders.dump());
    Log(ret);
}

اس فنکشن کو استعمال کرنے کے لئے، آپ کو سمجھنے کے لئے تبادلہ پر جانے کی ضرورت ہےAPIFMZ شامل نہیں کیا ہے کہ افعال کو بڑھانے کے لئے تبادلے کے انٹرفیس (آپ کو پیرامیٹر خفیہ کاری، دستخط اور توثیق کے عمل کے بارے میں فکر کرنے کی ضرورت نہیں ہےPOSTدرخواست. FMZ نیچے کی پرت پر مکمل طور پر عملدرآمد کیا ہے، لہذا آپ کو صرف اس کے مطابق پیرامیٹرز میں بھرنے کی ضرورت ہے).

نوٹ: اگر کلیدی قدر میںparamsپیرامیٹر (یعنی، HTTP درخواست پیرامیٹر) ایک تار ہے، یہ واحد کوٹس کے ساتھ لپیٹ کرنے کی ضرورت ہے (علامت'() پیرامیٹر کی قیمت کے دونوں اطراف پر. مثلاً:bitfinex exchange.

var amount = 1
var price = 10
var basecurrency = "ltc"
function main () {
    // Notice that amount.toString() and price.toString() both have a ' character on the left and right
    var message = "symbol=" + basecurrency + "&amount='" + amount.toString() + "'&price='" + price.toString() + "'&side=buy" + "&type=limit"
    var id = exchange.IO("api", "POST", "/v1/order/new", message)
}
amount = 1
price = 10
basecurrency = "ltc"
def main():
    message = "symbol=" + basecurrency + "&amount='" + str(amount) + "'&price='" + str(price) + "'&side=buy" + "&type=limit"
    id = exchange.IO("api", "POST", "/v1/order/new", message)
void main() {
    auto amount = 1.0;
    auto price = 10.0;
    auto basecurrency = "ltc";
    string message = format("symbol=%s&amount=\"%.1f\"&price=\"%.1f\"&side=buy&type=limit", basecurrency, amount, price);
    auto id = exchange.IO("api", "POST", "/v1/order/new", message);
}

رسائی کا مثالOKXانٹرفیس:

function main(){
    var ret = exchange.IO("api", "GET", "/api/v5/trade/orders-pending", "instType=SPOT")
    Log(ret)
}
def main():
    ret = exchange.IO("api", "GET", "/api/v5/trade/orders-pending", "instType=SPOT")
    Log(ret)
void main() {
    auto ret = exchange.IO("api", "GET", "/api/v5/trade/orders-pending", "instType=SPOT");
    Log(ret);
}

ٹیسٹنگ کے دوران واپس کیے گئے ڈیٹا:

{"code":"0","data":[],"msg":""}

سیٹ اپ کی دیگر ترتیباتexchange.IOفنکشن:

  • موجودہ تبادلے کے تجارتی جوڑے تبدیل کریں

    exchange.IO("currency", "ETH_BTC")

    function main() {
        // For example, set the current trading pair of the exchange object on the bot to BTC_USDT, and print the current trading pair market
        Log(exchange.GetTicker())
        // Switch trading pair to LTC_BTC      
        exchange.IO("currency", "LTC_BTC")
        Log(exchange.GetTicker())
    }
    
    def main():
        Log(exchange.GetTicker())
        exchange.IO("currency", "LTC_BTC")
        Log(exchange.GetTicker())
    
    void main() {
        Log(exchange.GetTicker());
        exchange.IO("currency", "LTC_BTC");
        Log(exchange.GetTicker());
    }
    

    اس طرح،تجارتی جوڑےتشکیل شدہجب بوٹ شامل کیا جاتا ہےیابیک ٹیسٹ چل رہا ہےکوڈز کے ذریعے تبدیل کیا جائے گا.

    نوٹ:

      1. بیک ٹیسٹ سسٹم اب ٹریڈنگ کے جوڑوں کو سوئچ کرنے کی حمایت کرتا ہے۔ بیک ٹیسٹ کے دوران ، یہ نوٹ کیا جانا چاہئے کہ صرف اسی کوٹ کرنسی کے ٹریڈنگ کے جوڑے کو سوئچ کیا جاسکتا ہے۔ مثال کے طور پر ، موجودہ ٹریڈنگ جوڑی ہےETH_BTC، جس میں صرف تبدیل کیا جا سکتا ہےLTC_BTCنہیںLTC_USDT.
      1. اگرwebsocketپروٹوکول موڈ Huobi اسپاٹ ایکسچینج اشیاء پر تبدیل کر دیا جاتا ہے، آپ کو استعمال نہیں کر سکتے ہیںexchange.IO("currency", "XXX_YYY")کرنسیوں کو تبدیل کرنے کے لئے.
      1. کریپٹوکرنسی فیوچر ایکسچینج کے لئے، اگر ٹریڈنگ کے جوڑے تبدیل ہوجاتے ہیں، تو آپ کو اس معاہدے کو دوبارہ ترتیب دینے کی ضرورت ہے کہ آپ کس معاہدے کے ساتھ تجارت کرنا چاہتے ہیں.
      1. آپ نئے استعمال کر سکتے ہیںexchange.SetCurrency(Symbol)تجارت کے جوڑوں کو تبدیل کرنے اور استعمال کرنے کی تقریبexchange.IO("currency","XXX_YYY")ہم آہنگی کو برقرار رکھنے کے لئے طریقہ.
  • exchange.IOتقریب تبادلہ API بیس ایڈریس (RESET معاہدہ؛ کچھ تبادلے اس کی حمایت نہیں کرتے) سوئچ. اب استعمالexchange.SetBase(Base)تبادلہ API بیس ایڈریس سوئچ کرنے کے لئے فنکشن کی حمایت کی گئی ہے، اور استعمالexchange.IO("base","https://xxx.xxx.xxx")ہم آہنگی کو برقرار رکھنے کے لئے طریقہ.

    مثال کے طور پر: جب تبادلہ آبجیکٹ انکیپسول کیا جاتا ہے، تو ڈیفالٹ بیس ایڈریس ہےhttps://api.huobipro.com، تبدیل کرنے کے لئے:https://api.huobi.pro، مندرجہ ذیل کوڈ استعمال کریں۔

    function main () {
        // exchanges[0] is the first exchange object added when the bot is added 
        exchanges[0].IO("base", "https://api.huobi.pro")        
    }
    
    def main():
        exchanges[0].IO("base", "https://api.huobi.pro")
    
    void main() {
        exchanges[0].IO("base", "https://api.huobi.pro");
    }
    

    بیس ایڈریس کو واپس تبدیل کریں:https://api.huobipro.com.

    function main () {
        exchanges[0].IO("base", "https://api.huobipro.com")
    }
    
    def main():
        exchanges[0].IO("base", "https://api.huobipro.com")
    

مزید