Peraturanexchange.Buy()
Fungsi ini digunakan untuk meletakkan pesanan beli.Buy()
fungsi adalah fungsi ahli objek pertukaran {@var/EXCHANGE exchange}.Buy()
fungsi beroperasi pada akaun pertukaran yang terikat kepada objek pertukaranexchange
. Tujuan fungsi (metode) ahliexchange
objek hanya berkaitan denganexchange
, dan ia tidak akan diulangi selepas dokumentasi.
Perintah yang berjaya mengembalikan ID pesanan, perintah yang gagal mengembalikan nilai sifar.
AtributId
struktur order {@struct/Order Order} platform FMZ terdiri daripada kod produk bursa dan ID pesanan asal bursa, dipisahkan dengan koma Inggeris.Id
format pasangan dagangan spotETH_USDT
urutan pertukaran OKX adalah:ETH-USDT,1547130415509278720
.
Apabila memanggilexchange.Buy()
fungsi untuk meletakkan pesanan, pesanan nilai pulanganId
adalah konsisten denganId
atribut struktur order {@struct/Order Order}.
rentetan, nilai sifar
pertukaran.Beli ((harga, jumlah) pertukaran.Beli ((harga, jumlah,... args)
Peraturanprice
parameter digunakan untuk menetapkan harga pesanan.
harga
betul
nombor
Peraturanamount
parameter digunakan untuk menetapkan jumlah pesanan.
jumlah
betul
nombor
Parameter yang diperluaskan yang boleh mengeluarkan maklumat yang disertakan ke log pesanan ini,arg
parameter boleh lulus lebih daripada satu.
arg
palsu
rentetan, nombor, bool, objek, array, null dan jenis lain yang disokong 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);
}
Nombor siri yang dikembalikan olehexchange.Buy()
boleh digunakan untuk menyoal maklumat 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);
}
Apabila meletakkan pesanan untuk kontrak niaga hadapan cryptocurrency, perlu berhati-hati untuk memastikan bahawa arah perdagangan ditetapkan dengan betul, kerana ketidakcocokan antara arah perdagangan dan fungsi perdagangan akan mengakibatkan ralat:
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 pasaran spot.
Apabila meletakkan pesanan untuk kontrak niaga hadapan, anda mesti memberi perhatian kepada sama ada arah perdagangan ditetapkan dengan betul, kerana kesilapan akan dilaporkan jika arah perdagangan dan fungsi perdagangan tidak sesuai. Saiz pesanan untuk kontrak niaga hadapan cryptocurrency adalah jumlah kontrak jika tidak ditentukan.
Parameterprice
ditetapkan kepada-1
untuk meletakkan pesanan pasaran, yang memerlukan antarmuka penempatan pesanan bursa untuk menyokong pesanan pasaran.amount
adalah jumlah wang dalam mata wang pesanan. Apabila meletakkan pesanan pasaran untuk kontrak niaga hadapan cryptocurrency, parameter jumlahamount
adalah bilangan kontrak. Terdapat beberapa bursa cryptocurrency yang tidak menyokong antara muka pesanan pasaran semasa perdagangan langsung. Jumlah pesanan untuk pesanan beli pasaran pada beberapa bursa spot adalah bilangan syiling perdagangan. Sila rujukArahan Khas untuk PertukaranId
daripadaexchange.Buy()
fungsi mungkin berbeza daripada nilai pulangan pesananId
yang diterangkan dalam dokumen semasa.
{@fun/Trade/exchange.Sell exchange.Sell}, {@fun/Futures/exchange.SetContractType exchange.SetContractType}, {@fun/Futures/exchange.SetDirection exchange.SetDirection}
Peraturanexchange.Sell()
Fungsi digunakan untuk meletakkan pesanan jual.
Perintah yang berjaya mengembalikan ID pesanan, perintah yang gagal mengembalikan nilai sifar.Id
struktur order {@struct/Order Order} platform FMZ terdiri daripada kod produk bursa dan ID pesanan asal bursa, dipisahkan dengan koma Inggeris.Id
format pasangan dagangan spotETH_USDT
urutan pertukaran OKX adalah:ETH-USDT,1547130415509278720
. Apabila memanggilexchange.Sell()
fungsi untuk meletakkan pesanan, pesanan nilai pulanganId
adalah konsisten denganId
atribut struktur order {@struct/Order Order}.
rentetan, nilai sifar
pertukaran.Menjual ((harga, jumlah) pertukaran.Menjual ((harga, jumlah,... args)
Peraturanprice
parameter digunakan untuk menetapkan harga pesanan.
harga
betul
nombor
Peraturanamount
parameter digunakan untuk menetapkan jumlah pesanan.
jumlah
betul
nombor
Parameter yang diperluaskan yang boleh mengeluarkan maklumat yang disertakan ke log pesanan ini,arg
parameter boleh lulus lebih daripada satu.
arg
palsu
rentetan, nombor, bool, objek, array, null dan jenis lain yang disokong 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);
}
Nombor siri yang dikembalikan olehexchange.Sell()
boleh digunakan untuk menyoal maklumat 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);
}
Apabila meletakkan pesanan untuk kontrak niaga hadapan cryptocurrency, perlu berhati-hati untuk memastikan bahawa arah perdagangan ditetapkan dengan betul, kerana ketidakcocokan antara arah perdagangan dan fungsi perdagangan akan mengakibatkan ralat:
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 pasaran spot.
Apabila meletakkan pesanan untuk kontrak niaga hadapan, anda mesti memberi perhatian kepada sama ada arah perdagangan ditetapkan dengan betul, kerana kesilapan akan dilaporkan jika arah perdagangan dan fungsi perdagangan tidak sepadan.
Parameterprice
ditetapkan kepada-1
untuk meletakkan pesanan pasaran, yang memerlukan antara muka penempatan pesanan bursa untuk menyokong pesanan pasaran.amount
adalah jumlah dalam mata wang dagangan. Apabila meletakkan pesanan pasaran untuk kontrak niaga hadapan cryptocurrency, parameter jumlahamount
Terdapat beberapa pertukaran cryptocurrency yang tidak menyokong antarmuka pesanan pasaran semasa perdagangan langsung.
Jika anda menggunakan versi lama dari docker, nilai pulangan perintahId
daripadaexchange.Sell()
fungsi mungkin berbeza daripada nilai pulangan pesananId
yang diterangkan dalam dokumen semasa.
{@fun/Trade/exchange.Buy exchange.Buy}, {@fun/Futures/exchange.SetContractType exchange.SetContractType}, {@fun/Futures/exchange.SetDirection exchange.SetDirection}
Peraturanexchange.CreateOrder()
fungsi digunakan untuk meletakkan pesanan.
Jika pesanan berjaya diletakkan, ID pesanan dikembalikan; jika pesanan gagal, nilai sifar dikembalikan.Id
struktur order {@struct/Order Order} platform FMZ terdiri daripada kod produk bursa dan ID pesanan asal bursa, dipisahkan dengan koma Inggeris.Id
format pesanan pasangan dagangan spotETH_USDT
daripada bursa OKX ialah:ETH-USDT,1547130415509278720
. Apabila memanggilexchange.CreateOrder(symbol, side, price, amount)
fungsi untuk meletakkan pesanan, nilai pulangan pesananId
adalah konsisten denganId
sifat struktur order {@struct/Order Order}.
rentetan, nilai sifar
pertukaran.CreateOrder ((simbol, sisi, harga, jumlah) pertukaran.CreateOrder ((simbol, sisi, harga, jumlah,... args)
Parametersymbol
digunakan untuk menentukan pasangan dagangan tertentu dan kod kontrak pesanan.exchange.CreateOrder(symbol, side, price, amount)
fungsi untuk meletakkan pesanan,exchange
adalah objek pertukaran spot. Jika mata wang pesanan adalah USDT dan mata wang perdagangan adalah BTC, parametersymbol
ialah:"BTC_USDT"
, dalam format pasangan dagangan yang ditakrifkan oleh platform FMZ.exchange.CreateOrder(symbol, side, price, amount)
fungsi untuk meletakkan pesanan,exchange
adalah objek pertukaran niaga hadapan. Jika pesanan adalah pesanan kontrak kekal standard U BTCsymbol
ialah:"BTC_USDT.swap"
, dan formatnya adalah gabunganPasangan dagangandanKod kontrakditakrifkan oleh platform FMZ, dipisahkan oleh watak exchange.CreateOrder(symbol, side, price, amount)
fungsi untuk meletakkan pesanan,exchange
adalah objek pertukaran niaga hadapan. Jika pesanan adalah pesanan kontrak opsyen standard U BTCsymbol
ialah:"BTC_USDT.BTC-240108-40000-C"
(mengambil Binance Pilihan BTC-240108-40000-C sebagai contoh), dan format adalah gabunganPasangan daganganyang ditakrifkan oleh platform FMZ dan kod kontrak opsyen khusus yang ditakrifkan oleh bursa, dipisahkan oleh watak side
Parameter digunakan untuk menentukan arah dagangan pesanan.
Untuk objek pertukaran spot, nilai pilihanside
parameter adalah:buy
, sell
. buy
bermaksud membeli, dansell
Bermakna menjual.
Untuk objek pertukaran niaga hadapan, nilai pilihanside
parameter adalah:buy
, closebuy
, sell
, closesell
. buy
bermaksud membuka kedudukan panjang,closebuy
bermaksud menutup kedudukan panjang,sell
bermaksud membuka kedudukan pendek, danclosesell
bermaksud menutup kedudukan pendek.
sisi
betul
senar
Parameterprice
digunakan untuk menetapkan harga pesanan. Harga -1 menunjukkan bahawa pesanan adalah pesanan pasaran.
harga
betul
nombor
Parameteramount
digunakan untuk menetapkan kuantiti pesanan. Sila ambil perhatian bahawa apabila pesanan adalah pesanan beli pasaran, kuantiti pesanan adalah jumlah pembelian; kuantiti pesanan pesanan beli pasaran beberapa bursa spot adalah bilangan syiling perdagangan. Untuk butiran, sila rujukArahan Khas untuk Pertukarandalam arg
parameter boleh diteruskan.
arg
palsu
Sebarang jenis yang disokong oleh sistem, seperti rentetan, nombor, bool, objek, array, nilai sifar, dan lain-lain.
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 objek pertukaran niaga hadapan dipanggilexchange.CreateOrder()
fungsi untuk meletakkan pesanan.
{@fun/Trade/exchange.Buy pertukaran.Buy}, {@fun/Trade/exchange.Sell pertukaran.Sell}
Peraturanexchange.CancelOrder()
Fungsi digunakan untuk membatalkan pesanan.
AtributId
struktur order {@struct/Order Order} platform FMZ terdiri daripada kod produk bursa dan ID pesanan asal bursa, dipisahkan dengan koma Inggeris.Id
format pesanan pasangan dagangan spotETH_USDT
daripada bursa OKX ialah:ETH-USDT,1547130415509278720
.
ParameterorderId
telah berlalu dalam apabila memanggilexchange.CancelOrder()
fungsi untuk membatalkan pesanan adalah konsisten denganId
sifat struktur order {@struct/Order Order}.
Peraturanexchange.CancelOrder()
fungsi mengembalikan nilai yang benar, contohnyatrue
bermakna permintaan pesanan dibatalkan telah dihantar dengan berjaya. Jika ia mengembalikan nilai palsu, sepertifalse
, bermakna permintaan pesanan membatalkan gagal dihantar. Nilai yang dikembalikan hanya mewakili kejayaan atau kegagalan permintaan yang dihantar untuk menentukan sama ada pertukaran membatalkan pesanan.exchange.GetOrders()
untuk menentukan sama ada perintah itu dibatalkan.
bool
Pertukaran. Batalkan Perintah Pertukaran. Batalkan Perintah ((PesanId,... args)
PeraturanorderId
Parameter digunakan untuk menentukan pesanan yang akan dibatalkan.
Perintah
betul
nombor, rentetan
Parameter yang diperluaskan, anda boleh mengeluarkan maklumat yang dilampirkan ke log pengeluaran ini,arg
parameter boleh lulus lebih daripada satu.
arg
palsu
rentetan, nombor, bool, objek, array, null dan jenis lain yang disokong 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 API FMZ yang boleh menghasilkan fungsi output log seperti:Log()
, exchange.Buy()
, exchange.CancelOrder()
boleh diikuti oleh beberapa parameter output yang disertakan selepas parameter yang diperlukan.exchange.CancelOrder(orders[i].Id, orders[i])
, supaya apabila membatalkan pesanan yang id adalahorders[i].Id
, maklumat orderorders[i]
.
Jika anda menggunakan versi yang lebih lama dari docker, parameter orderId fungsi exchange.CancelOrder( mungkin berbeza dari orderId yang diterangkan dalam dokumen semasa.
{@fun/Trade/exchange.Buy exchange.Buy}, {@fun/Trade/exchange.Sell exchange.Sell}, {@fun/Trade/exchange.GetOrders exchange.GetOrders}
Peraturanexchange.GetOrder()
fungsi digunakan untuk mendapatkan maklumat pesanan.
Mencari butiran pesanan mengikut nombor pesanan, dan mengembalikan struktur {@struct/Order Order} jika pertanyaan berjaya, atau mengembalikan null jika pertanyaan gagal. {@struct/Order Order}, nilai sifar
pertukaran.GetOrder ((orderId)
PeraturanorderId
Parameter digunakan untuk menentukan urutan yang akan ditanyakan.
AtributId
struktur order {@struct/Order Order} platform FMZ terdiri daripada kod produk bursa dan ID pesanan asal bursa, dipisahkan dengan koma Inggeris.Id
format pesanan pasangan dagangan spotETH_USDT
daripada bursa OKX ialah:ETH-USDT,1547130415509278720
.
ParameterorderId
telah berlalu dalam apabila memanggilexchange.GetOrder()
fungsi untuk menyoal perintah adalah konsisten denganId
sifat struktur order {@struct/Order Order}.
Perintah betul senar
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 tidak disokong oleh beberapa pertukaran.AvgPrice
Atribut dalam struktur {@struct/Order Order} nilai pulangan adalah harga purata transaksi. Sesetengah bursa tidak menyokong medan ini, dan jika mereka tidak, ia ditetapkan kepada 0.
Jika anda menggunakan versi lama dari docker,orderId
parameterexchange.GetOrder()
fungsi boleh berbeza dariorderId
yang diterangkan dalam dokumentasi semasa.
Bursa yang tidak menyokongexchange.GetOrder()
fungsi:
Nama Fungsi | Pertukaran Spot yang tidak disokong | Pertukaran niaga hadapan tanpa sokongan |
---|---|---|
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 pelbagai struktur {@struct/Order Order} jika permintaan data berjaya, dan ia mengembalikan nilai sifar jika permintaan data gagal.
{@struct/Order Order} array, nilai sifar
pertukaran.GetOrders() pertukaran.GetOrders (simbol)
Parametersymbol
digunakan untuk menetapkansimbol transaksiatauJulat simbol transaksiuntuk ditanyakan.
Untuk objek pertukaran spot, jikasymbol
parameter tidak diteruskan, data pesanan yang tidak lengkap untuk semua produk spot akan diminta.
Bagi objek pertukaran niaga hadapan, jikasymbol
Jika parameter tidak diteruskan, lalai adalah untuk meminta data pesanan yang belum selesai dari semua jenis dalam julat dimensi pasangan dagangan semasa dan kod kontrak.
simbol palsu senar
/*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 meletakkan pesanan beli untuk beberapa pasangan dagangan yang berbeza pada separuh harga semasa, dan kemudian menyoal maklumat 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 niaga hadapan untuk meletakkan pesanan untuk beberapa pasangan dagangan yang berbeza dan kod kontrak. Letakkan pesanan pada harga yang jauh dari harga rakan kongsi, simpan pesanan dalam keadaan yang tidak dipenuhi, dan permintaan pesanan dengan pelbagai 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);
}
Apabila memanggilexchange.GetOrders()
fungsi, lulus dalamSymbol
parameter untuk meminta data pesanan untuk pasangan dagangan tertentu dan kod kontrak.
DalamGetOrders
fungsi, senario penggunaan parameter simbol diringkaskan seperti berikut:
Klasifikasi Objek Pertukaran | simbol Parameter | Lingkup pertanyaan | Perhatikan |
---|---|---|---|
Spot | Jangan lulus parameter simbol | Bertanya semua pasangan dagangan spot | Untuk semua senario panggilan, jika antara muka pertukaran tidak menyokongnya, satu ralat akan dilaporkan dan nilai sifar akan dikembalikan. |
Spot | Tentukan jenis dagangan, parameter simbol adalah: |
Mencari pasangan dagangan BTC_USDT yang ditentukan | Untuk objek pertukaran spot, format parameter simbol adalah: |
Masa hadapan | Jangan lulus parameter simbol | Mencari semua produk dagangan dalam julat dimensi pasangan dagangan semasa dan kod kontrak | Jika pasangan dagangan semasa adalah BTC_USDT dan kod kontrak adalah swap, semua kontrak kekal dengan margin USDT akan ditanyakan.GetOrders("USDT.swap") |
Masa hadapan | Tentukan jenis dagangan, parameter simbol adalah: |
Mencari kontrak kekal berasaskan USDT untuk BTC tertentu | Untuk objek pertukaran niaga hadapan, format simbol parameter adalah: gabunganPasangan dagangandanKod kontrakditakrifkan oleh platform FMZ, dipisahkan dengan aksara". . |
Masa hadapan | Tentukan julat produk dagangan, parameter simbol adalah: |
Mencari semua kontrak kekal berasaskan USDT | - |
Bursa niaga hadapan yang menyokong opsyen | Jangan lulus parameter simbol | Mencari semua kontrak opsyen dalam julat dimensi pasangan dagangan semasa | Jika pasangan dagangan semasa adalah BTC_USDT, kontrak ditetapkan kepada kontrak opsyen, contohnya, kontrak opsyen Binance: BTC-240108-40000-C |
Bursa niaga hadapan yang menyokong opsyen | Menentukan produk perdagangan tertentu | Mencari kontrak opsyen yang ditentukan | Sebagai contoh, untuk Bursa niaga hadapan Binance, parameter simbol adalah: BTC_USDT.BTC-240108-40000-C |
Bursa niaga hadapan yang menyokong opsyen | Tentukan julat produk dagangan, parameter simbol adalah: |
Mencari semua kontrak opsyen berasaskan USDT | - |
DalamGetOrders
fungsi, permintaan objek pertukaran niaga hadapan
Julat dimensi diringkaskan seperti berikut:
simbol Parameter | Penentuan Julat Permintaan | Perhatikan |
---|---|---|
USDT.swap | Julat kontrak kekal berasaskan USDT. | Untuk |
dimensi yang tidak disokong oleh antara muka API pertukaran, Kesilapan akan dilaporkan dan nilai null akan dikembalikan apabila memanggil. USDT.futures. USDT berasaskan kontrak penghantaran. USD.swap. Rentang mata wang berasaskan kekal kontrak. USD.futures. Rentang penghantaran berasaskan mata wang kontrak. USDT.option.Rentang kontrak pilihan berasaskan USDT. USD.option. Rentang kontrak pilihan berasaskan mata wang. USDT.futures_combo. Pelbagai kombinasi CFD. Futures_Deribit Exchange USD.futures_ff. Pelbagai kontrak penghantaran margin bercampur. Futures_Kraken Exchange. $USD.swap_pf. $USD.swap_pf. ∙ ∙ Futures_Kraken Exchange ∙
Apabila akaun yang diwakili oleh objek pertukaranexchange
tidak mempunyai pesanan yang menunggu dalamJulat pertanyaanatauInstrumen dagangan tertentu(perintah aktif dalam keadaan yang tidak dipenuhi), memanggil fungsi ini mengembalikan array kosong, iaitu:[]
.
Pertukaran berikut memerlukan instrumen untuk lulus dalam parameter instrumen ketika menyoal pesanan yang tidak selesai pada masa ini. Apabila memanggil fungsi GetOrders dengan pertukaran ini, jika parameter instrumen tidak diteruskan, hanya pesanan yang tidak selesai dari instrumen semasa yang diminta, bukan pesanan yang tidak selesai dari semua instrumen (kerana antara muka pertukaran tidak menyokong ini).
Zaif, MEXC, LBank, Korbit, Coinw, BitMart, Bithumb, BitFlyer, BigONE.
Bursa yang tidak menyokongexchange.GetOrders()
fungsi:
Nama Fungsi | Pertukaran Spot yang tidak disokong | Pertukaran niaga hadapan tanpa sokongan |
---|---|---|
GetOrders | – | Futures_Bibox |
{@struct/Order Order}, {@fun/Trade/exchange.GetOrder exchange.GetOrder}, {@fun/Trade/exchange.GetHistoryOrders exchange.GetHistoryOrders}
Peraturanexchange.GetHistoryOrders()
fungsi digunakan untuk mendapatkan pasangan dagangan semasa, pesanan sejarah untuk kontrak; ia menyokong spesifikasi jenis dagangan tertentu.
Peraturanexchange.GetHistoryOrders()
fungsi mengembalikan array struktur {@struct/Order Order} jika permintaan data berjaya, dan null jika permintaan gagal.
{@struct/Order Order} array, nilai sifar
pertukaran.GetHistoryOrders() pertukaran.GetHistoryOrders (simbol) pertukaran.GetHistoryOrders ((simbol, sejak) exchange.GetHistoryOrders ((simbol, sejak, had) pertukaran.GetHistoryOrders ((sejak) pertukaran.GetHistoryOrders ((sejak, had)
Peraturansymbol
Parameter digunakan untuk menentukan simbol perdagangan.BTC_USDT
pasangan dagangan, contohnya, apabilaexchange
adalah objek pertukaran spot, format parameter untuksymbol
adalahBTC_USDT
Jika ia adalah objek pertukaran niaga hadapan, mengambil kontrak kekal sebagai contoh, format parameter untuksymbol
ialah:BTC_USDT.swap
.
Jika anda sedang menyoal data pesanan kontrak opsyen, menetapkan parametersymbol
kepada"BTC_USDT.BTC-240108-40000-C"
(mengambil Binance Option BTC-240108-40000-C sebagai contoh).Pasangan daganganyang ditakrifkan oleh platform FMZ dan kod kontrak opsyen khusus yang ditakrifkan oleh bursa, dipisahkan oleh watak
simbol
palsu
senar
Peraturansince
Parameter digunakan untuk menentukan timestamp permulaan pertanyaan dalam mili saat.
sejak
palsu
nombor
Perkhidmatanlimit
Parameter digunakan untuk menentukan bilangan perintah untuk pertanyaan.
had
palsu
nombor
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
Jika parameter tidak ditentukan, pertanyaan lalai adalah pasangan dagangan semasa, pesanan sejarah kontrak. Menyoal pesanan sejarah dalam julat tertentu yang terdekat dengan masa semasa, julat pertanyaan bergantung pada julat pertanyaan tunggal antara muka pertukaran.symbol
parameter ditentukan, query sejarah pesanan untuk jenis perdagangan yang ditetapkan.since
parameter ditentukan, pertanyaan dalam arah masa semasa menggunakansince
cap waktu sebagai masa permulaan.limit
parameter ditentukan, pertanyaan dikembalikan selepas jumlah yang mencukupi entri.Bursa yang tidak menyokongexchange.GetHistoryOrders()
fungsi:
Nama Fungsi | Pertukaran Spot yang tidak disokong | Pertukaran niaga hadapan tanpa sokongan |
---|---|---|
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 menetapkan ketepatanexchange
objek pertukaranhargadanJumlah pesanan, selepas ditetapkan, sistem akan mengabaikan data yang berlebihan secara automatik.
pertukaran.SetPrecision ((hargaPrecision, jumlahPrecision)
PeraturanpricePrecision
parameter digunakan untuk mengawal ketepatan data harga.
hargaKetepatan
betul
nombor
PeraturanamountPrecision
parameter digunakan untuk mengawal ketepatan jumlah data yang akan dipesan.
JumlahKeterangan
betul
nombor
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 menyokong fungsi ini, dan ketepatan numerik sistem backtesting dikendalikan secara automatik.
{@fun/Trade/exchange.Buy pertukaran.Buy}, {@fun/Trade/exchange.Sell pertukaran.Sell}
Tetapkan kadar pertukaran semasa objek pertukaran.
pertukaran.SetRate ((rate))
Peraturanrate
Parameter digunakan untuk menentukan kadar pertukaran penukaran.
kadar
betul
nombor
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 kadar pertukaran telah ditetapkan menggunakanexchange.SetRate()
Kemudian semua maklumat harga seperti tickers, kedalaman, harga pesanan, dan lain-lain untuk pertukaran yang diwakili oleh semasaexchange
objek pertukaran akan ditukar dengan mengalikannya dengan kadar pertukaran yang ditetapkan 7.exchange
adalah pertukaran dengan dolar AS sebagai mata wang denominasi.exchange.SetRate(7)
, semua harga di pasaran langsung akan ditukar kepada harga yang hampirCNYnama dengan mengalikan dengan 7.
{@fun/Market/exchange.GetRate pertukaran.GetRate}
Peraturanexchange.IO()
fungsi digunakan untuk panggilan antara muka lain yang berkaitan dengan objek pertukaran.
Peraturanexchange.IO()
fungsi memanggil antara muka lain yang berkaitan dengan objek pertukaran, mengembalikan data tindak balas yang diminta pada panggilan yang berjaya dan ia mengembalikan null pada panggilan yang gagal.
string, nombor, bool, objek, array, null, dan mana-mana jenis lain yang disokong oleh sistem
exchange.IO(k,... args)
Peraturank
Parameter digunakan untuk menetapkan jenis panggilan, dengan nilai pilihan"api"
, "currency"
, "base"
, "trade_margin"
, "trade_normal"
, "public_base"
, "mbase"
, selfTradePreventionMode
, simulate
, cross
, dual
, unified
dan seterusnya.
k
betul
senar
Parameter yang diperluaskan, lulus mengikut senario panggilan tertentu,arg
Oleh kerana mekanisme polimorfik dariexchange.IO()
fungsi, tetapan parameter yang berbeza sepadan dengan fungsi yang berbeza.exchange.IO()
Fungsi tidak pasti.
arg
betul
rentetan, nombor, bool, objek, susunan, sifar dan mana-mana jenis lain yang disokong 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)
Borang panggilanexchange.IO()
fungsi, adalah perlu untuk memahami antara muka API pertukaran dan memeriksa dokumentasi yang berkaitan terlebih dahulu. ini akan membolehkan anda untuk memperluaskan fungsi yang tidak ditambah kepada platform FMZ.POST
permintaan tidak memerlukan anda untuk bimbang tentang penyulitan, menandatangani, atau mengesahkan parameter, yang sudah dikendalikan oleh FMZ di bahagian bawah, selagi anda mengisi parameter yang sepadan.OKX Exchangekontrak niaga hadapan, dan menggunakan parameterraw
untuk lulus parameter perintah:
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 (iaitu, parameter permintaan HTTP) adalah rentetan, ia perlu ditulis dalam tanda petik tunggal (iaitu, 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);
}
Ia menyokong lulus dalam parameter url lengkap yang boleh mengabaikan operasi menukar alamat pangkalan (menyebutexchange.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());
}
Bertukar pasangan dagangan bursa semasa, supaya ia akan menukar pasangan dagangan yang dikonfigurasi oleh kodpada 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 asas yang berbeza untuk antara muka ticker dan antara muka perdagangan, misalnya, Bitfinex Futures mempunyai dua alamat, satu untuk antara muka ticker dan yang lain untuk antara muka perdagangan.exchange.SetBase("xxx")
. Bitfinex niaga hadapan menukar alamat asas antara muka awam menggunakanexchange.IO("mbase", "xxx")
.
I. Untuk pertukaran berpusat pada mata wang kripto panggilan antara muka API lain yang tidak disatukan secara seragam, dengan parameterk
ditetapkan kepada"api"
:
exchange.IO("api", httpMethod, resource, params, raw)
POST
, GET
, dan lain-lainURL
.Peraturanexchange.IO("api", httpMethod, resource, params, raw)
panggilan fungsi akan mengakses antara muka pertukaran dan mengembalikan null jika panggilan gagal dan ralat berlaku.
Hanya perdagangan sebenar menyokong memanggilexchange.IO("api", httpMethod, resource, params, raw)
function.
Untuk menukar pasangan dagangan, parameterk
ditetapkan kepada"currency"
:
exchange.IO("currency", currency)
mata wang: Parameter adalah jenis rentetan dengan format huruf besar seragam, menggunakan garis bawah untuk memisahkanbaseCurrency
daripadaquoteCurrency
, sepertiBTC_USDT
.
ETH_BTC
hanya boleh beralih keLTC_BTC
, bukan untukLTC_USDT
.exchange.IO("currency", currency)
untuk menukar pasangan dagangan.III. Digunakan untuk menukar mod akaun leveraged objek pertukaran mata wang kripto spot:
k
ditetapkan kepada"trade_margin"
untuk beralih ke mod akaun leverage spot. meletakkan pesanan dan mendapatkan aset akaun akan mengakses antara muka leveraged spot bursa.
Jika bursa membezakan antara margin penuh dan margin terpencil dalam leverage spot, gunakan:exchange.IO("trade_super_margin")
untuk beralih kepada margin penuh untuk akaun leveraged, danexchange.IO("trade_margin")
untuk beralih kepada margin terpencil untuk akaun leveraged.k
ditetapkan kepada"trade_normal"
untuk beralih semula ke mod akaun spot biasa.Bursa spot yang menyokong beralih antara model akaun leveraged:
Pertukaran | Nota khas |
---|---|
OKX | Pasangan perdagangan dalam mod akaun leveraged berbeza dari yang biasa, beberapa pasangan perdagangan mungkin tidak memilikinya.exchange.IO("trade_super_margin") untuk beralih kepada kedudukan penuh untuk akaun leveraged dan penggunaanexchange.IO("trade_margin") untuk beralih ke kedudukan oleh kedudukan.trade_normal untuk beralih ke mod spot biasa.exchange.IO("tdMode", "cross") untuk menentukan secara langsung mod leverage. |
Huobi | Pasangan dagangan mod akaun leveraged berbeza dari yang biasa, beberapa pasangan dagangan mungkin tidak memilikinya.trade_margin untuk beralih ke kedudukan akaun leverage mengikut kedudukan, menggunakantrade_super_margin untuk beralih ke kedudukan penuh akaun leverage.trade_normal untuk beralih ke mod mata wang-mata wang biasa. |
Binance | Mod akaun leveraged dibahagikan kepada kedudukan mengikut kedudukan dan kedudukan penuh, penggunaantrade_margin untuk beralih ke kedudukan oleh kedudukan, menggunakantrade_super_margin untuk beralih ke kedudukan penuh, gunakantrade_normal untuk beralih ke mod mata wang-mata wang biasa. |
GateIO | Mod akaun leveraged dibahagikan kepada kedudukan mengikut kedudukan dan kedudukan penuh, penggunaantrade_margin untuk beralih ke kedudukan oleh kedudukan, menggunakantrade_super_margin untuk beralih ke kedudukan penuh, gunakantrade_normal untuk beralih ke mod mata wang-mata wang biasa. |
AscendEx | Penggunaanexchange.IO("trade_margin") untuk beralih ke mod akaun leverage danexchange.IO("trade_normal") untuk beralih semula ke mod akaun biasa. |
WOO | Penggunaanexchange.IO("trade_margin") untuk beralih ke mod akaun leverage danexchange.IO("trade_normal") untuk beralih semula ke mod akaun biasa. |
CoinEx | Penggunaanexchange.IO("trade_margin") untuk beralih ke mod akaun leveraged danexchange.IO("trade_normal") untuk beralih semula ke mod akaun biasa. |
IV. Fungsi suis lain:Lihatlahexchange.IO()
fungsi untukFungsi suis laindalam Panduan Pengguna.
{@fun/NetSettings/exchange.SetBase exchange.SetBase}, {@fun/Account/exchange.SetCurrency exchange.SetCurrency}, {@var EXCHANGE_OP_IO_CONTROL}
Peraturanexchange.Log()
fungsi digunakan untuk mengeluarkan log penempatan pesanan dan pengeluaran di kawasan lajur log. Apabila dipanggil, tiada pesanan diletakkan, hanya log transaksi yang dikeluarkan dan direkodkan.
pertukaran.Log ((pesananJenis, harga, jumlah) pertukaran.Log ((pesananJenis, harga, jumlah,... args)
PeraturanorderType
parameter digunakan untuk menetapkan jenis log output, nilai pilihan 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
betul
nombor
Perkhidmatanprice
parameter digunakan untuk menetapkan harga yang dipaparkan dalam log output.
harga
betul
nombor
Perkhidmatanamount
Parameter digunakan untuk menetapkan jumlah pesanan yang diletakkan yang dipaparkan dalam log output.
jumlah
betul
nombor
Parameter yang diperluaskan yang boleh mengeluarkan maklumat yang disertakan ke log ini,arg
parameter boleh lulus lebih daripada satu.
arg
palsu
rentetan, nombor, bool, objek, array, null dan jenis lain yang disokong 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)
boleh digunakan untuk pesanan dagangan langsung mengikuti ujian, simulasi penempatan pesanan, dan ia boleh membantu dalam penempatan pesanan log.exchange.IO} berfungsi untuk mengakses antara muka pertukaran untuk membuat pesanan bersyarat, tetapi menggunakanexchange.IO()
fungsi tidak output maklumat log urus niaga dalam rekod log dagangan hidup.exchange.Log()
fungsi boleh digunakan untuk melengkapkan log output untuk merekod maklumat penempatan pesanan, dan yang sama berlaku untuk operasi pengeluaran pesanan.
ApabilaorderType
parameter ialahLOG_TYPE_CANCEL
, yangprice
Parameter adalah urutan Id pesanan ditarik balik yang digunakan untuk mencetak log pengeluaran apabila pesanan ditarik balik secara langsung menggunakanexchange.IO()
fungsi.exchange.Log()
fungsi adalah fungsi ahli objek pertukaran {@var/EXCHANGE exchange}, berbeza 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 pengiraan penyulitan tandatangan.
Peraturanexchange.Encode()
fungsi mengembalikan pengekodan nilai hash yang dikira.
senar
exchange.Encode ((algo, inputFormat, outputFormat, data) exchange.Encode ((algo, inputFormat, outputFormat, data, kunciFormat, kunci)
Parameteralgo
adalah algoritma yang digunakan untuk pengiraan pengekodan. tetapan yang disokong adalah: algo
juga menyokong: algo
juga menyokong: algo
boleh ditulis sebagai ed25519.seed
pengiraan.
sesuatu
betul
senar
Digunakan untuk menentukan format datadata
parameter.inputFormat
parameter boleh ditetapkan kepada salah satu daripada: hex
dikodkan, base64
dikodkan, dan outputFormat
parameter menyokong tetapan berikut: hex
dikodkan, base64
dikodkan, dan data
adalah data yang akan diproses.
data
betul
senar
Digunakan untuk menentukan format datakey
parameter.key
parameter boleh ditetapkan kepada salah satu daripada: hex
dikodkan, base64
dikodkan, dan key
parameter digunakan untuk menentukan kunci yang digunakan dalam pengiraan tandatangan, dan ia boleh digunakan sebagai rentetan plaintext."{{accesskey}}"
, "{{secretkey}}"
untuk merujuk kepadaaccessKey
dansecretKey
yang dikonfigurasi dalam objek pertukaran {@var/EXCHANGE exchange}.
kunci
palsu
senar
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 kedudukan BitMEX (wss protokol):
Hanya perdagangan sebenar menyokong memanggilexchange.Encode()
fungsi."{{accesskey}}"
, "{{secretkey}}"
rujukan hanya sah apabilaexchange.Encode()
fungsi digunakan.
{@var/EXCHANGE exchange}, {@fun/Global/Encode Encode}
Fungsi sokongan asynchronous pelbagai benang boleh mengubah operasi semua fungsi yang disokong menjadi pelaksanaan serentak asynchronous.
Peraturanexchange.Go()
fungsi mengembalikan objek serentak dengan serta-merta, dan anda boleh menggunakanwait()
kaedah objek serentak itu untuk mendapatkan hasil permintaan serentak.
objek
pertukaran.Go (cara) pertukaran.Go ((metode,... args)
Peraturanmethod
parameter digunakan untuk menentukan nama fungsi serentak. Perhatikan bahawa parameter adalah rentetan nama fungsi, bukan rujukan fungsi.
kaedah
betul
senar
Parameter untukmelaksanakan fungsi secara serentak, mungkin terdapat lebih daripada satu parameterarg
. Jenis dan nombor parameterarg
bergantung kepada parameterfungsi pelaksanaan serentak.
arg
palsu
string, nombor, bool, objek, array, fungsi, null, dan semua jenis lain yang disokong 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"
, kerananull == undefined
adalah sah dalam 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);
}
Menghubungiwait()
kaedah pada objek serentak yang telah dilepaskan akan melaporkan ralat:
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 serentak kepada pelbagai pertukaran ticker:
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");
}
Permintaan serentak untukexchange.IO("api", ...)
fungsi:
Fungsi ini hanya mewujudkan tugas pelaksanaan berbilang benang apabila dijalankan dalam perdagangan sebenar, backtesting tidak menyokong pelaksanaan tugas serentak berbilang benang (backtesting tersedia, tetapi masih dijalankan secara berurutan).
Selepasexchange.Go()
fungsi mengembalikan objek,wait()
fungsi dipanggil melalui objek itu untuk mendapatkan data yang dikembalikan oleh benang.wait()
fungsi mesti dipanggil untuk mendapatkan data sebelum benang akan dibebaskan secara automatik.wait()
fungsi ditentukan, utas tidak akan dibebaskan secara automatik walaupun masa tamat berlaku. Hasil utas mesti diperoleh sebelum ia akan dibebaskan secara automatik (tidak kira kejayaan atau kegagalan panggilan antara muka untuk akses serentak).wait()
fungsi tanpa mengira sama ada pelaksanaan berjaya atau gagal, dan sumber benang yang diminta olehexchange.Go()
fungsi mesti dibebaskan secara automatik oleh pelabuhan.
Peraturanwait()
kaedah menyokong parameter timeout:
Tanpa parameter timeout, iaitu,wait()
, atau dengan parameter timeout 0, iaitu,wait(0)
.wait()
blok fungsi dan menunggu sehingga thread serentak selesai berjalan, mengembalikan hasil pelaksanaan thread serentak.
Tetapkan parameter waktu henti -1, iaituwait(-1)
.wait()
fungsi kembali dengan segera, dengan nilai pulangan yang berbeza untuk bahasa pengaturcaraan yang berbeza, lihat subbahagian ini untuk panggilan contoh.
Tetapkan parameter masa lapang tertentu,wait(300)
, danwait()
Fungsi akan menunggu maksimum 300 milisaat sebelum kembali.
Jika hasil pulangan akhirwait()
fungsi tidak diperolehi, sumber thread tidak akan dibebaskan secara automatik, yang akan membawa kepada pengumpulan utas yang diminta, dan lebih daripada 2000 akan melaporkan ralat:"too many routine wait, max is 2000"
.
Fungsi yang disokong:GetTicker
, GetDepth
, GetTrades
, GetRecords
, GetAccount
, GetOrders
, GetOrder
, CancelOrder
, Buy
, Sell
, GetPositions
, IO
. Semua fungsi ini dilaksanakan berdasarkan objek pertukaran semasa {@var/EXCHANGE exchange} apabila dipanggil secara serentak.
Perbezaan antara bahasa Python dan bahasa JavaScript adalah bahawawait()
fungsi objek serentak dalam bahasa Python mengembalikan dua parameter. Parameter pertama adalah hasil yang dikembalikan oleh panggilan API asynchronous, dan parameter kedua menunjukkan sama ada panggilan asynchronous 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}
Pasaran Akaun