میں آخری 10 نوشتہ جات اور باقی صاف
لاگ ری سیٹ کریں ((10)
}
```Python
def main():
LogReset(10)
void main() {
LogReset(10);
}
LogVacuum()
، بلانے کے بعدLogReset()
لاگ صاف کرنے کے لئے تقریب، ذخیرہ کرنے کی جگہ قبضہ کی طرف سے بازیافتایس کیو ایلائٹجب ڈیٹا حذف کیا جاتا ہے۔ اس فنکشن میں کوئی واپسی کی قدر نہیں ہے۔
وجہ یہ ہے کہSQLite
ڈیٹا کو حذف کرتے وقت مقبوضہ جگہ واپس نہیں کرتا، لہذا آپ کو انجام دینے کی ضرورت ہےVACUUM
ٹیبل کو صاف کرنے اور جگہ کو آزاد کرنے کے لئے۔ جب اس فنکشن کو بلایا جاتا ہے تو ، فائل منتقل کرنے کا آپریشن بڑی تاخیر کے ساتھ ہوگا۔ مناسب وقت کے وقفے میں اسے بلانے کی سفارش کی جاتی ہے۔
مارکیٹ انٹرفیس کے اہم افعال:
فنکشن کا نام | تفصیل |
---|---|
گیٹ ٹکر | ٹِک کوٹس ڈیٹا حاصل کریں |
ریکارڈ حاصل کریں | 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 کالز واپس کرسکتا ہے جو سیٹ پیرامیٹرز کے مطابق نیٹ ورک تک رسائی حاصل کرنے پر پیش آئیں گے ، اور کچھ ناکام کالوں کی واپسی کی اقدار واپس کرسکتے ہیں۔ آپ بوٹ میں پروگرام کی استحکام کو جلدی سے جانچ سکتے ہیں۔
حکمت عملی ترمیم کے صفحے پر بیک ٹیسٹ سسٹم کے صفحے پر سوئچ کریں، پر کلک کریںالٹا مثلثڈراپ ڈاؤن کنٹرول
exchange.GetTicker()
موجودہ ٹریڈنگ جوڑوں اور معاہدوں کی موجودہ مارکیٹ کوٹس حاصل کرتا ہے، واپسی کا قدر:Ticker
ساخت.
بیک ٹسٹ سسٹم میں،Ticker
ڈیٹا واپس کیاexchange.GetTicker()
فنکشن، جہاںHigh
اورLow
روبوٹ میں 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);
}
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);
}
exchange.GetRecords(Period)
K-لائن کے اعداد و شمار کو لوٹاتا ہے. K-لائن مدت بوٹ تخلیق کرتے وقت مخصوص کیا جاتا ہے؛ اگر آپ پیرامیٹرز کی وضاحت کرتے ہیں جبexchange.GetRecords()
جب فنکشن کو بلایا جاتا ہے تو ، حاصل کردہ ڈیٹا پیرامیٹر پیریڈ کے مطابق K- لائن ڈیٹا ہوگا۔ اگر کوئی مخصوص پیرامیٹر نہیں ہے تو ، K- لائن ڈیٹا کو بوٹ پیرامیٹرز پر مقرر کردہ K- لائن مدت یا بیک ٹسٹ پیج پر مقرر کردہ K- لائن مدت کے مطابق واپس کیا جاتا ہے۔
پیرامیٹرPeriod
:
Period
صرف اوپر بیان کردہ معیاری ادوار کو ہی پاس کر سکتے ہیں، بلکہ سیکنڈ کی اکائی میں نمبر بھی پاس کر سکتے ہیں۔کی واپسی کی قیمتexchange.GetRecords(Period)
فنکشن:
واپسی کی قیمت کی ایک صف ہےRecord
ڈھانچے، واپس K لائن کے اعداد و شمار وقت کے ساتھ ساتھ جمع کیا جائے گا، جمع K لائن سلاخوں کی اوپری حد کی طرف سے متاثر کیا جاتا ہےexchange.SetMaxBarLenفنکشن کی ترتیب۔ ڈیفالٹ اوپری حد 5000 K- لائن بار ہے جب یہ سیٹ نہیں ہوتی ہے۔ جب K- لائن ڈیٹا K- لائن بار جمع کرنے کی حد تک پہنچ جاتا ہے تو ، اسے K- لائن بار شامل کرکے اور سب سے پہلے K- لائن بار کو حذف کرکے اپ ڈیٹ کیا جائے گا (جیسے قطار میں / باہر) ۔ کچھ تبادلے K- لائن انٹرفیس فراہم نہیں کرتے ہیں ، پھر ڈوکر مارکیٹ ٹرانزیکشن ریکارڈ کے اعداد و شمار کو حقیقی وقت میں جمع کرتا ہے تاکہ K لائنز تیار کی جائیں۔
K لائن سلاخوں کی تعداد جبGetRecords
فنکشن ابتدائی طور پر بلایا جاتا ہے.
کے لئے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]);
}
ترتیبPeriod
5 پر پیرامیٹر 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);
}
کے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");
}
کےexchange.SetMaxBarLen(Len)
فنکشن cryptocurrency حکمت عملی کے رن ٹائم کے دوران دو پہلوؤں کو متاثر کرتا ہے:
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]);
}
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);
}
exchange.GetRate()
تبادلے میں فی الحال استعمال ہونے والی کرنسی کی شرح تبادلہ اور فی الحال دکھائی جانے والی قیمتوں کی کرنسی کو واپس کرتا ہے ، اور 1 کی واپسی کی قیمت سے پتہ چلتا ہے کہ زر مبادلہ کی شرح تبادلہ غیر فعال ہے۔ واپسی کی قیمت: عددی قسم۔
نوٹ:
exchange.SetRate()
کرنسی کی شرح مقرر کرنے کے لئے بلایا نہیں کیا گیا ہے، کرنسی کی شرح کی قیمت کی طرف سے واپسexchange.GetRate()
ڈیفالٹ طور پر 1 ہے، یعنی فی الحال دکھایا گیا زر مبادلہ کی شرح تبادلہ نہیں کیا گیا ہے۔exchange.SetRate()
کرنسی کی شرح کی قیمت مقرر کرنے کے لئے استعمال کیا گیا ہے، جیسے،exchange.SetRate(7)
، تب ٹریڈنگ پلیٹ فارم کی گردش کرنسی کی نمائندگی کرنے والے موجودہ تبادلے کے اعتراض کی تمام قیمت کی معلومات ، جیسے قیمتیں ، گہرائی ، آرڈر کی قیمتیں ، وغیرہ ، تبادلوں کے لئے پہلے سے طے شدہ زر مبادلہ کی شرح 7 سے ضرب کی جائیں گی۔exchange
قیمتوں کا تعین کرنے والی کرنسی کے طور پر امریکی ڈالر کے ساتھ تبادلہ کے مترادف ہے، کال کرنے کے بعدexchange.SetRate(7)
، بوٹ کی تمام قیمتوں کو 7 سے ضرب کر کے CNY کے قریب قیمتوں میں تبدیل کیا جائے گا. اس وقت کرنسی کی شرح کی قیمت کا استعمال کرتے ہوئے حاصل کیا جاتا ہےexchange.GetRate()
ہے 7.exchange.GetUSDCNY()
امریکی ڈالر کی تازہ ترین زر مبادلہ کی شرح واپس کرتا ہے (ڈیٹا ماخذ فراہم کردہyahoo
واپسی کی قیمت: عددی قسم.
کے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);
}
}
مندرجہ بالا ٹیسٹ کوڈ چلانے پر، اسی وقت کے مطابق اعداد و شمار حاصل کیے جائیں گے، جیسا کہ شکل میں دکھایا گیا ہے:
جیسا کہ ہم دیکھ سکتے ہیں، وقت کا موازنہ ٹائم اسٹیمپ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);
}
}
کے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)
آپ کیش ٹائم آؤٹ کو ملی سیکنڈ میں ترتیب دینے کے لئے دوسرے پیرامیٹر میں پاس کرسکتے ہیں۔ اصلی بوٹ میں ڈیفالٹ ایک منٹ کیش ٹائم آؤٹ ہے۔ بیک ٹیسٹ سسٹم میں ، جب ڈیٹا کی درخواست کرنے کے لئے رسائی انٹرفیس کا استعمال کرتے ہو تو ، بیک ٹیسٹ سسٹم پیرامیٹرز
مندرجہ ذیل افعال کے ذریعے بلایا جا سکتا ہے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, "...");
}
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);
}
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()
صرف اس وقت طے شدہ معاہدے کے نامکمل احکامات ہیں۔
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("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);
}
اس فنکشن کو استعمال کرنے کے لئے، آپ کو سمجھنے کے لئے تبادلہ پر جانے کی ضرورت ہےAPI
FMZ شامل نہیں کیا ہے کہ افعال کو بڑھانے کے لئے تبادلے کے انٹرفیس (آپ کو پیرامیٹر خفیہ کاری، دستخط اور توثیق کے عمل کے بارے میں فکر کرنے کی ضرورت نہیں ہے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());
}
اس طرح،تجارتی جوڑےتشکیل شدہجب بوٹ شامل کیا جاتا ہےیابیک ٹیسٹ چل رہا ہےکوڈز کے ذریعے تبدیل کیا جائے گا.
نوٹ:
ETH_BTC
، جس میں صرف تبدیل کیا جا سکتا ہےLTC_BTC
نہیںLTC_USDT
.websocket
پروٹوکول موڈ Huobi اسپاٹ ایکسچینج اشیاء پر تبدیل کر دیا جاتا ہے، آپ کو استعمال نہیں کر سکتے ہیںexchange.IO("currency", "XXX_YYY")
کرنسیوں کو تبدیل کرنے کے لئے.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")