Peraturanexchange.Buy()
Fungsi ini digunakan untuk menempatkan pesanan beli.Buy()
fungsi adalah anggota fungsi dari exchange object {@var/EXCHANGE exchange}.Buy()
fungsi beroperasi pada rekening pertukaran yang terikat pada objek pertukaranexchange
Tujuan dari fungsi anggota (metode) dariexchange
objek hanya terkait denganexchange
, dan tidak akan diulang setelah dokumentasi.
Perintah yang berhasil mengembalikan ID pesanan, perintah yang gagal mengembalikan nilai nol.
AtributnyaId
struktur order {@struct/Order Order} dari platform FMZ terdiri dari kode produk pertukaran dan ID pesanan asli pertukaran, dipisahkan oleh koma bahasa Inggris.Id
format pasangan perdagangan spotETH_USDT
urutan pertukaran OKX adalah:ETH-USDT,1547130415509278720
Aku tidak tahu.
Saat meneleponexchange.Buy()
fungsi untuk menempatkan pesanan, nilai kembali pesananId
adalah konsisten denganId
atribut dari struktur order {@struct/Order Order}.
string, nilai nol
pertukaran.Membeli ((harga, jumlah) pertukaran.Beli ((harga, jumlah,... args)
Peraturanprice
Parameter digunakan untuk mengatur harga pesanan.
harga
benar
Nomor
Peraturanamount
Parameter digunakan untuk mengatur jumlah pesanan.
jumlah
benar
nomor
Parameter yang diperluas yang dapat menghasilkan informasi yang menyertainya ke log pesanan ini,arg
parameter dapat dilewati lebih dari satu.
arg
palsu
string, number, bool, object, array, null dan jenis lain yang didukung oleh sistem
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);
}
Nomor urutan yang dikembalikan olehexchange.Buy()
dapat digunakan untuk menanyakan informasi pesanan dan membatalkan pesanan.
// The following is an error call
function main() {
exchange.SetContractType("quarter")
// Set the shorting direction
exchange.SetDirection("sell")
// If you place a buy order, an error will be reported, and shorting can only be sold
var id = exchange.Buy(50, 1)
// Set the long direction
exchange.SetDirection("buy")
// If you place a sell order, it will report an error, go long, only buy
var id2 = exchange.Sell(60, 1)
// Set direction to close long positions
exchange.SetDirection("closebuy")
// If you place a buy order, it will report an error, close long, only sell
var id3 = exchange.Buy(-1, 1)
// Set direction to close short positions
exchange.SetDirection("closesell")
// If you place a sell order, it will report an error, close short, only buy
var id4 = exchange.Sell(-1, 1)
}
# The following is an error 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 an error 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);
}
Ketika menempatkan pesanan untuk kontrak berjangka cryptocurrency, perhatian harus diambil untuk memastikan bahwa arah perdagangan ditetapkan dengan benar, karena ketidakcocokan antara arah perdagangan dan fungsi perdagangan akan menghasilkan kesalahan:
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
// For example, the trading pair: ETH_BTC, place a buy order at the market price
function main() {
// Place a buy order at the market price and buy ETH coins with a value of 0.1 BTC (denominated currency)
exchange.Buy(-1, 0.1)
}
def main():
exchange.Buy(-1, 0.1)
void main() {
exchange.Buy(-1, 0.1);
}
Perintah pasar spot.
Saat menempatkan pesanan untuk kontrak berjangka, Anda harus memperhatikan apakah arah perdagangan ditetapkan dengan benar, karena kesalahan akan dilaporkan jika arah perdagangan dan fungsi perdagangan tidak cocok.
Parameterprice
diatur untuk-1
untuk menempatkan pesanan pasar, yang membutuhkan antarmuka penempatan pesanan bursa untuk mendukung pesanan pasar.amount
adalah jumlah uang dalam mata uang pesanan. Ketika menempatkan pesanan pasar untuk kontrak berjangka cryptocurrency, parameter jumlahamount
adalah jumlah kontrak. Ada beberapa bursa cryptocurrency yang tidak mendukung antarmuka pesanan pasar selama perdagangan langsung. Jumlah pesanan untuk pesanan beli pasar di beberapa bursa spot adalah jumlah koin perdagangan. Silakan lihatInstruksi Khusus untuk PertukaranId
dariexchange.Buy()
fungsi mungkin berbeda dari nilai kembali dari pesananId
dijelaskan dalam dokumen ini.
{@fun/Trade/exchange.Sell exchange.Sell}, {@fun/Futures/exchange.SetContractType exchange.SetContractType}, {@fun/Futures/exchange.SetDirection exchange.SetDirection}
Peraturanexchange.Sell()
fungsi digunakan untuk menempatkan pesanan jual.
Perintah yang berhasil mengembalikan order Id, perintah yang gagal mengembalikan nilai nol.Id
struktur order {@struct/Order Order} dari platform FMZ terdiri dari kode produk pertukaran dan ID pesanan asli pertukaran, dipisahkan oleh koma bahasa Inggris.Id
format pasangan perdagangan spotETH_USDT
urutan pertukaran OKX adalah:ETH-USDT,1547130415509278720
. Ketika memanggilexchange.Sell()
fungsi untuk menempatkan pesanan, nilai kembali pesananId
adalah konsisten denganId
atribut dari struktur order {@struct/Order Order}.
string, nilai nol
pertukaran.Menjual ((harga, jumlah) pertukaran.Menjual ((harga, jumlah,... args)
Peraturanprice
Parameter digunakan untuk mengatur harga pesanan.
harga
benar
Nomor
Peraturanamount
Parameter digunakan untuk mengatur jumlah pesanan.
jumlah
benar
nomor
Parameter yang diperluas yang dapat menghasilkan informasi yang menyertainya ke log pesanan ini,arg
parameter dapat dilewati lebih dari satu.
arg
palsu
string, number, bool, object, array, null dan jenis lain yang didukung oleh sistem
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);
}
Nomor urutan yang dikembalikan olehexchange.Sell()
dapat digunakan untuk menanyakan informasi pesanan dan membatalkan pesanan.
// The following is an error call
function main() {
exchange.SetContractType("quarter")
// Set the shorting direction
exchange.SetDirection("sell")
// If you place a buy order, an error will be reported, and shorting can only be sold
var id = exchange.Buy(50, 1)
// Set the long direction
exchange.SetDirection("buy")
// If you place a sell order, it will report an error, go long, only buy
var id2 = exchange.Sell(60, 1)
// Set direction to close long positions
exchange.SetDirection("closebuy")
// If you place a buy order, it will report an error, close long, only sell
var id3 = exchange.Buy(-1, 1)
// Set direction to close short positions
exchange.SetDirection("closesell")
// If you place a sell order, it will report an error, close short, only buy
var id4 = exchange.Sell(-1, 1)
}
# The following is an error 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 an error 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);
}
Ketika menempatkan pesanan untuk kontrak berjangka cryptocurrency, perhatian harus diambil untuk memastikan bahwa arah perdagangan ditetapkan dengan benar, karena ketidakcocokan antara arah perdagangan dan fungsi perdagangan akan menghasilkan kesalahan:
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
// For example, the trading pair: ETH_BTC, place a sell order at the market price
function main() {
// Note: place a market order to sell, sell 0.2 ETH
exchange.Sell(-1, 0.2)
}
def main():
exchange.Sell(-1, 0.2)
void main() {
exchange.Sell(-1, 0.2);
}
Perintah pasar spot.
Saat menempatkan pesanan untuk kontrak berjangka, Anda harus memperhatikan apakah arah perdagangan ditetapkan dengan benar, karena kesalahan akan dilaporkan jika arah perdagangan dan fungsi perdagangan tidak cocok.
Parameterprice
diatur untuk-1
untuk menempatkan pesanan pasar, yang membutuhkan antarmuka penempatan pesanan bursa untuk mendukung pesanan pasar.amount
adalah jumlah dalam mata uang perdagangan. Ketika menempatkan pesanan pasar untuk kontrak berjangka cryptocurrency, parameter jumlahamount
Ada beberapa pertukaran cryptocurrency yang tidak mendukung antarmuka pesanan pasar selama perdagangan langsung.
Jika Anda menggunakan versi lama dari docker, nilai kembali dari perintahId
dariexchange.Sell()
fungsi mungkin berbeda dari nilai kembali dari pesananId
dijelaskan dalam dokumen ini.
{@fun/Trade/exchange.Buy exchange.Buy}, {@fun/Futures/exchange.SetContractType exchange.SetContractType}, {@fun/Futures/exchange.SetDirection exchange.SetDirection}
Peraturanexchange.CreateOrder()
fungsi digunakan untuk menempatkan pesanan.
Jika pesanan berhasil ditempatkan, ID pesanan dikembalikan; jika pesanan gagal, nilai nol dikembalikan.Id
struktur order {@struct/Order Order} dari platform FMZ terdiri dari kode produk pertukaran dan ID pesanan asli pertukaran, dipisahkan oleh koma bahasa Inggris.Id
format pesanan dari pasangan perdagangan spotETH_USDT
dari bursa OKX adalah:ETH-USDT,1547130415509278720
. Ketika memanggilexchange.CreateOrder(symbol, side, price, amount)
fungsi untuk menempatkan pesanan, nilai yang dikembalikan dari pesananId
adalah konsisten denganId
properti dari struktur order {@struct/Order Order}.
string, nilai nol
exchange.CreateOrder ((simbol, sisi, harga, jumlah) exchange.CreateOrder ((simbol, sisi, harga, jumlah,... args)
Parametersymbol
digunakan untuk menentukan pasangan perdagangan tertentu dan kode kontrak pesanan.exchange.CreateOrder(symbol, side, price, amount)
fungsi untuk menempatkan pesanan,exchange
adalah objek pertukaran spot. Jika mata uang pesanan adalah USDT dan mata uang perdagangan adalah BTC, parametersymbol
adalah:"BTC_USDT"
, dalam format pasangan perdagangan yang didefinisikan oleh platform FMZ.exchange.CreateOrder(symbol, side, price, amount)
fungsi untuk menempatkan pesanan,exchange
adalah objek pertukaran berjangka. Jika pesanan adalah pesanan kontrak abadi standar BTCsymbol
adalah:"BTC_USDT.swap"
, dan formatnya adalah kombinasi daripasangan perdagangandankode kontrakdidefinisikan oleh platform FMZ, dipisahkan oleh karakter exchange.CreateOrder(symbol, side, price, amount)
fungsi untuk menempatkan pesanan,exchange
adalah objek pertukaran berjangka. Jika pesanan adalah pesanan kontrak opsi standar U BTCsymbol
adalah:"BTC_USDT.BTC-240108-40000-C"
(mengambil Binance Option BTC-240108-40000-C sebagai contoh), dan formatnya adalah kombinasi daripasangan perdagangandidefinisikan oleh platform FMZ dan kode kontrak opsi khusus yang didefinisikan oleh bursa, dipisahkan oleh karakter side
Parameter digunakan untuk menentukan arah perdagangan order.
Untuk obyek pertukaran spot, nilai opsional dariside
parameter adalah:buy
, sell
. buy
berarti membeli, dansell
berarti menjual.
Untuk obyek pertukaran berjangka, nilai opsional dariside
parameter adalah:buy
, closebuy
, sell
, closesell
. buy
berarti membuka posisi panjang,closebuy
berarti menutup posisi panjang,sell
berarti membuka posisi pendek, danclosesell
berarti menutup posisi pendek.
sisi
benar
string
Parameterprice
digunakan untuk menetapkan harga order. harga -1 menunjukkan bahwa order adalah order pasar.
harga
benar
nomor
Parameteramount
digunakan untuk menetapkan jumlah pesanan. Harap dicatat bahwa ketika pesanan adalah pesanan beli pasar, jumlah pesanan adalah jumlah pembelian; jumlah pesanan pesanan beli pasar beberapa bursa spot adalah jumlah koin perdagangan. Untuk rincian, silakan lihatInstruksi Khusus untuk Pertukarandalam arg
parameter dapat dilewati.
arg
palsu
Setiap jenis yang didukung oleh sistem, seperti string, nomor, bool, objek, array, nilai nol, dll.
function main() {
var id = exchange.CreateOrder("BTC_USDT", "buy", 60000, 0.01) // Spot exchange objects place orders for currency-to-currency transactions BTC_USDT trading pairs
// var id = exchange.CreateOrder("BTC_USDT.swap", "buy", 60000, 0.01) // Futures exchange objects place orders for BTC's U-standard perpetual contracts
Log("Order Id:", id)
}
def main():
id = exchange.CreateOrder("BTC_USDT", "buy", 60000, 0.01) # Spot exchange objects place orders for currency-to-currency transactions BTC_USDT trading pairs
# id = exchange.CreateOrder("BTC_USDT.swap", "buy", 60000, 0.01) # Futures exchange objects place orders for BTC's U-standard perpetual contracts
Log("Order Id:", id)
void main() {
auto id = exchange.CreateOrder("BTC_USDT", "buy", 60000, 0.01); // Spot exchange objects place orders for currency-to-currency transactions BTC_USDT trading pairs
// auto id = exchange.CreateOrder("BTC_USDT.swap", "buy", 60000, 0.01); // Futures exchange objects place orders for BTC's U-standard perpetual contracts
Log("Order Id:", id);
}
Objek pertukaran spot dan obyek pertukaran futures disebutexchange.CreateOrder()
fungsi untuk menempatkan pesanan.
{@fun/Trade/exchange.Buy exchange.Buy}, {@fun/Trade/exchange.Sell exchange.Sell}
Peraturanexchange.CancelOrder()
fungsi digunakan untuk membatalkan pesanan.
AtributnyaId
struktur order {@struct/Order Order} dari platform FMZ terdiri dari kode produk pertukaran dan ID pesanan asli pertukaran, dipisahkan oleh koma bahasa Inggris.Id
format pesanan dari pasangan perdagangan spotETH_USDT
dari bursa OKX adalah:ETH-USDT,1547130415509278720
Aku tidak tahu.
ParameterorderId
melewati saat memanggilexchange.CancelOrder()
fungsi untuk membatalkan pesanan adalah konsisten denganId
properti dari struktur order {@struct/Order Order}.
Peraturanexchange.CancelOrder()
fungsi mengembalikan nilai benar, misalnyatrue
berarti bahwa permintaan order pembatalan telah dikirim dengan sukses. Jika mengembalikan nilai palsu, sepertifalse
, berarti bahwa permintaan order pembatalan gagal dikirim. Nilai yang dikembalikan hanya mewakili keberhasilan atau kegagalan permintaan yang dikirim untuk menentukan apakah bursa membatalkan pesanan. Anda dapat meneleponexchange.GetOrders()
untuk menentukan apakah perintah dibatalkan.
bool
Pertukaran. Batalkan Pesenan ((PesenanId) Pertukaran. Batalkan Pesenan ((PesenanId,... args)
PeraturanorderId
Parameter digunakan untuk menentukan order yang akan dibatalkan.
Perintah
benar
nomor, string
Parameter diperpanjang, Anda dapat keluarkan informasi yang terlampir ke log penarikan ini,arg
parameter dapat dilewati lebih dari satu.
arg
palsu
string, number, bool, object, array, null dan jenis lain yang didukung oleh sistem
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);
}
Batalkan pesanan.
function main() {
if (exchange.GetName().includes("Futures_")) {
Log("Set the contract as: perpetual contract, set the trade direction as: open long position.")
exchange.SetContractType("swap")
exchange.SetDirection("buy")
}
var ticker = exchange.GetTicker()
exchange.Buy(ticker.Last * 0.5, 0.1)
var orders = exchange.GetOrders()
for (var i = 0 ; i < orders.length ; i++) {
exchange.CancelOrder(orders[i].Id, "Cancelled orders:", orders[i])
Sleep(500)
}
}
def main():
if exchange.GetName().find("Futures_") != -1:
Log("Set the contract as: perpetual contract, set the trade direction as: open long position.")
exchange.SetContractType("swap")
exchange.SetDirection("buy")
ticker = exchange.GetTicker()
exchange.Buy(ticker["Last"] * 0.5, 0.1)
orders = exchange.GetOrders()
for i in range(len(orders)):
exchange.CancelOrder(orders[i]["Id"], "Cancelled orders:", orders[i])
Sleep(500)
void main() {
if (exchange.GetName().find("Futures_") != std::string::npos) {
Log("Set the contract as: perpetual contract, set the trade direction as: open long position.");
exchange.SetContractType("swap");
exchange.SetDirection("buy");
}
auto ticker = exchange.GetTicker();
exchange.Buy(ticker.Last * 0.5, 0.1);
auto orders = exchange.GetOrders();
for (int i = 0 ; i < orders.size() ; i++) {
exchange.CancelOrder(orders[i].Id, "Cancelled orders:", orders[i]);
Sleep(500);
}
}
Fungsi FMZ API yang dapat menghasilkan fungsi log output seperti:Log()
, exchange.Buy()
, exchange.CancelOrder()
dapat diikuti oleh beberapa parameter output yang menyertainya setelah parameter yang diperlukan.exchange.CancelOrder(orders[i].Id, orders[i])
, sehingga ketika membatalkan pesanan yang Id adalahorders[i].Id
, informasi orderorders[i]
.
Jika Anda menggunakan versi yang lebih tua dari docker, parameter orderId dari fungsi exchange.CancelOrder() mungkin berbeda dari orderId yang dijelaskan dalam dokumen saat ini.
{@fun/Trade/exchange.Buy exchange.Buy}, {@fun/Trade/exchange.Sell exchange.Sell}, {@fun/Trade/exchange.GetOrders exchange.GetOrders}
Peraturanexchange.GetOrder()
fungsi digunakan untuk mendapatkan informasi pesanan.
Menanyakan detail urutan sesuai dengan nomor urutan, dan mengembalikan struktur {@struct/Order Order} jika permintaan berhasil, atau mengembalikan null jika permintaan gagal. {@struct/Order Order}, nilai nol
tukar.GetOrder (OrderId)
PeraturanorderId
Parameter digunakan untuk menentukan urutan yang akan ditanyakan.
AtributnyaId
struktur order {@struct/Order Order} dari platform FMZ terdiri dari kode produk pertukaran dan ID pesanan asli pertukaran, dipisahkan oleh koma bahasa Inggris.Id
format pesanan dari pasangan perdagangan spotETH_USDT
dari bursa OKX adalah:ETH-USDT,1547130415509278720
Aku tidak tahu.
ParameterorderId
melewati saat memanggilexchange.GetOrder()
fungsi untuk menanyakan perintah adalah konsisten denganId
properti dari struktur order {@struct/Order Order}.
Perintah benar string
function main(){
var id = exchange.Sell(1000, 1)
// 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);
}
Peraturanexchange.GetOrder()
Fungsi ini tidak didukung oleh beberapa pertukaran.AvgPrice
Atribut dalam struktur {@struct/Order Order} dari nilai pengembalian adalah harga rata-rata transaksi. Beberapa bursa tidak mendukung bidang ini, dan jika tidak, ditetapkan menjadi 0.
Jika Anda menggunakan versi lama dari docker,orderId
parameter dariexchange.GetOrder()
fungsi dapat berbeda dariorderId
dijelaskan dalam dokumentasi saat ini.
Bursa yang tidak mendukungexchange.GetOrder()
Fungsi:
Nama Fungsi | Pertukaran Spot yang tidak didukung | Pertukaran Futures Tanpa Dukungan |
---|---|---|
GetOrder | Zaif / Coincheck / Bitstamp | – |
{@struct/Order Order}, {@fun/Trade/exchange.GetOrders exchange.GetOrders}, {@fun/Trade/exchange.GetHistoryOrders exchange.GetHistoryOrders}
Peraturanexchange.GetOrders()
Fungsi digunakan untuk mendapatkan pesanan yang belum selesai.
Peraturanexchange.GetOrders()
fungsi mengembalikan array struktur {@struct/Order Order} jika permintaan data berhasil, dan mengembalikan nilai nol jika permintaan data gagal.
{@struct/Order Order} array, nilai nol
pertukaran.GetOrders ((() exchange.GetOrders (simbol)
Parametersymbol
digunakan untuk mengaturSimbol transaksiataurentang simbol transaksiuntuk diinterogasi.
Untuk obyek pertukaran spot, jikasymbol
parameter tidak dilewati, data pesanan yang belum selesai dari semua produk spot akan diminta.
Untuk obyek pertukaran futures, jikasymbol
parameter tidak diteruskan, default adalah untuk meminta data order yang belum selesai dari semua varietas dalam kisaran dimensi pasangan perdagangan saat ini dan kode kontrak.
lambang palsu string
/*backtest
start: 2024-05-21 00:00:00
end: 2024-09-05 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/
function main() {
var arrSymbol = ["ETH_USDT", "BTC_USDT", "LTC_USDT", "SOL_USDT"]
for (var symbol of arrSymbol) {
var t = exchange.GetTicker(symbol)
exchange.CreateOrder(symbol, "buy", t.Last / 2, 0.01)
}
var spotOrders = exchange.GetOrders()
var tbls = []
for (var orders of [spotOrders]) {
var tbl = {type: "table", title: "test GetOrders", cols: ["Symbol", "Id", "Price", "Amount", "DealAmount", "AvgPrice", "Status", "Type", "Offset", "ContractType"], rows: []}
for (var order of orders) {
tbl.rows.push([order.Symbol, order.Id, order.Price, order.Amount, order.DealAmount, order.AvgPrice, order.Status, order.Type, order.Offset, order.ContractType])
}
tbls.push(tbl)
}
LogStatus("`" + JSON.stringify(tbls) + "`")
// Print out the information once and then return to prevent the order from being executed during the subsequent backtest and affecting data observation
return
}
'''backtest
start: 2024-05-21 00:00:00
end: 2024-09-05 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
'''
import json
def main():
arrSymbol = ["ETH_USDT", "BTC_USDT", "LTC_USDT", "SOL_USDT"]
for symbol in arrSymbol:
t = exchange.GetTicker(symbol)
exchange.CreateOrder(symbol, "buy", t["Last"] / 2, 0.01)
spotOrders = exchange.GetOrders()
tbls = []
for orders in [spotOrders]:
tbl = {"type": "table", "title": "test GetOrders", "cols": ["Symbol", "Id", "Price", "Amount", "DealAmount", "AvgPrice", "Status", "Type", "Offset", "ContractType"], "rows": []}
for order in orders:
tbl["rows"].append([order.Symbol, order.Id, order.Price, order.Amount, order.DealAmount, order.AvgPrice, order.Status, order.Type, order.Offset, order.ContractType])
tbls.append(tbl)
LogStatus("`" + json.dumps(tbls) + "`")
return
/*backtest
start: 2024-05-21 00:00:00
end: 2024-09-05 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/
void main() {
auto arrSymbol = {"ETH_USDT", "BTC_USDT", "LTC_USDT", "SOL_USDT"};
for (const auto& symbol : arrSymbol) {
auto t = exchange.GetTicker(symbol);
exchange.CreateOrder(symbol, "buy", t.Last / 2, 0.01);
}
auto spotOrders = exchange.GetOrders();
json tbls = R"([])"_json;
std::vector<std::vector<Order>> arr = {spotOrders};
for (const auto& orders : arr) {
json tbl = R"({
"type": "table",
"title": "test GetOrders",
"cols": ["Symbol", "Id", "Price", "Amount", "DealAmount", "AvgPrice", "Status", "Type", "Offset", "ContractType"],
"rows": []
})"_json;
for (const auto& order : orders) {
json arrJson = R"([])"_json;
arrJson.push_back("Symbol");
arrJson.push_back("Id");
arrJson.push_back(order.Price);
arrJson.push_back(order.Amount);
arrJson.push_back(order.DealAmount);
arrJson.push_back(order.AvgPrice);
arrJson.push_back(order.Status);
arrJson.push_back(order.Type);
arrJson.push_back(order.Offset);
arrJson.push_back(order.ContractType);
tbl["rows"].push_back(arrJson);
}
tbls.push_back(tbl);
}
LogStatus(_D(), "\n", "`" + tbls.dump() + "`");
return;
}
Gunakan objek pertukaran spot untuk menempatkan pesanan beli untuk beberapa pasangan perdagangan yang berbeda pada setengah harga saat ini, dan kemudian menanyakan informasi pesanan yang belum selesai.
/*backtest
start: 2024-05-21 00:00:00
end: 2024-09-05 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
function main() {
var arrSymbol = ["BTC_USDT.swap", "BTC_USDT.quarter", "ETH_USDT.swap", "ETH_USDT.quarter"]
for (var symbol of arrSymbol) {
var t = exchange.GetTicker(symbol)
exchange.CreateOrder(symbol, "buy", t.Last / 2, 1)
exchange.CreateOrder(symbol, "sell", t.Last * 2, 1)
}
var defaultOrders = exchange.GetOrders()
var swapOrders = exchange.GetOrders("USDT.swap")
var futuresOrders = exchange.GetOrders("USDT.futures")
var btcUsdtSwapOrders = exchange.GetOrders("BTC_USDT.swap")
var tbls = []
var arr = [defaultOrders, swapOrders, futuresOrders, btcUsdtSwapOrders]
var tblDesc = ["defaultOrders", "swapOrders", "futuresOrders", "btcUsdtSwapOrders"]
for (var index in arr) {
var orders = arr[index]
var tbl = {type: "table", title: tblDesc[index], cols: ["Symbol", "Id", "Price", "Amount", "DealAmount", "AvgPrice", "Status", "Type", "Offset", "ContractType"], rows: []}
for (var order of orders) {
tbl.rows.push([order.Symbol, order.Id, order.Price, order.Amount, order.DealAmount, order.AvgPrice, order.Status, order.Type, order.Offset, order.ContractType])
}
tbls.push(tbl)
}
LogStatus("`" + JSON.stringify(tbls) + "`")
// Print out the information once and then return to prevent the order from being executed during the subsequent backtest and affecting data observation
return
}
'''backtest
start: 2024-05-21 00:00:00
end: 2024-09-05 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
'''
import json
def main():
arrSymbol = ["BTC_USDT.swap", "BTC_USDT.quarter", "ETH_USDT.swap", "ETH_USDT.quarter"]
for symbol in arrSymbol:
t = exchange.GetTicker(symbol)
exchange.CreateOrder(symbol, "buy", t["Last"] / 2, 1)
exchange.CreateOrder(symbol, "sell", t["Last"] * 2, 1)
defaultOrders = exchange.GetOrders()
swapOrders = exchange.GetOrders("USDT.swap")
futuresOrders = exchange.GetOrders("USDT.futures")
btcUsdtSwapOrders = exchange.GetOrders("BTC_USDT.swap")
tbls = []
arr = [defaultOrders, swapOrders, futuresOrders, btcUsdtSwapOrders]
tblDesc = ["defaultOrders", "swapOrders", "futuresOrders", "btcUsdtSwapOrders"]
for index in range(len(arr)):
orders = arr[index]
tbl = {"type": "table", "title": tblDesc[index], "cols": ["Symbol", "Id", "Price", "Amount", "DealAmount", "AvgPrice", "Status", "Type", "Offset", "ContractType"], "rows": []}
for order in orders:
tbl["rows"].append([order["Symbol"], order["Id"], order["Price"], order["Amount"], order["DealAmount"], order["AvgPrice"], order["Status"], order["Type"], order["Offset"], order["ContractType"]])
tbls.append(tbl)
LogStatus("`" + json.dumps(tbls) + "`")
return
/*backtest
start: 2024-05-21 00:00:00
end: 2024-09-05 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
void main() {
auto arrSymbol = {"BTC_USDT.swap", "BTC_USDT.quarter", "ETH_USDT.swap", "ETH_USDT.quarter"};
for (const auto& symbol : arrSymbol) {
auto t = exchange.GetTicker(symbol);
exchange.CreateOrder(symbol, "buy", t.Last / 2, 1);
exchange.CreateOrder(symbol, "sell", t.Last * 2, 1);
}
auto defaultOrders = exchange.GetOrders();
auto swapOrders = exchange.GetOrders("USDT.swap");
auto futuresOrders = exchange.GetOrders("USDT.futures");
auto btcUsdtSwapOrders = exchange.GetOrders("BTC_USDT.swap");
json tbls = R"([])"_json;
std::vector<std::vector<Order>> arr = {defaultOrders, swapOrders, futuresOrders, btcUsdtSwapOrders};
std::string tblDesc[] = {"defaultOrders", "swapOrders", "futuresOrders", "btcUsdtSwapOrders"};
for (int index = 0; index < arr.size(); index++) {
auto orders = arr[index];
json tbl = R"({
"type": "table",
"cols": ["Symbol", "Id", "Price", "Amount", "DealAmount", "AvgPrice", "Status", "Type", "Offset", "ContractType"],
"rows": []
})"_json;
tbl["title"] = tblDesc[index];
for (const auto& order : orders) {
json arrJson = R"([])"_json;
arrJson.push_back(order.Symbol);
arrJson.push_back(to_string(order.Id)); // The Id attribute type in the Order structure is TId, which is encoded using a C++ function to_string built into the FMZ platform.
arrJson.push_back(order.Price);
arrJson.push_back(order.Amount);
arrJson.push_back(order.DealAmount);
arrJson.push_back(order.AvgPrice);
arrJson.push_back(order.Status);
arrJson.push_back(order.Type);
arrJson.push_back(order.Offset);
arrJson.push_back(order.ContractType);
tbl["rows"].push_back(arrJson);
}
tbls.push_back(tbl);
}
LogStatus(_D(), "\n", "`" + tbls.dump() + "`");
return;
}
Menggunakan objek pertukaran berjangka untuk menempatkan pesanan untuk beberapa pasangan perdagangan yang berbeda dan kode kontrak. Tempatkan pesanan dengan harga yang jauh dari harga mitra, simpan pesanan dalam keadaan yang belum terpenuhi, dan kueri pesanan dengan berbagai cara.
function main() {
var orders = exchange.GetOrders("BTC_USDT") // Examples of spot products
// var orders = exchange.GetOrders("BTC_USDT.swap") // Examples of futures products
Log("orders:", orders)
}
def main():
orders = exchange.GetOrders("BTC_USDT") # Examples of spot products
# orders = exchange.GetOrders("BTC_USDT.swap") # Examples of futures products
Log("orders:", orders)
void main() {
auto orders = exchange.GetOrders("BTC_USDT"); // Examples of spot products
// auto orders = exchange.GetOrders("BTC_USDT.swap"); // Examples of futures products
Log("orders:", orders);
}
Saat meneleponexchange.GetOrders()
fungsi, lulus diSymbol
parameter untuk meminta data order untuk pasangan perdagangan tertentu dan kode kontrak.
DalamGetOrders
fungsi, skenario penggunaan parameter simbol diringkas sebagai berikut:
Klasifikasi Objek Exchange | simbol Parameter | Ruang lingkup kueri | Pernyataan |
---|---|---|---|
Tempat | Jangan lulus parameter simbol | Pertanyaan semua pasangan perdagangan spot | Untuk semua skenario panggilan, jika antarmuka pertukaran tidak mendukungnya, kesalahan akan dilaporkan dan nilai nol akan dikembalikan. |
Tempat | Tentukan jenis perdagangan, parameter simbol adalah: |
Menanyakan pasangan perdagangan BTC_USDT yang ditentukan | Untuk objek pertukaran spot, format parameter simbol adalah: |
Masa Depan | Jangan lulus parameter simbol | Mencari semua produk perdagangan dalam kisaran dimensi pasangan perdagangan saat ini dan kode kontrak | Jika pasangan perdagangan saat ini adalah BTC_USDT dan kode kontraknya adalah swap, semua kontrak abadi dengan margin USDT akan ditanyakan.GetOrders("USDT.swap") |
Masa Depan | Tentukan jenis perdagangan, parameter simbol adalah: |
Mencari kontrak abadi berbasis USDT untuk BTC tertentu | Untuk obyek pertukaran berjangka, format simbol parameter adalah: kombinasi daripasangan perdagangandankode kontrakdidefinisikan oleh platform FMZ, dipisahkan oleh karakter". . |
Masa Depan | Tentukan rentang produk perdagangan, parameter simbol adalah: |
Mencari semua kontrak abadi berbasis USDT | - |
Bursa berjangka yang mendukung opsi | Jangan lulus parameter simbol | Mencari semua kontrak opsi dalam kisaran dimensi pasangan perdagangan saat ini | Jika pasangan perdagangan saat ini adalah BTC_USDT, kontrak ditetapkan sebagai kontrak opsi, misalnya, kontrak opsi Binance: BTC-240108-40000-C |
Bursa berjangka yang mendukung opsi | Tentukan produk perdagangan tertentu | Mencari kontrak opsi yang ditentukan | Misalnya, untuk Binance Futures Exchange, parameter simbol adalah: BTC_USDT.BTC-240108-40000-C |
Bursa berjangka yang mendukung opsi | Tentukan rentang produk perdagangan, parameter simbol adalah: |
Mencari semua kontrak opsi berbasis USDT | - |
DalamGetOrders
fungsi, permintaan objek bursa berjangka
kisaran dimensi diringkas sebagai berikut:
simbol Parameter | Definisi Jangkauan Permintaan | Pernyataan |
---|---|---|
USDT.swap | Rentang kontrak abadi berbasis USDT. | Untuk |
dimensi yang tidak didukung oleh antarmuka API pertukaran, kesalahan akan dilaporkan dan nilai nol akan dikembalikan ketika Menelpon. USDT.futures. USDT berbasis rentang kontrak pengiriman. {\cH00FFFF}$USD.swap {\cH00FFFF}Rentang mata uang berbasis abadi kontrak. {\cH00FFFF}USD.futures {\cH00FFFF}Rentang pengiriman berdasarkan mata uang kontrak. {\cH00FFFF}$USDT.option {\cH00FFFF}$USDT-based options contract range {\cH00FFFF}$USDT.option {\cH00FFFF}$USDT.option {\cH00FFFF}$USDT.option {\cH00FFFF}$USDT.option {\cH00FFFF}$USDT.option {\cH00FFFF}$USDT-based options contract range {\cH00FFFF}$USDT.option {\cH00FFFF}$USDT.option {\cH00FFFFFF}$USDT.option {\cH00FFFF}$USDT.option {\cH00FFFFFF}$USDT-based options contract range {\cH00FFFFFF}$USDT.option range. USD.option Rentang kontrak opsi berbasis mata uang. USDT.futures_combo Rentang kombinasi CFD. Futures_Deribit Exchange USD.futures_ff Rangkaian kontrak pengiriman margin campuran. Futures_Kraken Exchange {\cH00FFFF}$USD.swap_pf {\cH00FFFF}Rangkaian kontrak abadi margin campuran. ♫ Futures_Kraken Exchange ♫
Ketika akun yang diwakili oleh objek pertukaranexchange
tidak memiliki perintah yang menunggu dalamrentang kueriatauInstrumen perdagangan tertentu(perintah aktif dalam keadaan tidak terpenuhi), memanggil fungsi ini mengembalikan array kosong, yaitu:[]
Aku tidak tahu.
Pertukaran berikut mengharuskan instrumen untuk lulus dalam parameter instrumen saat menanyakan pesanan yang saat ini belum selesai. Ketika memanggil fungsi GetOrders dengan pertukaran ini, jika parameter instrumen tidak diteruskan, hanya pesanan yang belum selesai dari instrumen saat ini yang diminta, bukan pesanan yang belum selesai dari semua instrumen (karena antarmuka pertukaran tidak mendukung ini).
Zaif, MEXC, LBank, Korbit, Coinw, BitMart, Bithumb, BitFlyer, BigONE.
Bursa yang tidak mendukungexchange.GetOrders()
Fungsi:
Nama Fungsi | Pertukaran Spot yang tidak didukung | Pertukaran Futures Tanpa Dukungan |
---|---|---|
GetOrders | – | Futures_Bibox |
{@struct/Order Order}, {@fun/Trade/exchange.GetOrder exchange.GetOrder}, {@fun/Trade/exchange.GetHistoryOrders exchange.GetHistoryOrders}
Peraturanexchange.GetHistoryOrders()
Fungsi ini digunakan untuk mendapatkan pasangan perdagangan saat ini, pesanan historis untuk kontrak; ini mendukung spesifikasi varietas perdagangan tertentu.
Peraturanexchange.GetHistoryOrders()
fungsi mengembalikan array struktur {@struct/Order Order} jika permintaan data berhasil, dan null jika permintaan gagal.
{@struct/Order Order} array, nilai nol
exchange.GetHistoryOrders ((() exchange.GetHistoryOrders (simbol) exchange.GetHistoryOrders (simbol, sejak) exchange.GetHistoryOrders ((simbol, sejak, batas) exchange.GetHistoryOrders (sejak) exchange.GetHistoryOrders ((sejak, batas)
Peraturansymbol
Parameter digunakan untuk menentukan simbol perdagangan.BTC_USDT
pasangan perdagangan, misalnya, ketikaexchange
adalah objek pertukaran spot, format parameter untuksymbol
adalahBTC_USDT
Jika itu adalah obyek pertukaran berjangka, mengambil kontrak abadi sebagai contoh, format parameter untuksymbol
adalah:BTC_USDT.swap
Aku tidak tahu.
Jika Anda menanyakan data pesanan kontrak opsi, atur parametersymbol
untuk"BTC_USDT.BTC-240108-40000-C"
(mengambil Binance Option BTC-240108-40000-C sebagai contoh).pasangan perdagangandidefinisikan oleh platform FMZ dan kode kontrak opsi khusus yang didefinisikan oleh bursa, dipisahkan oleh karakter
lambang
palsu
string
Peraturansince
Parameter digunakan untuk menentukan timestamp awal kueri dalam milidetik.
sejak
palsu
nomor
Peraturanlimit
Parameter digunakan untuk menentukan jumlah perintah untuk query.
batas
palsu
nomor
function main() {
var historyOrders = exchange.GetHistoryOrders()
Log(historyOrders)
}
def main():
historyOrders = exchange.GetHistoryOrders()
Log(historyOrders)
void main() {
auto historyOrders = exchange.GetHistoryOrders();
Log(historyOrders);
}
symbol
, since
, limit
parameter tidak ditentukan, kueri default adalah pasangan perdagangan saat ini, pesanan kontrak historis. Kueri pesanan historis dalam kisaran tertentu yang terdekat dengan waktu saat ini, kisaran kueri tergantung pada kisaran kueri tunggal antarmuka pertukaran.symbol
parameter ditentukan, query riwayat order untuk jenis perdagangan yang ditetapkan.since
parameter ditentukan, query ke arah waktu saat ini menggunakansince
Stempel waktu sebagai waktu awal.limit
parameter ditentukan, query dikembalikan setelah jumlah cukup entri.Bursa yang tidak mendukungexchange.GetHistoryOrders()
Fungsi:
Nama Fungsi | Pertukaran Spot yang tidak didukung | Pertukaran Futures Tanpa Dukungan |
---|---|---|
GetHistoryOrders | Zaif / Upbit / Coincheck / Bitstamp / Bithumb / BitFlyer / BigONE | Futures_dYdX / Futures_Bibox / Futures_ApolloX |
{@struct/Order Order}, {@fun/Trade/exchange.GetOrder exchange.GetOrder}, {@fun/Trade/exchange.GetOrders exchange.GetOrders}
exchange.SetPrecision()
fungsi digunakan untuk mengatur presisi dariexchange
objek pertukaranhargadanjumlah pesanan, setelah diatur, sistem akan mengabaikan data berlebih secara otomatis.
setPrecision ((hargaPrecision, jumlahPrecision)
PeraturanpricePrecision
parameter digunakan untuk mengontrol ketepatan data harga.
hargaPrecision
benar
Nomor
PeraturanamountPrecision
Parameter digunakan untuk mengontrol presisi jumlah data yang akan dipesan.
JumlahPenerangan
benar
nomor
function main(){
// Set the decimal precision of price to 2 bits, and the decimal precision of variety order amount to 3 bits
exchange.SetPrecision(2, 3)
}
def main():
exchange.SetPrecision(2, 3)
void main() {
exchange.SetPrecision(2, 3);
}
Sistem backtesting tidak mendukung fungsi ini, dan akurasi numerik dari sistem backtesting ditangani secara otomatis.
{@fun/Trade/exchange.Buy exchange.Buy}, {@fun/Trade/exchange.Sell exchange.Sell}
Atur nilai tukar saat ini dari objek pertukaran.
exchange.SetRate (tingkat)
Peraturanrate
parameter digunakan untuk menentukan nilai tukar konversi.
Tingkat
benar
Nomor
function main(){
Log(exchange.GetTicker())
// Set exchange rate conversion
exchange.SetRate(7)
Log(exchange.GetTicker())
// Set to 1, no 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);
}
Jika nilai nilai tukar telah ditetapkan menggunakanexchange.SetRate()
Kemudian semua informasi harga seperti ticker, kedalaman, harga pesanan, dll untuk pertukaran yang diwakili oleh arusexchange
objek pertukaran akan dikonversi dengan mengalikannya dengan nilai tukar yang ditetapkan dari 7.exchange
adalah pertukaran dengan dolar AS sebagai mata uang denominasi.exchange.SetRate(7)
, semua harga di pasar langsung akan dikonversi ke harga yang dekat denganCNYNominal dengan mengalikan dengan 7.
{@fun/Market/exchange.GetRate exchange.GetRate}
Peraturanexchange.IO()
fungsi digunakan untuk panggilan antarmuka lain yang terkait dengan objek pertukaran.
Peraturanexchange.IO()
fungsi memanggil antarmuka lain yang terkait dengan objek pertukaran, mengembalikan data respons yang diminta pada panggilan yang berhasil dan mengembalikan nol pada panggilan yang gagal.
string, number, bool, object, array, null, dan jenis lain yang didukung oleh sistem
exchange.IO(k,... args)
Peraturank
Parameter digunakan untuk mengatur jenis panggilan, dengan nilai opsional"api"
, "currency"
, "base"
, "trade_margin"
, "trade_normal"
, "public_base"
, "mbase"
, selfTradePreventionMode
, simulate
, cross
, dual
, unified
dan sebagainya.
k
benar
string
Parameter diperluas, lulus sesuai dengan skenario panggilan tertentu,arg
Karena mekanisme polimorfik dariexchange.IO()
fungsi, pengaturan parameter yang berbeda sesuai dengan fungsi yang berbeda.exchange.IO()
Fungsi tidak pasti.
arg
benar
string, number, bool, object, array, null dan jenis lain yang didukung oleh sistem
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 access the exchange's bulk order interface directly
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);
}
Menggunakanexchange.IO("api", httpMethod, resource, params, raw)
bentuk panggilan dariexchange.IO()
fungsi, perlu untuk memahami antarmuka API dari pertukaran dan memeriksa dokumentasi yang relevan terlebih dahulu. ini akan memungkinkan Anda untuk memperluas fungsi yang tidak ditambahkan ke platform FMZ.POST
permintaan tidak memerlukan Anda untuk khawatir tentang enkripsi, penandatanganan, atau memverifikasi parameter, yang sudah ditangani oleh FMZ di bagian bawah, selama Anda mengisi parameter yang sesuai.OKX Exchangekontrak berjangka, dan menggunakan parameterraw
untuk melewati parameter urutan:
var amount = 1
var price = 10
var basecurrency = "ltc"
function main () {
// Note that both amount.toString() and price.toString() have a ' character on the left and right side
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);
}
Jika nilai kunci dalamparams
parameter (yaitu, parameter permintaan HTTP) adalah string, itu perlu ditulis dalam tanda kutip tunggal (yaitu, simbol ') di sekitar nilai parameter untuk membungkus nilai parameter.
function main() {
var ret = exchange.IO("api", "GET", "https://www.okx.com/api/v5/account/max-withdrawal", "ccy=BTC")
Log(ret)
}
def main():
ret = exchange.IO("api", "GET", "https://www.okx.com/api/v5/account/max-withdrawal", "ccy=BTC")
Log(ret)
void main() {
auto ret = exchange.IO("api", "GET", "https://www.okx.com/api/v5/account/max-withdrawal", "ccy=BTC");
Log(ret);
}
Hal ini mendukung melewati di parameter url lengkap yang dapat menghilangkan operasi beralih alamat dasar (menelponexchange.SetBase()
fungsi).
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);
}
Contoh panggilan tanpa parameterraw
:
function main() {
// For example, if you set the current trading pair of the exchange object to BTC_USDT at the beginning of the live trading, print the current trading pair tickers
Log(exchange.GetTicker())
// Switch the 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());
}
Mengubah pasangan perdagangan pertukaran saat ini, sehingga akan mengubah pasangan perdagangan yang dikonfigurasi oleh kodepada penciptaan perdagangan langsungataupada backtest.
function main () {
// exchanges[0] is the first exchange object added when the live trading is created
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");
}```
For example, the default base address when the exchange object is wrapped is ```https://api.huobipro.com```, and when you need to switch to ```https://api.huobi.pro```, use the following code to switch:
```javascript
function main() {
exchange.SetBase("https://api.bitfinex.com")
exchange.IO("mbase", "https://api-pub.bitfinex.com")
}
def main():
exchange.SetBase("https://api.bitfinex.com")
exchange.IO("mbase", "https://api-pub.bitfinex.com")
void main() {
exchange.SetBase("https://api.bitfinex.com");
exchange.IO("mbase", "https://api-pub.bitfinex.com");
}
Untuk pertukaran dengan alamat dasar yang berbeda untuk antarmuka ticker dan antarmuka perdagangan, misalnya, Bitfinex Futures memiliki dua alamat, satu untuk antarmuka ticker dan yang lainnya untuk antarmuka perdagangan.exchange.SetBase("xxx")
. Bitfinex berjangka beralih alamat dasar antarmuka publik menggunakanexchange.IO("mbase", "xxx")
.
I. Untuk pertukaran yang berpusat pada cryptocurrency panggilan antarmuka API lainnya yang tidak terkapsul secara seragam, dengan parameterk
diatur untuk"api"
:
exchange.IO("api", httpMethod, resource, params, raw)
POST
, GET
, dll.URL
.Peraturanexchange.IO("api", httpMethod, resource, params, raw)
panggilan fungsi akan mengakses antarmuka pertukaran dan mengembalikan null jika panggilan gagal dan terjadi kesalahan.
Hanya perdagangan nyata mendukung panggilanexchange.IO("api", httpMethod, resource, params, raw)
function.
II. Untuk beralih pasangan perdagangan, parameterk
diatur untuk"currency"
:
exchange.IO("currency", currency)
mata uang: Parameter adalah jenis string dengan format huruf besar yang seragam, menggunakan tanda bawah untuk memisahkanbaseCurrency
dariquoteCurrency
, sepertiBTC_USDT
.
ETH_BTC
hanya bisa beralih keLTC_BTC
, tidak untukLTC_USDT
.exchange.IO("currency", currency)
untuk menukar pasangan perdagangan.III. Digunakan untuk beralih ke mode akun leveraged objek pertukaran cryptocurrency spot:
k
diatur untuk"trade_margin"
untuk beralih ke mode akun leverage spot. menempatkan pesanan dan memperoleh aset akun akan mengakses pertukaranexchange.IO("trade_super_margin")
untuk beralih ke margin penuh untuk akun leveraged, danexchange.IO("trade_margin")
untuk beralih ke margin terisolasi untuk akun leveraged.k
diatur untuk"trade_normal"
untuk beralih kembali ke mode akun spot normal.Bursa spot yang mendukung beralih antara model akun leveraged:
Pertukaran | Catatan Khusus |
---|---|
OKX | Pasangan perdagangan dalam mode akun leveraged berbeda dari yang normal, beberapa pasangan perdagangan mungkin tidak memilikinya.exchange.IO("trade_super_margin") untuk beralih ke posisi penuh untuk akun leveraged dan menggunakanexchange.IO("trade_margin") untuk beralih ke posisi dengan posisi.trade_normal untuk beralih ke mode spot normal.exchange.IO("tdMode", "cross") untuk secara langsung menentukan mode leverage. |
Huobi | Pasangan perdagangan mode akun leveraged berbeda dari yang normal, beberapa pasangan perdagangan mungkin tidak memilikinya.trade_margin untuk beralih ke posisi akun leverage berdasarkan posisi, menggunakantrade_super_margin untuk beralih ke leverage account posisi penuh.trade_normal untuk beralih ke mode mata uang-mata uang normal. |
Binance | Modus akun leveraged dibagi menjadi posisi per posisi dan posisi penuh, penggunaantrade_margin untuk beralih ke posisi dengan posisi, menggunakantrade_super_margin untuk beralih ke posisi penuh, gunakantrade_normal untuk beralih ke mode mata uang-mata uang normal. |
Gerbang | Modus akun leveraged dibagi menjadi posisi per posisi dan posisi penuh, penggunaantrade_margin untuk beralih ke posisi dengan posisi, menggunakantrade_super_margin untuk beralih ke posisi penuh, gunakantrade_normal untuk beralih ke mode mata uang-mata uang normal. |
AscendEx | Penggunaanexchange.IO("trade_margin") untuk beralih ke mode akun leverage danexchange.IO("trade_normal") untuk beralih kembali ke mode akun normal. |
WOO | Penggunaanexchange.IO("trade_margin") untuk beralih ke mode akun leverage danexchange.IO("trade_normal") untuk beralih kembali ke mode akun normal. |
CoinEx | Penggunaanexchange.IO("trade_margin") untuk beralih ke mode akun leveraged danexchange.IO("trade_normal") untuk beralih kembali ke mode akun normal. |
IV. Fungsi switching lainnya:Lihatlahexchange.IO()
fungsi untukFungsi switching lainnyadalam Panduan Pengguna.
{@fun/NetSettings/exchange.SetBase exchange.SetBase}, {@fun/Account/exchange.SetCurrency exchange.SetCurrency}, {@var EXCHANGE_OP_IO_CONTROL}
Peraturanexchange.Log()
fungsi digunakan untuk output log penempatan order dan penarikan di area kolom log. Ketika dipanggil, tidak ada pesanan yang ditempatkan, hanya log transaksi yang output dan dicatat.
exchange.Log ((orderJenis, harga, jumlah) exchange.Log ((orderJenis, harga, jumlah,... args)
PeraturanorderType
parameter digunakan untuk mengatur jenis log output, nilai opsional adalah {@var/LOG_TYPE/LOG_TYPE_BUY LOG_TYPE_BUY}, {@var/LOG_TYPE/LOG_TYPE_SELL LOG_TYPE_SELL}, {@var/LOG_TYPE/LOG_TYPE_CANCEL LOG_TYPE_CANCEL}.
orderJenis
benar
nomor
Peraturanprice
Parameter digunakan untuk mengatur harga yang ditampilkan dalam log output.
harga
benar
nomor
Peraturanamount
Parameter digunakan untuk mengatur jumlah pesanan yang ditampilkan dalam log output.
jumlah
benar
nomor
Parameter diperluas yang dapat output informasi yang menyertai log ini,arg
parameter dapat dilewati lebih dari satu.
arg
palsu
string, number, bool, object, array, null dan jenis lain yang didukung oleh sistem
var id = 123
function main() {
// Order type buy, price 999, amount 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);
}
Menggunakanexchange.Log(orderType, price, amount)
salah satu skenario yang paling umum adalah menggunakan {@fun/Trade/exchange.IOexchange.IO} fungsi untuk mengakses antarmuka pertukaran untuk membuat pesanan bersyarat, tetapi menggunakanexchange.IO()
fungsi tidak output informasi log transaksi dalam catatan log perdagangan hidup.exchange.Log()
fungsi dapat digunakan untuk melengkapi log output untuk merekam informasi penempatan pesanan, dan hal yang sama berlaku untuk operasi penarikan pesanan.
KetikaorderType
parameter adalahLOG_TYPE_CANCEL
, yangprice
Parameter adalah urutan Id order ditarik yang digunakan untuk mencetak log penarikan ketika order ditarik langsung menggunakanexchange.IO()
Fungsi.exchange.Log()
fungsi adalah fungsi anggota dari objek pertukaran {@var/EXCHANGE exchange}, berbeda dengan fungsi global {@fun/Log Log}.
{@fun/Log Log}, {@var/EXCHANGE exchange}, {@var/LOG_TYPE/LOG_TYPE_BUY LOG_TYPE_BUY}, {@var/LOG_TYPE/LOG_TYPE_SELL LOG_TYPE_SELL}, {@var/LOG_TYPE/LOG_TYPE_CANCEL LOG_TYPE_CANCEL}
Peraturanexchange.Encode()
Fungsi digunakan untuk perhitungan enkripsi tanda tangan.
Peraturanexchange.Encode()
fungsi mengembalikan pengkodean nilai hash yang dihitung.
string
exchange.Encode ((algo, inputFormat, outputFormat, data) exchange.Encode ((algo, inputFormat, outputFormat, data, keyFormat, key)
Parameteralgo
adalah algoritma yang digunakan untuk perhitungan pengkodean. Pengaturan yang didukung adalah: algo
juga mendukung: algo
juga mendukung: algo
dapat ditulis sebagai ed25519.seed
perhitungan.
sesuatu
benar
string
Digunakan untuk menentukan format data daridata
parameter.inputFormat
parameter dapat diatur ke salah satu dari: hex
dikodekan, base64
dikodekan, dan outputFormat
parameter mendukung pengaturan berikut: hex
dikodekan, base64
dikodekan, dan data
adalah data yang akan diproses.
data
benar
string
Digunakan untuk menentukan format data darikey
parameter.key
parameter dapat diatur ke salah satu dari: hex
dikodekan, base64
dikodekan, dan key
parameter digunakan untuk menentukan kunci yang digunakan dalam perhitungan tanda tangan, dan dapat digunakan sebagai string plaintext."{{accesskey}}"
, "{{secretkey}}"
untuk merujuk padaaccessKey
dansecretKey
dikonfigurasi dalam objek pertukaran {@var/EXCHANGE exchange}
kunci
palsu
string
function main() {
var APIKEY = "your Access Key(Bitmex API ID)"
var expires = parseInt(Date.now() / 1000) + 10
var signature = exchange.Encode("sha256", "string", "hex", "GET/realtime" + expires, "hex", "{{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.Encode("sha256", "string", "hex", "GET/realtime" + expires, "hex", "{{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.Encode("sha256", "string", "hex", format("GET/realtime%d", expires), "hex", "{{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"];
}
}
}
Contoh push perubahan posisi BitMEX (protocol wss):
Hanya perdagangan nyata mendukung panggilanexchange.Encode()
Fungsi."{{accesskey}}"
, "{{secretkey}}"
Referensi hanya berlaku jikaexchange.Encode()
fungsi digunakan.
{@var/EXCHANGE exchange}, {@fun/Global/Encode Encode}
Fungsi pendukung asinkron multi-threaded dapat mengubah operasi semua fungsi yang didukung menjadi eksekusi serentak asinkron.
Peraturanexchange.Go()
fungsi mengembalikan objek bersamaan segera, dan Anda dapat menggunakanwait()
metode dari objek bersamaan untuk mendapatkan hasil permintaan bersamaan.
objek
pertukaran.Go (metode) pertukaran.Go ((metode,... args)
Peraturanmethod
parameter digunakan untuk menentukan nama fungsi bersamaan. Perhatikan bahwa parameter adalah string nama fungsi, bukan referensi fungsi.
metode
benar
string
Parameter untukFungsi yang dilakukan secara bersamaan, mungkin ada lebih dari satu parameterarg
. Jenis dan jumlah parameterarg
tergantung pada parameter darifungsi eksekusi bersamaanAku tidak tahu.
arg
palsu
string, number, bool, object, array, function, null, dan semua tipe lain yang didukung oleh sistem
function main(){
// The following four operations are concurrently executed asynchronously by multiple threads and do not take time and return immediately
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 ticker results asynchronously
var ticker = a.wait()
// Returns the depth, or null if it fails
var depth = b.wait()
// return order number, limited to 1 second timeout, if timeout, returns undefined, the object can continue to call wait if the last wait 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);
}
Exchange.Go()
contoh penggunaan fungsi, untuk menentukanundefined
untuk digunakantypeof(xx) === "undefined"
, karenanull == undefined
adalah valid di JavaScript.
function main() {
var d = exchange.Go("GetRecords", PERIOD_H1)
// Waiting for K-line results
var records = d.wait()
// Here waits an asynchronous operation that has been waited and finished, it will return null, and log the error message
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);
}
Menelponwait()
Metode pada objek paralel yang telah dirilis akan melaporkan kesalahan:
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: "ticker",
cols: ["index", "name", "latest-deal-price"],
rows: []
}
for(var i = 0; i < arrTicker.length; i++) {
tbl.rows.push([i, arrName[i], arrTicker[i].Last])
}
LogStatus(_D(), "Total time taken to obtain tickers from multiple exchanges concurrently:", 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": "ticker",
"cols": ["index", "name", "latest-deal-price"],
"rows": []
}
for i in range(len(arrTicker)):
tbl["rows"].append([i, arrName[i], arrTicker[i]["Last"]])
LogStatus(_D(), "Total time taken to obtain tickers from multiple exchanges concurrently:", 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 several exchange objects, several exchanges[n].Go functions have to be executed here, this example is to add four exchange objects, the details can be modified
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": "ticker",
"cols": ["index", "name", "latest-deal-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(), "Total time taken to obtain tickers from multiple exchanges concurrently:", format("%d", endTS - beginTS), "millisecond", "\n", "`" + tbl.dump() + "`");
Sleep(500);
}
}
Akses bersamaan ke beberapa ticker pertukaran:
function main() {
/*
Testing with OKX futures order interface
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("Concurrent order placement time consumption:", 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("Concurrent order placement time consumption:", 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("Concurrent order placement time consumption:", endTS - beginTS, "millisecond");
}
Serentakexchange.IO("api", ...)
Fungsi:
Fungsi ini hanya membuat tugas eksekusi multi-threaded saat berjalan dalam perdagangan nyata, backtesting tidak mendukung eksekusi tugas serentak multi-threaded (backtesting tersedia, tetapi masih dijalankan secara berurutan).
Setelahexchange.Go()
fungsi mengembalikan objek, nyawait()
fungsi dipanggil melalui objek itu untuk mendapatkan data yang dikembalikan oleh thread.wait()
fungsi harus dipanggil untuk mendapatkan data sebelum thread akan dirilis secara otomatis.wait()
jika fungsi ditentukan, thread tidak akan dirilis secara otomatis bahkan jika timeout terjadi. Hasil thread harus diperoleh sebelum dirilis secara otomatis (terlepas dari keberhasilan atau kegagalan panggilan antarmuka untuk akses bersamaan).wait()
fungsi terlepas dari apakah eksekusi berhasil atau gagal, dan sumber daya dari thread yang diminta olehexchange.Go()
fungsi harus dilepaskan secara otomatis oleh docker.
Peraturanwait()
Metode ini mendukung parameter timeout:
Tanpa parameter timeout, yaitu,wait()
, atau dengan parameter timeout 0, yaitu,wait(0)
.wait()
fungsi blok dan menunggu sampai thread bersamaan telah selesai berjalan, mengembalikan hasil dari thread paralelwait(-1)
.wait()
fungsi mengembalikan langsung, dengan nilai pengembalian yang berbeda untuk bahasa pemrograman yang berbeda, lihat subbagian ini untuk contoh panggilan.
Tetapkan parameter timeout tertentu,wait(300)
, danwait()
fungsi akan menunggu maksimal 300 milidetik sebelum kembali.
Jika hasil dari hasil akhirwait()
fungsi tidak diperoleh, sumber daya thread tidak akan dirilis secara otomatis, yang akan menyebabkan akumulasi thread yang diminta, dan lebih dari 2000 akan melaporkan kesalahan:"too many routine wait, max is 2000"
Aku tidak tahu.
Fungsi yang didukung:GetTicker
, GetDepth
, GetTrades
, GetRecords
, GetAccount
, GetOrders
, GetOrder
, CancelOrder
, Buy
, Sell
, GetPositions
, IO
. Semua fungsi ini dijalankan berdasarkan objek pertukaran {@var/EXCHANGE exchange} saat dipanggil secara bersamaan.
Perbedaan antara bahasa Python dan bahasa JavaScript adalah bahwawait()
fungsi dari objek bersamaan dalam bahasa Python mengembalikan dua parameter. parameter pertama adalah hasil yang dikembalikan oleh panggilan API asinkron, dan parameter kedua menunjukkan apakah panggilan asinkron selesai.
def main():
d = exchange.Go("GetRecords", PERIOD_D1)
# ok will return True definitely, unless the strategy is stopped
ret, ok = d.wait()
# If the wait times out, or if it waits for an instance that has already ended, ok returns False
ret, ok = d.wait(100)
{@fun/Global/Mail_Go Mail_Go}, {@fun/Global/HttpQuery_Go HttpQuery_Go}, {@fun/Global/EventLoop EventLoop}
Pasar Rekening