pp
Không có chính
trao đổi[0].IO(
The ZB exchange is special. There are two addresses: one is the market data interface address, and the other is the trading interface address. Switch the address:
```js
function main() {
// The second parameter of exchange.IO is the trading interface address, and the third parameter is the market interface address, which is switched to an address that can be accessed domestically
exchange.IO("base", "https://trade.zb.plus", "http://api.zb.plus")
// Print the account information
Log(exchange.GetAccount())
}
def main():
exchange.IO("base", "https://trade.zb.plus", "http://api.zb.plus")
Log(exchange.GetAccount())
void main() {
exchange.IO("base", "https://trade.zb.plus", "http://api.zb.plus");
Log(exchange.GetAccount());
}
Chuyển chế độ thị trường Các sàn giao dịch hiện đang được hỗ trợ:
Chuyển đổi | Nhận xét |
---|---|
Huobi Spot | Sau khi hỗ trợ giao thức WebSocket, mãexchange.IO( |
exchange.IO("websocket")
Chuyển giao thức thông tin thị trường sangwebsocket
(bên định là nghỉ ngơi), cách để có được báo giá thị trường sẽ thay đổi sau khi chuyển đổi.exchange.GetTicker()
vàexchange.GetDepth()
sẽ được chuyển sangwebsocket
giao thức để cập nhật, từ thu thập dữ liệu thị trường hoạt động thô đến thu thập dữ liệu thị trường thụ động, chỉ có Huobi Exchange được hỗ trợ hiện tại.
Khi chế độ thị trường là cơ chế đẩy, bạn có thể gọi chức năng sau để thiết lập:
exchange.IO("mode", 0)
Chế độ trả lại ngay lập tức. Nếu dữ liệu thị trường hiện tại chưa được nhận từ sàn giao dịch, dữ liệu thị trường cũ sẽ được trả lại ngay lập tức. Nếu có dữ liệu mới, dữ liệu mới sẽ được trả lại.
exchange.IO("mode", 1)
Chế độ bộ nhớ cache (chế độ mặc định). Nếu dữ liệu thị trường mới nhất của sàn giao dịch không được nhận (so với dữ liệu thu được từ giao diện trước), chờ nhận và sau đó trả về. Nếu dữ liệu thị trường mới nhất đã được nhận trước khi gọi chức năng này, dữ liệu mới nhất sẽ được trả về ngay lập tức.
exchange.IO("mode", 2)
Chế độ cập nhật bắt buộc. Nhập và chờ cho đến khi dữ liệu đẩy mới nhất tiếp theo của trao đổi được nhận và sau đó trở lại.
Nếu bạn muốn có được thông tin thị trường mới nhất lần đầu tiên, bạn có thể chuyển sangwebsocket
Và đừng gọiSleep
và kiểm tra dữ liệu ngay lập tức.exchange.GetTicker()
vàexchange.GetDepth()
các chức năng hoạt động trong chế độ bộ nhớ cache, chẳng hạn như:
function main () {
exchange.IO("websocket")
while (true) {
Log(exchange.GetTicker())
}
}
def main():
exchange.IO("websocket")
while True:
Log(exchange.GetTicker())
void main() {
exchange.IO("websocket");
while(true) {
Log(exchange.GetTicker());
}
}
Chế độ tài khoản đòn bẩy giao dịch
Sử dụngexchange.IO("trade_margin")
để chuyển sang chế độ tài khoản đòn bẩy, đặt lệnh và truy cập tài sản tài khoản sẽ sử dụng giao diện đòn bẩy của sàn giao dịch.
Sử dụngexchange.IO("trade_normal")
để chuyển trở lại chế độ tài khoản bình thường.
Các giao dịch được hỗ trợ:
Chuyển đổi | Những nhận xét đặc biệt |
---|---|
OKX | Các cặp giao dịch của chế độ tài khoản đòn bẩy khác với các cặp giao dịch thông thường, và một số cặp giao dịch có thể không có sẵn.exchange.IO("cross", true) để chuyển sang vị trí đầy đủ của tài khoản đòn bẩy vàexchange.IO("cross", false) để chuyển sang vị trí cô lập. |
Huobi | Các cặp giao dịch của chế độ tài khoản đòn bẩy khác với các cặp giao dịch thông thường và một số cặp giao dịch có thể không có sẵn. Tài khoản đòn bẩy Huobi được chia thành vị trí chéo và vị trí cô lập.trade_margin để chuyển sang một tài khoản đòn bẩy vị trí cô lập; sử dụngtrade_super_margin để chuyển sang tài khoản đòn bẩy;trade_normal để chuyển sang chế độ tiền tệ thông thường |
ZB | Các khoản tiền chỉ có thể được chuyển qua QC. Trong lĩnh vực giao dịch đòn bẩy, các khoản tiền giữa các cặp giao dịch khác nhau là độc lập, tức là số lượng tiền xu QC dưới cặp giao dịch ETH_QC không hiển thị trong BTC_QC |
Binance | Các tài khoản đòn bẩy được chia thành vị trí chéo và vị trí cô lập.trade_margin để chuyển sang vị trí cô lập; sử dụngtrade_super_margin để chuyển sang vị trí chéo; sử dụngtrade_normal để chuyển sang chế độ tiền tệ thông thường |
GateIO | Các tài khoản đòn bẩy được chia thành vị trí chéo và vị trí cô lập.trade_margin để chuyển sang vị trí cô lập; sử dụngtrade_super_margin để chuyển sang vị trí chéo; sử dụngtrade_normal để chuyển sang chế độ tiền tệ thông thường |
AscendEx | Sử dụngexchange.IO("trade_margin") để chuyển sang chế độ tài khoản đòn bẩy và sử dụngexchange.IO("trade_normal") để chuyển trở lại chế độ tài khoản bình thường. |
exchange.Log(LogType, Price, Amount)
không đặt lệnh khi được gọi và chỉ ghi lại thông tin giao dịch để xuất thông tin nhật ký trao đổi.
Lưu ý:
exchange
đối tượng, mà là khác với các chức năng toàn cầuLog()
.LogType
có thểLOG_TYPE_BUY
, LOG_TYPE_SELL
, LOG_TYPE_CANCEL
vàPrice
như giá, vàAmount
Khi nàoLogType
làLOG_TYPE_CANCEL
, Price
Parameter là Order ID.Sử dụngexchange.Log(LogType, Price, Amount)
thực hiện các thử nghiệm tiếp theo giao dịch trực tiếp, đặt lệnh mô phỏng và hỗ trợ ghi lại các lệnh.
Trường hợp sử dụng phổ biến nhất là: sử dụngexchange.IO
chức năng để truy cập vào tạo giao diện lệnh có điều kiện của sàn giao dịch để đặt lệnh có điều kiện.exchange.IO
chức năng sẽ không xuất thông tin nhật ký trao đổi trong bản ghi nhật ký bot.exchange.Log(LogType, Price, Amount)
để bổ sung dữ liệu xuất log để ghi lại thông tin đặt hàng.
var id = 123
function main() {
// Order type: buy; price: 999; quantity: 0.1
exchange.Log(LOG_TYPE_BUY, 999, 0.1)
// Cancel the order
exchange.Log(LOG_TYPE_CANCEL, id)
}
id = 123
def main():
exchange.Log(LOG_TYPE_BUY, 999, 0.1)
exchange.Log(LOG_TYPE_CANCEL, id)
void main() {
auto id = 123;
exchange.Log(LOG_TYPE_BUY, 999, 0.1);
exchange.Log(LOG_TYPE_CANCEL, id);
}
exchange.HMAC(Algo, OutputAlgo, Data, Key)
hỗ trợHMACtính toán mã hóa củamd5/sha256/sha512/sha1, và chỉ hỗ trợ giao dịch trực tiếp.
exchange.HMAC("sha256", "hex", "xxxxx", "{{secretkey}}")
Để trích dẫnaccessKey
, sử dụng"{{accesskey}}"
.
Để trích dẫnsecretKey
, sử dụng"{{secretkey}}"
; hoặc bạn có thể sử dụng văn bản đơn giản"abc-123-xxxx"
. "{{accessKey}}","{{secretkey}}"
chỉ có giá trị khi sử dụng chức năng này.OutputAlgo
hỗ trợ:
Đẩy BitMEX thay đổi vị trí (wss giao thức)
function main() {
var APIKEY = "your Access Key(Bitmex API ID)"
var expires = parseInt(Date.now() / 1000) + 10
var signature = exchange.HMAC("sha256", "hex", "GET/realtime" + expires, "{{secretkey}}")
var client = Dial("wss://www.bitmex.com/realtime", 60)
var auth = JSON.stringify({args: [APIKEY, expires, signature], op: "authKeyExpires"})
var pos = 0
client.write(auth)
client.write('{"op": "subscribe", "args": "position"}')
while (true) {
bitmexData = client.read()
if(bitmexData.table == 'position' && pos != parseInt(bitmexData.data[0].currentQty)){
Log('position change', pos, parseInt(bitmexData.data[0].currentQty), '@')
pos = parseInt(bitmexData.data[0].currentQty)
}
}
}
import time
def main():
APIKEY = "your Access Key(Bitmex API ID)"
expires = int(time.time() + 10)
signature = exchange.HMAC("sha256", "hex", "GET/realtime" + str(expires), "{{secretkey}}")
client = Dial("wss://www.bitmex.com/realtime", 60)
auth = json.dumps({"args": [APIKEY, expires, signature], "op": "authKeyExpires"})
pos = 0
client.write(auth)
client.write('{"op": "subscribe", "args": "position"}')
while True:
bitmexData = json.loads(client.read())
if "table" in bitmexData and bitmexData["table"] == "position" and len(bitmexData["data"]) != 0 and pos != bitmexData["data"][0]["currentQty"]:
Log("position change", pos, bitmexData["data"][0]["currentQty"], "@")
pos = bitmexData["data"][0]["currentQty"]
void main() {
auto APIKEY = "your Access Key(Bitmex API ID)";
auto expires = Unix() + 10;
auto signature = exchange.HMAC("sha256", "hex", format("GET/realtime%d", expires), "{{secretkey}}");
auto client = Dial("wss://www.bitmex.com/realtime", 60);
json auth = R"({"args": [], "op": "authKeyExpires"})"_json;
auth["args"].push_back(APIKEY);
auth["args"].push_back(expires);
auth["args"].push_back(signature);
auto pos = 0;
client.write(auth.dump());
client.write("{\"op\": \"subscribe\", \"args\": \"position\"}");
while(true) {
auto bitmexData = json::parse(client.read());
if(bitmexData["table"] == "position" && bitmexData["data"][0].find("currentQty") != bitmexData["data"][0].end() && pos != bitmexData["data"][0]["currentQty"]) {
Log("Test");
Log("position change", pos, bitmexData["data"][0]["currentQty"], "@");
pos = bitmexData["data"][0]["currentQty"];
}
}
}
exchange.Go(Method, Args...)
là chức năng hỗ trợ không đồng bộ đa luồng, có thể biến hoạt động của tất cả các chức năng được hỗ trợ thành đồng bộ không đồng bộ (chỉ hỗ trợ trao đổi tiền điện tử). Giá trị tham số:Method
, của kiểu chuỗi, cụ thể là tên hàm được gọi đồng thời.
Lưu ý:
exchange.Go
hàm trả về một đối tượng,wait
hàm được gọi để lấy dữ liệu được trả về bởi các chuỗi thông qua đối tượng. Các chuỗi sẽ được giải phóng tự động sau khi thu thập dữ liệu bằng cách gọiwait
Nếu chỉ định các tham số thời gian hết củawait
, các thread sẽ không được giải phóng ngay cả khi thời gian hết xảy ra; theo cách này, các thread sẽ được giải phóng tự động chỉ bằng cách lấy kết quả của các thread (không quan trọng các giao diện đồng thời truy cập được gọi thành công hoặc không thành công).wait
chức năng, và các tài nguyên thread áp dụng bởi cácexchange.Go
chức năng được phát hành tự động bởi docker.wait
chức năng không đạt được ở cuối, các tài nguyên thread sẽ không được giải phóng tự động, điều này sẽ gây ra sự tích lũy của các thread được áp dụng; nếu số lượng các thread vượt quá 2000, một lỗi sẽ được báo cáo:"too many routine wait, max is 2000"
.Các chức năng được hỗ trợ:GetTicker
, GetDepth
, GetTrades
, GetRecords
, GetAccount
, GetOrders
, GetOrder
, CancelOrder
, Buy
, Sell
, GetPosition
vàIO
.
function main(){
// The following four operations are executed concurrently and asynchronously by multiple threads, without time-consuming, but with immediate return.
var a = exchange.Go("GetTicker")
var b = exchange.Go("GetDepth")
var c = exchange.Go("Buy", 1000, 0.1)
var d = exchange.Go("GetRecords", PERIOD_H1)
// Call the "wait" method, to wait for the return of the asynchronously obtained "ticker" result
var ticker = a.wait()
// Return the depth; it is possible to return null, if the acquisition fails
var depth = b.wait()
// Return the order number; limit the timeout in 1 second; the timeout returns "undefined"; this object can continue to call "wait" to wait if the last "wait" is timeout
var orderId = c.wait(1000)
if(typeof(orderId) == "undefined") {
// Timeout, reacquire
orderId = c.wait()
}
var records = d.wait()
}
def main():
a = exchange.Go("GetTicker")
b = exchange.Go("GetDepth")
c = exchange.Go("Buy", 1000, 0.1)
d = exchange.Go("GetRecords", PERIOD_H1)
ticker, ok = a.wait()
depth, ok = b.wait()
orderId, ok = c.wait(1000)
if ok == False:
orderId, ok = c.wait()
records, ok = d.wait()
void main() {
auto a = exchange.Go("GetTicker");
auto b = exchange.Go("GetDepth");
auto c = exchange.Go("Buy", 1000, 0.1);
auto d = exchange.Go("GetRecords", PERIOD_H1);
Ticker ticker;
Depth depth;
Records records;
TId orderId;
a.wait(ticker);
b.wait(depth);
if(!c.wait(orderId, 300)) {
c.wait(orderId);
}
d.wait(records);
}
Lưu ý:
undefined
, sử dụngtypeof(xx)==="undefined"
, bởi vìnull == undefined
có sẵn trong JavaScript.function main() {
var d = exchange.Go("GetRecords", PERIOD_H1)
// Wait for K-line result
var records = d.wait()
// Here we wait for an asynchronous operation that has been waited and ended; it will return null, and record the error
var ret = d.wait()
}
def main():
d = exchange.Go("GetRecords", PERIOD_H1)
records, ok = d.wait()
ret, ok = d.wait()
void main() {
auto d = exchange.Go("GetRecords", PERIOD_H1);
Records records;
d.wait(records);
Records ret;
d.wait(ret);
}
Sự khác biệt giữaPython
vàJavaScript
Có phải là...Python
Ừ.wait
hàm trả về hai tham số: đầu tiên là kết quả được trả về bởi API không đồng bộ; thứ hai chỉ ra liệu cuộc gọi không đồng bộ đã hoàn thành hay không.
Python
ví dụ:
def main():
d = exchange.Go("GetRecords", PERIOD_D1)
# "ok" must return "True", unless the strategy is stopped
ret, ok = d.wait()
# If the waiting times out, or "wait" for an ended instance, "ok" returns "False"
ret, ok = d.wait(100)
ret, ok = d.wait(100)
Thu thập nhiều báo giá sàn giao dịch đồng thời:
function main() {
while(true) {
var beginTS = new Date().getTime()
var arrRoutine = []
var arrTicker = []
var arrName = []
for(var i = 0; i < exchanges.length; i++) {
arrRoutine.push(exchanges[i].Go("GetTicker"))
arrName.push(exchanges[i].GetName())
}
for(var i = 0; i < arrRoutine.length; i++) {
arrTicker.push(arrRoutine[i].wait())
}
var endTS = new Date().getTime()
var tbl = {
type: "table",
title: "Market Quotes",
cols: ["Index", "Name", "Latest Executed Price"],
rows: []
}
for(var i = 0; i < arrTicker.length; i++) {
tbl.rows.push([i, arrName[i], arrTicker[i].Last])
}
LogStatus(_D(), "The total time to acquire multiple platforms concurrently is:", endTS - beginTS, "millisecond", "\n", "`" + JSON.stringify(tbl) + "`")
Sleep(500)
}
}
import time
import json
def main():
while True:
beginTS = time.time()
arrRoutine = []
arrTicker = []
arrName = []
for i in range(len(exchanges)):
arrRoutine.append(exchanges[i].Go("GetTicker"))
arrName.append(exchanges[i].GetName())
for i in range(len(exchanges)):
ticker, ok = arrRoutine[i].wait()
arrTicker.append(ticker)
endTS = time.time()
tbl = {
"type": "table",
"title": "Market Quote",
"cols": ["Index", "Name", "Latest Executed Price"],
"rows": []
}
for i in range(len(arrTicker)):
tbl["rows"].append([i, arrName[i], arrTicker[i]["Last"]])
LogStatus(_D(), "The total time to acquire multiple platforms concurrently is:", endTS - beginTS, "second", "\n", "`" + json.dumps(tbl) + "`")
Sleep(500)
void main() {
while(true) {
int length = exchanges.size();
auto beginTS = UnixNano() / 1000000;
Ticker arrTicker[length] = {};
string arrName[length] = {};
// Note that to add a few exchange objects, here we need to execute the "exchanges[n].Go" function several times. In this example, we need to add four exchange objects, which can be modified in details
auto r0 = exchanges[0].Go("GetTicker");
auto r1 = exchanges[1].Go("GetTicker");
auto r2 = exchanges[2].Go("GetTicker");
auto r3 = exchanges[3].Go("GetTicker");
GoObj *arrRoutine[length] = {&r0, &r1, &r2, &r3};
for(int i = 0; i < length; i++) {
arrName[i] = exchanges[i].GetName();
}
for(int i = 0; i < length; i++) {
Ticker ticker;
arrRoutine[i]->wait(ticker);
arrTicker[i] = ticker;
}
auto endTS = UnixNano() / 1000000;
json tbl = R"({
"type": "table",
"title": "Market Quote",
"cols": ["Index", "Name", "Latest Executed Price"],
"rows": []
})"_json;
for(int i = 0; i < length; i++) {
json arr = R"(["", "", ""])"_json;
arr[0] = format("%d", i);
arr[1] = arrName[i];
arr[2] = format("%f", arrTicker[i].Last);
tbl["rows"].push_back(arr);
}
LogStatus(_D(), "The total time to acquire multiple platforms concurrently is:", format("%d", endTS - beginTS), "millisecond", "\n", "`" + tbl.dump() + "`");
Sleep(500);
}
}
Các cuộc gọi đồng thời đếnexchange.IO("api", ...)
chức năng:
function main() {
/*
Use the OKX placing order interface to test
POST /api/v5/trade/order
*/
var beginTS = new Date().getTime()
var param = {"instId":"BTC-USDT-SWAP","tdMode":"cross","side":"buy","ordType":"limit","px":"16000","sz":"1","posSide":"long"}
var ret1 = exchange.Go("IO", "api", "POST", "/api/v5/trade/order", "", JSON.stringify(param))
var ret2 = exchange.Go("IO", "api", "POST", "/api/v5/trade/order", "", JSON.stringify(param))
var ret3 = exchange.Go("IO", "api", "POST", "/api/v5/trade/order", "", JSON.stringify(param))
var id1 = ret1.wait()
var id2 = ret2.wait()
var id3 = ret3.wait()
var endTS = new Date().getTime()
Log("id1:", id1)
Log("id2:", id2)
Log("id3:", id3)
Log("Time for placing orders concurrently:", endTS - beginTS, "millisecond")
}
import time
import json
def main():
beginTS = time.time()
param = {"instId":"BTC-USDT-SWAP","tdMode":"cross","side":"buy","ordType":"limit","px":"16000","sz":"1","posSide":"long"}
ret1 = exchange.Go("IO", "api", "POST", "/api/v5/trade/order", "", json.dumps(param))
ret2 = exchange.Go("IO", "api", "POST", "/api/v5/trade/order", "", json.dumps(param))
ret3 = exchange.Go("IO", "api", "POST", "/api/v5/trade/order", "", json.dumps(param))
id1, ok1 = ret1.wait()
id2, ok2 = ret2.wait()
id3, ok3 = ret3.wait()
endTS = time.time()
Log("id1:", id1)
Log("id2:", id2)
Log("id3:", id3)
Log("Time for placing orders concurrently:", endTS - beginTS, "second")
void main() {
auto beginTS = UnixNano() / 1000000;
json param = R"({"instId":"BTC-USDT-SWAP","tdMode":"cross","side":"buy","ordType":"limit","px":"16000","sz":"1","posSide":"long"})"_json;
auto ret1 = exchange.Go("IO", "api", "POST", "/api/v5/trade/order", "", param.dump());
auto ret2 = exchange.Go("IO", "api", "POST", "/api/v5/trade/order", "", param.dump());
auto ret3 = exchange.Go("IO", "api", "POST", "/api/v5/trade/order", "", param.dump());
json id1 = R"({})"_json;
json id2 = R"({})"_json;
json id3 = R"({})"_json;
ret1.wait(id1);
ret2.wait(id2);
ret3.wait(id3);
auto endTS = UnixNano() / 1000000;
Log("id1:", id1);
Log("id2:", id2);
Log("id3:", id3);
Log("Time for placing orders concurrently:", endTS - beginTS, "millisecond");
}
exchange.GetAccount()
trả về thông tin tài khoản trao đổi.Account
structure.
Account
cấu trúcfunction main(){
var account = exchange.GetAccount()
Log("Account information, Balance:", account.Balance, "FrozenBalance:", account.FrozenBalance, "Stocks:",
account.Stocks, "FrozenStocks:", account.FrozenStocks)
}
def main():
account = exchange.GetAccount()
Log("Account information, Balance", account["Balance"], "FrozenBalance:", account["FrozenBalance"], "Stocks:",
account["Stocks"], "FrozenStocks:", account["FrozenStocks"])
void main() {
auto account = exchange.GetAccount();
Log("Account information, Balance", account.Balance, "FrozenBalance:", account.FrozenBalance, "Stocks:",
account.Stocks, "FrozenStocks:", account.FrozenStocks);
}
Nếu đối tượng trao đổi được thiết lập cho một sàn giao dịch tương lai tiền điện tử và chuyển sang hợp đồng vớiUSDT
như biên (xemexchange.SetContractType
chức năng để biết làm thế nào để chuyển đổi), các tài sảnUSDT
như biên, được ghi trong thuộc tính củaBalance
vàFrozenBalance
.
function main(){
// Switch the trading pair
exchange.IO("currency", "BTC_USDT")
// Take OKX futures as an example; set the contract as the contract of the week, and the current trading pair is BTC_USDT, so the current contract is BTC USDT-margined contract of this week
exchange.SetContractType("this_week")
// Acquire the data of the current account assets
var account = exchange.GetAccount()
// The available balance of USDT as margin
Log(account.Balance)
// The frozen amount of USDT as margin
Log(account.FrozenBalance)
}
def main():
exchange.IO("currency", "BTC_USDT")
exchange.SetContractType("this_week")
account = exchange.GetAccount()
Log(account["Balance"])
Log(account["FrozenBalance"])
void main() {
exchange.IO("currency", "BTC_USDT");
exchange.SetContractType("this_week");
auto account = exchange.GetAccount();
Log(account.Balance);
Log(account.FrozenBalance);
}
exchange.GetName()
trả về tên trao đổi. trả về giá trị: kiểu chuỗi.exchange
hoặcexchanges[n]
các đối tượng trong mã chiến lược.
function main() {
Log("Determine the exchange object to be OKX:", exchange.GetName() == "OKEX")
}
def main():
Log("Determine the exchange object to be OKX:", exchange.GetName() == "OKEX")
void main() {
Log("Determine the exchange object to be OKX:", exchange.GetName() == "OKEX");
}
Đối với lệnh phiên bản dòng của Docker, bạn có thể sử dụng-1
lệnh để in một danh sách các tên trao đổi.
exchange.GetLabel()
trả về nhãn tùy chỉnh của trao đổi.
Cácexchange
hoặcexchanges[n]
các đối tượng trong mã chiến lược thường được xác định bởi các nhãn được đặt khi cấu hình các đối tượng trao đổi.
exchange.GetCurrency()
trả về tên của cặp tiền tệ được điều hành bởi sàn giao dịch, và nền tảng tiền điện tử trả về một chuỗi, chẳng hạn nhưLTC_BTC
. Trả về giá trị: kiểu chuỗi.
Cácexchange.SetCurrency(Symbol)
Phù hợp với phương pháp chuyển đổi củaexchange.IO ("currency","BTC_USDT")
Nó hỗ trợ chuyển đổi các cặp giao dịch trong hệ thống backtesting, và tên của cácpricing currency
không thể thay đổi khi chuyển đổi các cặp giao dịch trong hệ thống backtesting (ví dụ:BTC_USDT
có thể được chuyển sangLTC_USDT
, nhưng nó không thể được chuyển sangLTC_BTC
Sau khi chuyển sang một cặp giao dịch ban đầu được thiết lập trên trang không kiểm tra lại, số lượng các cặp giao dịch sẽ giảm.trading coins
là 0 (ví dụ: trong quá trình backtest, giá trị ban đầu của cặp giao dịch trên trang backtest làBTC_USDT
, số lượng BTC là 3, và số lượng USDT là 10000 Nếu bạn ngay lập tức chuyển sangLTC_USDT
, số lượngtrading coins
sau khi chuyển đổi sẽ là 0, có nghĩa là số lượng LTC trong tài khoản là 0, nhưng số tiền USDT chia sẻ của các cặp giao dịch chuyển đổi vẫn là 10000).
function main() {
var ticker = exchange.GetTicker()
Log(ticker)
Log(exchange.GetAccount())
// Switch trading pairs, and pay attention to changes in market quote data and account information after switching
Log("Switch LTC_USDT: ", exchange.SetCurrency("LTC_USDT"))
ticker = exchange.GetTicker()
Log(ticker)
Log(exchange.GetAccount())
}
def main():
ticker = exchange.GetTicker()
Log(ticker)
Log(exchange.GetAccount())
Log(" Switch LTC_USDT: ", exchange.SetCurrency("LTC_USDT"))
ticker = exchange.GetTicker()
Log(ticker)
Log(exchange.GetAccount())
void main() {
auto ticker = exchange.GetTicker();
Log(ticker);
Log(exchange.GetAccount());
exchange.SetCurrency("LTC_USDT");
Log(" Switch LTC_USDT: ");
ticker = exchange.GetTicker();
Log(ticker);
Log(exchange.GetAccount());
}
Kết quả hoạt động thử nghiệm sau:
exchange.GetQuoteCurrency()
trả về tên của đồng tiền cơ sở được vận hành bởi sàn giao dịch.BTC_CNY
trả lạiCNY
, vàETH_BTC
trả lạiBTC
. Trả về giá trị: kiểu chuỗi.
Đối với các đối tượng giao dịch tương lai tiền điện tử, mã hợp đồng phải được chỉ định trước khi gọithị trường, trật tựvà các giao diện khác, vàexchange.SetContractType
Khi chuyển đổi cặp giao dịch hiện tại của đối tượng trao đổi, bạn cần gọiexchange.SetContractType
Đối với mã hợp đồng trao đổi tiền kỹ thuật số được hỗ trợ bởi nền tảng, vui lòng tham khảoexchange.SetContractType
function.
exchange.GetPosition()
lấy thông tin vị trí hiện tại.position
cấu trúc mảng. Nếu không có vị trí, nó trả về một mảng trống, đó là[]
.
Position
cấu trúcThông thường, các hợp đồng tương lai tiền điện tử được chia thành hai loại:
Hợp đồng giao hàng
Khi một hợp đồng được thiết lập cho một hợp đồng giao hàng, gọiexchange.GetPosition()
chức năng, và tất cả các vị trí trong hợp đồng giao hàng theo cặp giao dịch hiện tại sẽ được trả lại.
Hợp đồng vĩnh viễn
Khi một hợp đồng được thiết lập cho một hợp đồng vĩnh viễn, gọiexchange.GetPosition()
chức năng, và tất cả các vị trí trong hợp đồng vĩnh viễn theo cặp giao dịch hiện tại sẽ được trả lại.
/*
Note: if there is no position, it will returns an empty array, so you should judge whether the data returned by the interface is a null array, before you use the returned data
For example:
When the exchange is set to OKX futures, if the contract is set to be a delivery contract, when the position data of the current week, the next week, and the quarter is obtained, the data type will be an array of position structure.
When the exchange is set to OKX futures, if the contract is set to a perpetual contract, the array of position structure containing the position data of the perpetual contract will be obtained.
*/
function main(){
exchange.SetContractType("this_week")
exchange.SetMarginLevel(10)
exchange.SetDirection("buy")
exchange.Buy(10000, 2)
var position = exchange.GetPosition()
if(position.length > 0){
Log("Amount:", position[0].Amount, "FrozenAmount:", position[0].FrozenAmount, "Price:",
position[0].Price, "Profit:", position[0].Profit, "Type:", position[0].Type,
"ContractType:", position[0].ContractType)
}
}
def main():
exchange.SetContractType("this_week")
exchange.SetMarginLevel(10)
exchange.SetDirection("buy")
exchange.Buy(10000, 2)
position = exchange.GetPosition()
if len(position) > 0:
Log("Amount:", position[0]["Amount"], "FrozenAmount:", position[0]["FrozenAmount"], "Price:",
position[0]["Price"], "Profit:", position[0]["Profit"], "Type:", position[0]["Type"],
"ContractType:", position[0]["ContractType"])
void main() {
exchange.SetContractType("this_week");
exchange.SetMarginLevel(10);
exchange.SetDirection("buy");
exchange.Buy(10000, 2);
auto position = exchange.GetPosition();
if(position.size() > 0) {
Log("Amount:", position[0].Amount, "FrozenAmount:", position[0].FrozenAmount, "Price:",
position[0].Price, "Profit:", position[0].Profit, "Type:", position[0].Type,
"ContractType:", position[0].ContractType);
}
}
exchange.SetMarginLevel(MarginLevel)
Đặt kích thước đòn bẩy. Giá trị tham số: loại số.
Thiết lập kích thước đòn bẩy để đặt lệnh tương lai tiền điện tử, ví dụ:
function main() {
exchange.SetMarginLevel(10)
}
def main():
exchange.SetMarginLevel(10)
void main() {
exchange.SetMarginLevel(10);
}
Đối với hợp đồng tương lai tiền điện tử, các cơ chế đòn bẩy của sàn giao dịch tương lai tiền điện tử không đồng đều.SetMarginLevel
chức năng không thể tạo ra một yêu cầu mạng, nhưng chỉ đặt biến đòn bẩy ở tầng dưới (được sử dụng để truyền các tham số trong giao diện đặt lệnh). Đòn bẩy tương lai của một số sàn giao dịch là một thiết lập của sàn giao dịch, cần được đặt trên trang trang web sàn giao dịch hoặc bằng cách sử dụng giao diện API.SetMarginLevel
chức năng sẽ tạo ra một yêu cầu mạng, và nó có thể không thiết lập đòn bẩy vì nhiều lý do. ví dụ: nếu có các vị trí hiện tại và lệnh đang chờ, giá trị đòn bẩy có thể không được thiết lập cho cặp giao dịch này và đối tượng cơ bản.
Lưu ý về việc thiết lập đòn bẩy trong thiết kế chiến lược:
exchange.SetDirection(Direction)
tập hợpexchange.Buy
hoặcexchange.Sell
để tạo hướng dẫn cho việc đặt lệnh tương lai. Giá trị tham số: loại chuỗi.
CácSetDirection
chức năng thiết lập sự tương ứng giữa hướng giao dịch tương lai và chức năng đặt lệnh:
Chức năng đặt lệnh | Định hướng tham số cho hàm |
Nhận xét |
---|---|---|
exchange.Buy | mua vị trí mở dài | |
exchange.Buy | mua gần vị trí ngắn | |
exchange.Sell | bán vị trí mở ngắn | |
exchange.Sell | bán gần vị trí dài |
Các thông sốDirection
có thể lấy bốn thông số, bao gồmbuy
, closebuy
, sell
vàclosesell
.
function main(){
// Make an example for setting OKX futures weekly contract
exchange.SetContractType("this_week")
// Set 5 times of leverage
exchange.SetMarginLevel(5)
// Set the order placing type into placing long order
exchange.SetDirection("buy")
// Place an order with the contract quantity of 2, at the price of 10,000
exchange.Buy(10000, 2)
exchange.SetMarginLevel(5)
exchange.SetDirection("closebuy")
exchange.Sell(1000, 2)
}
def main():
exchange.SetContractType("this_week")
exchange.SetMarginLevel(5)
exchange.SetDirection("buy")
exchange.Buy(10000, 2)
exchange.SetMarginLevel(5)
exchange.SetDirection("closebuy")
exchange.Sell(1000, 2)
void main() {
exchange.SetContractType("this_week");
exchange.SetMarginLevel(5);
exchange.SetDirection("buy");
exchange.Buy(10000, 2);
exchange.SetMarginLevel(5);
exchange.SetDirection("closebuy");
exchange.Sell(1000, 2);
}
exchange.SetContractType(ContractType)
đặt loại hợp đồng. Giá trị tham số: loại chuỗi. Trong các chiến lược tiền điện tử, lấy exchange.SetCurrency("BTC_USDT")
hoặcexchange.IO("currency", "BTC_USDT")
, bạn cần phải sử dụngexchange.SetContractType
hệ thống xác định xem nó là một giao dịch giao dịch với một cặp giao dịch mới.currency-based contract
hoặc mộtU-based contract
dựa trêncặp giao dịchVí dụ, khi cặp giao dịch được thiết lập đểBTC_ USDT
, sử dụng chức năngexchange.SetContractType
để thiết lập mã hợp đồngswap
, được thiết lập là hợp đồng vĩnh viễn dựa trên USDT của BTC.BTC_ USD
, sử dụng chức năngexchange.SetContractType
để thiết lập mã hợp đồngswap
, được thiết lập như là hợp đồng vĩnh viễn dựa trên tiền tệ của BTC.
Trừ khi có quy định khác,Hợp đồng giao hàngMã trong hợp đồng tương lai tiền điện tử nói chung bao gồm:
this_week
: hợp đồng hàng tuầnnext_week
: hợp đồng tuần sauquarter
: hợp đồng hàng quýnext_quarter
: hợp đồng quý tiếp theoTrừ khi có quy định khác,hợp đồng vĩnh viễnMã trong hợp đồng tương lai tiền điện tử nói chung bao gồm:
swap
: hợp đồng vĩnh viễnĐặt hợp đồng hiện tại vào hợp đồng hàng tuần:
function main() {
// Set to weekly contract
exchange.SetContractType("this_week")
}
def main():
exchange.SetContractType("this_week")
void main() {
exchange.SetContractType("this_week");
}
Mô tả chi tiết về tên hợp đồng của mỗi sàn giao dịch tiền điện tử được hỗ trợ được hiển thị như sau:
OKX
Đặt vào hợp đồng vĩnh viễn:exchange.SetContractType("swap")
Đặt vào hợp đồng tuần này:exchange.SetContractType("this_week")
Đặt hợp đồng vào tuần tới:exchange.SetContractType("next_week")
Đặt vào hợp đồng hàng quý:exchange.SetContractType("quarter")
Đặt vào hợp đồng quý tiếp theo:exchange.SetContractType("next_quarter")
Hợp đồng ký quỹ OKX USDT có thể được chuyển sang hợp đồng sử dụng thanh toán USDT tương ứng với hợp đồng hiện tại bằng cách chuyển đổitrading pair
(hoặc đặt nó trực tiếp khi thêm các đối tượng trao đổi). Ví dụ:
function main() {
// The default trading pair is BTC_USD, the contract is set to the weekly contract, and the contract is the crypto-margined contract
exchange.SetContractType("this_week")
Log("ticker:", exchange.GetTicker())
// Switch trading pairs, and then set a contract to a USDT-margined contract, which is different from the crypto-margined contract
exchange.IO("currency", "BTC_USDT")
exchange.SetContractType("swap")
Log("ticker:", exchange.GetTicker())
}
def main():
exchange.SetContractType("this_week")
Log("ticker:", exchange.GetTicker())
exchange.IO("currency", "BTC_USDT")
exchange.SetContractType("swap")
Log("ticker:", exchange.GetTicker())
void main() {
exchange.SetContractType("this_week");
Log("ticker:", exchange.GetTicker());
exchange.IO("currency", "BTC_USDT");
exchange.SetContractType("swap");
Log("ticker:", exchange.GetTicker());
}
Tiền tương lai_HuobiDM
Đặt vào hợp đồng tuần này:exchange.SetContractType("this_week")
Đặt hợp đồng vào tuần tới:exchange.SetContractType("next_week")
Đặt vào hợp đồng hàng quý:exchange.SetContractType("quarter")
Đặt vào hợp đồng quý tiếp theo:exchange.SetContractType("next_quarter")
Đặt vào hợp đồng vĩnh viễn:exchange.SetContractType("swap")
Nền tảng hỗ trợ các hợp đồng ký quỹ USDT. Hãy lấy hợp đồng BTC làm ví dụ. Bạn có thể chuyển sang hợp đồng ký quỹ USDT chỉ bằng cách sử dụngexchange.SetCurrency("BTC_USDT")
, hoặc bằng cách thiết lập cặp giao dịch hiện tạiBTC_USDT
trực tiếp khi bạn cấu hình các tham số bot và thêm đối tượng trao đổi. sau khi chuyển đổi cặp giao dịch, bạn cần phải gọiexchange.SetContractType
chức năng một lần nữa để thiết lập hợp đồng.
Tiền tương lai_BitMEX
Đặt vào hợp đồng vĩnh viễn:exchange.SetContractType("XBTUSD")
, exchange.SetContractType("APTUSDT")
.
Hợp đồng được thanh toán tại một thời điểm cụ thể, và đăng nhập vào trang web chính thức của BitMEX để kiểm tra từng mã hợp đồng để biết thêm chi tiết. Ví dụ:exchange.SetContractType("XBTM19")
.
Futures_GateIO
Đặt vào hợp đồng tuần này:exchange.SetContractType("this_week")
.
Đặt hợp đồng vào tuần tới:exchange.SetContractType("next_week")
.
Đặt vào hợp đồng hàng quý:exchange.SetContractType("quarter")
.
Đặt vào hợp đồng quý tiếp theo:exchange.SetContractType("next_quarter")
.
Đặt vào hợp đồng vĩnh viễn:exchange.SetContractType("swap")
.
Sàn giao dịch hỗ trợ các hợp đồng ký quỹ USDT. Hãy lấy hợp đồng BTC làm ví dụ. Bạn có thể chuyển sang hợp đồng ký quỹ USDT chỉ bằng cách sử dụngexchange.SetCurrency("BTC_USDT")
, hoặc bằng cách thiết lập cặp giao dịch hiện tạiBTC_USDT
trực tiếp khi bạn cấu hình các tham số giao dịch trực tiếp và thêm đối tượng trao đổi.exchange.SetContractType
chức năng một lần nữa để thiết lập hợp đồng.
Tiền tương lai_Deribit
Đặt vào hợp đồng vĩnh viễn:exchange.SetContractType("BTC-PERPETUAL")
Hỗ trợ hợp đồng Deribit USDC;exchange.SetContractType("ADA_USDC-PERPETUAL")
để thiết lập hợp đồng vĩnh viễn ADA USDC-margined.
Hợp đồng được thanh toán tại một thời điểm cụ thể, và đăng nhập vào trang web chính thức của Deribit để kiểm tra từng mã hợp đồng để biết thêm chi tiết, chẳng hạn như:exchange.SetContractType("BTC-27APR18")
.
Futures_KuCoin
BTC_USD
, và sau đó đặt mã hợp đồng, được gọi là hợp đồng crypto-margined.
Đặt vào hợp đồng vĩnh viễn:exchange.SetContractType("swap")
Đặt vào hợp đồng hàng quý:exchange.SetContractType("quarter")
Đặt vào hợp đồng quý tiếp theo:exchange.SetContractType("next_quarter")
BTC_USDT
, và sau đó đặt mã hợp đồng, đó là hợp đồng ký quỹ USDT.
Đặt vào hợp đồng vĩnh viễn:exchange.SetContractType("swap")
.Futures_Binance
Binance Futures mặc định không thiết lập trạng thái hợp đồng, vì vậy bạn cần thiết lập hợp đồng trước.
Đặt vào hợp đồng vĩnh viễn:exchange.SetContractType("swap")
Các hợp đồng tương lai vĩnh viễn của Binance có thể là các hợp đồng ký quỹ USDT.BTC
Hợp đồng ký quỹ USDT, cặp giao dịch được thiết lập làBTC_USDT
Các hợp đồng vĩnh cửu của Binance Futures cũng bao gồm các hợp đồng ký quỹ ký quỹ. Ví dụ, trong hợp đồng ký quỹ ký quỹ, đặt cặp giao dịch thànhBTC_USD
.
Đặt vào hợp đồng hàng quý:exchange.SetContractType("quarter")
Các hợp đồng giao hàng bao gồm các hợp đồng được ký quỹ bằng tiền điện tử (nghĩa là lấy tiền tệ được sử dụng làm ký quỹ).BTC
, cặp giao dịch được thiết lập làBTC_USD
, và sau đó đặt mã hợp đồngexchange.SetContractType("quarter")
, mà đang thiết lập BTC crypto-margined hợp đồng hàng quý.
Đặt vào hợp đồng quý tiếp theo:exchange.SetContractType("next_quarter")
Ví dụ, trong hợp đồng ký quỹ ký quỹ hàng quý củaBTC
, cặp giao dịch được thiết lập làBTC_USD
, và sau đó đặt mã hợp đồngexchange.SetContractType("next_quarter)
Binance hỗ trợ một phần hợp đồng giao hàng được ký quỹ bằng USDT, chẳng hạn như đặt cặp giao dịch BTCBTC_USDT
, và sau đó đặt mã hợp đồng.
Futures_Bibox
Mã hợp đồng vĩnh viễn Bibox:swap
.
Đặt vào hợp đồng vĩnh viễn:exchange.SetContractType("swap")
.
Tiền tương lai_AOFEX
Mã hợp đồng vĩnh viễn AOFEX:swap
.
Đặt vào hợp đồng vĩnh viễn:exchange.SetContractType("swap")
.
Tiền tương lai_BFX
Mã hợp đồng vĩnh viễn BFX:swap
.
Đặt vào hợp đồng vĩnh viễn:exchange.SetContractType("swap")
.
Tiền tương lai_Bybit
Bybit mặc định với hợp đồng vĩnh viễn của cặp giao dịch hiện tại. Mã hợp đồng:swap
.
Mã hợp đồng quý:quarter
.
Mã hợp đồng quý tiếp theo:next_quarter
.
Futures_Kraken
Kraken mặc định không thiết lập trạng thái hợp đồng, vì vậy bạn cần thiết lập mã hợp đồng.swap
: hợp đồng vĩnh viễn.month
: hợp đồng hàng tháng.quarter
: hợp đồng hàng quý.next_quarter
Hợp đồng quý tiếp theo.
Tiền tương lai_Bitfinex
Bitfinex mặc định với hợp đồng vĩnh viễn của cặp giao dịch hiện tại.swap
.
Tiền tương lai_Bitget
Bitget mặc định vào hợp đồng vĩnh viễn của cặp giao dịch hiện tại. Mã hợp đồng:swap
Các cặp giao dịch được thiết lập đểBTC_USD
, chỉ ra hợp đồng ký quỹ; cặp giao dịch được thiết lập làBTC_USDT
Các hợp đồng mô phỏng có thể đặt các cặp giao dịch thành:SBTC_USD
vàBTC_SUSDT
.
Futures_dYdX
Mã hợp đồng của hợp đồng vĩnh viễn dYdX:swap
.
Đặt vào hợp đồng vĩnh viễn:exchange.SetContractType("swap")
. dYdX chỉ có hợp đồng ký quỹ USDT.
Tiền tương lai_MEXC
Mã hợp đồng của hợp đồng vĩnh viễn MEXC:swap
.
Đặt vào hợp đồng vĩnh viễn:exchange.SetContractType("swap")
Các cặp giao dịch được thiết lập đểBTC_USD
, chỉ ra hợp đồng ký quỹ; cặp giao dịch được thiết lập làBTC_USDT
, chỉ ra hợp đồng ký quỹ USDT.
Khi viết các chiến lược tiền điện tử, gọiexchange.SetContractType(ContractType)
chức năng và thông tin hợp đồng chi tiết được đặt bởi tham số hợp đồngContractType
sẽ được trả lại.
Ví dụ, chạy mã chiến lược của hợp đồng OKX được thiết lập như đối tượng trao đổi:
function main(){
// Set to weekly contract
var ret = exchange.SetContractType("this_week")
// Return the information of the weekly contract
Log(ret)
}
def main():
ret = exchange.SetContractType("this_week")
Log(ret)
void main() {
auto ret = exchange.SetContractType("this_week");
Log(ret);
}
Chạy chiến lược vàoJavaScript
ngôn ngữ, và inret
dữ liệu, cụ thể là thông tin chi tiết vềthis_week
hợp đồng:
{
"instrument":"BTC-USD-191101",
"InstrumentID":"BTC-USD-191101"
}
exchange.GetContractType()
trả về mã hợp đồng hiện tại của đối tượng trao đổi (exchange
), trả về giá trị: string.
function main () {
Log(exchange.SetContractType("this_week"))
Log(exchange.GetContractType())
}
def main():
Log(exchange.SetContractType("this_week"))
Log(exchange.GetContractType())
void main() {
Log(exchange.SetContractType("this_week"));
Log(exchange.GetContractType());
}
Bảng sau mô tả thông tin lỗi liên quan đến các đối tượng trao đổi của các hợp đồng tương lai tiền điện tử:
Giá trị | Lỗi hiển thị chức năng | Chức năng kích hoạt | Mô tả |
---|---|---|---|
0 | Tiền tương lai_OP 0 | exchange.SetMarginLevel | lỗi gọi hàm đòn bẩy |
1 | Tiền tương lai_OP 1 | exchange.SetDirection | lỗi thiết lập hàm hướng giao dịch tương lai |
2 | Tiền tương lai_OP 2 | exchange.SetContractType | lỗi thiết lập chức năng hợp đồng |
3 | Tiền tương lai_OP 3 | exchange.GetPosition | lỗi nhận chức năng vị trí |
4 | Tiền tương lai_OP 4 | exchange.IO | lỗi gọi hàm IO |
Sử dụngexchange.SetContractType
chức năng để thiết lập hợp đồng; Giao dịch khác nhau có mã hợp đồng tùy chọn khác nhau.
Các sàn giao dịch quyền chọn tiền điện tử được hỗ trợ bởi nền tảng FMZ Quant Trading
Deribit
Đối với sàn giao dịch Deribit, chỉ cần gọiexchange.SetContractType
Sau khi thiết lập hợp đồng quyền chọn, khi gọi giao diện thị trường nhưGetTicker
, tất cả các dữ liệu thị trường của hợp đồng quyền chọn được thu thập.exchange.Sell
vàexchange.Buy
chức năng để đặt một lệnh, và chú ý đến hướng giao dịch khi đặt một lệnh, và thiết lập hướng giao dịch bằng cáchexchange.SetDirection
Sử dụngexchange.Cancel
chức năng để hủy lệnh; sử dụngexchange.GetPosition
chức năng để truy vấn vị trí.
Mã chiến lược để tham khảo:Chiến lược thử nghiệm các tùy chọn Deribit
OKX
Thiết lập hợp đồng, đặt lệnh, hủy lệnh, truy vấn lệnh, và lấy báo giá thị trường, v.v.Deribit
, và định dạng mã hợp đồng làBTC-USD-200626-4500-C
Bạn có thể truy vấn thông tin liên quan đến hợp đồng thông qua giao diệnhttps://www.okx.com/api/v5/public/instruments
.
Ví dụ: để truy vấn thông tin của các hợp đồng quyền chọn BTC:
function main() {
Log(HttpQuery("https://www.okx.com/api/v5/public/instruments?instType=OPTION&uly=BTC-USD"))
}
import json
import urllib.request
def main():
ret = json.loads(urllib.request.urlopen("https://www.okx.com/api/v5/public/instruments?instType=OPTION&uly=BTC-USD").read().decode('utf-8'))
Log(ret)
void main() {
Log(HttpQuery("https://www.okx.com/api/v5/public/instruments?instType=OPTION&uly=BTC-USD"));
}
Tiền tương lai_HuobiDM
Ví dụ, mã hợp đồng quyền chọn Huobi:BTC-USDT-201225-P-13000
; hợp đồng là mộtBTC
hợp đồng; ngày thực thi là ngày 25 tháng 12 năm 2020; các tùy chọn là Put Options (PUT); giá thực thi là $ 13.000.
Đối với các tùy chọn mua, khoản phí trả bởi người mua là USDT, cho thấy USDT trong tài sản tài khoản được sử dụng; biên của người bán là tiền tệ, được đảm bảo bởi tiền tệ trong tài sản.
Đối với các tùy chọn bán, khoản phí trả bởi người mua là USDT, cho thấy USDT trong tài sản tài khoản được sử dụng; biên của người bán là USDT, được đảm bảo bởi USDT trong tài sản.
Tiền tương lai_Bybit
Nó hỗ trợ tùy chọn USDC của sàn giao dịch Bybit, và thiết lập cặp giao dịchETH_USDC
, chức năng gọiexchange.SetContractType
Ví dụ về mã hợp đồng quyền chọn:ETH-25NOV22-1375-P
.
Cácexchange.SetBase(Base)
chức năng được sử dụng để chuyển sang địa chỉ cơ sở API được ghi trong các đối tượng trao đổi; Ví dụ, chuyển sangOKX
tên miềnhttps://aws.okx.com
, tương thích vớiexchange.IO("base","https://aws.okx.com")
hệ thống backtest không hỗ trợ chuyển đổi địa chỉ cơ sở API của sàn giao dịch (hệ thống backtest là một môi trường sandbox, không phải là một giao diện thực sự để truy cập sàn giao dịch).
function main() {
// Use the default base address
Log(exchange.GetTicker())
// Switch to https://aws.okx.com
exchange.SetBase("https://aws.okx.com")
Log(exchange.GetTicker())
}
def main():
Log(exchange.GetTicker())
exchange.SetBase("https://aws.okx.com")
Log(exchange.GetTicker())
void main() {
Log(exchange.GetTicker());
exchange.SetBase("https://aws.okx.com");
Log(exchange.GetTicker());
}
exchange.SetProxy(...)
chuyển sang máy chủ proxy để truy cập vào trao đổi. chức năng này không có giá trị trả về (được thu được bởi biến, và những gì bạn nhận được làundefined
Nếu cài đặt proxy thất bại, một giá trị null sẽ được trả về khi giao diện được gọi, chỉ cho cácnghỉ ngơiMỗi đối tượng trao đổiexchanges[n]
Sau khi thiết lập proxy, giao diện trao đổi sẽ được truy cập thông qua proxy.
Lấy đối tượng trao đổi đầu tiên được thêm vàoexchange
, cụ thể là:exchanges[0]
, ví dụ:
exchange.SetProxy("socks5://127.0.0.1:8889")
exchange.SetProxy("socks5://username:password@127.0.0.1:8889")
(username
là tên người dùng,password
là mật khẩu.)exchange.SetProxy("")
Hỗ trợ để thiết lập địa chỉ IP được yêu cầu bởi đối tượng trao đổi.
windows
phiên bản giao diện hệ thống có thể đặt trực tiếp, được hiển thị dưới dạng hình ảnh sau:Các bến cảng khác hoạt động theo tham số sử dụng lệnh nhanh-I
để xác định địa chỉ IP:
Dựa trên trao đổi để xác định:
function main(){
exchange.SetProxy("ip://10.0.3.15")
exchange.GetTicker() // The reque