Mengembalikan nombor versi semasa sistem.
Nombor versi sistem semasa, seperti:3.6
.
senar
Versi ((()
function main() {
Log("version:", Version())
}
def main():
Log("version:", Version())
void main() {
Log("version:", Version());
}
Nombor versi sistem adalah nombor versi program docker.
Fungsi tidur, menyebabkan program berhenti untuk tempoh masa.
Tidur (millisecond)
Peraturanmillisecond
Parameter digunakan untuk menetapkan tempoh tidur dan bilangan milidetik.
Milisaat
betul
nombor
function main() {
Sleep(1000 * 10) // Wait for 10 seconds
Log("Waited for 10 seconds")
}
def main():
Sleep(1000 * 10)
Log("Waited for 10 seconds")
void main() {
Sleep(1000 * 10);
Log("Waited for 10 seconds");
}
Sebagai contoh, apabila melaksanakanSleep(1000)
Ia menyokong operasi dengan waktu tidur kurang daripada 1 milisaat, contohnya menetapkanSleep(0.1)
. Ia menyokong parameter minimum0.000001
, iaitu hibernasi nanosegund, di mana 1 nanosegund sama dengan1e-6
Milisaat.
Apabila menulis strategi dalamPython
Bahasa,Sleep(millisecond)
fungsi harus digunakan untuk pengundian selang, masa-ke-menunggu operasi.time.sleep(second)
fungsiPython
...time
Perpustakaan. Ini kerana menggunakantime.sleep(second)
fungsi dalam strategi membuat program strategi menunggu untuk tempoh masa sebenarnya apabila backtesting (tidak melangkau pada siri masa sistem backtesting), jadi ia menyebabkan strategi untuk backtesting sangat perlahan.
Tentukan sama ada persekitaran menjalankan strategi adalah sistem backtesting.
Strategi mengembalikan nilai sebenar, contohnya:true
apabila dijalankan dalam persekitaran sistem backtesting. Strategi mengembalikan nilai palsu, contohnya:false
apabila dijalankan dalam persekitaran perdagangan langsung.
bool
IsVirtual ((()
function main() {
if (IsVirtual()) {
Log("The current backtest system environment.")
} else {
Log("The current live trading environment.")
}
}
def main():
if IsVirtual():
Log("The current backtest system environment.")
else:
Log("The current live trading environment.")
void main() {
if (IsVirtual()) {
Log("The current backtest system environment.");
} else {
Log("The current live trading environment.");
}
}
Tentukan sama ada persekitaran semasa adalah sistem backtesting, yang digunakan untuk serasi dengan perbezaan antara backtesting dan perdagangan langsung.
Hantar e-mel.
Penghantaran e-mel yang berjaya mengembalikan nilai sebenar, contohnya,true
, dan penghantaran gagal mengembalikan nilai palsu, contohnya,false
.
bool
Mail ((smtpServer, smtpUsername, smtpPassword, mailTo, tajuk, badan)
Digunakan untuk menentukanSMTP
alamat perkhidmatan penghantar e-mel.
smtpServer
betul
senar
Digunakan untuk menentukan alamat e-mel penghantar e-mel.
smtpNama pengguna
betul
senar
PeraturanSMTP
kata laluan untuk peti mel penghantar e-mel.
smtpPassword
betul
senar
Digunakan untuk menentukan alamat e-mel penerima e-mel.
mailTo
betul
senar
Alamat e-mel.
tajuk
betul
senar
Email badan.
badan
betul
senar
function main(){
Mail("smtp.163.com", "asdf@163.com", "password", "111@163.com", "title", "body")
}
def main():
Mail("smtp.163.com", "asdf@163.com", "password", "111@163.com", "title", "body")
void main() {
Mail("smtp.163.com", "asdf@163.com", "password", "111@163.com", "title", "body");
}
PeraturansmtpPassword
parameter menetapkan kata laluan untukSMTP
Perkhidmatan, bukan kata laluan kotak mel.
Apabila menetapkansmtpServer
parameter, jika anda perlu menukar port, anda boleh menambah nombor port terus dalam parametersmtpServer
Contohnya: QQ mailsmtp.qq.com:587
, yang tersedia untuk ujian.
Jika kesalahan dilaporkan:unencryped connection
, anda perlu mengubahsuaismtpServer
daripadaMail
Format parameter adalah:ssl://xxx.com:xxx
, contohnya,ssl
kaedahSMTP
untuk surat QQ:ssl://smtp.qq.com:465
atausmtp://xxx.com:xxx
.
Ia tidak berfungsi dalam sistem backtesting.
{@fun/Global/Mail_Go Mail_Go}
Versi asinkronMail
function.
PeraturanMail_Go
fungsi mengembalikan objek serentak dengan serta-merta, dan anda boleh menggunakanwait
kaedah objek serentak itu untuk mendapatkan hasil penghantaran mel. Penghantaran mel yang berjaya mengembalikan nilai yang benar, contohnya,true
, dan penghantaran gagal mengembalikan nilai palsu, contohnya,false
.
objek
Mail_Go ((smtpServer, smtpUsername, smtpPassword, mailTo, tajuk, badan)
Ia digunakan untuk menentukanSMTP
alamat perkhidmatan penghantar e-mel.
smtpServer
betul
senar
Ia digunakan untuk menentukan alamat e-mel penghantar e-mel.
smtpNama pengguna
betul
senar
PerkhidmatanSMTP
kata laluan untuk peti mel penghantar e-mel.
smtpPassword
betul
senar
Ia digunakan untuk menentukan alamat e-mel penerima e-mel.
mailTo
betul
senar
Alamat e-mel.
tajuk
betul
senar
E-mel badan.
badan
betul
senar
function main() {
var r1 = Mail_Go("smtp.163.com", "asdf@163.com", "password", "111@163.com", "title", "body")
var r2 = Mail_Go("smtp.163.com", "asdf@163.com", "password", "111@163.com", "title", "body")
var ret1 = r1.wait()
var ret2 = r2.wait()
Log("ret1:", ret1)
Log("ret2:", ret2)
}
# Not supported.
// Not supported.
Ia tidak berfungsi dalam sistem backtesting.
{@fun/Global/Mail Mail}
Log ralat penapis.
SetErrorFilter ((filter)
Senar ungkapan biasa. penapis betul senar
function main() {
SetErrorFilter("502:|503:|tcp|character|unexpected|network|timeout|WSARecv|Connect|GetAddr|no such|reset|http|received|EOF|reused")
}
def main():
SetErrorFilter("502:|503:|tcp|character|unexpected|network|timeout|WSARecv|Connect|GetAddr|no such|reset|http|received|EOF|reused")
void main() {
SetErrorFilter("502:|503:|tcp|character|unexpected|network|timeout|WSARecv|Connect|GetAddr|no such|reset|http|received|EOF|reused");
}
Menyaring kesilapan biasa.
function main() {
// A random query for a non-existent order with an id of 123, allowing the interface to report an error deliberately
var order = exchange.GetOrder("123")
Log(order)
// Filter http502 errors, GetOrder interface errors, after setting the error filter, the second call to GetOrder will no longer report errors
SetErrorFilter("502:|GetOrder")
order = exchange.GetOrder("123")
Log(order)
}
def main():
order = exchange.GetOrder("123")
Log(order)
SetErrorFilter("502:|GetOrder")
order = exchange.GetOrder("123")
Log(order)
void main() {
TId orderId;
Order order = exchange.GetOrder(orderId);
Log(order);
SetErrorFilter("502:|GetOrder");
order = exchange.GetOrder(orderId);
Log(order);
}
Menapis mesej ralat antara muka.
Log ralat yang sepadan dengan ungkapan biasa ini tidak akan dimuat naik ke sistem log. Anda boleh memanggilnya beberapa kali (tidak ada had pada bilangan kali) untuk menetapkan pelbagai syarat penapis. Ungkapan biasa yang ditetapkan beberapa kali akan terkumpul dan berkuat kuasa pada masa yang sama. Anda boleh menetapkan rentetan kosong untuk menetapkan semula ungkapan biasa yang digunakan untuk menapis log ralat:SetErrorFilter("")
. log disaring tidak lagi ditulis ke fail pangkalan data yang sepadan dengan ID perdagangan hidup dalam direktori docker untuk mengelakkan laporan ralat yang kerap dari membengkak fail pangkalan data.
Dapatkan ID proses dagangan secara langsung.
Kembalikan ID proses dagangan secara langsung. senar
GetPid ((()
function main(){
var id = GetPid()
Log(id)
}
def main():
id = GetPid()
Log(id)
void main() {
auto id = GetPid();
Log(id);
}
Dapatkan mesej ralat terakhir.
Mesej ralat terakhir. senar
GetLastError()
function main(){
// Because the order number 123 does not exist, so there will be an error.
exchange.GetOrder("123")
var error = GetLastError()
Log(error)
}
def main():
exchange.GetOrder("123")
error = GetLastError()
Log(error)
void main() {
// Order ID type: TId, so you can't pass in a string, we place an order that doesn't meet the exchange specification to trigger
exchange.GetOrder(exchange.Buy(1, 1));
auto error = GetLastError();
Log(error);
}
Ia tidak berfungsi dalam sistem backtesting.
Dapatkan arahan strategi interaksi.
Format arahan yang dikembalikan adalahControlName:Data
. ControlName
adalah nama kawalan, danData
adalah data yang dimasukkan ke dalam kawalan. Jika kawalan interaktif tidak mempunyai kotak input, kotak drop-down dan komponen lain (contohnya kawalan butang tanpa kotak input) maka format arahan yang dikembalikan adalahControlName
, yang mengembalikan nama kawalan sahaja.
senar
DapatkanCommand()
function main(){
while(true) {
var cmd = GetCommand()
if (cmd) {
Log(cmd)
}
Sleep(1000)
}
}
def main():
while True:
cmd = GetCommand()
if cmd:
Log(cmd)
Sleep(1000)
void main() {
while(true) {
auto cmd = GetCommand();
if(cmd != "") {
Log(cmd);
}
Sleep(1000);
}
}
Mengesan arahan interaksi dan menggunakanLog
fungsi untuk mengeluarkan arahan interaksi apabila dikesan.
function main() {
while (true) {
LogStatus(_D())
var cmd = GetCommand()
if (cmd) {
Log("cmd:", cmd)
var arr = cmd.split(":")
if (arr[0] == "buy") {
Log("Buy, the control without number")
} else if (arr[0] == "sell") {
Log("Sell, the control with the number of:", arr[1])
} else {
Log("Other controls trigger:", arr)
}
}
Sleep(1000)
}
}
def main():
while True:
LogStatus(_D())
cmd = GetCommand()
if cmd:
Log("cmd:", cmd)
arr = cmd.split(":")
if arr[0] == "buy":
Log("Buy, the control without number")
elif arr[0] == "sell":
Log("Sell, the control with the number of:", arr[1])
else:
Log("Other controls trigger:", arr)
Sleep(1000)
#include <iostream>
#include <sstream>
#include <string>
#include <vector>
using namespace std;
void split(const string& s,vector<string>& sv,const char flag = ' ') {
sv.clear();
istringstream iss(s);
string temp;
while (getline(iss, temp, flag)) {
sv.push_back(temp);
}
return;
}
void main() {
while(true) {
LogStatus(_D());
auto cmd = GetCommand();
if (cmd != "") {
vector<string> arr;
split(cmd, arr, ':');
if(arr[0] == "buy") {
Log("Buy, the control without number");
} else if (arr[0] == "sell") {
Log("Sell, the control with the number of:", arr[1]);
} else {
Log("Other controls trigger:", arr);
}
}
Sleep(1000);
}
}
Sebagai contoh, kawalan interaktif strategi menambah kawalan tanpa kotak input, kawalan interaktif dinamakan:buy
, maklumat deskripsi kawalan adalah:buy
, yang merupakan kawalan butang. Lanjutkan dengan menambah kawalan dengan kotak input. Kawalan interaktif dinamakan:sell
dan mesej penerangan kawalan adalah:sell
, yang merupakan kawalan interaktif yang merupakan gabungan butang dan kotak input. Kod interaksi direka dalam strategi untuk bertindak balas terhadap kawalan interaksi yang berbeza:
Ia tidak berfungsi dalam sistem backtesting.
Dapatkan nilai Meta ditulis apabila menjana kod pendaftaran strategi.
Meta
data.
senar
DapatkanMeta
function main() {
// The maximum asset value of the denominated currency allowed by the strategy.
var maxBaseCurrency = null
// Get the metadata when creating the registration code.
var level = GetMeta()
// Detecting the conditions corresponding to Meta.
if (level == "level1") {
// -1 for unrestricted
maxBaseCurrency = -1
} else if (level == "level2") {
maxBaseCurrency = 10
} else if (level == "level3") {
maxBaseCurrency = 1
} else {
maxBaseCurrency = 0.5
}
while(1) {
Sleep(1000)
var ticker = exchange.GetTicker()
// Detect asset values
var acc = exchange.GetAccount()
if (maxBaseCurrency != -1 && maxBaseCurrency < acc.Stocks + acc.FrozenStocks) {
// Stop executing strategy trading logic
LogStatus(_D(), "level:", level, "Positions exceeding the usage limit of the registration code will no longer execute the strategy trading logic!")
continue
}
// Other trading logic
// Normal output of status bar information
LogStatus(_D(), "level:", level, "The strategy is working properly! ticker data: \n", ticker)
}
}
def main():
maxBaseCurrency = null
level = GetMeta()
if level == "level1":
maxBaseCurrency = -1
elif level == "level2":
maxBaseCurrency = 10
elif level == "level3":
maxBaseCurrency = 1
else:
maxBaseCurrency = 0.5
while True:
Sleep(1000)
ticker = exchange.GetTicker()
acc = exchange.GetAccount()
if maxBaseCurrency != -1 and maxBaseCurrency < acc["Stocks"] + acc["FrozenStocks"]:
LogStatus(_D(), "level:", level, "Positions exceeding the usage limit of the registration code will no longer execute the strategy trading logic!")
continue
# Other trading logic
# Normal output of status bar information
LogStatus(_D(), "level:", level, "The strategy is working properly! ticker data: \n", ticker)
void main() {
auto maxBaseCurrency = 0.0;
auto level = GetMeta();
if (level == "level1") {
maxBaseCurrency = -1;
} else if (level == "level2") {
maxBaseCurrency = 10;
} else if (level == "level3") {
maxBaseCurrency = 1;
} else {
maxBaseCurrency = 0.5;
}
while(1) {
Sleep(1000);
auto ticker = exchange.GetTicker();
auto acc = exchange.GetAccount();
if (maxBaseCurrency != -1 && maxBaseCurrency < acc.Stocks + acc.FrozenStocks) {
// Stop execution strategy trading logic.
LogStatus(_D(), "level:", level, "Positions exceeding the usage limit of the registration code will no longer execute the strategy trading logic!");
continue;
}
// Other trading logic
// Normal output of status bar information
LogStatus(_D(), "level:", level, "The strategy is working properly! ticker data: \n", ticker);
}
}
Contoh senario aplikasi: PenggunaanMeta
untuk mengehadkan jumlah aset yang dikendalikan oleh strategi.
Senario permohonan: perlu melakukan had modal untuk penyewa strategi yang berbeza.Meta
nilai yang ditetapkan apabila menjana kod pendaftaran tidak boleh melebihi 190 aksara danGetMeta()
Jika tiada metadata (Meta
) ditetapkan semasa menjana kod pendaftaran strategi,GetMeta()
fungsi mengembalikan null. Ia tidak berfungsi dalam sistem backtesting.
Untuk primitifSocket
akses, menyokongtcp
, udp
, tls
, unix
Sokong 4 protokol komunikasi popular:mqtt
, nats
, amqp
, kafka
. Sokongan untuk menyambung ke pangkalan data:sqlite3
, mysql
, postgres
, clickhouse
.
PeraturanDial()
fungsi mengembalikan null jika ia masa keluar. panggilan biasa mengembalikan objek sambungan yang mempunyai tiga kaedah:read
, write
danclose
.read
kaedah digunakan untuk membaca data,write
kaedah digunakan untuk menghantar data danclose
kaedah digunakan untuk menutup sambungan.
Peraturanread
kaedah menyokong parameter berikut:
ws.read()
.ws.read(2000)
menentukan masa lapang dua saat (2000 milidetik).-1
bermaksud bahawa fungsi mengembalikan dengan serta-merta, tanpa mengira kehadiran atau ketiadaan mesej, contohnya:ws.read(-1)
.
Memindahkan parameter-2
bermaksud bahawa fungsi kembali dengan atau tanpa mesej, tetapi hanya mesej terkini yang dikembalikan, dan mesej yang dipaparkan dibuang.ws.read(-2)
.read()
Penerangan penyangga fungsi:
Data masuk yang didorong oleh protokol WebSocket boleh menyebabkan pengumpulan data jika selang masa antara strategiread()
Panggilan fungsi terlalu lama. Data ini disimpan dalam penyangga, yang mempunyai struktur data antrian dengan maksimum 2000. Selepas 2000 melebihi, data terbaru dimasukkan ke dalam penyangga dan data tertua dibersihkan.
Senario | Tiada parameter | Parameter: -1 | Parameter: -2 | Parameter: 2000, dalam milidetik |
---|---|---|---|---|
Data yang sudah dalam penyangga | Kembalikan data tertua dengan segera | Kembalikan data tertua dengan segera | Kembalikan data terkini dengan segera | Kembalikan data tertua dengan segera |
Tiada data dalam buffer | Kembali apabila disekat ke data | Kembalikan null dengan segera | Kembalikan null dengan segera | Tunggu 2000 ms, pulangkan null jika tiada data, pulangkan null jika ada data |
Sambungan WebSocket diputuskan atau disambungkan semula oleh asas | read() fungsi mengembalikan rentetan kosong, iaitu: |
objek
Panggil (alamat) Panggil (alamat, masa lapang)
Alamat permintaan. alamat betul senar detik masa henti, masa lapang palsu nombor
function main(){
// Dial supports tcp://,udp://,tls://,unix://protocol, you can add a parameter to specify the number of seconds for the timeout
var client = Dial("tls://www.baidu.com:443")
if (client) {
// write can be followed by a numeric parameter to specify the timeout, write returns the number of bytes successfully sent
client.write("GET / HTTP/1.1\nConnection: Closed\n\n")
while (true) {
// read can be followed by a numeric parameter specifying the timeout in milliseconds. Returning null indicates an error or timeout or that the socket has been closed
var buf = client.read()
if (!buf) {
break
}
Log(buf)
}
client.close()
}
}
def main():
client = Dial("tls://www.baidu.com:443")
if client:
client.write("GET / HTTP/1.1\nConnection: Closed\n\n")
while True:
buf = client.read()
if not buf:
break
Log(buf)
client.close()
void main() {
auto client = Dial("tls://www.baidu.com:443");
if(client.Valid) {
client.write("GET / HTTP/1.1\nConnection: Closed\n\n");
while(true) {
auto buf = client.read();
if(buf == "") {
break;
}
Log(buf);
}
client.close();
}
}
Contoh panggilan fungsi Dial:
function main() {
LogStatus("Connecting...")
// Accessing WebSocket interface of Binance
var client = Dial("wss://stream.binance.com:9443/ws/!ticker@arr")
if (!client) {
Log("Connection failed, program exited")
return
}
while (true) {
// read returns only the data retrieved after the read call
var buf = client.read()
if (!buf) {
break
}
var table = {
type: 'table',
title: 'Ticker Chart',
cols: ['Currency', 'Highest', 'Lowest', 'Buy 1', 'Sell 1', 'Last traded price', 'Volume', 'Update time'],
rows: []
}
var obj = JSON.parse(buf)
_.each(obj, function(ticker) {
table.rows.push([ticker.s, ticker.h, ticker.l, ticker.b, ticker.a, ticker.c, ticker.q, _D(ticker.E)])
})
LogStatus('`' + JSON.stringify(table) + '`')
}
client.close()
}
import json
def main():
LogStatus("Connecting...")
client = Dial("wss://stream.binance.com:9443/ws/!ticker@arr")
if not client:
Log("Connection failed, program exited")
return
while True:
buf = client.read()
if not buf:
break
table = {
"type" : "table",
"title" : "Ticker Chart",
"cols" : ['Currency', 'Highest', 'Lowest', 'Buy 1', 'Sell 1', 'Last traded price', 'Volume', 'Update time'],
"rows" : []
}
obj = json.loads(buf)
for i in range(len(obj)):
table["rows"].append([obj[i]["s"], obj[i]["h"], obj[i]["l"], obj[i]["b"], obj[i]["a"], obj[i]["c"], obj[i]["q"], _D(int(obj[i]["E"]))])
LogStatus('`' + json.dumps(table) + '`')
client.close()
void main() {
LogStatus("Connecting...");
auto client = Dial("wss://stream.binance.com:9443/ws/!ticker@arr");
if(!client.Valid) {
Log("Connection failed, program exited");
return;
}
while(true) {
auto buf = client.read();
if(buf == "") {
break;
}
json table = R"({
"type" : "table",
"title" : "Ticker Chart",
"cols" : ["Currency", "Highest", "Lowest", "Buy 1", "Sell 1", "Last traded price", "Volume", "Update time"],
"rows" : []
})"_json;
json obj = json::parse(buf);
for(auto& ele : obj.items()) {
table["rows"].push_back({ele.value()["s"], ele.value()["h"], ele.value()["l"], ele.value()["b"], ele.value()["a"], ele.value()["c"],
ele.value()["q"], _D(ele.value()["E"])});
}
LogStatus("`" + table.dump() + "`");
}
client.close();
}
Untuk mengakses antara muka ticker WebSocket Binance:
var ws = null
function main(){
var param = {
"op": "subscribe",
"args": [{
"channel": "tickers",
"instId": "BTC-USDT"
}]
}
// When calling Dial function, specify reconnect=true to set reconnection mode and payload to be the message sent when reconnecting. When the WebSocket connection is disconnected, it will reconnect and send messages automatically.
ws = Dial("wss://ws.okx.com:8443/ws/v5/public|compress=gzip_raw&mode=recv&reconnect=true&payload="+ JSON.stringify(param))
if(ws){
var pingCyc = 1000 * 20
var lastPingTime = new Date().getTime()
while(true){
var nowTime = new Date().getTime()
var ret = ws.read()
Log("ret:", ret)
if(nowTime - lastPingTime > pingCyc){
var retPing = ws.write("ping")
lastPingTime = nowTime
Log("Send : ping", "#FF0000")
}
LogStatus("Current time:", _D())
Sleep(1000)
}
}
}
function onexit() {
ws.close()
Log("exit")
}
import json
import time
ws = None
def main():
global ws
param = {
"op": "subscribe",
"args": [{
"channel": "tickers",
"instId": "BTC-USDT"
}]
}
ws = Dial("wss://ws.okx.com:8443/ws/v5/public|compress=gzip_raw&mode=recv&reconnect=true&payload=" + json.dumps(param))
if ws:
pingCyc = 1000 * 20
lastPingTime = time.time() * 1000
while True:
nowTime = time.time() * 1000
ret = ws.read()
Log("ret:", ret)
if nowTime - lastPingTime > pingCyc:
retPing = ws.write("ping")
lastPingTime = nowTime
Log("Send: ping", "#FF0000")
LogStatus("Current time:", _D())
Sleep(1000)
def onexit():
ws.close()
Log("exit")
auto objWS = Dial("wss://ws.okx.com:8443/ws/v5/public|compress=gzip_raw&mode=recv&reconnect=true");
void main() {
json param = R"({
"op": "subscribe",
"args": [{
"channel": "tickers",
"instId": "BTC-USDT"
}]
})"_json;
objWS.write(param.dump());
if(objWS.Valid) {
uint64_t pingCyc = 1000 * 20;
uint64_t lastPingTime = Unix() * 1000;
while(true) {
uint64_t nowTime = Unix() * 1000;
auto ret = objWS.read();
Log("ret:", ret);
if(nowTime - lastPingTime > pingCyc) {
auto retPing = objWS.write("ping");
lastPingTime = nowTime;
Log("Send: ping", "#FF0000");
}
LogStatus("Current time:", _D());
Sleep(1000);
}
}
}
void onexit() {
objWS.close();
Log("exit");
}
Akses kepada OKX
var ws = null
function main(){
var param = {"sub": "market.btcusdt.detail", "id": "id1"}
ws = Dial("wss://api.huobi.pro/ws|compress=gzip&mode=recv&reconnect=true&payload="+ JSON.stringify(param))
if(ws){
while(1){
var ret = ws.read()
Log("ret:", ret)
// Respond to heartbeat packet operations
try {
var jsonRet = JSON.parse(ret)
if(typeof(jsonRet.ping) == "number") {
var strPong = JSON.stringify({"pong" : jsonRet.ping})
ws.write(strPong)
Log("Respond to ping, send pong:", strPong, "#FF0000")
}
} catch(e) {
Log("e.name:", e.name, "e.stack:", e.stack, "e.message:", e.message)
}
LogStatus("Current time:", _D())
Sleep(1000)
}
}
}
function onexit() {
ws.close()
Log("Execute the ws.close() function")
}
import json
ws = None
def main():
global ws
param = {"sub" : "market.btcusdt.detail", "id" : "id1"}
ws = Dial("wss://api.huobi.pro/ws|compress=gzip&mode=recv&reconnect=true&payload=" + json.dumps(param))
if ws:
while True:
ret = ws.read()
Log("ret:", ret)
# Respond to heartbeat packet operations
try:
jsonRet = json.loads(ret)
if "ping" in jsonRet and type(jsonRet["ping"]) == int:
strPong = json.dumps({"pong" : jsonRet["ping"]})
ws.write(strPong)
Log("Respond to ping, send pong:", strPong, "#FF0000")
except Exception as e:
Log("e:", e)
LogStatus("Current time:", _D())
Sleep(1000)
def onexit():
ws.close()
Log("Execute the ws.close() function")
using namespace std;
void main() {
json param = R"({"sub" : "market.btcusdt.detail", "id" : "id1"})"_json;
auto ws = Dial("wss://api.huobi.pro/ws|compress=gzip&mode=recv&reconnect=true&payload=" + param.dump());
if(ws.Valid) {
while(true) {
auto ret = ws.read();
Log("ret:", ret);
// Respond to heartbeat packet operations
try
{
auto jsonRet = json::parse(ret);
if(jsonRet["ping"].is_number()) {
json pong = R"({"pong" : 0})"_json;
pong["pong"] = jsonRet["ping"];
auto strPong = pong.dump();
ws.write(strPong);
Log("Respond to ping, send pong:", strPong, "#FF0000");
}
} catch(exception &e)
{
Log("e:", e.what());
}
LogStatus("Current time:", _D());
Sleep(1000);
}
}
}
void onexit() {
// ws.close();
Log("Execute the ws.close() function");
}
Akses kepada Huobi
function getLogin(pAccessKey, pSecretKey, pPassphrase) {
// Signature function for login
var ts = (new Date().getTime() / 1000).toString()
var login = {
"op": "login",
"args":[{
"apiKey" : pAccessKey,
"passphrase" : pPassphrase,
"timestamp" : ts,
"sign" : exchange.HMAC("sha256", "base64", ts + "GET" + "/users/self/verify", pSecretKey) // exchange.HMAC has been deprecated and is temporarily supported. Please use the latest exchange.Encode function instead.
}]
}
return login
}
var client_private = null
function main() {
// Because the read function uses a timeout setting, filtering the timeout reports errors that would otherwise be output with redundant errors
SetErrorFilter("timeout")
// Position channel subscription information
var posSubscribe = {
"op": "subscribe",
"args": [{
"channel": "positions",
"instType": "ANY"
}]
}
var accessKey = "xxx"
var secretKey = "xxx"
var passphrase = "xxx"
client_private = Dial("wss://ws.okx.com:8443/ws/v5/private")
client_private.write(JSON.stringify(getLogin(accessKey, secretKey, passphrase)))
Sleep(3000) // When logging in, you cannot subscribe to private channels immediately, you need to wait for server response
client_private.write(JSON.stringify(posSubscribe))
if (client_private) {
var lastPingTS = new Date().getTime()
while (true) {
var buf = client_private.read(-1)
if (buf) {
Log(buf)
}
// Detect disconnection, reconnect
if (buf == "" && client_private.write(JSON.stringify(posSubscribe)) == 0) {
Log("Disconnection detected, close connection, reconnect")
client_private.close()
client_private = Dial("wss://ws.okx.com:8443/ws/v5/private")
client_private.write(JSON.stringify(getLogin(accessKey, secretKey, passphrase)))
Sleep(3000)
client_private.write(JSON.stringify(posSubscribe))
}
// Send heartbeat packets
var nowPingTS = new Date().getTime()
if (nowPingTS - lastPingTS > 10 * 1000) {
client_private.write("ping")
lastPingTS = nowPingTS
}
}
}
}
function onexit() {
var ret = client_private.close()
Log("Close the connection!", ret)
}
import json
import time
def getLogin(pAccessKey, pSecretKey, pPassphrase):
ts = str(time.time())
login = {
"op": "login",
"args":[{
"apiKey" : pAccessKey,
"passphrase" : pPassphrase,
"timestamp" : ts,
"sign" : exchange.HMAC("sha256", "base64", ts + "GET" + "/users/self/verify", pSecretKey)
}]
}
return login
client_private = None
def main():
global client_private
SetErrorFilter("timeout")
posSubscribe = {
"op": "subscribe",
"args": [{
"channel": "positions",
"instType": "ANY"
}]
}
accessKey = "xxx"
secretKey = "xxx"
passphrase = "xxx"
client_private = Dial("wss://ws.okx.com:8443/ws/v5/private")
client_private.write(json.dumps(getLogin(accessKey, secretKey, passphrase)))
Sleep(3000)
client_private.write(json.dumps(posSubscribe))
if client_private:
lastPingTS = time.time() * 1000
while True:
buf = client_private.read(-1)
if buf:
Log(buf)
if buf == "" and client_private.write(json.dumps(posSubscribe)) == 0:
Log("Disconnection detected, close connection, reconnect")
ret = client_private.close()
client_private = Dial("wss://ws.okx.com:8443/ws/v5/private")
client_private.write(json.dumps(getLogin(accessKey, secretKey, passphrase)))
Sleep(3000)
client_private.write(json.dumps(posSubscribe))
nowPingTS = time.time() * 1000
if nowPingTS - lastPingTS > 10 * 1000:
client_private.write("ping")
lastPingTS = nowPingTS
def onexit():
ret = client_private.close()
Log("Close the connection!", ret)
auto client_private = Dial("wss://ws.okx.com:8443/ws/v5/private");
json getLogin(string pAccessKey, string pSecretKey, string pPassphrase) {
auto ts = std::to_string(Unix());
json login = R"({
"op": "login",
"args": [{
"apiKey": "",
"passphrase": "",
"timestamp": "",
"sign": ""
}]
})"_json;
login["args"][0]["apiKey"] = pAccessKey;
login["args"][0]["passphrase"] = pPassphrase;
login["args"][0]["timestamp"] = ts;
login["args"][0]["sign"] = exchange.HMAC("sha256", "base64", ts + "GET" + "/users/self/verify", pSecretKey);
return login;
}
void main() {
SetErrorFilter("timeout");
json posSubscribe = R"({
"op": "subscribe",
"args": [{
"channel": "positions",
"instType": "ANY"
}]
})"_json;
auto accessKey = "xxx";
auto secretKey = "xxx";
auto passphrase = "xxx";
client_private.write(getLogin(accessKey, secretKey, passphrase).dump());
Sleep(3000);
client_private.write(posSubscribe.dump());
if (client_private.Valid) {
uint64_t lastPingTS = Unix() * 1000;
while (true) {
auto buf = client_private.read(-1);
if (buf != "") {
Log(buf);
}
if (buf == "") {
if (client_private.write(posSubscribe.dump()) == 0) {
Log("Disconnection detected, close connection, reconnect");
client_private.close();
client_private = Dial("wss://ws.okx.com:8443/ws/v5/private");
client_private.write(getLogin(accessKey, secretKey, passphrase).dump());
Sleep(3000);
client_private.write(posSubscribe.dump());
}
}
uint64_t nowPingTS = Unix() * 1000;
if (nowPingTS - lastPingTS > 10 * 1000) {
client_private.write("ping");
lastPingTS = nowPingTS;
}
}
}
}
void onexit() {
client_private.close();
Log("exit");
}
Untuk mengakses OKX
var client = null
function main() {
// client = Dial("sqlite3://:memory:") // Using an in-memory database
client = Dial("sqlite3://test1.db") // Open/connect to the database file in the docker's directory
// record handle
var sqlite3Handle = client.fd()
Log("sqlite3Handle:", sqlite3Handle)
// Querying tables in the database
var ret = client.exec("SELECT name FROM sqlite_master WHERE type='table'")
Log(ret)
}
function onexit() {
Log("Execute client.close()")
client.close()
}
// Not supported
// Not supported
Objek sambungan yang dikembalikan oleh fungsi Dial apabila menyambung ke pangkalan data mempunyai dua fungsi kaedah yang unik kepadanya:
exec(sqlString)
: Digunakan untuk melaksanakan pernyataan SQL dengan cara yang sama denganDBExec()
function.fd()
: Pertubuhanfd()
fungsi mengembalikan pegangan (contohnya, pembolehubah pegangan adalah pegangan) untuk digunakan oleh utas lain untuk menyambung semula (walaupun objek yang dicipta oleh Dial telah ditutup dengan pelaksanaanclose()
fungsi untuk menutup sambungan) dengan melewati pemegang ke dalamDial()
fungsi, sebagai contoh,Dial(handle)
Sambungan penggunaan semula.
Berikut adalah contoh fungsi Dial yang menyambung kesqlite3
database.Perincianaddress
parameter, dipisahkan oleh|
simbol selepas alamat biasa:wss://ws.okx.com:8443/ws/v5/public
Jika ada.|
aksara dalam rentetan parameter, kemudian||
digunakan sebagai tanda pemisah. Bahagian selepas itu adalah beberapa tetapan parameter fungsi, dan setiap parameter disambungkan dengan&
contohnya,ss5
Parameter proxy dan mampatan boleh ditetapkan bersama-sama seperti berikut:Dial("wss://ws.okx.com:8443/ws/v5/public|proxy=socks5://xxx:9999&compress=gzip_raw&mode=recv")
Fungsi yang disokong oleh parameter alamat fungsi Dial | Penerangan parameter |
---|---|
Parameter yang berkaitan dengan pemampatan data protokol WebSocket: compress=parameter value | memampatkan adalah kaedah mampatan, pilihan parameter mampatan adalah: gzip_raw, gzip, dan lain-lain Jika kaedah gzip bukan gzip standard, anda boleh menggunakan kaedah lanjutan: gzip_raw |
Parameter yang berkaitan dengan pemampatan data protokol WebSocket: mod=nilai parameter | mod adalah mod mampatan, parameter mod boleh menjadi dua, menghantar, recv. dual adalah mampatan dua hala, menghantar data mampat, menerima data mampat. menghantar adalah menghantar data mampat. recv adalah menerima data mampat, dekompresi tempatan. |
Protokol WebSocket menetapkan parameter yang berkaitan dengan sambungan semula automatik yang mendasari: reconnect=nilai parameter | reconnect adalah sama ada untuk menetapkan reconnect, reconnect=true adalah untuk membolehkan reconnect. lalai adalah tidak reconnect apabila parameter ini tidak ditetapkan. |
Protokol WebSocket menetapkan parameter yang berkaitan dengan auto-reconnect yang mendasari: interval=nilai parameter | interval adalah selang percubaan semula, dalam milidetik, interval=10000 adalah selang percubaan semula 10 saat, lalai adalah 1 saat apabila ia tidak ditetapkan, iaitu interval=1000. |
Protokol WebSocket menetapkan parameter yang berkaitan dengan auto-reconnect yang mendasari: payload=nilai parameter | payload adalah mesej langganan yang perlu dihantar apabila WebSocket disambungkan semula, contohnya: payload=okokok. |
Parameter yang berkaitan dengan stoking5 proxy: proxy=nilai parameter | proxy adalah persediaan proxy ss5, format nilai parameter: socks5://name:pwd@192.168.0.1:1080, nama adalah nama pengguna pelayan ss5, pwd adalah kata laluan masuk pelayan ss5, 1080 adalah port perkhidmatan ss5. |
PeraturanDial()
Fungsi hanya disokong untuk perdagangan langsung.
Apabila menyambung ke pangkalan data menggunakan fungsi Dial, rentetan sambungan ditulis dengan merujuk kepada projek pemandu bahasa go untuk setiap pangkalan data.
Pangkalan data disokong | Projek Pemacu | Tali sambungan | Catatan |
---|---|---|---|
Sqlite3 | github.com/mattn/go-sqlite3 | sqlite3://file:test.db?cache=shared&mode=memory | Peraturansqlite3:// awalan menunjukkan bahawa pangkalan data sqlite3 sedang digunakan, contoh panggilan:Dial("sqlite3://test1.db") |
MySQL | github.com/go-sql-driver/mysql | mysql://username:yourpassword@tcp(localhost:3306)/database anda?charset=utf8mb4 | – |
Pelancongan | github.com/lib/pq | postgres://user=postgres dbname=yourdatabase sslmode=disable password=yourpassword host=localhost port=5432 | – |
rumah klik | github.com/ClickHouse/clickhouse-go | klikhouse://tcp://host:9000?username=username&password=yourpassword&database=youdatabase | – |
Sila ambil perhatian bahawa apabilapayload
kandungan yang ditetapkan dalamaddress
parameter mengandungi aksara=
atau ciri khas lain, ia boleh menjejaskan analisisaddress
parameterDial
fungsi, seperti contoh berikut.
contoh panggilan antara muka peribadi websocket backPack Exchange:
var client = null
function main() {
// Base64-encoded public key of the key pair, i.e. the access key configured on FMZ
var base64ApiKey = "xxx"
var ts = String(new Date().getTime())
var data = "instruction=subscribe×tamp=" + ts + "&window=5000"
// Since signEd25519 returns a base64 encoding, it contains the character "="
var signature = signEd25519(data)
// The payload may contain the character "=" after being encoded by JSON
payload = {
"method": "SUBSCRIBE",
"params": ["account.orderUpdate"],
"signature": [base64ApiKey, signature, ts, "5000"]
}
client = Dial("wss://ws.backpack.exchange")
client.write(JSON.stringify(payload))
if (!client) {
Log("Connection failed, program exited")
return
}
while (true) {
var buf = client.read()
Log(buf)
}
}
function onexit() {
client.close()
}
function signEd25519(data) {
return exchange.Encode("ed25519.seed", "raw", "base64", data, "base64", "{{secretkey}}")
}
Panggilan berikut dalam kod berfungsi dengan baik:
client = Dial("wss://ws.backpack.exchange")
client.write(JSON.stringify(payload))
Jika anda menulisnya terus ke dalampayload
, ia tidak akan berfungsi dengan baik, sebagai contoh:
client = Dial("wss://ws.backpack.exchange|payload=" + JSON.stringify(payload))
Pada masa ini, hanya JavaScript menyokong penggunaanmqtt
, nats
, amqp
, dankafka
Kod strategi bahasa JavaScript digunakan sebagai contoh untuk menunjukkan penggunaan empat protokol:mqtt
, nats
, amqp
, dankafka
:
// We need to configure and deploy proxy servers for each protocol first.
// For the sake of demonstration, the subscription (read operation) and publishing (write operation) of the topic test_topic are all performed in the current strategy.
var arrConn = []
var arrName = []
function main() {
LogReset(1)
conn_nats = Dial("nats://admin@127.0.0.1:4222?topic=test_topic")
conn_mqtt = Dial("mqtt://127.0.0.1:1883?topic=test_topic")
conn_amqp = Dial("amqp://q:admin@127.0.0.1:5672/?queue=test_Queue")
conn_kafka = Dial("kafka://localhost:9092/test_topic")
arrConn = [conn_nats, conn_amqp, conn_mqtt, conn_kafka]
arrName = ["nats", "amqp", "mqtt", "kafka"]
while (true) {
for (var i in arrConn) {
var conn = arrConn[i]
var name = arrName[i]
// Write data
conn.write(name + ", time: " + _D() + ", test msg.")
// Read data
var readMsg = conn.read(1000)
Log(name + " readMsg: ", readMsg, "#FF0000")
}
Sleep(1000)
}
}
function onexit() {
for (var i in arrConn) {
arrConn[i].close()
Log("close", arrName[i], "connect")
}
}
Rujukan dokumentasi terperinci:Menjelajah FMZ: Amalan Protokol Komunikasi Antara Strategi Dagangan Langsung
Kirim permintaan HTTP.
Mengembalikan data tindak balas permintaan.JSON
string, ia boleh dianalisis olehJSON.parse()
fungsi dalamJavaScript
strategi bahasa, dan olehjson::parse()
fungsi dalamC++
Jika debug ditetapkan kepada benar dalam struktur pilihan, nilai pulangan adalah objek (JSON); jika debug ditetapkan kepada palsu, nilai pulangan adalah rentetan.
senar, objek
HttpQuery ((url) HttpQuery ((url, pilihan)
URL permintaan HTTP. url betul senar Seting yang berkaitan dengan permintaan HTTP, misalnya, boleh disusun seperti berikut:
{
method: "POST",
body: "a=10&b=20&c=30",
charset: "UTF-8",
cookie: "session_id=12345; lang=en",
profile: "chrome_103",
debug: false,
headers: {"TEST-HTTP-QUERY": "123"},
timeout: 1000
}
tls
cap jari.
Tetapan yang disokong termasuk pilihan berikut:
chrome_:"chrome_103"
, "chrome_104"
, "chrome_105"
, "chrome_106"
, "chrome_107"
, "chrome_108"
, "chrome_109"
, "chrome_110"
, "chrome_111"
, "chrome_112"
, "chrome_117"
...
Safari_:"safari_15_6_1"
, "safari_16_0"
, "safari_ipad_15_6"
, "safari_ios_15_5"
, "safari_ios_15_6"
, "safari_ios_16_0"
...
Firefox_:"firefox_102"
, "firefox_104"
, "firefox_105"
, "firefox_106"
, "firefox_108"
, "firefox_110"
, "firefox_117"
...
Opera_:"opera_89"
, "opera_90"
, "opera_91"
...
Zalando:"zalando_android_mobile"
, "zalando_ios_mobile"
...
Nike_:"nike_ios_mobile"
, "nike_android_mobile"
...
pencakar awan:"cloudscraper"
...
mms_:"mms_ios"
...
mesh_:"mesh_ios"
, "mesh_ios_1"
, "mesh_ios_2"
, "mesh_android"
, "mesh_android_1"
, "mesh_android_2"
...
Diperakui:"confirmed_ios"
, "confirmed_android"
...
ok."okhttp4_android_7"
, "okhttp4_android_8"
, "okhttp4_android_9"
, "okhttp4_android_10"
, "okhttp4_android_11"
, "okhttp4_android_12"
, "okhttp4_android_13"
,true
, yangHttpQuery
panggilan fungsi mengembalikan mesej jawapan penuh.false
, hanya data dalamBody
daripada mesej jawapan dikembalikan.profile
medan boleh ditinggalkan.pilihan palsu objek
function main(){
// An example of GET access without parameters
var info = JSON.parse(HttpQuery("https://www.okx.com/api/v5/public/time"))
Log(info)
// An example of GET access with parameters
var ticker = JSON.parse(HttpQuery("https://www.okx.com/api/v5/market/books?instId=BTC-USDT"))
Log(ticker)
}
import json
import urllib.request
def main():
# HttpQuery does not support Python, you can use the urllib/urllib2 library instead
info = json.loads(urllib.request.urlopen("https://www.okx.com/api/v5/public/time").read().decode('utf-8'))
Log(info)
ticker = json.loads(urllib.request.urlopen("https://www.okx.com/api/v5/market/books?instId=BTC-USDT").read().decode('utf-8'))
Log(ticker)
void main() {
auto info = json::parse(HttpQuery("https://www.okx.com/api/v5/public/time"));
Log(info);
auto ticker = json::parse(HttpQuery("https://www.okx.com/api/v5/market/books?instId=BTC-USDT"));
Log(ticker);
}
Contoh mengakses antara muka API ticker awam OKX.
function main() {
// Setting proxy and sending an http request for this time, no username, no password, this http request will be sent through the proxy
HttpQuery("socks5://127.0.0.1:8889/http://www.baidu.com/")
// Setting proxy and sending an http request for this time, enter the user name and password, only the current call to HttpQuery takes effect, and then call HttpQuery again ("http://www.baidu.com") so that the proxy will not be used.
HttpQuery("socks5://username:password@127.0.0.1:8889/http://www.baidu.com/")
}
# HttpQuery does not support Python, you can use the urllib/urllib2 library instead
void main() {
HttpQuery("socks5://127.0.0.1:8889/http://www.baidu.com/");
HttpQuery("socks5://username:password@127.0.0.1:8889/http://www.baidu.com/");
}
Fungsi HttpQuery menggunakan tetapan proksi.
PeraturanHttpQuery()
fungsi hanya menyokongJavaScript
, C++
bahasa,Python
bahasa boleh menggunakanurllib
perpustakaan untuk menghantar permintaan Http secara langsung.HttpQuery()
digunakan terutamanya untuk mengakses antara muka pertukaran yang tidak memerlukan tandatangan, seperti antara muka awam seperti maklumat ticker.HttpQuery()
boleh digunakan dalam sistem backtesting untuk menghantar permintaan (hanyaGET
Percubaan belakang terhad kepada menggunakan 20 lawatan keURLs
, danHttpQuery()
kunjungan akan cache data.URL
diperolehi untuk kali kedua,HttpQuery()
fungsi mengembalikan data yang disimpan dan tiada lagi permintaan rangkaian sebenar berlaku.
{@fun/Global/HttpQuery_Go HttpQuery_Go}
Menghantar permintaan HTTP, versi asynchronousHttpQuery
function.
PeraturanHttpQuery_Go()
fungsi segera mengembalikan objek serentak yang boleh digunakan untuk mendapatkan hasil permintaan Http menggunakanwait
kaedahJSON.parse()
fungsi boleh digunakan untuk menganalisisJSON.parse()
fungsi dalamJavaScript
strategi bahasa.
objek
HttpQuery_Go (url) HttpQuery_Go ((url, pilihan)
URL permintaan HTTP. url betul senar Seting yang berkaitan dengan permintaan HTTP, misalnya, boleh disusun seperti berikut:
{
method: "POST",
body: "a=10&b=20&c=30",
charset: "UTF-8",
cookie: "session_id=12345; lang=en",
// profile: "",
debug: false,
headers: {"TEST-HTTP-QUERY": "123"},
timeout: 1000
}
tls
fingerprints.true
, iniHttpQuery_Go
panggilan fungsi mengembalikan mesej jawapan penuh.false
, hanya data dalamBody
daripada mesej jawapan dikembalikan.profile
medan boleh ditinggalkan.pilihan palsu objek
function main() {
// Create the first asynchronous thread
var r1 = HttpQuery_Go("https://www.okx.com/api/v5/market/tickers?instType=SPOT")
// Create the second asynchronous thread
var r2 = HttpQuery_Go("https://api.huobi.pro/market/tickers")
// Get the return value of the first asynchronous thread call
var tickers1 = r1.wait()
// Get the return value of the second asynchronous thread call
var tickers2 = r2.wait()
// Print results
Log("tickers1:", tickers1)
Log("tickers2:", tickers2)
}
# Not supported
// Not supported
Akses asynchronous ke antara muka awam pertukaran untuk data ticker agregat.
PeraturanHttpQuery_Go()
fungsi hanya menyokongJavaScript
, yangPython
bahasa boleh digunakan denganurllib
perpustakaan untuk menghantar permintaan Http secara langsung.HttpQuery_Go()
digunakan terutamanya untuk mengakses antara muka yang tidak memerlukan tandatangan di bursa, seperti antara muka awam seperti maklumat ticker.HttpQuery_Go
fungsi tidak disokong dalam sistem backtesting.
{@fun/Global/HttpQuery HttpQuery}
Fungsi ini mengkodkan data mengikut parameter yang dihantar.
PeraturanEncode
fungsi mengembalikan data selepas pengekodan dan penyulitan.
senar
Encode ((algo, inputFormat, outputFormat, data) Encode ((algo, inputFormat, outputFormat, data, kunciFormat, kunci)
Parameteralgo
adalah algoritma yang digunakan dalam pengiraan pengekodan. Tetapan sokongan adalah:raw
(tidak ada algoritma yang digunakan), "tanda", 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 sebagai salah satu daripada berikut:raw
, hex
, base64
, string
. hex
dikodkan, base64
dikodkan, dan outputFormat
parameter boleh ditetapkan sebagai salah satu daripada berikut:raw
, hex
, base64
, string
. hex
dikodkan, base64
dikodkan, dan data
adalah data yang akan diproses.
data
betul
senar
Digunakan untuk menentukan format datakey
parameter.key
parameter boleh ditetapkan sebagai salah satu daripada berikut:raw
, hex
, base64
, string
. hex
dikodkan, base64
dikodkan, dan key
adalah kunci rahsia yang digunakan untukHMAC
Parameterkey
diperlukan apabila parameteralgo
ditetapkan kepadasign
atausignTx
.key
parameter tidak digunakan untukHMAC
penyulitan apabilaalgo
parameter ditetapkan kepada
function main() {
Log(Encode("raw", "raw", "hex", "example", "raw", "123")) // 6578616d706c65
Log(Encode("raw", "raw", "hex", "example")) // 6578616d706c65
Log(Encode("sha256", "raw", "hex", "example", "raw", "123")) // 698d54f0494528a759f19c8e87a9f99e75a5881b9267ee3926bcf62c992d84ba
Log(Encode("sha256", "raw", "hex", "example", "", "123")) // 50d858e0985ecc7f60418aaf0cc5ab587f42c2570a884095a9e8ccacd0f6545c
Log(Encode("sha256", "raw", "hex", "example", null, "123")) // 50d858e0985ecc7f60418aaf0cc5ab587f42c2570a884095a9e8ccacd0f6545c
Log(Encode("sha256", "raw", "hex", "example", "string", "123")) // 698d54f0494528a759f19c8e87a9f99e75a5881b9267ee3926bcf62c992d84ba
Log(Encode("raw", "raw", "hex", "123")) // 313233
Log(Encode("raw", "raw", "base64", "123")) // MTIz
Log(Encode("sha256", "raw", "hex", "example", "hex", "313233")) // 698d54f0494528a759f19c8e87a9f99e75a5881b9267ee3926bcf62c992d84ba
Log(Encode("sha256", "raw", "hex", "example", "base64", "MTIz")) // 698d54f0494528a759f19c8e87a9f99e75a5881b9267ee3926bcf62c992d84ba
}
def main():
Log(Encode("raw", "raw", "hex", "example", "raw", "123")) # 6578616d706c65
Log(Encode("raw", "raw", "hex", "example", "", "")) # 6578616d706c65
Log(Encode("sha256", "raw", "hex", "example", "raw", "123")) # 698d54f0494528a759f19c8e87a9f99e75a5881b9267ee3926bcf62c992d84ba
Log(Encode("sha256", "raw", "hex", "example", "", "123")) # 50d858e0985ecc7f60418aaf0cc5ab587f42c2570a884095a9e8ccacd0f6545c
Log(Encode("sha256", "raw", "hex", "example", "string", "123")) # 698d54f0494528a759f19c8e87a9f99e75a5881b9267ee3926bcf62c992d84ba
Log(Encode("raw", "raw", "hex", "123", "", "")) # 313233
Log(Encode("raw", "raw", "base64", "123", "", "")) # MTIz
Log(Encode("sha256", "raw", "hex", "example", "hex", "313233")) # 698d54f0494528a759f19c8e87a9f99e75a5881b9267ee3926bcf62c992d84ba
Log(Encode("sha256", "raw", "hex", "example", "base64", "MTIz")) # 698d54f0494528a759f19c8e87a9f99e75a5881b9267ee3926bcf62c992d84ba
void main() {
Log(Encode("raw", "raw", "hex", "example", "raw", "123")); // 6578616d706c65
Log(Encode("raw", "raw", "hex", "example")); // 6578616d706c65
Log(Encode("sha256", "raw", "hex", "example", "raw", "123")); // 698d54f0494528a759f19c8e87a9f99e75a5881b9267ee3926bcf62c992d84ba
Log(Encode("sha256", "raw", "hex", "example", "", "123")); // 50d858e0985ecc7f60418aaf0cc5ab587f42c2570a884095a9e8ccacd0f6545c
Log(Encode("sha256", "raw", "hex", "example", "string", "123")); // 698d54f0494528a759f19c8e87a9f99e75a5881b9267ee3926bcf62c992d84ba
Log(Encode("raw", "raw", "hex", "123")); // 313233
Log(Encode("raw", "raw", "base64", "123")); // MTIz
Log(Encode("sha256", "raw", "hex", "example", "hex", "313233")); // 698d54f0494528a759f19c8e87a9f99e75a5881b9267ee3926bcf62c992d84ba
Log(Encode("sha256", "raw", "hex", "example", "base64", "MTIz")); // 698d54f0494528a759f19c8e87a9f99e75a5881b9267ee3926bcf62c992d84ba
}
Contoh panggilan fungsi Encode.
function main(){
var ret1 = Encode("text.encoder.utf8", "raw", "hex", "hello") // e4bda0e5a5bd
Log(ret1)
var ret2 = Encode("text.decoder.utf8", "hex", "string", ret1)
Log(ret2)
var ret3 = Encode("text.encoder.gbk", "raw", "hex", "hello") // c4e3bac3
Log(ret3)
var ret4 = Encode("text.decoder.gbk", "hex", "string", ret3)
Log(ret4)
}
def main():
ret1 = Encode("text.encoder.utf8", "raw", "hex", "hello", "", "") # e4bda0e5a5bd
Log(ret1)
ret2 = Encode("text.decoder.utf8", "hex", "string", ret1, "", "")
Log(ret2)
ret3 = Encode("text.encoder.gbk", "raw", "hex", "hello", "", "") # c4e3bac3
Log(ret3)
ret4 = Encode("text.decoder.gbk", "hex", "string", ret3, "", "")
Log(ret4)
void main(){
auto ret1 = Encode("text.encoder.utf8", "raw", "hex", "hello"); // e4bda0e5a5bd
Log(ret1);
auto ret2 = Encode("text.decoder.utf8", "hex", "string", ret1);
Log(ret2);
auto ret3 = Encode("text.encoder.gbk", "raw", "hex", "hello"); // c4e3bac3
Log(ret3);
auto ret4 = Encode("text.decoder.gbk", "hex", "string", ret3);
Log(ret4);
}
Parameteralgo
juga menyokong:
PeraturanEncode()
fungsi hanya disokong untuk perdagangan langsung.key
dankeyFormat
parameter tidak lulus, makakey
penyulitan tidak digunakan.
Dapatkan cap masa nanodetik saat ini.
PeraturanUnixNano()
Fungsi mengembalikan cap masa nanodetik.
nombor
UnixNano ((()
function main() {
var time = UnixNano() / 1000000
Log(_N(time, 0))
}
def main():
time = UnixNano()
Log(time)
void main() {
auto time = UnixNano();
Log(time);
}
Jika anda perlu mendapatkan stempel masa milidetik, anda boleh menggunakan kod berikut:
{@fun/Global/Unix Unix}
Dapatkan cap masa saat ini di peringkat kedua.
Mengembalikan cap masa peringkat kedua. nombor
Unix ((()
function main() {
var t = Unix()
Log(t)
}
def main():
t = Unix()
Log(t)
void main() {
auto t = Unix();
Log(t);
}
{@fun/Global/UnixNano UnixNano}
Dapatkan maklumat sistem peranti di mana docker terletak.
Maklumat sistem. senar
GetOS()
function main() {
Log("GetOS:", GetOS())
}
def main():
Log("GetOS:", GetOS())
void main() {
Log("GetOS:", GetOS());
}
Sebagai contoh, panggilan kepadaGetOS()
fungsi untuk pelabuhan yang berjalan padaMac OSsistem operasi mungkin kembali:darwin/amd64
Kerana komputer Apple mempunyai pelbagai seni bina perkakasan.darwin
adalah namaMac OS system.
Mengira hash MD5 parameterdata
.
Nilai hash MD5. senar
MD5 (data)
Data yang memerlukan pengiraan MD5. data betul senar
function main() {
Log("MD5", MD5("hello world"))
}
def main():
Log("MD5", MD5("hello world"))
void main() {
Log("MD5", MD5("hello world"));
}
MenghubungiMD5("hello world")
fungsi, nilai pulangan adalah:5eb63bbbe01eeed093cb22bb8f5acdc3
.
{@fun/Global/Encode Encode}
Fungsi antara muka pangkalan data.
Objek yang mengandungi hasil pelaksanaansqlpernyataan, contohnya:
{"columns":["TS","HIGH","OPEN","LOW","CLOSE","VOLUME"],"values":[[1518970320000,100,99.1,90,100,12345.6]]}
objek
DBExec ((sql)
sqlString arahan. sql betul senar
function main() {
var strSql = [
":CREATE TABLE TEST_TABLE(",
"TS INT PRIMARY KEY NOT NULL,",
"HIGH REAL NOT NULL,",
"OPEN REAL NOT NULL,",
"LOW REAL NOT NULL,",
"CLOSE REAL NOT NULL,",
"VOLUME REAL NOT NULL)"
].join("")
var ret = DBExec(strSql)
Log(ret)
// Add a piece of data
Log(DBExec(":INSERT INTO TEST_TABLE (TS, HIGH, OPEN, LOW, CLOSE, VOLUME) VALUES (1518970320000, 100, 99.1, 90, 100, 12345.6);"))
// Query data
Log(DBExec(":SELECT * FROM TEST_TABLE;"))
}
def main():
arr = [
":CREATE TABLE TEST_TABLE(",
"TS INT PRIMARY KEY NOT NULL,",
"HIGH REAL NOT NULL,",
"OPEN REAL NOT NULL,",
"LOW REAL NOT NULL,",
"CLOSE REAL NOT NULL,",
"VOLUME REAL NOT NULL)"
]
strSql = ""
for i in range(len(arr)):
strSql += arr[i]
ret = DBExec(strSql)
Log(ret)
# Add a piece of data
Log(DBExec(":INSERT INTO TEST_TABLE (TS, HIGH, OPEN, LOW, CLOSE, VOLUME) VALUES (1518970320000, 100, 99.1, 90, 100, 12345.6);"))
# Query data
Log(DBExec(":SELECT * FROM TEST_TABLE;"))
void main() {
string strSql = ":CREATE TABLE TEST_TABLE(\
TS INT PRIMARY KEY NOT NULL,\
HIGH REAL NOT NULL,\
OPEN REAL NOT NULL,\
LOW REAL NOT NULL,\
CLOSE REAL NOT NULL,\
VOLUME REAL NOT NULL)";
auto ret = DBExec(strSql);
Log(ret);
// Add a piece of data
Log(DBExec(":INSERT INTO TEST_TABLE (TS, HIGH, OPEN, LOW, CLOSE, VOLUME) VALUES (1518970320000, 100, 99.1, 90, 100, 12345.6);"));
// Query data
Log(DBExec(":SELECT * FROM TEST_TABLE;"));
}
Sokongan pangkalan data dalam memori, untukDBExec
parameter fungsi, jikasqlpernyataan bermula dengan:
Ia sesuai untuk operasi pangkalan data yang tidak memerlukan simpanan berterusan, contohnya:
function main() {
var strSql = [
"CREATE TABLE TEST_TABLE(",
"TS INT PRIMARY KEY NOT NULL,",
"HIGH REAL NOT NULL,",
"OPEN REAL NOT NULL,",
"LOW REAL NOT NULL,",
"CLOSE REAL NOT NULL,",
"VOLUME REAL NOT NULL)"
].join("")
var ret = DBExec(strSql)
Log(ret)
}
def main():
arr = [
"CREATE TABLE TEST_TABLE(",
"TS INT PRIMARY KEY NOT NULL,",
"HIGH REAL NOT NULL,",
"OPEN REAL NOT NULL,",
"LOW REAL NOT NULL,",
"CLOSE REAL NOT NULL,",
"VOLUME REAL NOT NULL)"
]
strSql = ""
for i in range(len(arr)):
strSql += arr[i]
ret = DBExec(strSql)
Log(ret)
void main() {
string strSql = "CREATE TABLE TEST_TABLE(\
TS INT PRIMARY KEY NOT NULL,\
HIGH REAL NOT NULL,\
OPEN REAL NOT NULL,\
LOW REAL NOT NULL,\
CLOSE REAL NOT NULL,\
VOLUME REAL NOT NULL)";
auto ret = DBExec(strSql);
Log(ret);
}
Buat meja.
function main() {
var strSql = [
"CREATE TABLE TEST_TABLE(",
"TS INT PRIMARY KEY NOT NULL,",
"HIGH REAL NOT NULL,",
"OPEN REAL NOT NULL,",
"LOW REAL NOT NULL,",
"CLOSE REAL NOT NULL,",
"VOLUME REAL NOT NULL)"
].join("")
Log(DBExec(strSql))
// Add a piece of data
Log(DBExec("INSERT INTO TEST_TABLE (TS, HIGH, OPEN, LOW, CLOSE, VOLUME) VALUES (1518970320000, 100, 99.1, 90, 100, 12345.6);"))
// Query data
Log(DBExec("SELECT * FROM TEST_TABLE;"))
// Modify data
Log(DBExec("UPDATE TEST_TABLE SET HIGH=? WHERE TS=?", 110, 1518970320000))
// Delete data
Log(DBExec("DELETE FROM TEST_TABLE WHERE HIGH=?", 110))
}
def main():
arr = [
"CREATE TABLE TEST_TABLE(",
"TS INT PRIMARY KEY NOT NULL,",
"HIGH REAL NOT NULL,",
"OPEN REAL NOT NULL,",
"LOW REAL NOT NULL,",
"CLOSE REAL NOT NULL,",
"VOLUME REAL NOT NULL)"
]
strSql = ""
for i in range(len(arr)):
strSql += arr[i]
Log(DBExec(strSql))
# Add a piece of data
Log(DBExec("INSERT INTO TEST_TABLE (TS, HIGH, OPEN, LOW, CLOSE, VOLUME) VALUES (1518970320000, 100, 99.1, 90, 100, 12345.6);"))
# Query data
Log(DBExec("SELECT * FROM TEST_TABLE;"))
# Modify data
Log(DBExec("UPDATE TEST_TABLE SET HIGH=? WHERE TS=?", 110, 1518970320000))
# Delete data
Log(DBExec("DELETE FROM TEST_TABLE WHERE HIGH=?", 110))
void main() {
string strSql = "CREATE TABLE TEST_TABLE(\
TS INT PRIMARY KEY NOT NULL,\
HIGH REAL NOT NULL,\
OPEN REAL NOT NULL,\
LOW REAL NOT NULL,\
CLOSE REAL NOT NULL,\
VOLUME REAL NOT NULL)";
Log(DBExec(strSql));
// Add a piece of data
Log(DBExec("INSERT INTO TEST_TABLE (TS, HIGH, OPEN, LOW, CLOSE, VOLUME) VALUES (1518970320000, 100, 99.1, 90, 100, 12345.6);"));
// Query data
Log(DBExec("SELECT * FROM TEST_TABLE;"));
// Modify data
Log(DBExec("UPDATE TEST_TABLE SET HIGH=? WHERE TS=?", 110, 1518970320000));
// Delete data
Log(DBExec("DELETE FROM TEST_TABLE WHERE HIGH=?", 110));
}
Tambah, hapuskan, periksa dan ubah rekod dalam jadual.
FungsiDBExec()
dapat mengendalikan pangkalan data perdagangan langsung (pangkalan data SQLite) dengan menyampaikan parameter.SQLiteSistem disediakan jadual dalam pangkalan data perdagangan langsung:kvdb
, cfg
, log
, profit
, chart
, jangan beroperasi di atas meja ini.Transaksitidak disokong dan tidak disyorkan untuk melakukan operasi tersebut, yang boleh menyebabkan konflik dalam sistem.DBExec()
Fungsi hanya disokong untuk perdagangan langsung.
{@fun/Global/_G _G}
Buat UUID.
UUID 32-bit. senar
UUID (()
function main() {
var uuid1 = UUID()
var uuid2 = UUID()
Log(uuid1, uuid2)
}
def main():
uuid1 = UUID()
uuid2 = UUID()
Log(uuid1, uuid2)
void main() {
auto uuid1 = UUID();
auto uuid2 = UUID();
Log(uuid1, uuid2);
}
PeraturanUUID()
Fungsi ini hanya menyokong perdagangan langsung.
Dengarkan untuk peristiwa, ia kembali apabila ada apa-apaWebSocket
data yang boleh dibaca atau tugas serentak, seperti:exchange.Go()
, HttpQuery_Go()
, dan lain-lain telah selesai.
Jika objek yang dikembalikan bukan nilai sifar,Event
yang terkandung dalam kandungan pulangan adalah jenis pemicu peristiwa. Sebagai contoh, struktur nilai pulangan berikut:
{"Seq":1,"Event":"Exchange_GetTrades","ThreadId":0,"Index":3,"Nano":1682068771309583400}
objek
EventLoop ((() EventLoop (timeout)
Parametertimeout
adalah tetapan masa lapang, dalam mili saat.timeout
menanti sesuatu peristiwa berlaku sebelum kembali jika ia ditetapkan kepada 0. Jika ia lebih besar daripada 0, ia menetapkan peristiwa untuk menunggu masa lapang, dan mengembalikan peristiwa yang paling baru dengan serta-merta jika ia kurang daripada 0.
masa lapang
palsu
nombor
function main() {
var routine_getTicker = exchange.Go("GetTicker")
var routine_getDepth = exchange.Go("GetDepth")
var routine_getTrades = exchange.Go("GetTrades")
// Sleep(2000), if the Sleep statement is used here, it will cause the subsequent EventLoop function to miss the previous events, because after waiting for 2 seconds, the concurrent function has received the data, and the subsequent EventLoop listening mechanism started, it misses these events.
// These events will not be missed unless EventLoop(-1) is called at the beginning of the first line of code to first initialize the EventLoop's listening mechanism.
// Log("GetDepth:", routine_getDepth.wait()) If the wait function is called in advance to retrieve the result of a concurrent call to the GetDepth function, the event that the GetDepth function receives the result of the request will not be returned in the EventLoop function.
var ts1 = new Date().getTime()
var ret1 = EventLoop(0)
var ts2 = new Date().getTime()
var ret2 = EventLoop(0)
var ts3 = new Date().getTime()
var ret3 = EventLoop(0)
Log("The first concurrent task completed was:", _D(ts1), ret1)
Log("The second concurrent task completed was:", _D(ts2), ret2)
Log("The third concurrent task completed was:", _D(ts3), ret3)
Log("GetTicker:", routine_getTicker.wait())
Log("GetDepth:", routine_getDepth.wait())
Log("GetTrades:", routine_getTrades.wait())
}
import time
def main():
routine_getTicker = exchange.Go("GetTicker")
routine_getDepth = exchange.Go("GetDepth")
routine_getTrades = exchange.Go("GetTrades")
ts1 = time.time()
ret1 = EventLoop(0)
ts2 = time.time()
ret2 = EventLoop(0)
ts3 = time.time()
ret3 = EventLoop(0)
Log("The first concurrent task completed was:", _D(ts1), ret1)
Log("The second concurrent task completed was:", _D(ts2), ret2)
Log("The third concurrent task completed was:", _D(ts3), ret3)
Log("GetTicker:", routine_getTicker.wait())
Log("GetDepth:", routine_getDepth.wait())
Log("GetTrades:", routine_getTrades.wait())
void main() {
auto routine_getTicker = exchange.Go("GetTicker");
auto routine_getDepth = exchange.Go("GetDepth");
auto routine_getTrades = exchange.Go("GetTrades");
auto ts1 = Unix() * 1000;
auto ret1 = EventLoop(0);
auto ts2 = Unix() * 1000;
auto ret2 = EventLoop(0);
auto ts3 = Unix() * 1000;
auto ret3 = EventLoop(0);
Log("The first concurrent task completed was:", _D(ts1), ret1);
Log("The second concurrent task completed was:", _D(ts2), ret2);
Log("The third concurrent task completed was:", _D(ts3), ret3);
Ticker ticker;
Depth depth;
Trades trades;
routine_getTicker.wait(ticker);
routine_getDepth.wait(depth);
routine_getTrades.wait(trades);
Log("GetTicker:", ticker);
Log("GetDepth:", depth);
Log("GetTrades:", trades);
}
Panggilan pertama kepadaEventLoop()
Fungsi dalam kod menghidupkan mekanisme untuk peristiwa yang didengar, dan jika yang pertamaEventLoop()
panggilan bermula selepas callback peristiwa, ia akan terlepas peristiwa sebelumnya. sistem yang mendasari membungkus struktur antrian yang menyimpan maksimum 500 callback peristiwa.EventLoop()
fungsi tidak dipanggil pada masa untuk mengambil mereka keluar semasa pelaksanaan program, kemudian panggilan balik acara di luar 500 cache akan hilang.EventLoop()
fungsi tidak mempengaruhi barisan cache sistem asas WebSocket atau cache fungsi serentak sepertiexchange.Go()
. Untuk cache ini, ia masih perlu menggunakan kaedah masing-masing untuk mendapatkan data.EventLoop()
fungsi untuk data yang telah diambil sebelumEventLoop()
fungsi kembali.EventLoop()
fungsi adalah untuk memaklumkan lapisan strategi bahawa data rangkaian baru telah diterima oleh sistem yang mendasari. keseluruhan strategi didorong oleh peristiwa.EventLoop()
fungsi mengembalikan peristiwa, hanya melintasi semua sumber data.exchange.Go()
cuba untuk mendapatkan data.EventLoop()
Fungsi ini hanya menyokong perdagangan langsung.
Dengarkan peristiwa dalam benang utama apabila dipanggil dari fungsi utamamain()
. Dalam strategi yang ditulis dalamJavaScript
Bahasa,threading.Thread()
fungsi mencipta thread, yang juga boleh dipanggil dalam fungsi pelaksanaan thread
{@fun/Global/Dial Dial}, {@fun/Trade/exchange.Go exchange.Go}, {@fun/Global/HttpQuery_Go HttpQuery_Go}
Peraturan__Serve
fungsi digunakan untuk membuat perkhidmatan Http, perkhidmatan TCP, dan perkhidmatan Websocket (berdasarkan protokol Http).
Mengembalikan rentetan yang merekodkan alamat IP dan pelabuhan perkhidmatan yang dicipta.127.0.0.1:8088
, [::]:8089
.
senar
__Serve (serveURI, pengendali) __Serve ((serveURI, pengendali,...args)
PeraturanserveURI
parameter digunakan untuk mengkonfigurasi protokol, alamat IP, pelabuhan dan tetapan lain yang mengikat perkhidmatan, sepertihttp://0.0.0.0:8088?gzip=true
, iaitu,http://:8088?gzip=true
.
serveURI
tetapan parameter, sepertitcp://127.0.0.1:6666?tls=true
; anda boleh menambah sijil dan kunci peribadi, sepertitls=true&cert_pem=xxxx&cert_key_pem=xxxx
.serveURI
tetapan parameter, sepertihttp://127.0.0.1:6666?gzip=true
; anda boleh menetapkan tetapan mampatan:gzip=true
.
PeraturanserveURI
parameter digunakan untuk Https, sepertihttps://127.0.0.1:6666?tls=true&gzip=true
; anda boleh menambahcert_pem
dancert_key_pem
parameter untuk memuat sijil.berkhidmatURI
betul
senar
Peraturanhandler
Parameter digunakan untuk lulus dalam fungsi pemprosesan laluan (protokol HTTP), fungsi pemprosesan mesej (protokol TCP), dan fungsi pemprosesan aliran (Websocket).
Fungsi panggilan balik yang dihantar oleh parameterhandler
boleh menentukan beberapa parameter, parameter pertama adalah objek ctx (objek konteks).
pengendali
betul
fungsi
Parameter sebenar fungsi callback yang dihantar sebagai parameterhandler
Mungkin ada pelbagai parameter.arg
Contohnya:
__Serve("http://:8088", function(ctx, a, b, c) {
Log(`ctx.host():`, ctx.host(), ", a=", a, ", b=", b, ", c=", c)
}, 1, 2, 3)
Parameter1
, 2
, 3
telah berlalu dalam apabila memanggil__Serve()
fungsi sepadan dengan parametera
, b
, c
dilewatkan dalam fungsi panggilan balik.
arg palsu rentetan, nombor, bool, objek, susunan, fungsi, nilai sifar dan jenis lain yang disokong oleh sistem
function main() {
let httpServer = __Serve("http://:8088?gzip=true", function (ctx) {
Log("http connect from: ", ctx.remoteAddr(), "->", ctx.localAddr())
let path = ctx.path()
if (path == "/") {
ctx.write(JSON.stringify({
path: ctx.path(),
method: ctx.method(),
headers: ctx.headers(),
cookie: ctx.header("Cookie"),
remote: ctx.remoteAddr(),
query: ctx.rawQuery()
}))
} else if (path == "/tickers") {
let ret = exchange.GetTickers()
if (!ret) {
ctx.setStatus(500)
ctx.write(GetLastError())
} else {
ctx.write(JSON.stringify(ret))
}
} else if (path == "/wss") {
if (ctx.upgrade("websocket")) { // upgrade to websocket
while (true) {
let r = ctx.read(10)
if (r == "") {
break
} else if (r) {
if (r == "ticker") {
ctx.write(JSON.stringify(exchange.GetTicker()))
} else {
ctx.write("not support")
}
}
}
Log("websocket closed", ctx.remoteAddr())
}
} else {
ctx.setStatus(404)
}
})
let echoServer = __Serve("tcp://:8089", function (ctx) {
Log("tcp connect from: ", ctx.remoteAddr(), "->", ctx.localAddr())
while (true) {
let d = ctx.read()
if (!d) {
break
}
ctx.write(d)
}
Log("connect closed")
})
Log("http serve on", httpServer, "tcp serve on", echoServer)
for (var i = 0; i < 5; i++) {
if (i == 2) {
// test Http
var retHttp = HttpQuery("http://127.0.0.1:8088?num=123&limit=100", {"debug": true})
Log("retHttp:", retHttp)
} else if (i == 3) {
// test TCP
var tcpConn = Dial("tcp://127.0.0.1:8089")
tcpConn.write("Hello TCP Server")
var retTCP = tcpConn.read()
Log("retTCP:", retTCP)
} else if (i == 4) {
// test Websocket
var wsConn = Dial("ws://127.0.0.1:8088/wss|compress=gzip")
wsConn.write("ticker")
var retWS = wsConn.read(1000)
Log("retWS:", retWS)
// no depth
wsConn.write("depth")
retWS = wsConn.read(1000)
Log("retWS:", retWS)
}
Sleep(1000)
}
}
# Unsupported
// Unsupported
Websocket
Perkhidmatan ini dilaksanakan berdasarkan protokol Http. Anda boleh menetapkan cawangan penghala dalam laluan dan merancang kod pelaksanaan untukWebsocket
Anda boleh merujuk kepada contoh kod di bahagian ini.Fungsi callback yang dihantar oleh parameterhandler
menerimactx
parameter.ctx
parameter adalah objek konteks yang digunakan untuk mendapatkan dan menulis data, dengan kaedah berikut:
HTTP/1.1
, tcp
.http://127.0.0.1:8088?num=123
, dan fungsi pemprosesan panggilan balik yang dihantar oleh parameterhandler
pengembalian"123"
bila?ctx.query("num")
dipanggil.User-Agent
Dalam tajuk permintaan semasa:ctx.header("User-Agent")
.GET
, POST
, dan lain-lainctx
objek konteks kepada protokol Websocket; mengembalikan nilai Boolean (benar) jika suis berjaya, dan nilai Boolean (salah) jika gagal.read
anda boleh menentukan parameter timeouttimeout_ms
dalam milidetik.JSON.stringify()
untuk mengkod objek JSON ke dalam rentetan dan kemudian menulisnya.WebSocket
Protokol, anda boleh menggunakan kaedah ini untuk lulus rentetan dikodkan kepada pelanggan.{@fun/Global/HttpQuery HttpQuery}, {@fun/Global/HttpQuery_Go HttpQuery_Go}
Secara berterusan menyimpan data, fungsi ini melaksanakan fungsi kamus global yang boleh disimpan. Struktur data adalah jadual KV yang disimpan secara kekal dalam fail pangkalan data tempatan docker
Data nilai kunci yang disimpan secara berterusan dalamk-v
pasangan kunci-nilai.
rentetan, nombor, bool, objek, array, nilai sifar
_G() _G(k) _G(k, v)
Parameterk
adalah nama kunci dalam pasangan kunci-nilai yang disimpan, dan tidak sensitif huruf besar.
k
palsu
rentetan, nilai sifar
Parameterv
adalah nilai kunci dalam pasangan kunci-nilai yang disimpan, yang boleh menjadi sebarang data yang bolehJSON
Dikirim secara seriali.
v
palsu
rentetan, nombor, bool, objek, array, nilai sifar
function main(){
// Set a global variable num with a value of 1
_G("num", 1)
// Change a global variable num to the value of the string ok
_G("num", "ok")
// Delete the global variable num
_G("num", null)
// Returns the value of the global variable num
Log(_G("num"))
// Delete all global variables
_G(null)
// Return to live trading ID
var robotId = _G()
}
def main():
_G("num", 1)
_G("num", "ok")
_G("num", None)
Log(_G("num"))
_G(None)
robotId = _G()
void main() {
_G("num", 1);
_G("num", "ok");
_G("num", NULL);
Log(_G("num"));
_G(NULL);
// Not support auto robotId = _G();
}
Sebuah pangkalan data yang berasingan untuk setiap dagangan langsung, data yang disimpan oleh_G()
fungsi akan sentiasa ada jika strategi dimulakan semula atau docker berhenti berjalan. Jika backtesting selesai, data yang disimpan dalam sistem backtesting oleh_G()
Apabila menggunakan_G()
fungsi untuk mengekalkan data yang disimpan, ia harus digunakan dengan munasabah mengikut memori dan ruang cakera keras peranti perkakasan, dan tidak boleh disalahgunakan.
Apabila memanggil_G()
fungsi dalam perdagangan langsung dan tiada parameter yang lulus,_G()
fungsi mengembalikanId
Perdagangan langsung semasa._G()
fungsi, parameterv
dilewatkan sebagai null untuk menunjukkan penghapusank-v
Apabila memanggil_G()
fungsi, hanya parameterk
adalah diluluskan dalam rentetan, dan_G()
fungsi mengembalikan nilai kunci yang sepadan dengan parameter yang disimpank
. Apabila memanggil_G()
fungsi, hanya parameterk
adalah dihantar dalam nilai sifar, menunjukkan bahawa semua rekodk-v
Pasangan kunci-nilai dipadamkan.k-v
pasangan kunci-nilai telah disimpan berterusan,_G()
fungsi dipanggil lagi, lulus dalam nama kunci yang telah disimpan secara berterusan sebagai parameterk
. Menerbitkan nilai kunci baru sebagai parameterv
akan mengemas kini bahawak-v
Pasangan kunci-nilai.
{@fun/Global/DBExec DBExec}
Mengubah timestamp milidetik atauDate
objek untuk senar masa.
String masa. senar
_D() _ D (timestamp) _D ((timestamp, fmt)
Stempel masa milidetik atauDate
objek.
Stempel masa
palsu
Nombor, objek
Format rentetan,JavaScript
Format lalai bahasa:yyyy-MM-dd hh:mm:ss
; Python
Format lalai bahasa:%Y-%m-%d %H:%M:%S
; C++
Format lalai bahasa:%Y-%m-%d %H:%M:%S
.
fmt
palsu
senar
function main(){
var time = _D()
Log(time)
}
def main():
strTime = _D()
Log(strTime)
void main() {
auto strTime = _D();
Log(strTime);
}
Dapatkan dan cetak rentetan masa semasa:
function main() {
Log(_D(1574993606000))
}
def main():
# Running this code on a server in Beijing time: 2019-11-29 10:13:26 , a docker on another server in another region results in: 2019-11-29 02:13:26
Log(_D(1574993606))
void main() {
Log(_D(1574993606000));
}
Stempel masa adalah 1574993606000, menggunakan penukaran kod:
function main() {
Log(_D(1574993606000, "yyyy--MM--dd hh--mm--ss")) // 2019--11--29 10--13--26
}
def main():
# 1574993606 is timestamped in seconds.
Log(_D(1574993606, "%Y--%m--%d %H--%M--%S")) # 2019--11--29 10--13--26
void main() {
Log(_D(1574993606000, "%Y--%m--%d %H--%M--%S")); // 2019--11--29 10--13--26
}
Format dengan parameterfmt
adalah berbeza untukJavaScript
, Python
, danC++
bahasa, seperti yang ditunjukkan dalam contoh berikut:
Mengembalikan rentetan masa semasa tanpa lulus mana-mana parameter._D()
fungsi dalamPython
strategi, anda perlu sedar bahawa parameter yang diteruskan adalah timestamps peringkat kedua (timestamps tahap milidetik dalam strategi JavaScript dan C ++, di mana 1 saat sama dengan 1000 milidetik)._D()
fungsi untuk menganalisis rentetan masa dengan cap masa yang boleh dibaca dalam perdagangan langsung, anda perlu memberi perhatian kepada zon waktu dan tetapan masa sistem operasi di mana program docker terletak._D()
fungsi menganalisis stempel masa ke dalam rentetan masa yang boleh dibaca bergantung pada masa sistem docker
{@fun/Global/UnixNano UnixNano}, {@fun/Global/Unix Unix}
Formatkan nombor koma terapung.
Nombor koma terapung yang diformat mengikut tetapan ketepatan. nombor
_N() _ N (n) _N (num, ketepatan)
Nombor koma terapung yang perlu diformat.
nombor
betul
nombor
Tetapan ketepatan untuk pemformatan, parameterprecision
adalah bilangan bulat, dan parameterprecision
lalai kepada 4.
ketepatan
palsu
nombor
function main(){
var i = 3.1415
Log(i)
var ii = _N(i, 2)
Log(ii)
}
def main():
i = 3.1415
Log(i)
ii = _N(i, 2)
Log(ii)
void main() {
auto i = 3.1415;
Log(i);
auto ii = _N(i, 2);
Log(ii);
}
Sebagai contoh,_N(3.1415, 2)
akan memadamkan nilai selepas3.1415
dua tempat perpuluhan dan fungsi kembali3.14
.
function main(){
var i = 1300
Log(i)
var ii = _N(i, -3)
// Check the logs and see that it is 1000
Log(ii)
}
def main():
i = 1300
Log(i)
ii = _N(i, -3)
Log(ii)
void main() {
auto i = 1300;
Log(i);
auto ii = _N(i, -3);
Log(ii);
}
Jika anda perlu menukar semua N digit di sebelah kiri titik perpuluhan kepada 0, anda boleh menulisnya seperti ini:
Parameterprecision
boleh menjadi bilangan bulat positif, bilangan bulat negatif.
{@fun/Trade/exchange.SetPrecision exchange.SetPrecision}
Cuba semula fungsi untuk toleransi ralat antara muka.
Nilai pulangan fungsi panggilan balik apabila dilaksanakan. Semua jenis disokong oleh sistem kecualinilai logik palsudannilai null.
_C (((pfn) _C ((pfn,...args)
Parameterpfn
adalah rujukan fungsi, yang merupakanFungsi callback.
pfn
betul
fungsi
Parameter kepadaFungsi panggilan balik, mungkin terdapat lebih daripada satu parameterarg
. Jenis dan bilangan parameterarg
bergantung kepada parameterFungsi callback.
arg
palsu
string, nombor, bool, objek, susunan, fungsi, semua jenis disokong oleh sistem, seperti nilai sifar
function main(){
var ticker = _C(exchange.GetTicker)
// Adjust _C() function retry interval to 2 seconds
_CDelay(2000)
var depth = _C(exchange.GetDepth)
Log(ticker)
Log(depth)
}
def main():
ticker = _C(exchange.GetTicker)
_CDelay(2000)
depth = _C(exchange.GetDepth)
Log(ticker)
Log(depth)
void main() {
auto ticker = _C(exchange.GetTicker);
_CDelay(2000);
auto depth = _C(exchange.GetDepth);
Log(ticker);
Log(depth);
}
Untuk fungsi toleransi ralat tanpa parameter:
function main(){
var records = _C(exchange.GetRecords, PERIOD_D1)
Log(records)
}
def main():
records = _C(exchange.GetRecords, PERIOD_D1)
Log(records)
void main() {
auto records = _C(exchange.GetRecords, PERIOD_D1);
Log(records);
}
Untuk fungsi dengan parameter yang toleransi ralat:
var test = function(a, b){
var time = new Date().getTime() / 1000
if(time % b == 3){
Log("Eligible!", "#FF0000")
return true
}
Log("Retry!", "#FF0000")
return false
}
function main(){
var ret = _C(test, 1, 5)
Log(ret)
}
import time
def test(a, b):
ts = time.time()
if ts % b == 3:
Log("Eligible!", "#FF0000")
return True
Log("Retry!", "#FF0000")
return False
def main():
ret = _C(test, 1, 5)
Log(ret)
// C++ does not support fault tolerance for custom functions in this way
Ia juga boleh digunakan untuk toleransi ralat fungsi tersuai:
Peraturan_C()
fungsi akan terus memanggil fungsi yang ditentukan sehingga ia kembali dengan berjaya (fungsi dirujuk oleh parameterpfn
pengembaliantiadaataupalsuApabila dipanggil akan cuba memanggil semulapfn
Sebagai contoh:_C(exchange.GetTicker)
. Jangkaan cubaan semula lalai adalah 3 saat, anda boleh memanggil_CDelay()
fungsi untuk menetapkan selang cubaan semula._CDelay(1000)
bermaksud untuk mengubah selang percubaan semula_C()
fungsi ke 1 saat.
Toleransi ralat boleh dilakukan untuk, tetapi tidak terhad kepada, fungsi berikut:
exchange.GetTicker()
exchange.GetDepth()
exchange.GetTrades()
exchange.GetRecords()
exchange.GetAccount()
exchange.GetOrders()
exchange.GetOrder()
exchange.GetPositions()
Semua boleh dipanggil oleh_C()
fungsi untuk toleransi ralat._C()
fungsi tidak terhad kepada toleransi kesalahan fungsi yang disenaraikan di atas, parameterpfn
adalah rujukan fungsi dan bukannya panggilan fungsi.
Perhatikan bahawa ia adalah_C(exchange.GetTicker)
, tidak_C(exchange.GetTicker())
.Mengembalikan bilangan tempoh persimpangan arrayarr1
dan susunanarr2
.
Bilangan tempoh silang arrayarr1
dan susunanarr2
.
nombor
_Silang ((arr1, arr2)
Elemen adalah pelbagai jenisnumber
.
arr1
betul
Array
Elemen adalah pelbagai jenisnumber
.
arr2
betul
Array
// Fast line indicator
var arr1 = [1,2,3,4,5,6,8,8,9]
// Slow line indicator
var arr2 = [2,3,4,5,6,7,7,7,7]
function main(){
Log("_Cross(arr1, arr2) : ", _Cross(arr1, arr2))
Log("_Cross(arr2, arr1) : ", _Cross(arr2, arr1))
}
arr1 = [1,2,3,4,5,6,8,8,9]
arr2 = [2,3,4,5,6,7,7,7,7]
def main():
Log("_Cross(arr1, arr2) : ", _Cross(arr1, arr2))
Log("_Cross(arr2, arr1) : ", _Cross(arr2, arr1))
void main() {
vector<double> arr1 = {1,2,3,4,5,6,8,8,9};
vector<double> arr2 = {2,3,4,5,6,7,7,7,7};
Log("_Cross(arr1, arr2) : ", _Cross(arr1, arr2));
Log("_Cross(arr2, arr1) : ", _Cross(arr2, arr1));
}
Satu set data boleh disimulasikan untuk menguji fungsi _Cross ((Arr1, Arr2):
Jika nilai pulangan_Cross()
fungsi adalah nombor positif, ia menunjukkan tempoh penembusan ke atas, jika ia adalah nombor negatif, ia menunjukkan tempoh penembusan ke bawah, 0 bermaksud sama dengan harga semasa.Analisis dan arahan penggunaan mengenai fungsi terbina dalam _Cross.
FungsiJSONParse()
digunakan untuk menganalisisJSON
strings.
JSON
objek.
objek
JSONParse (s)
JSON
tali.
s
betul
senar
function main() {
let s1 = '{"num": 8754613216564987646512354656874651651358}'
Log("JSON.parse:", JSON.parse(s1)) // JSON.parse: {"num":8.754613216564988e+39}
Log("JSONParse:", JSONParse(s1)) // JSONParse: {"num":"8754613216564987646512354656874651651358"}
let s2 = '{"num": 123}'
Log("JSON.parse:", JSON.parse(s2)) // JSON.parse: {"num":123}
Log("JSONParse:", JSONParse(s2)) // JSONParse: {"num":123}
}
import json
def main():
s1 = '{"num": 8754613216564987646512354656874651651358}'
Log("json.loads:", json.loads(s1)) # json.loads: map[num:8.754613216564987e+39]
Log("JSONParse:", JSONParse(s1)) # JSONParse: map[num:8754613216564987646512354656874651651358]
s2 = '{"num": 123}'
Log("json.loads:", json.loads(s2)) # json.loads: map[num:123]
Log("JSONParse:", JSONParse(s2)) # JSONParse: map[num:123]
void main() {
auto s1 = "{\"num\":8754613216564987646512354656874651651358}";
Log("json::parse:", json::parse(s1));
// Log("JSONParse:", JSONParse(s1)); // The function is not supported.
auto s2 = "{\"num\":123}";
Log("json::parse:", json::parse(s2));
// Log("JSONParse:", JSONParse(s2)); // The function is not supported.
}
JSON rentetan dengan nilai besar boleh dianalisis dengan betul, dan ia akan dianalisis nilai besar sebagai jenis rentetan.JSONParse()
fungsi tidak disokong dalam sistem backtest.
Log output.
Log ((...msgs)
Parametermsg
adalah kandungan output, dan parametermsg
boleh lulus lebih daripada satu.
msg
palsu
string, nombor, bool, objek, array, mana-mana jenis yang disokong oleh sistem seperti null.
function main() {
Log("msg1", "msg2", "msg3")
}
def main():
Log("msg1", "msg2", "msg3")
void main() {
Log("msg1", "msg2", "msg3");
}
Pelbagaimsg
parameter boleh lulus:
function main() {
Log("Hello, FMZ Quant!@")
Sleep(1000 * 5)
// Add #ff0000 to the string to print the log in red and push the message
Log("Hello, #ff0000@")
}
def main():
Log("Hello, FMZ Quant!@")
Sleep(1000 * 5)
Log("Hello, #ff0000@")
void main() {
Log("Hello, FMZ Quant!@");
Sleep(1000 * 5);
Log("Hello, #ff0000@");
}
Ia menyokong menetapkan warna output mesej, jika kita menggunakan warna dan tekan pada masa yang sama, kita perlu menetapkan warna pertama dan menggunakan@
Karakter untuk menetapkan dorongan terakhir.
function main() {
Log("`data:image/png;base64,AAAA`")
}
def main():
Log("`data:image/png;base64,AAAA`")
void main() {
Log("`data:image/png;base64,AAAA`");
}
PeraturanLog()
fungsi menyokong percetakanbase64
imej berkod, bermula dengan`
dan berakhir dengan`
Contohnya:
import matplotlib.pyplot as plt
def main():
plt.plot([3,6,2,4,7,1])
Log(plt)
PeraturanLog()
fungsi menyokong percetakan langsungPython
...matplotlib.pyplot
objek. Selagi objek mengandungisavefig
kaedah, ia boleh dicetak secara langsung menggunakanLog
fungsi, contohnya:
function main() {
Log("[trans]中文|abc[/trans]")
}
def main():
Log("[trans]中文|abc[/trans]")
void main() {
Log("[trans]中文|abc[/trans]");
}
PeraturanLog()
fungsi menyokong pertukaran bahasa.Log()
fungsi output teks yang akan beralih ke bahasa yang sepadan secara automatik berdasarkan tetapan bahasa pada halaman platform, contohnya:
PeraturanLog()
fungsi output mesej log di kawasan log perdagangan langsung atau sistem backtesting, dan log disimpan dalam pangkalan data perdagangan langsung apabila perdagangan langsung berjalan.Log()
fungsi output mesej log yang berakhir dengan@
Push ke alamat e-mel, alamat WebHook, dan lain-lain yang dikonfigurasikan dalamTekan TetapanPushing mesej tidak disokong olehAlat PenyempurnaanTerdapat had kekerapan untuk push mesej. Peraturan sekatan khusus adalah seperti berikut: dalam kitaran 20 saat perdagangan langsung, hanya mesej push terakhir yang akan dikekalkan dan ditekan, dan mesej lain akan disaring dan tidak ditekan (keluaran log push oleh fungsi Log akan dicetak dan dipaparkan secara normal di kawasan log).
UntukWebHook
push, anda boleh menggunakan program perkhidmatan yang ditulis olehGolang
:
package main
import (
"fmt"
"net/http"
)
func Handle (w http.ResponseWriter, r *http.Request) {
defer func() {
fmt.Println("req:", *r)
}()
}
func main () {
fmt.Println("listen http://localhost:9090")
http.HandleFunc("/data", Handle)
http.ListenAndServe(":9090", nil)
}
SetWebHook
dalamTekan Tetapan: http://XXX.XX.XXX.XX:9090/data?data=Hello_FMZ
.
Selepas menjalankan yang ditulisGolang
program perkhidmatan, kita mula menjalankan strategi perdagangan hidup, berikut adalah strategi yang ditulis dalamJavaScript
bahasa, strategi ini dijalankan dengan melaksanakanLog()
fungsi dan menolak mesej:
function main() {
Log("msg", "@")
}
Program perkhidmatan yang ditulis dalamGolang
bahasa menerima dorongan dan program perkhidmatan mencetak mesej:
listen http://localhost:9090
req: {GET /data?data=Hello_FMZ HTTP/1.1 1 1 map[User-Agent:[Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/xx.x.xxxx.xxx Safari/537.36] Accept-Encoding:[gzip]] {} <nil> 0 [] false 1XX.XX.X.XX:9090 map[] map[] <nil> map[] XXX.XX.XXX.XX:4xxx2 /data?data=Hello_FMZ <nil> <nil> <nil> 0xc420056300
{@fun/Log/LogReset LogReset}, {@fun/Log/LogVacuum LogVacuum}
Mencatatkan nilai P&L, cetak nilai P&L dan merangka kurva pulangan berdasarkan nilai P&L.
LogProfit (keuntungan) LogProfit ((laba,... args)
Parameterprofit
adalah data pendapatan, yang diberikan oleh algoritma reka bentuk dan pengiraan dalam strategi.
keuntungan
betul
nombor
Parameter yang diperluaskan untuk mengeluarkan maklumat kebetulan ke log pendapatan,arg
parameter boleh lulus lebih daripada satu.
arg
palsu
string, nombor, bool, objek, array, mana-mana jenis yang disokong oleh sistem seperti null.
function main() {
// Print 30 points on the earnings chart
for(var i = 0; i < 30; i++) {
LogProfit(i, '&')
Sleep(500)
}
}
def main():
for i in range(30):
LogProfit(i, '&')
Sleep(500)
void main() {
for(int i = 0; i < 30; i++) {
LogProfit(i, '&');
Sleep(500);
}
}
PeraturanLogProfit
fungsi, jika ia berakhir dengan watak&
, hanya membuat carta pendapatan dan tidak mencetak log pendapatan.
{@fun/Log/LogProfitReset LogProfitReset}
Hapuskan semua log pendapatan, carta pendapatan.
LogProfitReset (() LogProfitReset (bertahan)
Peraturanremain
Parameter digunakan untuk menentukan bilangan entri log (nilai bilangan bulat) untuk disimpan.
kekal
palsu
nombor
function main() {
// Print 30 points on the revenue chart, then reset and keep only the last 10 points
for(var i = 0; i < 30; i++) {
LogProfit(i)
Sleep(500)
}
LogProfitReset(10)
}
def main():
for i in range(30):
LogProfit(i)
Sleep(500)
LogProfitReset(10)
void main() {
for(int i = 0; i < 30; i++) {
LogProfit(i);
Sleep(500);
}
LogProfitReset(10);
}
{@fun/Log/LogProfit LogProfit}
Maklumat output dalam bar status sistem backtesting atau halaman perdagangan langsung.
LogStatus ((...msgs)
Parametermsg
adalah kandungan output, dan parametermsg
boleh lulus lebih daripada satu.
msg
palsu
string, nombor, bool, objek, array, mana-mana jenis yang disokong oleh sistem seperti null.
function main() {
LogStatus('This is a general status alert')
LogStatus('This is a status alert in red font #ff0000')
LogStatus('This is a multi-line status message \n I am the second line')
}
def main():
LogStatus('This is a general status alert')
LogStatus('This is a status alert in red font #ff0000')
LogStatus('This is a multi-line status message \n I am the second line')
void main() {
LogStatus("This is a general status alert");
LogStatus("This is a status alert in red font #ff0000");
LogStatus("This is a multi-line status message \n I am the second line");
}
Ia menyokong menetapkan warna kandungan output:
function main() {
var table = {type: 'table', title: 'Position information', cols: ['Column 1', 'Column 2'], rows: [ ['abc', 'def'], ['ABC', 'support color #ff0000']]}
// JSON serialization with the ` character on both sides, as a complex message format (support tables currently)
LogStatus('`' + JSON.stringify(table) + '`')
// Table information can also appear in multiple rows
LogStatus('First line of message\n`' + JSON.stringify(table) + '`\n third line of message')
// It supports multiple tables at the same time, will be displayed in a group with TAB
LogStatus('`' + JSON.stringify([table, table]) + '`')
// You can also construct a button in the form, and use the GetCommand strategy to receive the contents of the cmd attribute
var table = {
type: 'table',
title: 'Position operations',
cols: ['Column 1', 'Column 2', 'Action'],
rows: [
['abc', 'def', {'type':'button', 'cmd': 'coverAll', 'name': 'Close out positions'}]
]
}
LogStatus('`' + JSON.stringify(table) + '`')
// Or construct a separate button
LogStatus('`' + JSON.stringify({'type':'button', 'cmd': 'coverAll', 'name': 'Close out positions'}) + '`')
// Customizable button style (bootstrap's button attribute)
LogStatus('`' + JSON.stringify({'type':'button', 'class': 'btn btn-xs btn-danger', 'cmd': 'coverAll', 'name': 'Close out positions'}) + '`')
}
import json
def main():
table = {"type": "table", "title": "Position information", "cols": ["Column 1", "Column 2"], "rows": [["abc", "def"], ["ABC", "support color #ff0000"]]}
LogStatus('`' + json.dumps(table) + '`')
LogStatus('First line of message\n`' + json.dumps(table) + '`\n third line of message')
LogStatus('`' + json.dumps([table, table]) + '`')
table = {
"type" : "table",
"title" : "Position operations",
"cols" : ["Column 1", "Column 2", "Action"],
"rows" : [
["abc", "def", {"type": "button", "cmd": "coverAll", "name": "Close out positions"}]
]
}
LogStatus('`' + json.dumps(table) + '`')
LogStatus('`' + json.dumps({"type": "button", "cmd": "coverAll", "name": "Close out positions"}) + '`')
LogStatus('`' + json.dumps({"type": "button", "class": "btn btn-xs btn-danger", "cmd": "coverAll", "name": "Close out positions"}) + '`')
void main() {
json table = R"({"type": "table", "title": "Position information", "cols": ["Column 1", "Column 2"], "rows": [["abc", "def"], ["ABC", "support color #ff0000"]]})"_json;
LogStatus("`" + table.dump() + "`");
LogStatus("First line of message\n`" + table.dump() + "`\n third line of message");
json arr = R"([])"_json;
arr.push_back(table);
arr.push_back(table);
LogStatus("`" + arr.dump() + "`");
table = R"({
"type" : "table",
"title" : "Position operations",
"cols" : ["Column 1", "Column 2", "Action"],
"rows" : [
["abc", "def", {"type": "button", "cmd": "coverAll", "name": "Close out positions"}]
]
})"_json;
LogStatus("`" + table.dump() + "`");
LogStatus("`" + R"({"type": "button", "cmd": "coverAll", "name": "Close out positions"})"_json.dump() + "`");
LogStatus("`" + R"({"type": "button", "class": "btn btn-xs btn-danger", "cmd": "coverAll", "name": "Close out positions"})"_json.dump() + "`");
}
Contoh output data dalam bar status:
function main() {
var table = {
type: "table",
title: "status bar button style",
cols: ["default", "original", "success", "info", "warning", "danger"],
rows: [
[
{"type":"button", "class": "btn btn-xs btn-default", "name": "default"},
{"type":"button", "class": "btn btn-xs btn-primary", "name": "original"},
{"type":"button", "class": "btn btn-xs btn-success", "name": "success"},
{"type":"button", "class": "btn btn-xs btn-info", "name": "info"},
{"type":"button", "class": "btn btn-xs btn-warning", "name": "warning"},
{"type":"button", "class": "btn btn-xs btn-danger", "name": "danger"}
]
]
}
LogStatus("`" + JSON.stringify(table) + "`")
}
import json
def main():
table = {
"type": "table",
"title": "status bar button style",
"cols": ["default", "original", "success", "info", "warning", "danger"],
"rows": [
[
{"type":"button", "class": "btn btn-xs btn-default", "name": "default"},
{"type":"button", "class": "btn btn-xs btn-primary", "name": "original"},
{"type":"button", "class": "btn btn-xs btn-success", "name": "success"},
{"type":"button", "class": "btn btn-xs btn-info", "name": "info"},
{"type":"button", "class": "btn btn-xs btn-warning", "name": "warning"},
{"type":"button", "class": "btn btn-xs btn-danger", "name": "danger"}
]
]
}
LogStatus("`" + json.dumps(table) + "`")
void main() {
json table = R"({
"type": "table",
"title": "status bar button style",
"cols": ["default", "original", "success", "info", "warning", "danger"],
"rows": [
[
{"type":"button", "class": "btn btn-xs btn-default", "name": "default"},
{"type":"button", "class": "btn btn-xs btn-primary", "name": "original"},
{"type":"button", "class": "btn btn-xs btn-success", "name": "success"},
{"type":"button", "class": "btn btn-xs btn-info", "name": "info"},
{"type":"button", "class": "btn btn-xs btn-warning", "name": "warning"},
{"type":"button", "class": "btn btn-xs btn-danger", "name": "danger"}
]
]
})"_json;
LogStatus("`" + table.dump() + "`");
}
Ia menyokong untuk merancang kawalan butang dalam bar status (struktur butang lama):
function main() {
var table = {
type: "table",
title: "Status bar button disable, description function test",
cols: ["Column 1", "Column 2", "Column 3"],
rows: []
}
var button1 = {"type": "button", "name": "button1", "cmd": "button1", "description": "This is the first button"}
var button2 = {"type": "button", "name": "button2", "cmd": "button2", "description": "This is the second button, set to disabled", "disabled": true}
var button3 = {"type": "button", "name": "button3", "cmd": "button3", "description": "This is the third button, set to enable", "disabled": false}
table.rows.push([button1, button2, button3])
LogStatus("`" + JSON.stringify(table) + "`")
}
import json
def main():
table = {
"type": "table",
"title": "Status bar button disable, description function test",
"cols": ["Column 1", "Column 2", "Column 3"],
"rows": []
}
button1 = {"type": "button", "name": "button1", "cmd": "button1", "description": "This is the first button"}
button2 = {"type": "button", "name": "button2", "cmd": "button2", "description": "This is the second button, set to disabled", "disabled": True}
button3 = {"type": "button", "name": "button3", "cmd": "button3", "description": "This is the third button, set to enable", "disabled": False}
table["rows"].append([button1, button2, button3])
LogStatus("`" + json.dumps(table) + "`")
void main() {
json table = R"({
"type": "table",
"title": "Status bar button disable, description function test",
"cols": ["Column 1", "Column 2", "Column 3"],
"rows": []
})"_json;
json button1 = R"({"type": "button", "name": "button1", "cmd": "button1", "description": "This is the first button"})"_json;
json button2 = R"({"type": "button", "name": "button2", "cmd": "button2", "description": "This is the second button, set to disabled", "disabled": true})"_json;
json button3 = R"({"type": "button", "name": "button3", "cmd": "button3", "description": "This is the third button, set to enable", "disabled": false})"_json;
json arr = R"([])"_json;
arr.push_back(button1);
arr.push_back(button2);
arr.push_back(button3);
table["rows"].push_back(arr);
LogStatus("`" + table.dump() + "`");
}
Tetapkan tidak aktif, fungsi penerangan butang bar status (struktur butang lama):
function test1() {
Log("Calling custom functions")
}
function main() {
while (true) {
var table = {
type: 'table',
title: 'operation',
cols: ['column1', 'column2', 'Action'],
rows: [
['a', '1', {
'type': 'button',
'cmd': "CoverAll",
'name': 'Close out positions'
}],
['b', '1', {
'type': 'button',
'cmd': 10,
'name': 'Send values'
}],
['c', '1', {
'type': 'button',
'cmd': _D(),
'name': 'Calling functions'
}],
['d', '1', {
'type': 'button',
'cmd': 'test1',
'name': 'Calling custom functions'
}]
]
}
LogStatus(_D(), "\n", '`' + JSON.stringify(table) + '`')
var str_cmd = GetCommand()
if (str_cmd) {
Log("Received interaction data str_cmd:", "type:", typeof(str_cmd), "value:", str_cmd)
if(str_cmd == "test1") {
test1()
}
}
Sleep(500)
}
}
import json
def test1():
Log("Calling custom functions")
def main():
while True:
table = {
"type": "table",
"title": "operation",
"cols": ["column1", "column2", "Action"],
"rows": [
["a", "1", {
"type": "button",
"cmd": "CoverAll",
"name": "Close out positions"
}],
["b", "1", {
"type": "button",
"cmd": 10,
"name": "Send values"
}],
["c", "1", {
"type": "button",
"cmd": _D(),
"name": "Calling functions"
}],
["d", "1", {
"type": "button",
"cmd": "test1",
"name": "Calling custom functions"
}]
]
}
LogStatus(_D(), "\n", "`" + json.dumps(table) + "`")
str_cmd = GetCommand()
if str_cmd:
Log("Received interaction data str_cmd:", "type:", typeof(str_cmd), "value:", str_cmd)
if str_cmd == "test1":
test1()
Sleep(500)
void test1() {
Log("Calling custom functions");
}
void main() {
while(true) {
json table = R"({
"type": "table",
"title": "operation",
"cols": ["column1", "column2", "Action"],
"rows": [
["a", "1", {
"type": "button",
"cmd": "CoverAll",
"name": "Close out positions"
}],
["b", "1", {
"type": "button",
"cmd": 10,
"name": "Send values"
}],
["c", "1", {
"type": "button",
"cmd": "",
"name": "Calling functions"
}],
["d", "1", {
"type": "button",
"cmd": "test1",
"name": "Calling custom functions"
}]
]
})"_json;
table["rows"][2][2]["cmd"] = _D();
LogStatus(_D(), "\n", "`" + table.dump() + "`");
auto str_cmd = GetCommand();
if(str_cmd != "") {
Log("Received interaction data str_cmd:", "type:", typeof(str_cmd), "value:", str_cmd);
if(str_cmd == "test1") {
test1();
}
}
Sleep(500);
}
}
Dalam kombinasi denganGetCommand()
fungsi, membina fungsi interaksi butang bar status (struktur butang lama):
function main() {
var tbl = {
type: "table",
title: "operation",
cols: ["column1", "column2"],
rows: [
["Open position operation", {"type": "button", "cmd": "open", "name": "open position", "input": {"name": "number of open positions", "type": "number", "defValue": 1}}],
["Close position operation", {"type": "button", "cmd": "coverAll", "name": "close all positions"}]
]
}
LogStatus(_D(), "\n", "`" + JSON.stringify(tbl) + "`")
while (true) {
var cmd = GetCommand()
if (cmd) {
Log("cmd:", cmd)
}
Sleep(1000)
}
}
import json
def main():
tbl = {
"type": "table",
"title": "operation",
"cols": ["column1", "column2"],
"rows": [
["Open position operation", {"type": "button", "cmd": "open", "name": "open position", "input": {"name": "number of open positions", "type": "number", "defValue": 1}}],
["Close position operation", {"type": "button", "cmd": "coverAll", "name": "close all positions"}]
]
}
LogStatus(_D(), "\n", "`" + json.dumps(tbl) + "`")
while True:
cmd = GetCommand()
if cmd:
Log("cmd:", cmd)
Sleep(1000)
void main() {
json tbl = R"({
"type": "table",
"title": "operation",
"cols": ["column1", "column2"],
"rows": [
["Open position operation", {"type": "button", "cmd": "open", "name": "open position", "input": {"name": "number of open positions", "type": "number", "defValue": 1}}],
["Close position operation", {"type": "button", "cmd": "coverAll", "name": "close all positions"}]
]
})"_json;
LogStatus(_D(), "\n", "`" + tbl.dump() + "`");
while(true) {
auto cmd = GetCommand();
if(cmd != "") {
Log("cmd:", cmd);
}
Sleep(1000);
}
}
Data input juga disokong apabila membina butang bar status untuk interaksi, dan arahan interaksi ditangkap olehGetCommand()
fungsi akhirnya. Tambahinput
item (struktur butang lama) kepada struktur data kawalan butang dalam bar status, sebagai contoh, menambah"input": {"name": "number of open positions", "type": "number", "defValue": 1}
kepada{"type": "button", "cmd": "open", "name": "open position"}
akan menyebabkan popup dengan kawalan kotak input muncul apabila butang diklik (nilai lalai dalam kotak input adalah 1, yang merupakan data yang ditetapkan olehdefValue
Anda boleh memasukkan data yang akan dihantar bersama dengan perintah butang. Sebagai contoh, apabila kod ujian berikut dijalankan, selepas mengklik butang "open positionGetCommand()
fungsi akan kemudian menangkap mesej:open:111
.
function main() {
var tbl = {
type: "table",
title: "Demonstrate grouping button control",
cols: ["operation"],
rows: []
}
// Creating a grouping button control structure
var groupBtn = {
type: "button",
cmd: "open",
name: "open positions",
group: [
{"name": "orderType", "description": "下单方式|order type", "type": "selected", "defValue": "market order|pending order"},
{"name": "tradePrice@orderType==1", "description": "交易价格|trade price", "type": "number", "defValue": 100},
{"name": "orderAmount", "description": "委托数量|order amount", "type": "string", "defValue": 100},
{"name": "boolean", "description": "yes/no|boolean", "type": "boolean", "defValue": true}
]
}
// test button 1
var testBtn1 = {"type": "button", "name": "button1", "cmd": "button1", "description": "This is the first button."}
var testBtn2 = {"type": "button", "name": "button2", "cmd": "button2", "description": "This is the second button.", "input": {"name": "number of positions opened", "type": "number", "defValue": 1}}
// Add groupBtn to tbl
tbl.rows.push([groupBtn])
// It supports multiple buttons in a cell of a status bar table, i.e. the data in a cell is an array of button structures: [testBtn1, testBtn2].
tbl.rows.push([[testBtn1, testBtn2]])
while (true) {
LogStatus("`" + JSON.stringify(tbl) + "`", "\n", "The grouping button control can also be set directly on the status bar in addition to being set on the status bar form:", "`" + JSON.stringify(groupBtn) + "`")
var cmd = GetCommand()
if (cmd) {
Log("cmd:", cmd)
}
Sleep(5000)
}
}
import json
def main():
tbl = {
"type": "table",
"title": "Demonstrate grouping button control",
"cols": ["operation"],
"rows": []
}
groupBtn = {
"type": "button",
"cmd": "open",
"name": "open positions",
"group": [
{"name": "orderType", "description": "下单方式|order type", "type": "selected", "defValue": "market order|pending order"},
{"name": "tradePrice@orderType==1", "description": "交易价格|trade price", "type": "number", "defValue": 100},
{"name": "orderAmount", "description": "委托数量|order amount", "type": "string", "defValue": 100},
{"name": "boolean", "description": "yes/no|boolean", "type": "boolean", "defValue": True}
]
}
testBtn1 = {"type": "button", "name": "button1", "cmd": "button1", "description": "This is the first button."}
testBtn2 = {"type": "button", "name": "button2", "cmd": "button2", "description": "This is the second button.", "input": {"name": "number of positions opened", "type": "number", "defValue": 1}}
tbl["rows"].append([groupBtn])
tbl["rows"].append([[testBtn1, testBtn2]])
while True:
LogStatus("`" + json.dumps(tbl) + "`", "\n", "The grouping button control can also be set directly on the status bar in addition to being set on the status bar form:", "`" + json.dumps(groupBtn) + "`")
cmd = GetCommand()
if cmd:
Log("cmd:", cmd)
Sleep(5000)
void main() {
json tbl = R"({
"type": "table",
"title": "Demonstrate grouping button control",
"cols": ["operation"],
"rows": []
})"_json;
json groupBtn = R"({
"type": "button",
"name": "open positions",
"cmd": "open",
"group": [
{"name": "orderType", "description": "下单方式|order type", "type": "selected", "defValue": "market order|pending order"},
{"name": "tradePrice@orderType==1", "description": "交易价格|trade price", "type": "number", "defValue": 100},
{"name": "orderAmount", "description": "委托数量|order amount", "type": "string", "defValue": 100},
{"name": "boolean", "description": "yes/no|boolean", "type": "boolean", "defValue": true}
]})"_json;
json testBtn1 = R"({"type": "button", "name": "button1", "cmd": "button1", "description": "This is the first button."})"_json;
json testBtn2 = R"({"type": "button", "name": "button2", "cmd": "button2", "description": "This is the second button.", "input": {"name": "number of positions opened", "type": "number", "defValue": 1}})"_json;
tbl["rows"].push_back({groupBtn});
tbl["rows"].push_back({{testBtn1, testBtn2}});
while(true) {
LogStatus("`" + tbl.dump() + "`", "\n", "The grouping button control can also be set directly on the status bar in addition to being set on the status bar form:", "`" + groupBtn.dump() + "`");
auto cmd = GetCommand();
if(cmd != "") {
Log("cmd:", cmd);
}
Sleep(5000);
}
}
Ia menyokong untuk kawalan butang yang dikelompokkan (struktur butang lama), secara berfungsi konsisten denganbutang bar status yang menyokong kemasukan dataPerintah interaktif akhirnya ditangkap olehGetCommand()
Perbezaan adalah bahawa dengan"group"
tetapan medan, apabila butang diklik untuk mencetuskan interaksi, dialog yang muncul pada halaman mengandungi satu setkumpulankawalan input yang ditubuhkan untuk memasukkan sekumpulan data sekaligus.
Beberapa perkara yang perlu diperhatikan mengenai"group"
medan dalam struktur kawalan butang bar status dan kawalan butang kumpulan:
type
harta dalam kumpulan hanya menyokong empat jenis berikut, dandefValue
property adalah nilai lalai.
|
simbol untuk memisahkan setiap pilihan dalam kotak dropdown seperti yang ditetapkan.
"name": "tradePrice@orderType==1"
tetapan, yang menjadikanharga perdagangankawalan input hanya tersedia apabilaorderJeniskawalan drop-down dipilih sebagaiPerintah Terhad.|
simbol untuk memisahkan kandungan penerangan dalam bahasa Cina dan Inggeris.name
, description
dalam kumpulan danname
, description
dalam struktur butang tidak mempunyai definisi yang sama walaupun mereka mempunyai nama medan yang sama.
Definisiname
dalam kumpulan juga berbeza dari definisiname
dalam input.Log("cmd:", cmd)
pernyataan dalam ujian contoh berikut:cmd: open:{"orderType":1,"tradePrice":99,"orderAmount":"99","boolean":true}
, iaitu, apa yang dikembalikan olehGetCommand()
fungsi apabila interaksi berlaku:open:{"orderType":1,"tradePrice":99,"orderAmount":"99","boolean":true}
.type
sifat kawalan butang hanya menyokong:"button"
.
Pengendali butang yang menyokong data input, iaitu kawalan denganinput
set harta,type
harta dalam maklumat konfigurasiinput
medan menyokong pelbagai jenis kawalan.
Rujuk kepada contoh berikut:function main() {
// Status bar button control (set input field to implement) testBtn1 button triggered by the page in the drop-down box control using the options field to set options, using the defValue field to set the default options. This is different from the other examples in this chapter, which use defValue to set the options directly.
var testBtn1 = {
type: "button",
name: "testBtn1",
cmd: "cmdTestBtn1",
input: {name: "testBtn1ComboBox", type: "selected", options: ["A", "B"], defValue: 1}
}
/*
Status bar button control (set input field implementation) testBtn2 button triggered by the page in the drop-down box control using the options field to set the options, options field in the options field not only supports the string,
the use of the ```{text: "description", value: "value"}``` structure is also supported. Use the defValue field to set the default option, which can be multiple choice (multiple choice via array structure). Multiple choice requires setting the additional field multiple to a true value.
*/
var testBtn2 = {
type: "button",
name: "testBtn2",
cmd: "cmdTestBtn2",
input: {
name: "testBtn2MultiComboBox",
type: "selected",
description: "Implementing dropdown box multi-selection",
options: [{text: "Option A", value: "A"}, {text: "Option B", value: "B"}, {text: "Option C", value: "C"}],
defValue: ["A", "C"],
multiple: true
}
}
// Status bar grouping button control (set group field implementation) testBtn3 button triggered by the page in the drop-down box control using the options field to set options, also supports the direct use of defValue set options.
var testBtn3 = {
type: "button",
name: "testBtn3",
cmd: "cmdTestBtn3",
group: [
{name: "comboBox1", label: "labelComboBox1", description: "Dropdown box 1", type: "selected", defValue: 1, options: ["A", "B"]},
{name: "comboBox2", label: "labelComboBox2", description: "Dropdown box 2", type: "selected", defValue: "A|B"},
{name: "comboBox3", label: "labelComboBox3", description: "Dropdown box 3", type: "selected", defValue: [0, 2], multiple: true, options: ["A", "B", "C"]},
{
name: "comboBox4",
label: "labelComboBox4",
description: "Dropdown box 4",
type: "selected",
defValue: ["A", "C"],
multiple: true,
options: [{text: "Option A", value: "A"}, {text: "Option B", value: "B"}, {text: "Option C", value: "C"}, {text: "Option D", value: "D"}]
}
]
}
while (true) {
LogStatus("`" + JSON.stringify(testBtn1) + "`\n", "`" + JSON.stringify(testBtn2) + "`\n", "`" + JSON.stringify(testBtn3) + "`\n")
var cmd = GetCommand()
if (cmd) {
Log(cmd)
}
Sleep(5000)
}
}
import json
def main():
testBtn1 = {
"type": "button",
"name": "testBtn1",
"cmd": "cmdTestBtn1",
"input": {"name": "testBtn1ComboBox", "type": "selected", "options": ["A", "B"], "defValue": 1}
}
testBtn2 = {
"type": "button",
"name": "testBtn2",
"cmd": "cmdTestBtn2",
"input": {
"name": "testBtn2MultiComboBox",
"type": "selected",
"description": "Implementing dropdown box multi-selection",
"options": [{"text": "Option A", "value": "A"}, {"text": "Option B", "value": "B"}, {"text": "Option C", "value": "C"}],
"defValue": ["A", "C"],
"multiple": True
}
}
testBtn3 = {
"type": "button",
"name": "testBtn3",
"cmd": "cmdTestBtn3",
"group": [
{"name": "comboBox1", "label": "labelComboBox1", "description": "Dropdown box 1", "type": "selected", "defValue": 1, "options": ["A", "B"]},
{"name": "comboBox2", "label": "labelComboBox2", "description": "Dropdown box 2", "type": "selected", "defValue": "A|B"},
{"name": "comboBox3", "label": "labelComboBox3", "description": "Dropdown box 3", "type": "selected", "defValue": [0, 2], "multiple": True, "options": ["A", "B", "C"]},
{
"name": "comboBox4",
"label": "labelComboBox4",
"description": "Dropdown box 4",
"type": "selected",
"defValue": ["A", "C"],
"multiple": True,
"options": [{"text": "Option A", "value": "A"}, {"text": "Option B", "value": "B"}, {"text": "Option C", "value": "C"}, {"text": "Option D", "value": "D"}]
}
]
}
while True:
LogStatus("`" + json.dumps(testBtn1) + "`\n", "`" + json.dumps(testBtn2) + "`\n", "`" + json.dumps(testBtn3) + "`\n")
cmd = GetCommand()
if cmd:
Log(cmd)
Sleep(5000)
void main() {
json testBtn1 = R"({
"type": "button",
"name": "testBtn1",
"cmd": "cmdTestBtn1",
"input": {"name": "testBtn1ComboBox", "type": "selected", "options": ["A", "B"], "defValue": 1}
})"_json;
json testBtn2 = R"({
"type": "button",
"name": "testBtn2",
"cmd": "cmdTestBtn2",
"input": {
"name": "testBtn2MultiComboBox",
"type": "selected",
"description": "Implementing dropdown box multi-selection",
"options": [{"text": "Option A", "value": "A"}, {"text": "Option B", "value": "B"}, {"text": "Option C", "value": "C"}],
"defValue": ["A", "C"],
"multiple": true
}
})"_json;
json testBtn3 = R"({
"type": "button",
"name": "testBtn3",
"cmd": "cmdTestBtn3",
"group": [
{"name": "comboBox1", "label": "labelComboBox1", "description": "Dropdown box 1", "type": "selected", "defValue": 1, "options": ["A", "B"]},
{"name": "comboBox2", "label": "labelComboBox2", "description": "Dropdown box 2", "type": "selected", "defValue": "A|B"},
{"name": "comboBox3", "label": "labelComboBox3", "description": "Dropdown box 3", "type": "selected", "defValue": [0, 2], "multiple": true, "options": ["A", "B", "C"]},
{
"name": "comboBox4",
"label": "labelComboBox4",
"description": "Dropdown box 4",
"type": "selected",
"defValue": ["A", "C"],
"multiple": true,
"options": [{"text": "Option A", "value": "A"}, {"text": "Option B", "value": "B"}, {"text": "Option C", "value": "C"}, {"text": "Option D", "value": "D"}]
}
]
})"_json;
while (true) {
LogStatus("`" + testBtn1.dump() + "`\n", "`" + testBtn2.dump() + "`\n", "`" + testBtn3.dump() + "`\n");
auto cmd = GetCommand();
if (cmd != "") {
Log(cmd);
}
Sleep(5000);
}
}
Apabila butang bar status kumpulan kawalan (dilaksanakannya dengan menetapkangroup
medan) dan kawalan butang bar status (diwujudkan dengan menetapkaninput
medan) diklik untuk mencetuskan interaksi (struktur butang lama), kawalan kotak drop-down dalam kotak dialog yang muncul di halaman juga menyokong pelbagai pilihan. Contoh berikut menunjukkan cara merancang kawalan kotak drop-down dengan pelbagai pilihan pilihan:
var symbols = ["BTC_USDT.swap", "ETH_USDT.swap", "LTC_USDT.swap", "BNB_USDT.swap", "SOL_USDT.swap"]
function createBtn(tmp, group) {
var btn = JSON.parse(JSON.stringify(tmp))
_.each(group, function(eleByGroup) {
btn["group"].unshift(eleByGroup)
})
return btn
}
function main() {
var arrManager = []
_.each(symbols, function(symbol) {
arrManager.push({
"symbol": symbol,
})
})
// Btn
var tmpBtnOpen = {
"type": "button",
"cmd": "open",
"name": "Open a position and place an order",
"group": [{
"type": "selected",
"name": "tradeType",
"label": "Order type",
"description": "Market order, limit order",
"default": 0,
"group": "Trading setup",
"settings": {
"options": ["Market order", "Limit order"],
"required": true,
}
}, {
"type": "selected",
"name": "direction",
"label": "Trading direction",
"description": "Buy, sell",
"default": "buy",
"group": "Trading setup",
"settings": {
"render": "segment",
"required": true,
"options": [{"name": "buy", "value": "buy"}, {"name": "sell", "value": "sell"}],
}
}, {
"type": "number",
"name": "price",
"label": "price",
"description": "The price of the order",
"group": "Trading setup",
"filter": "tradeType==1",
"settings": {
"required": true,
}
}, {
"type": "number",
"name": "amount",
"label": "Order quantity",
"description": "Order quantity",
"group": "Trading setup",
"settings": {
"required": true,
}
}],
}
while (true) {
var tbl = {"type": "table", "title": "dashboard", "cols": ["symbol", "actionOpen"], "rows": []}
_.each(arrManager, function(m) {
var btnOpen = createBtn(tmpBtnOpen, [{"type": "string", "name": "symbol", "label": "Trading instruments", "default": m["symbol"], "settings": {"required": true}}])
tbl["rows"].push([m["symbol"], btnOpen])
})
var cmd = GetCommand()
if (cmd) {
Log("Receive interaction:", cmd)
// Parsing interaction messages: open:{"symbol":"LTC_USDT.swap","tradeType":0,"direction":"buy","amount":111}
// According to the first colon: the previous instruction determines which button template triggers the message
var arrCmd = cmd.split(":", 2)
if (arrCmd[0] == "open") {
var msg = JSON.parse(cmd.slice(5))
Log("Trading instruments:", msg["symbol"], ", Trading direction:", msg["direction"], ", Order type:", msg["tradeType"] == 0 ? "Market order" : "Limit order", msg["tradeType"] == 0 ? ", Order price: current market price" : ", Order price:" + msg["price"], ", Order quantity:", msg["amount"])
}
}
LogStatus(_D(), "\n", "`" + JSON.stringify(tbl) + "`")
Sleep(1000)
}
}
import json
symbols = ["BTC_USDT.swap", "ETH_USDT.swap", "LTC_USDT.swap", "BNB_USDT.swap", "SOL_USDT.swap"]
def createBtn(tmp, group):
btn = json.loads(json.dumps(tmp))
for eleByGroup in group:
btn["group"].insert(0, eleByGroup)
return btn
def main():
arrManager = []
for symbol in symbols:
arrManager.append({"symbol": symbol})
# Btn
tmpBtnOpen = {
"type": "button",
"cmd": "open",
"name": "Open a position and place an order",
"group": [{
"type": "selected",
"name": "tradeType",
"label": "Order type",
"description": "Market order, limit order",
"default": 0,
"group": "Trading setup",
"settings": {
"options": ["Market order", "Limit order"],
"required": True,
}
}, {
"type": "selected",
"name": "direction",
"label": "Trading direction",
"description": "Buy, sell",
"default": "buy",
"group": "Trading Setup",
"settings": {
"render": "segment",
"required": True,
"options": [{"name": "买入", "value": "buy"}, {"name": "卖出", "value": "sell"}],
}
}, {
"type": "number",
"name": "price",
"label": "price",
"description": "The price of the order",
"group": "Trading Setup",
"filter": "tradeType==1",
"settings": {
"required": True,
}
}, {
"type": "number",
"name": "amount",
"label": "Order quantity",
"description": "Order quantity",
"group": "Trading Setup",
"settings": {
"required": True,
}
}],
}
while True:
tbl = {"type": "table", "title": "dashboard", "cols": ["symbol", "actionOpen"], "rows": []}
for m in arrManager:
btnOpen = createBtn(tmpBtnOpen, [{"type": "string", "name": "symbol", "label": "交易品种", "default": m["symbol"], "settings": {"required": True}}])
tbl["rows"].append([m["symbol"], btnOpen])
cmd = GetCommand()
if cmd != "" and cmd != None:
Log("Receive interaction:", cmd)
# Parsing interaction messages: open:{"symbol":"LTC_USDT.swap","tradeType":0,"direction":"buy","amount":111}
# According to the first colon: the previous instruction determines which button template triggers the message
arrCmd = cmd.split(":")
if arrCmd[0] == "open":
msg = json.loads(cmd[5:])
Log("Trading instruments:", msg["symbol"], ", Trading direction:", msg["direction"], ", Order type:", "Market order" if msg["tradeType"] == 0 else "Limit order", ", Order price: current market price" if msg["tradeType"] == 0 else ", Order price:" + str(msg["price"]), ", Order quantity:", msg["amount"])
# Output status bar information
LogStatus(_D(), "\n", "`" + json.dumps(tbl) + "`")
Sleep(1000)
// Omit...
Gunakan struktur butang terkini untuk membina butang dalam jadual bar status. Apabila mengklik butang untuk mencetuskan interaksi, tetingkap pop-up pelbagai kawalan akan muncul. Untuk butiran lanjut, sila rujuk:Panduan Pengguna - Kawalan Interaktif dalam Bar Status.
function main() {
var table = {
type: 'table',
title: 'position operation',
cols: ['column1', 'column2', 'Action'],
rows: [
['abc', 'def', {'type':'button', 'cmd': 'coverAll', 'name': 'close positions'}]
]
}
var ticker = exchange.GetTicker()
// Add a row of data, merge the first and second cells, and output the ticker variable in the merged cell
table.rows.push([{body : JSON.stringify(ticker), colspan : 2}, "abc"])
LogStatus('`' + JSON.stringify(table) + '`')
}
import json
def main():
table = {
"type" : "table",
"title" : "position operation",
"cols" : ["column1", "column2", "Action"],
"rows" : [
["abc", "def", {"type": "button", "cmd": "coverAll", "name": "close positions"}]
]
}
ticker = exchange.GetTicker()
table["rows"].append([{"body": json.dumps(ticker), "colspan": 2}, "abc"])
LogStatus("`" + json.dumps(table) + "`")
void main() {
json table = R"({
"type" : "table",
"title" : "position operation",
"cols" : ["column1", "column2", "Action"],
"rows" : [
["abc", "def", {"type": "button", "cmd": "coverAll", "name": "close positions"}]
]
})"_json;
auto ticker = exchange.GetTicker();
json jsonTicker = R"({"Buy": 0, "Sell": 0, "High": 0, "Low": 0, "Volume": 0, "Last": 0, "Time": 0})"_json;
jsonTicker["Buy"] = ticker.Buy;
jsonTicker["Sell"] = ticker.Sell;
jsonTicker["Last"] = ticker.Last;
jsonTicker["Volume"] = ticker.Volume;
jsonTicker["Time"] = ticker.Time;
jsonTicker["High"] = ticker.High;
jsonTicker["Low"] = ticker.Low;
json arr = R"([{"body": {}, "colspan": 2}, "abc"])"_json;
arr[0]["body"] = jsonTicker;
table["rows"].push_back(arr);
LogStatus("`" + table.dump() + "`");
}
Gabungan mendatar sel dalam jadual yang dibuat olehLogStatus()
fungsi:
function main() {
var table = {
type: 'table',
title: 'table demo',
cols: ['columnA', 'columnB', 'columnC'],
rows: [
['A1', 'B1', {'type':'button', 'cmd': 'coverAll', 'name': 'C1'}]
]
}
var ticker = exchange.GetTicker()
var name = exchange.GetName()
table.rows.push([{body : "A2 + B2:" + JSON.stringify(ticker), colspan : 2}, "C2"])
table.rows.push([{body : "A3 + A4 + A5:" + name, rowspan : 3}, "B3", "C3"])
// A3 is merged by the first cell in the previous row
table.rows.push(["B4", "C4"])
// A2 is merged by the first cell of the previous row
table.rows.push(["B5", "C5"])
table.rows.push(["A6", "B6", "C6"])
LogStatus('`' + JSON.stringify(table) + '`')
}
import json
def main():
table = {
"type" : "table",
"title" : "table demo",
"cols" : ["columnA", "columnB", "columnC"],
"rows" : [
["A1", "B1", {"type": "button", "cmd": "coverAll", "name": "C1"}]
]
}
ticker = exchange.GetTicker()
name = exchange.GetName()
table["rows"].append([{"body": "A2 + B2:" + json.dumps(ticker), "colspan": 2}, "C2"])
table["rows"].append([{"body": "A3 + A4 + A5:" + name, "rowspan": 3}, "B3", "C3"])
table["rows"].append(["B4", "C4"])
table["rows"].append(["B5", "C5"])
table["rows"].append(["A6", "B6", "C6"])
LogStatus("`" + json.dumps(table) + "`")
void main() {
json table = R"({
"type" : "table",
"title" : "table demo",
"cols" : ["columnA", "columnB", "columnC"],
"rows" : [
["A1", "B1", {"type": "button", "cmd": "coverAll", "name": "C1"}]
]
})"_json;
// For testing purposes, the code is short and easy to read, and the constructed data is used here
json jsonTicker = R"({"High": 0, "Low": 0, "Buy": 0, "Sell": 0, "Last": 0, "Time": 0, "Volume": 0})"_json;
auto name = exchange.GetName();
json arr1 = R"([{"body": "", "colspan": 2}, "C2"])"_json;
arr1[0]["body"] = "A2 + B2:" + jsonTicker.dump();
json arr2 = R"([{"body": "", "rowspan": 3}, "B3", "C3"])"_json;
arr2[0]["body"] = "A3 + A4 + A5:" + name;
table["rows"].push_back(arr1);
table["rows"].push_back(arr2);
table["rows"].push_back(R"(["B4", "C4"])"_json);
table["rows"].push_back(R"(["B5", "C5"])"_json);
table["rows"].push_back(R"(["A6", "B6", "C6"])"_json);
LogStatus("`" + table.dump() + "`");
}
Secara menegak menggabungkan sel-sel dalam jadual yang digambar olehLogStatus()
fungsi:
function main() {
var table1 = {type: 'table', title: 'table1', cols: ['column1', 'column2'], rows: [ ['abc', 'def'], ['ABC', 'support color #ff0000']]}
var table2 = {type: 'table', title: 'table2', cols: ['column1', 'column2'], rows: [ ['abc', 'def'], ['ABC', 'support color #ff0000']]}
LogStatus('`' + JSON.stringify([table1, table2]) + '`')
}
import json
def main():
table1 = {"type": "table", "title": "table1", "cols": ["column1", "column2"], "rows": [ ["abc", "def"], ["ABC", "support color #ff0000"]]}
table2 = {"type": "table", "title": "table2", "cols": ["column1", "column2"], "rows": [ ["abc", "def"], ["ABC", "support color #ff0000"]]}
LogStatus("`" + json.dumps([table1, table2]) + "`")
void main() {
json table1 = R"({"type": "table", "title": "table1", "cols": ["column1", "column2"], "rows": [ ["abc", "def"], ["ABC", "support color #ff0000"]]})"_json;
json table2 = R"({"type": "table", "title": "table2", "cols": ["column1", "column2"], "rows": [ ["abc", "def"], ["ABC", "support color #ff0000"]]})"_json;
json arr = R"([])"_json;
arr.push_back(table1);
arr.push_back(table2);
LogStatus("`" + arr.dump() + "`");
}
Tampilan halaman jadual bar status:
function main(){
var tab1 = {
type : "table",
title : "table1",
cols : ["1", "2"],
rows : []
}
var tab2 = {
type : "table",
title : "table2",
cols : ["1", "2", "3"],
rows : []
}
var tab3 = {
type : "table",
title : "table3",
cols : ["A", "B", "C"],
rows : []
}
tab1.rows.push(["jack", "lucy"])
tab2.rows.push(["A", "B", "C"])
tab3.rows.push(["A", "B", "C"])
LogStatus('`' + JSON.stringify(tab1) + '`\n' +
'`' + JSON.stringify(tab2) + '`\n' +
'`' + JSON.stringify(tab3) + '`')
Log("exit")
}
import json
def main():
tab1 = {
"type": "table",
"title": "table1",
"cols": ["1", "2"],
"rows": []
}
tab2 = {
"type": "table",
"title": "table2",
"cols": ["1", "2", "3"],
"rows": []
}
tab3 = {
"type": "table",
"title": "table3",
"cols": ["A", "B", "C"],
"rows": []
}
tab1["rows"].append(["jack", "lucy"])
tab2["rows"].append(["A", "B", "C"])
tab3["rows"].append(["A", "B", "C"])
LogStatus("`" + json.dumps(tab1) + "`\n" +
"`" + json.dumps(tab2) + "`\n" +
"`" + json.dumps(tab3) + "`")
void main() {
json tab1 = R"({
"type": "table",
"title": "table1",
"cols": ["1", "2"],
"rows": []
})"_json;
json tab2 = R"({
"type": "table",
"title": "table2",
"cols": ["1", "2", "3"],
"rows": []
})"_json;
json tab3 = R"({
"type": "table",
"title": "table3",
"cols": ["A", "B", "C"],
"rows": []
})"_json;
tab1["rows"].push_back(R"(["jack", "lucy"])"_json);
tab2["rows"].push_back(R"(["A", "B", "C"])"_json);
tab3["rows"].push_back(R"(["A", "B", "C"])"_json);
LogStatus("`" + tab1.dump() + "`\n" +
"`" + tab2.dump() + "`\n" +
"`" + tab3.dump() + "`");
}
Selain memaparkan jadual dalam halaman, pelbagai jadual juga boleh dipaparkan dalam susunan dari atas ke bawah:
function main() {
var tbl = {
type : "table",
title : "test scroll",
scroll : "auto",
cols : ["col 0", "col 1", "col 2", "col 3", "col 4", "col 5", "col 6", "col 7", "col 8", "col 9", "col 10",
"col 11", "col 12", "col 13", "col 14", "col 15", "col 16", "col 17", "col 18", "col 19", "col 20"],
rows : []
}
for (var i = 1 ; i < 100 ; i++) {
tbl.rows.push([i, "1," + i, "2," + i, "3," + i, "4," + i, "5," + i, "6," + i, "7," + i, "8," + i, "9," + i, "10," + i,
"11," + i, "12," + i, "13," + i, "14," + i, "15," + i, "16," + i, "17," + i, "18," + i, "19," + i, "20," + i])
}
LogStatus("`" + JSON.stringify(tbl) + "`")
}
import json
def main():
tbl = {
"type" : "table",
"title" : "test scroll",
"scroll" : "auto",
"cols" : ["col 0", "col 1", "col 2", "col 3", "col 4", "col 5", "col 6", "col 7", "col 8", "col 9", "col 10",
"col 11", "col 12", "col 13", "col 14", "col 15", "col 16", "col 17", "col 18", "col 19", "col 20"],
"rows" : []
}
for index in range(1, 100):
i = str(index)
tbl["rows"].append([i, "1," + i, "2," + i, "3," + i, "4," + i, "5," + i, "6," + i, "7," + i, "8," + i, "9," + i, "10," + i,
"11," + i, "12," + i, "13," + i, "14," + i, "15," + i, "16," + i, "17," + i, "18," + i, "19," + i, "20," + i])
LogStatus("`" + json.dumps(tbl) + "`")
void main() {
json table = R"({
"type" : "table",
"title" : "test scroll",
"scroll" : "auto",
"cols" : ["col 0", "col 1", "col 2", "col 3", "col 4", "col 5", "col 6", "col 7", "col 8", "col 9", "col 10",
"col 11", "col 12", "col 13", "col 14", "col 15", "col 16", "col 17", "col 18", "col 19", "col 20"],
"rows" : []
})"_json;
for (int index = 1; index < 100; ++index) {
std::string i = std::to_string(index);
table["rows"].push_back({i, "1," + i, "2," + i, "3," + i, "4," + i, "5," + i, "6," + i, "7," + i, "8," + i, "9," + i, "10," + i,
"11," + i, "12," + i, "13," + i, "14," + i, "15," + i, "16," + i, "17," + i, "18," + i, "19," + i, "20," + i});
}
LogStatus("`" + table.dump() + "`");
}
Sokongan untuk menetapkan mod gulungan mendatar dan menegak jadual bar status.scroll
atribut kepada"auto"
, apabila bilangan baris menegak jadual bar status melebihi 20 baris, kandungan akan digulung.scroll
atribut boleh digunakan untuk mengurangkan masalah keterlambatan menulis sejumlah besar data dalam bar status semasa perdagangan langsung.
Keluaran maklumat dariLogStatus()
fungsi apabila perdagangan langsung berjalan tidak disimpan ke pangkalan data perdagangan langsung, tetapi ia mengemas kini bar status perdagangan langsung semasa sahaja.
PerkhidmatanLogStatus()
fungsi menyokong percetakanbase64
imej berkod, bermula dengan`
dan berakhir dengan`
Contohnya:LogStatus("`data:image/png;base64,AAAA`")
.
PeraturanLogStatus()
fungsi menyokong lulusmatplotlib.pyplot
objek terus ke dalamPython
, selagi objek itu mengandungisavefig
kaedah, ia boleh dihantar sebagai parameter kepadaLogStatus()
fungsi, contohnya:
import matplotlib.pyplot as plt
def main():
plt.plot([3,6,2,4,7,1])
LogStatus(plt)
Apabila strategi berjalan perdagangan langsung, jika anda pergi melalui sejarah pada halaman perdagangan langsung, bar status akan tidur dan berhenti mengemas kini. Hanya data bar status akan disegerakan apabila log berada di halaman pertama. Ia menyokong outputbase64
gambar dikodkan dalam bar status, dan ia juga menyokong outputbase64
Gambar yang dikodkan dalam jadual yang dipaparkan dalam bar status. Oleh kerana data rentetan gambar yang dikodkan biasanya sangat panjang, kod sampel tidak ditunjukkan.
{@fun/Global/GetCommand GetCommand}
Menghidupkan atau mematikan pendaftaran maklumat pesanan.
EnableLog ((aktifkan)
Jikaenable
parameter ditetapkan kepada nilai palsu, contohnyafalse
, log pesanan (iaitu log yang dihasilkan oleh fungsi sepertiexchange.Buy()
) tidak dicetak dan tidak ditulis ke pangkalan data perdagangan langsung.
membolehkan
betul
bool
function main() {
EnableLog(false)
}
def main():
EnableLog(False)
void main() {
EnableLog(false);
}
{@fun/Trade/exchange.Buy exchange.Buy}, {@fun/Trade/exchange.Sell exchange.Sell}, {@fun/Trade/exchange.CancelOrder exchange.CancelOrder}
Sesuaikan fungsi lukisan carta.
Objek carta. objek
Jadual (pilihan)
Peraturanoptions
parameter adalah konfigurasi carta.Chart()
parameter fungsioptions
adalahJSON
boleh diserialisasikanHighStocks
parameter untukHighcharts.StockChart
. Satu tambahan__isStock
atribut ditambah di atas parameter asli, dan jika__isStock:false
Jika grafik yang ditetapkan, ia dipaparkan sebagai carta biasa.__isStock
atribut ditetapkan kepada nilai palsu e.g.false
, iaitu carta yang digunakan adalahHighcharts
Jika__isStock
atribut ditetapkan kepada nilai benar e.g.true
, iaitu carta yang digunakan adalahHighstocks
carta (secara lalai__isStock
adalah benar contohnyatrue
) Anda boleh menyoalPerpustakaan carta HighStocks.
pilihan
betul
objek, barisan objek
function main() {
var cfgA = {
extension: {
layout: 'single', // No grouping, display separately, default to group 'group'
height: 300, // Specify the height
},
title: {
text: 'handicap chart'
},
xAxis: {
type: 'datetime'
},
series: [{
name: 'buy one',
data: [],
}, {
name: 'sell one',
data: [],
}]
}
var cfgB = {
title: {
text: 'spread chart'
},
xAxis: {
type: 'datetime'
},
series: [{
name: 'spread',
type: 'column',
data: [],
}]
}
var cfgC = {
__isStock: false,
title: {
text: 'pie chart'
},
series: [{
type: 'pie',
name: 'one',
data: [
["A", 25],
["B", 25],
["C", 25],
["D", 25],
] // Instead of updating the initial data with the add function, the sequence can be updated by changing the chart configuration directly.
}]
};
var cfgD = {
extension: {
layout: 'single',
col: 8, // Specify the cell value for the width, the total value is 12
height: '300px',
},
title: {
text: 'handicap chart'
},
xAxis: {
type: 'datetime'
},
series: [{
name: 'buy one',
data: [],
}, {
name: 'sell one',
data: [],
}]
}
var cfgE = {
__isStock: false,
extension: {
layout: 'single',
col: 4,
height: '300px',
},
title: {
text: 'pie chart2'
},
series: [{
type: 'pie',
name: 'one',
data: [
["A", 25],
["B", 25],
["C", 25],
["D", 25],
]
}]
};
var chart = Chart([cfgA, cfgB, cfgC, cfgD, cfgE]);
chart.reset()
// Add a number of points to the pie chart, add can only update the data points added by add, built-in data points cannot be updated later.
chart.add(3, {
name: "ZZ",
y: Math.random() * 100
});
while (true) {
Sleep(1000)
var ticker = exchange.GetTicker()
if (!ticker) {
continue;
}
var diff = ticker.Sell - ticker.Buy
cfgA.subtitle = {
text: 'buy one ' + ticker.Buy + ', sell one ' + ticker.Sell,
};
cfgB.subtitle = {
text: 'spread ' + diff,
};
chart.add([0, [new Date().getTime(), ticker.Buy]]);
chart.add([1, [new Date().getTime(), ticker.Sell]]);
// Equivalent to updating the first data series of the second chart
chart.add([2, [new Date().getTime(), diff]]);
chart.add(4, [new Date().getTime(), ticker.Buy]);
chart.add(5, [new Date().getTime(), ticker.Buy]);
cfgC.series[0].data[0][1] = Math.random() * 100;
cfgE.series[0].data[0][1] = Math.random() * 100;
// update is actually the same as resetting the chart's configuration
chart.update([cfgA, cfgB, cfgC, cfgD, cfgE]);
}
}
import random
import time
def main():
cfgA = {
"extension" : {
"layout" : "single",
"height" : 300,
"col" : 8
},
"title" : {
"text" : "handicap chart"
},
"xAxis" : {
"type" : "datetime"
},
"series" : [{
"name" : "buy one",
"data" : []
}, {
"name" : "sell one",
"data" : []
}]
}
cfgB = {
"title" : {
"text" : "spread chart"
},
"xAxis" : {
"type" : "datetime",
},
"series" : [{
"name" : "spread",
"type" : "column",
"data" : []
}]
}
cfgC = {
"__isStock" : False,
"title" : {
"text" : "pie chart"
},
"series" : [{
"type" : "pie",
"name" : "one",
"data" : [
["A", 25],
["B", 25],
["C", 25],
["D", 25],
]
}]
}
cfgD = {
"extension" : {
"layout" : "single",
"col" : 8,
"height" : "300px"
},
"title" : {
"text" : "handicap chart"
},
"series" : [{
"name" : "buy one",
"data" : []
}, {
"name" : "sell one",
"data" : []
}]
}
cfgE = {
"__isStock" : False,
"extension" : {
"layout" : "single",
"col" : 4,
"height" : "300px"
},
"title" : {
"text" : "pie chart2"
},
"series" : [{
"type" : "pie",
"name" : "one",
"data" : [
["A", 25],
["B", 25],
["C", 25],
["D", 25]
]
}]
}
chart = Chart([cfgA, cfgB, cfgC, cfgD, cfgE])
chart.reset()
chart.add(3, {
"name" : "ZZ",
"y" : random.random() * 100
})
while True:
Sleep(1000)
ticker = exchange.GetTicker()
if not ticker :
continue
diff = ticker["Sell"] - ticker["Buy"]
cfgA["subtitle"] = {
"text" : "buy one" + str(ticker["Buy"]) + "sell one" + str(ticker["Sell"])
}
cfgB["subtitle"] = {
"text" : "spread " + str(diff)
}
chart.add(0, [time.time() * 1000, ticker["Buy"]])
chart.add(1, [time.time() * 1000, ticker["Sell"]])
chart.add(2, [time.time() * 1000, diff])
chart.add(4, [time.time() * 1000, ticker["Buy"]])
chart.add(5, [time.time() * 1000, ticker["Buy"]])
cfgC["series"][0]["data"][0][1] = random.random() * 100
cfgE["series"][0]["data"][0][1] = random.random() * 100
void main() {
json cfgA = R"({
"extension" : {
"layout" : "single",
"height" : 300,
"col" : 8
},
"title" : {
"text" : "handicap chart"
},
"xAxis" : {
"type" : "datetime"
},
"series" : [{
"name" : "buy one",
"data" : []
}, {
"name" : "sell one",
"data" : []
}]
})"_json;
json cfgB = R"({
"title" : {
"text" : "spread chart"
},
"xAxis" : {
"type" : "datetime"
},
"series" : [{
"name" : "spread",
"type" : "column",
"data" : []
}]
})"_json;
json cfgC = R"({
"__isStock" : false,
"title" : {
"text" : "pie chart"
},
"series" : [{
"type" : "pie",
"name" : "one",
"data" : [
["A", 25],
["B", 25],
["C", 25],
["D", 25]
]
}]
})"_json;
json cfgD = R"({
"extension" : {
"layout" : "single",
"col" : 8,
"height" : "300px"
},
"title" : {
"text" : "handicap chart"
},
"series" : [{
"name" : "buy one",
"data" : []
}, {
"name" : "sell one",
"data" : []
}]
})"_json;
json cfgE = R"({
"__isStock" : false,
"extension" : {
"layout" : "single",
"col" : 4,
"height" : "300px"
},
"title" : {
"text" : "pie chart2"
},
"series" : [{
"type" : "pie",
"name" : "one",
"data" : [
["A", 25],
["B", 25],
["C", 25],
["D", 25]
]
}]
})"_json;
auto chart = Chart({cfgA, cfgB, cfgC, cfgD, cfgE});
chart.reset();
json zz = R"({
"name" : "ZZ",
"y" : 0
})"_json;
zz["y"] = rand() % 100;
chart.add(3, zz);
while(true) {
Sleep(1000);
auto ticker = exchange.GetTicker();
if(!ticker.Valid) {
continue;
}
auto diff = ticker.Sell - ticker.Buy;
json cfgASubTitle = R"({"text" : ""})"_json;
cfgASubTitle["text"] = format("buy one %f , sell one %f", ticker.Buy, ticker.Sell);
cfgA["subtitle"] = cfgASubTitle;
json cfgBSubTitle = R"({"text" : ""})"_json;
cfgBSubTitle["text"] = format("spread %f", diff);
cfgB["subtitle"] = cfgBSubTitle;
chart.add(0, {Unix() * 1000, ticker.Buy});
chart.add(1, {Unix() * 1000, ticker.Sell});
chart.add(2, {Unix() * 1000, diff});
chart.add(4, {Unix() * 1000, ticker.Buy});
chart.add(5, {Unix() * 1000, ticker.Buy});
cfgC["series"][0]["data"][0][1] = rand() % 100;
cfgE["series"][0]["data"][0][1] = rand() % 100;
chart.update({cfgA, cfgB, cfgC, cfgD, cfgE});
}
}
Konfigurasi lukisan pelbagai carta:
extension.layout
atribut
Jika atribut ditetapkan dengan nilai extension.height
atribut
Atribut ini digunakan untuk menetapkan ketinggian carta, sama ada sebagai nilai numerik, atau sebagai extension.col
atribut
Atribut ini digunakan untuk menetapkan lebar carta, lebar halaman dibahagikan kepada 12 sel, set 8, iaitu, carta menduduki lebar 8 sel.// This chart is an object in the JavaScript language, and before using the Chart function, we need to declare an object variable chart to configure the chart. var chart = {
// This field marks whether the chart is a general chart or not, if you are interested, you can change it to false and run it.
__isStock: true,
// Scaling tool
tooltip: {xDateFormat: '%Y-%m-%d %H:%M:%S, %A'},
// title
title : { text : 'spread analysis chart'},
// selection range
rangeSelector: {
buttons: [{type: 'hour',count: 1, text: '1h'}, {type: 'hour',count: 3, text: '3h'}, {type: 'hour', count: 8, text: '8h'}, {type: 'all',text: 'All'}],
selected: 0,
inputEnabled: false
},
// Coordinate axis horizontal axis that is: x-axis, the current setting type is: time
xAxis: { type: 'datetime'},
// Coordinate axis vertical axis that is: y-axis, default value adjusted with the size of the data
yAxis : {
// title
title: {text: 'spread'},
// Whether to enable the right vertical axis
opposite: false
},
// Data series, this sttribute holds the individual data series (lines, K-charts, labels, etc...)
series : [
// The index is 0, and the data array holds the data of the index series
{name : "line1", id : "line1,buy1Price", data : []},
// Index is 1, set dashStyle:'shortdash' i.e.: set the dashed line
{name : "line2", id : "line2,lastPrice", dashStyle : 'shortdash', data : []}
]
} function main(){
// Call the Chart function to initialize the chart
var ObjChart = Chart(chart)
// Clear out
ObjChart.reset()
while(true){
// Gets the timestamp of this poll, i.e. a millisecond timestamp. It's used to determine the position of the X-axis written to the chart.
var nowTime = new Date().getTime()
// Get the ticker data
var ticker = _C(exchange.GetTicker)
// Get buy one price from the return value of the ticker data
var buy1Price = ticker.Buy
// To obtain the final transaction price, we add 1 in order not to overlap the 2 lines
var lastPrice = ticker.Last + 1
// Data sequence with timestamp as X-value and buy one price as Y-value passed into index 0
ObjChart.add(0, [nowTime, buy1Price])
// ditto
ObjChart.add(1, [nowTime, lastPrice])
Sleep(2000)
}
}```
```python
import time
chart = {
"__isStock" : True,
"tooltip" : {"xDateFormat" : "%Y-%m-%d %H:%M:%S, %A"},
"title" : {"text" : "spread analysis chart"},
"rangeSelector" : {
"buttons" : [{"type": "count", "count": 1, "text": "1h"}, {"type": "hour", "count": 3, "text": "3h"}, {"type": "hour", "count": 8, "text": "8h"}, {"type": "all", "text": "All"}],
"selected": 0,
"inputEnabled": False
},
"xAxis": {"type": "datetime"},
"yAxis": {
"title": {"text": "spread"},
"opposite": False
},
"series": [{
"name": "line1", "id": "line1,buy1Price", "data": []
}, {
"name": "line2", "id": "line2,lastPrice", "dashStyle": "shortdash", "data": []
}]
}
def main():
ObjChart = Chart(chart)
ObjChart.reset()
while True:
nowTime = time.time() * 1000
ticker = exchange.GetTicker()
buy1Price = ticker["Buy"]
lastPrice = ticker["Last"] + 1
ObjChart.add(0, [nowTime, buy1Price])
ObjChart.add(1, [nowTime, lastPrice])
Sleep(2000)
void main() {
// When writing strategies in C++, try not to declare global variables that are not of the base type, so the chart configuration object is declared inside the main function.
json chart = R"({
"__isStock" : true,
"tooltip" : {"xDateFormat" : "%Y-%m-%d %H:%M:%S, %A"},
"title" : {"text" : "spread analysis chart"},
"rangeSelector" : {
"buttons" : [{"type": "count", "count": 1, "text": "1h"}, {"type": "hour", "count": 3, "text": "3h"}, {"type": "hour", "count": 8, "text": "8h"}, {"type": "all", "text": "All"}],
"selected": 0,
"inputEnabled": false
},
"xAxis": {"type": "datetime"},
"yAxis": {
"title": {"text": "spread"},
"opposite": false
},
"series": [{
"name": "line1", "id": "line1,buy1Price", "data": []
}, {
"name": "line2", "id": "line2,lastPrice", "dashStyle": "shortdash", "data": []
}]
})"_json;
auto ObjChart = Chart(chart);
ObjChart.reset();
while(true) {
auto nowTime = Unix() * 1000;
auto ticker = exchange.GetTicker();
auto buy1Price = ticker.Buy;
auto lastPrice = ticker.Last + 1.0;
ObjChart.add(0, {nowTime, buy1Price});
ObjChart.add(1, {nowTime, lastPrice});
Sleep(2000);
}
}
Contoh lukisan mudah:
// Objects used to initialize the chart
var chart = {
// Chart title
title: {text: "line value triggers the plotLines value"},
// Y-axis related settings
yAxis: {
// A horizontal line perpendicular to the Y-axis, used as a trigger line, is a structural array that can set multiple trigger lines
plotLines: [{
// The value of the trigger line, how much it set, this line will be displayed in the corresponding value position
value: 0,
// Set the color of the trigger line
color: 'red',
// Width
width: 2,
// Displaying labels
label: {
// Label text
text: 'Trigger value',
// Centered label position
align: 'center'
}
}]
},
// X-axis related settings, here the setting type is time axis
xAxis: {type: "datetime"},
series: [
{name: "sin", type: "spline", data: []},
// This is an important data series, you can set multiple data series, according to the array index control
{name: "cos", type: "spline", data: []}
]
}
function main(){
// Circumference
var pi = 3.1415926535897
// Variables for recording timestamps
var time = 0
// Angle
var angle = 0
// Coordinate y values for receiving sine and cosine values
var y = 0
// Call the API interface to initialize the chart with the chart object
var objChart = Chart(chart)
// Initially, clear the chart
objChart.reset()
// Set the value of the trigger line to 1
chart.yAxis.plotLines[0].value = 1
// Loop
while(true){
// Get the timestamp of the current moment
time = new Date().getTime()
// Angle increases by 5 degrees every 500ms and calculates the sine value
y = Math.sin(angle * 2 * pi / 360)
// Write the calculated y value to the data series of the corresponding index of the chart, the first parameter of the add function is the specified data series index
objChart.add(0, [time, y])
// Calculate the cosine value
y = Math.cos(angle * 2 * pi / 360)
objChart.add(1, [time, y])
// Increase by 5 degrees
angle += 5
// Pause for 5 seconds to avoid drawing too often and growing data too fast
Sleep(5000)
}
}
import math
import time
chart = {
"title": {"text": "line value triggers the plotLines value"},
"yAxis": {
"plotLines": [{
"value": 0,
"color": "red",
"width": 2,
"label": {
"text": "trigger value",
"align": "center"
}
}]
},
"xAxis": {"type": "datetime"},
"series": [{"name": "sin", "type": "spline", "data": []},
{"name": "cos", "type": "spline", "data": []}]
}
def main():
pi = 3.1415926535897
ts = 0
angle = 0
y = 0
objChart = Chart(chart)
objChart.reset()
chart["yAxis"]["plotLines"][0]["value"] = 1
while True:
ts = time.time() * 1000
y = math.sin(angle * 2 * pi / 360)
objChart.add(0, [ts, y])
y = math.cos(angle * 2 * pi / 360)
objChart.add(1, [ts, y])
angle += 5
Sleep(5000)
void main() {
json chart = R"({
"title": {"text": "line value triggers the plotLines value"},
"yAxis": {
"plotLines": [{
"value": 0,
"color": "red",
"width": 2,
"label": {
"text": "trigger value",
"align": "center"
}
}]
},
"xAxis": {"type": "datetime"},
"series": [{"name": "sin", "type": "spline", "data": []},
{"name": "cos", "type": "spline", "data": []}]
})"_json;
auto pi = 3.1415926535897;
auto ts = 0;
auto angle = 0.0;
auto y = 0.0;
auto objChart = Chart(chart);
objChart.reset();
chart["yAxis"]["plotLines"][0]["value"] = 1;
while(true) {
ts = Unix() * 1000;
y = sin(angle * 2 * pi / 360);
objChart.add(0, {ts, y});
y = cos(angle * 2 * pi / 360);
objChart.add(1, {ts, y});
angle += 5;
Sleep(5000);
}
}
Contoh lukisan lengkung trigonometri:
/*backtest
start: 2020-03-11 00:00:00
end: 2020-04-09 23:59:00
period: 1d
exchanges: [{"eid":"Bitfinex","currency":"BTC_USD"}]
*/
var chartCfg = {
subtitle: {
text: "subtitle",
},
yAxis: [{
height: "40%",
lineWidth: 2,
title: {
text: 'PnL',
},
tickPixelInterval: 20,
minorGridLineWidth: 1,
minorTickWidth: 0,
opposite: true,
labels: {
align: "right",
x: -3,
}
}, {
title: {
text: 'Profit',
},
top: "42%",
height: "18%",
offset: 0,
lineWidth: 2
}, {
title: {
text: 'Vol',
},
top: '62%',
height: '18%',
offset: 0,
lineWidth: 2
}, {
title: {
text: 'Asset',
},
top: '82%',
height: '18%',
offset: 0,
lineWidth: 2
}],
series: [{
name: 'PnL',
data: [],
id: 'primary',
tooltip: {
xDateFormat: '%Y-%m-%d %H:%M:%S'
},
yAxis: 0
}, {
type: 'column',
lineWidth: 2,
name: 'Profit',
data: [],
yAxis: 1,
}, {
type: 'column',
name: 'Trade',
data: [],
yAxis: 2
}, {
type: 'area',
step: true,
lineWidth: 0,
name: 'Long',
data: [],
yAxis: 2
}, {
type: 'area',
step: true,
lineWidth: 0,
name: 'Short',
data: [],
yAxis: 2
}, {
type: 'line',
step: true,
color: '#5b4b00',
name: 'Asset',
data: [],
yAxis: 3
}, {
type: 'pie',
innerSize: '70%',
name: 'Random',
data: [],
center: ['3%', '6%'],
size: '15%',
dataLabels: {
enabled: false
},
startAngle: -90,
endAngle: 90,
}],
};
function main() {
let c = Chart(chartCfg);
let preTicker = null;
while (true) {
let t = exchange.GetTicker();
c.add(0, [t.Time, t.Last]); // PnL
c.add(1, [t.Time, preTicker ? t.Last - preTicker.Last : 0]); // profit
let r = Math.random();
var pos = parseInt(t.Time/86400);
c.add(2, [t.Time, pos/2]); // Vol
c.add(3, [t.Time, r > 0.8 ? pos : null]); // Long
c.add(4, [t.Time, r < 0.8 ? -pos : null]); // Short
c.add(5, [t.Time, Math.random() * 100]); // Asset
// update pie
chartCfg.series[chartCfg.series.length-1].data = [
["A", Math.random()*100],
["B", Math.random()*100],
];
c.update(chartCfg)
preTicker = t;
}
}
'''backtest
start: 2020-03-11 00:00:00
end: 2020-04-09 23:59:00
period: 1d
exchanges: [{"eid":"Bitfinex","currency":"BTC_USD"}]
'''
import random
chartCfg = {
"subtitle": {
"text": "subtitle"
},
"yAxis": [{
"height": "40%",
"lineWidth": 2,
"title": {
"text": 'PnL'
},
"tickPixelInterval": 20,
"minorGridLineWidth": 1,
"minorTickWidth": 0,
"opposite": True,
"labels": {
"align": "right",
"x": -3
}
}, {
"title": {
"text": 'Profit'
},
"top": "42%",
"height": "18%",
"offset": 0,
"lineWidth": 2
}, {
"title": {
"text": 'Vol'
},
"top": '62%',
"height": '18%',
"offset": 0,
"lineWidth": 2
}, {
"title": {
"text": 'Asset'
},
"top": '82%',
"height": '18%',
"offset": 0,
"lineWidth": 2
}],
"series": [{
"name": 'PnL',
"data": [],
"id": 'primary',
"tooltip": {
"xDateFormat": '%Y-%m-%d %H:%M:%S'
},
"yAxis": 0
}, {
"type": 'column',
"lineWidth": 2,
"name": 'Profit',
"data": [],
"yAxis": 1
}, {
"type": 'column',
"name": 'Trade',
"data": [],
"yAxis": 2
}, {
"type": 'area',
"step": True,
"lineWidth": 0,
"name": 'Long',
"data": [],
"yAxis": 2
}, {
"type": 'area',
"step": True,
"lineWidth": 0,
"name": 'Short',
"data": [],
"yAxis": 2
}, {
"type": 'line',
"step": True,
"color": '#5b4b00',
"name": 'Asset',
"data": [],
"yAxis": 3
}, {
"type": 'pie',
"innerSize": '70%',
"name": 'Random',
"data": [],
"center": ['3%', '6%'],
"size": '15%',
"dataLabels": {
"enabled": False
},
"startAngle": -90,
"endAngle": 90
}]
}
def main():
c = Chart(chartCfg)
preTicker = None
while True:
t = exchange.GetTicker()
c.add(0, [t["Time"], t["Last"]])
profit = t["Last"] - preTicker["Last"] if preTicker else 0
c.add(1, [t["Time"], profit])
r = random.random()
pos = t["Time"] / 86400
c.add(2, [t["Time"], pos / 2])
long = pos if r > 0.8 else None
c.add(3, [t["Time"], long])
short = -pos if r < 0.8 else None
c.add(4, [t["Time"], short])
c.add(5, [t["Time"], random.random() * 100])
# update pie
chartCfg["series"][len(chartCfg["series"]) - 1]["data"] = [
["A", random.random() * 100],
["B", random.random() * 100]
]
c.update(chartCfg)
preTicker = t
/*backtest
start: 2020-03-11 00:00:00
end: 2020-04-09 23:59:00
period: 1d
exchanges: [{"eid":"Bitfinex","currency":"BTC_USD"}]
*/
void main() {
json chartCfg = R"({
"subtitle": {
"text": "subtitle"
},
"yAxis": [{
"height": "40%",
"lineWidth": 2,
"title": {
"text": "PnL"
},
"tickPixelInterval": 20,
"minorGridLineWidth": 1,
"minorTickWidth": 0,
"opposite": true,
"labels": {
"align": "right",
"x": -3
}
}, {
"title": {
"text": "Profit"
},
"top": "42%",
"height": "18%",
"offset": 0,
"lineWidth": 2
}, {
"title": {
"text": "Vol"
},
"top": "62%",
"height": "18%",
"offset": 0,
"lineWidth": 2
}, {
"title": {
"text": "Asset"
},
"top": "82%",
"height": "18%",
"offset": 0,
"lineWidth": 2
}],
"series": [{
"name": "PnL",
"data": [],
"id": "primary",
"tooltip": {
"xDateFormat": "%Y-%m-%d %H:%M:%S"
},
"yAxis": 0
}, {
"type": "column",
"lineWidth": 2,
"name": "Profit",
"data": [],
"yAxis": 1
}, {
"type": "column",
"name": "Trade",
"data": [],
"yAxis": 2
}, {
"type": "area",
"step": true,
"lineWidth": 0,
"name": "Long",
"data": [],
"yAxis": 2
}, {
"type": "area",
"step": true,
"lineWidth": 0,
"name": "Short",
"data": [],
"yAxis": 2
}, {
"type": "line",
"step": true,
"color": "#5b4b00",
"name": "Asset",
"data": [],
"yAxis": 3
}, {
"type": "pie",
"innerSize": "70%",
"name": "Random",
"data": [],
"center": ["3%", "6%"],
"size": "15%",
"dataLabels": {
"enabled": false
},
"startAngle": -90,
"endAngle": 90
}]
})"_json;
Chart c = Chart(chartCfg);
Ticker preTicker;
while(true) {
auto t = exchange.GetTicker();
c.add(0, {t.Time, t.Last});
auto profit = preTicker.Valid ? t.Last - preTicker.Last : 0;
c.add(1, {t.Time, profit});
auto r = rand() % 100;
auto pos = t.Time / 86400.0;
c.add(2, {t.Time, pos / 2.0});
auto longPos = r > 0.8 ? pos : NULL;
c.add(3, {t.Time, longPos});
auto shortPos = r < 0.8 ? -pos : NULL;
c.add(4, {t.Time, shortPos});
c.add(5, {t.Time, rand() % 100});
// update pie
json pie = R"([["A", 0], ["B", 0]])"_json;
pie[0][1] = rand() % 100;
pie[1][1] = rand() % 100;
chartCfg["series"][chartCfg["series"].size() - 1]["data"] = pie;
c.update(chartCfg);
preTicker = t;
}
}
Contoh kompleks penggunaan carta hibrid:
// update pie
chartCfg.series[chartCfg.series.length-1].data = [
["A", Math.random()*100],
["B", Math.random()*100],
];
c.update(chartCfg)
# update pie
chartCfg["series"][len(chartCfg["series"]) - 1]["data"] = [
["A", random.random() * 100],
["B", random.random() * 100]
]
c.update(chartCfg)
// update pie
json pie = R"([["A", 0], ["B", 0]])"_json;
pie[0][1] = rand() % 100;
pie[1][1] = rand() % 100;
chartCfg["series"][chartCfg["series"].size() - 1]["data"] = pie;
c.update(chartCfg);
Carta jenispie
adalah carta tanpa garis masa, dan anda perlu mengemas kini konfigurasi carta terus apabila mengemas kini data.c.update(chartCfg)
selepas mengemas kini data, seperti berikut:
PeraturanChart()
fungsi mengembalikan objek carta yang mempunyai 4 kaedah:add()
, reset()
, update()
, del()
.
update()
kaedah:
Peraturanupdate()
Metod ini boleh mengemas kini maklumat konfigurasi carta. Parameter kaedah ini adalah objek konfigurasi carta (JSON).del()
kaedah:
Peraturandel()
kaedah boleh memadam siri data indeks yang ditentukan berdasarkan parameter siri yang dilewatkan.add()
kaedah:
Peraturanadd()
kaedah boleh menulis data ke carta, dengan parameter berikut dalam urutan:series
: digunakan untuk menetapkan indeks siri data, yang merupakan bilangan bulat.data
: digunakan untuk menetapkan data tertentu untuk ditulis, ia adalah array.index
(pilihan): digunakan untuk menetapkan indeks data, ia adalah bilangan bulat.-1
merujuk kepada data terakhir dalam set data.
Sebagai contoh, apabila melukis garis, ubah data pada titik terakhir garis:chart.add(0, [1574993606000, 13.5], -1)
, iaitu, menukar data pada titik pertama penultimate cartaseries[0].data
.
Peraturanindex
parameter tidak ditetapkan, yang bermaksud bahawa data ditambahkan ke titik terakhir siri data semasa.reset()
kaedah:
Peraturanreset()
Kaedah ini digunakan untuk mengosongkan data carta.reset()
kaedah boleh mengambil parameterremain
untuk menentukan bilangan entri untuk menyimpan. Tiada parameterremain
telah diteruskan untuk membersihkan semua data.{@fun/Log/KLineChart KLineChart}
Fungsi ini digunakan untuk lukisan tersuai pada strategi runtime menggunakan kaedah lukisan yang serupa denganPine
language.
Objek carta.KLineChart()
fungsi mengembalikan objek carta dengan beberapa kaedah, di antaranya anda perlu memberi perhatian kepadabegin()
danclose()
Operasi lukisan mesti bermula denganbegin()
panggilan fungsi dan berakhir denganclose()
panggilan fungsi apabila melintasi data KLine untuk melakukan operasi lukisan.
objek
KLineChart (pilihan)
Peraturanoptions
parameter adalah konfigurasi carta.
pilihan
betul
objek, barisan objek
function main() {
// Call the KLineChart function to create a chart control object c
let c = KLineChart({
overlay: true
})
// Use the Spot Exchange object test to get K-line data. If you use the futures exchange object test, you need to set up the contract first.
let bars = exchange.GetRecords()
if (!bars) {
return
}
// Execute the drawing operation by traversing over the K-line data. The drawing operation must start with the ```c.begin(bar)``` function call and end with the ```c.close()``` function call.
bars.forEach(function(bar, index) {
c.begin(bar)
c.barcolor(bar.Close > bar.Open ? 'rgba(255, 0, 0, 0.2)' : 'rgba(0, 0, 0, 0.2)')
if (bar.Close > bar.Open) {
c.bgcolor('rgba(0, 255, 0, 0.5)')
}
let h = c.plot(bar.High, 'high')
let l = c.plot(bar.Low, 'low')
c.fill(h, l, {
color: bar.Close > bar.Open ? 'rgba(255, 0, 0, 0.2)' : 'rgba(255, 0, 0, 0.2)'
})
c.hline(bar.High)
c.plotarrow(bar.Close - bar.Open)
c.plotshape(bar.Low, {
style: 'diamond'
})
c.plotchar(bar.Close, {
char: 'X'
})
c.plotcandle(bar.Open*0.9, bar.High*0.9, bar.Low*0.9, bar.Close*0.9)
if (bar.Close > bar.Open) {
// long/short/closelong/closeshort
c.signal("long", bar.High, 1.5)
} else if (bar.Close < bar.Open) {
c.signal("closelong", bar.Low, 1.5)
}
c.close()
})
}
def main():
# Call the KLineChart function to create a chart control object c
c = KLineChart({
"overlay": True
})
# Use the Spot Exchange object test to get K-line data. If you use the futures exchange object test, you need to set up the contract first.
bars = exchange.GetRecords()
if not bars:
return
for bar in bars:
c.begin(bar)
c.barcolor('rgba(255, 0, 0, 0.2)' if bar.Close > bar.Open else 'rgba(0, 0, 0, 0.2)')
if bar.Close > bar.Open:
c.bgcolor('rgba(0, 255, 0, 0.5)')
h = c.plot(bar.High, 'high')
l = c.plot(bar.Low, 'low')
c.fill(h, l, 'rgba(255, 0, 0, 0.2)' if bar.Close > bar.Open else 'rgba(255, 0, 0, 0.2)')
c.hline(bar.High)
c.plotarrow(bar.Close - bar.Open)
c.plotshape(bar.Low, style = 'diamond')
c.plotchar(bar.Close, char = 'X')
c.plotcandle(bar.Open*0.9, bar.High*0.9, bar.Low*0.9, bar.Close*0.9)
if bar.Close > bar.Open:
# long/short/closelong/closeshort
c.signal("long", bar.High, 1.5)
elif bar.Close < bar.Open:
c.signal("closelong", bar.Low, 1.5)
c.close()
// Not supported for now
Jika objek kawalan carta diperlukan untuk menarik di kawasan lukisan adat strategi, gunakanKLineChart()
fungsi untuk mencipta objek. Parameter kepadaKLineChart()
fungsi adalah struktur konfigurasi carta, yang digunakan dalam kod rujukan adalah mudah:{overlay: true}
. Struktur konfigurasi carta ini hanya menetapkan kandungan lukisan untuk output pada carta utama.overlay
ditetapkan kepada nilai palsu, contohnyafalse
Jika anda perlu menentukan fungsi lukisan untuk menarik pada carta utama, anda juga boleh menentukan parameteroverlay
sebagai nilai sebenar dalam panggilan fungsi tertentu, contohnya:true
.
c.barcolor(bar.Close > bar.Open ? 'rgba(255, 0, 0, 0.2)' : 'rgba(0, 0, 0, 0.2)') // Use the example illustrated in the reference code in this example, without further ado
c.barcolor('rgba(255, 0, 0, 0.2)' if bar.Close > bar.Open else 'rgba(0, 0, 0, 0.2)')
// Not supported for now
Fungsi antara muka lukisanPine
Bahasa yang disokong dalam operasi penggambaran adalah:barcolor
, yang menetapkan warna K-garis.
barcolor ((warna, offset, boleh diedit, show_last, tajuk, paparan) Parameter paparan adalah pilihan:
tidak ada , semua
c.bgcolor('rgba(0, 255, 0, 0.5)')
c.bgcolor('rgba(0, 255, 0, 0.5)')
// Not supported for now
bgcolor
, mengisi latar belakang K-garis dengan warna yang ditentukan.
bgcolor ((warna, offset, boleh diedit, show_last, tajuk, paparan, overlay) Parameter paparan adalah pilihan:
tidak ada , semua
c.plot(bar.High, 'high')
c.plot(bar.Open < bar.Close ? NaN : bar.Close, "Close", {style: "linebr"}) // Support for drawing discontinuous data lines
h = c.plot(bar.High, 'high')
h = c.plot(None if bar.Open < bar.Close else bar.Close, "Close", style = "linebr") # Support for drawing discontinuous data lines
// Not supported for now
plot
, merangka siri data pada carta.
plot ((seri, tajuk, warna, lebar baris, gaya, trackprice, histbase, offset, join, boleh diedit, show_last, display) parameter gaya adalah pilihan:
stepline_diamond , stepline , cross , areabr , area , circles , columns , histogram , linebr , line Parameter paparan adalah pilihan: tidak ada , semua
let h = c.plot(bar.High, 'high')
let l = c.plot(bar.Low, 'low')
c.fill(h, l, {color: bar.Close > bar.Open ? 'rgba(255, 0, 0, 0.2)' : 'rgba(255, 0, 0, 0.2)'})
h = c.plot(bar.High, 'high')
l = c.plot(bar.Low, 'low')
c.fill(h, l, color = 'rgba(255, 0, 0, 0.2)' if bar.Close > bar.Open else 'rgba(255, 0, 0, 0.2)'})
// Not supported for now
fill
, mengisi latar belakang di antara dua plot atauhline
dengan warna yang disediakan.
isi ((haline1, hline2, warna, tajuk, boleh diedit, mengisi kekosongan, paparan) Parameter paparan adalah pilihan:
tidak ada , semua
SejakJavaScript
bahasa tidak boleh menentukan parameter masuk berdasarkan nama parameter formal fungsi, untuk menyelesaikan masalah ini, anda boleh menggunakan{key: value}
struktur untuk menentukan parameter yang akan diteruskan kepada nama parameter rasmi tertentu.
Sebagai contoh, kod rujukan menggunakan{color: bar.Close > bar.Open ? 'rgba(255, 0, 0, 0, 0.2)' : 'rgba(255, 0, 0, 0, 0.2)'}
Menentukancolor
parameterfill
fungsi.
Jika anda perlu menentukan beberapa parameter dengan nama parameter bentuk berturut-turut, anda boleh menggunakan{key1: value1, key2: value2, key3: value3}
.
Sebagai contoh, dalam contoh ini, tambahantitle
parameter ditentukan:{color: bar.Close > bar.Open ? 'rgba(255, 0, 0, 0, 0.2)' : 'rgba(255, 0, 0, 0, 0.2)', title: 'fill'}
.
Untuk nilai warna, anda boleh menetapkannya dengan'rgba(255, 0, 0, 0, 0.2)'
atau dengan'#FF0000'
.
c.hline(bar.High)
c.hline(bar.High)
// Not supported for now
hline
, garis mendatar ditunjukkan pada tahap harga tetap yang diberikan.
hline ((harga, tajuk, warna, gaya baris, lebar baris, boleh diedit, paparan) Parameter gaya garis adalah pilihan:
berdaun , bertitik , padat Parameter paparan adalah pilihan: tidak ada , semua
c.plotarrow(bar.Close - bar.Open)
c.plotarrow(bar.Close - bar.Open)
// Not supported for now
plotarrow
, merangkumi anak panah ke atas dan ke bawah pada carta.
Plotarrow ((seri, tajuk, colorup, colorordown, offset, minheight, maxheight, boleh diedit, show_last, display) Parameter paparan adalah pilihan:
tidak ada , semua
c.plotshape(bar.Low, {style: 'diamond'})
c.plotshape(bar.Low, style = 'diamond')
// Not supported for now
plotshape
, lukis bentuk visual pada carta.
plotshape ((seri, tajuk, gaya, lokasi, warna, offset, teks, textcolor, boleh diedit, saiz, show_last, paparan) parameter gaya adalah pilihan:
diamond size.autoadalah saiz kecil. Parameter paparan adalah pilihan:, square , label_down , label_up , arrow_down , arrow_up , circle , flag , triangle_down , triangle_up , cross , xcross Parameter lokasi adalah pilihan: bar atas , bar bawah , top , bottom , absolute parameter saiz adalah pilihan: 10px , 14px , 20px , 40px , 80px , membandingkan saiz.kecil, saiz.kecil, saiz.normal, saiz.besar, saiz.besar dalam bahasa Pine. tidak ada , semua
c.plotchar(bar.Close, {char: 'X'})
c.plotchar(bar.Close, char = 'X')
// Not supported for now
plotchar
, lukis bentuk visual pada carta menggunakan mana-mana watak Unicode yang diberikan.
plotchar ((seri, tajuk, char, lokasi, warna, offset, teks, warna teks, boleh diedit, saiz, show_last, paparan) parameter lokasi adalah pilihan:
abovebar size.autoadalah saiz kecil. Parameter paparan adalah pilihan:, belowbar , top , bottom , absolute parameter saiz adalah pilihan: 10px , 14px , 20px , 40px , 80px , membandingkan saiz.kecil, saiz.kecil, saiz.normal, saiz.besar, saiz.besar dalam bahasa Pine. tidak ada , semua
c.plotcandle(bar.Open*0.9, bar.High*0.9, bar.Low*0.9, bar.Close*0.9)
c.plotcandle(bar.Open*0.9, bar.High*0.9, bar.Low*0.9, bar.Close*0.9)
// Not supported for now
plotcandle
, merangka carta garis K pada carta.
plotcandle ((buka, tinggi, rendah, dekat, tajuk, warna, wickcolor, boleh diedit, show_last, bordercolor, paparan) Parameter paparan adalah pilihan:
tidak ada , semua
c.signal("long", bar.High, 1.5)
c.signal("long", bar.High, 1.5)
// Not supported for now
signal
, fungsi yang tidak tersedia pada bahasa Pine, digunakan untuk menarik isyarat beli dan jual di sini.
isyarat ((arah, harga, qty, id) Parameter
long dihantar untuk menunjukkan arah transaksi, anda boleh memilih long , closelong , short , closeshort . bar.High
adalah kedudukan paksi Y isyarat penanda. Parameter 1.5 yang dilewatkan menunjukkan bilangan transaksi isyarat. Parameter keempat boleh dilewatkan untuk menggantikan kandungan teks lalai yang digambar, dan teks lalai penanda isyarat yang digambar adalah arah transaksi, contohnyacloselong .
c.reset()
c.reset()
// Not supported for now
reset
, fungsi yang tidak tersedia pada bahasa Pine, digunakan untuk mengosongkan data carta.
Tetapkan semula (tetap) Peraturan
reset()
kaedah boleh mengambil satu parameter,remain
, untuk menentukan jumlah data yang perlu disimpan.remain
bermakna membasmi semua data.
Strategy imej tersuai hanya boleh menggunakan salah satu caraKLineChart()
fungsi atauChart()
Untuk beberapa warna dan gaya tetapan yang digunakan dalamKLineChart()
panggilan fungsi, sila rujuk kepadaGunakan fungsi KLineChart untuk membuat reka bentuk lukisan strategi lebih mudah.
{@fun/Log/Chart Chart}
Hapuskan log.
LogReset ((bertahan)
Peraturanremain
Parameter digunakan untuk menetapkan bilangan entri log baru-baru ini untuk disimpan.
kekal
palsu
nombor
function main() {
// Keep the last 10 logs and clear the rest
LogReset(10)
}
def main():
LogReset(10)
void main() {
LogReset(10);
}
Log permulaan untuk setiap permulaan strategi perdagangan langsung dikira sebagai satu, jadi jika tidak ada parameter yang diteruskan dan tidak ada output log pada permulaan strategi, tidak ada log akan dipaparkan sama sekali, menunggu log docker dikembalikan (bukan pengecualian).
{@fun/Log Log}, {@fun/Log/LogVacuum LogVacuum}
Digunakan untuk memulihkan ruang simpanan yang diduduki olehSQLiteapabila memadam data selepas memanggilLogReset()
Fungsi untuk membersihkan log.
LogVacuum ((()
function main() {
LogReset()
LogVacuum()
}
def main():
LogReset()
LogVacuum()
void main() {
LogReset()
LogVacuum()
}
Sebabnya ialahSQLite
tidak mengambil semula ruang yang diduduki apabila memadam data, dan ia perlu menjalankanVACUUM
untuk membersihkan jadual dan membebaskan ruang. operasi pemindahan fail berlaku apabila fungsi ini dipanggil, dan kelewatan adalah besar, jadi ia adalah disyorkan untuk memanggil pada selang masa yang sesuai.
{@fun/Log/LogReset LogReset}
Ia digunakan untuk mengeluarkan maklumat debugging dalam lajur 123456
, yangconsole.log
output fungsi debugging maklumat pada halaman perdagangan hidup, dan pada masa yang sama, membuat fail log dengan sambungan.log
dan menulis maklumat debugging dalam/logs/storage/123456/
dalam direktori pelabuhan yang mana perdagangan hidup milik, dengan awalan nama failstdout_
.
Console.log ((...msgs)
Parametermsg
adalah kandungan output, dan parametermsg
boleh lulus lebih daripada satu.
msg
palsu
rentetan, nombor, bool, objek, array, null dan jenis lain yang disokong oleh sistem.
function main() {
console.log("test console.log")
}
# Not supported
// Not supported
JavaScript
Bahasa menyokong fungsi ini.[object Object]
, jadi cuba output sebanyak mungkin maklumat yang boleh dibaca.{@fun/Log/console.errorconsole.error}
Digunakan untuk output ralat dalam medan 123456
, yangconsole.error
fungsi mencipta fail log dengan sambungan.log
dalam/logs/storage/123456/
direktori docker di mana perdagangan hidup milik, dan menulis output ralat dengan awalanstderr_
.
Console.error ((...msgs)
Parametermsg
adalah kandungan output, dan parametermsg
boleh lulus lebih daripada satu.
msg
palsu
rentetan, nombor, bool, objek, array, null dan jenis lain yang disokong oleh sistem.
function main() {
console.error("test console.error")
}
# Not supported
// Not supported
JavaScript
Bahasa menyokong fungsi ini.[object Object]
, jadi cuba output sebanyak mungkin maklumat yang boleh dibaca.{@fun/Log/console.log konsol.log}
Dapatkan struktur {@struct/Ticker Ticker} tempat atau kontrak yang sepadan dengan pasangan dagangan yang ditetapkan semasa, kod kontrak, iaitu data ticker.GetTicker ()
fungsi adalah fungsi ahli objek pertukaran {@var/EXCHANGE pertukaran}, penggunaanexchange
fungsi anggota objek (metod) hanya berkaitan denganexchange
, dan ia tidak akan diulangi dalam dokumen.
Peraturanexchange.GetTicker()
fungsi mengembalikan struktur {@struct/Ticker Ticker} apabila permintaan data berjaya, dan mengembalikan nilai null apabila permintaan data gagal.
{@struct/Ticker Ticker}, nilai sifar
pertukaran.GetTicker() pertukaran.GetTicker ((simbol)
Parametersymbol
digunakan untuk menentukan pasangan dagangan dan kod kontrak tertentu yang sepadan dengan data {@struct/Ticker Ticker} yang diminta. Jika parameter ini tidak diteruskan, data pasaran pasangan dagangan dan kod kontrak yang ditetapkan pada masa ini akan diminta secara lalai.
Apabila memanggilexchange.GetTicker(symbol)
fungsi,exchange
adalah objek pertukaran segera. Jika anda perlu meminta data pasaran dengan mata wang denominasi sebagai USDT dan mata wang perdagangan sebagai BTC, parametersymbol
ialah:"BTC_USDT"
, dan formatnya adalah format pasangan dagangan yang ditakrifkan oleh platform FMZ.
Apabila memanggilexchange.GetTicker(symbol)
fungsi,exchange
adalah objek pertukaran niaga hadapan. Jika anda perlu meminta data pasaran kontrak kekal standard U BTCsymbol
ialah:"BTC_USDT.swap"
, dan formatnya adalah gabunganPasangan dagangandanKod kontrakyang ditakrifkan oleh platform FMZ, dipisahkan oleh watak exchange.GetTicker(symbol)
fungsi,exchange
adalah objek pertukaran niaga hadapan. Jika anda perlu meminta data pasaran kontrak pilihan standard U BTCsymbol
ialah:"BTC_USDT.BTC-240108-40000-C"
(mengambil Binance Option BTC-240108-40000-C sebagai contoh), format adalah gabunganPasangan daganganyang ditakrifkan oleh platform FMZ dan kod kontrak opsyen khusus yang ditakrifkan oleh bursa, dipisahkan oleh watak
simbol palsu senar
function main(){
// If it is a futures exchange object, set the contract code first, e.g. set it as a perpetual contract
// exchange.SetContractType("swap")
var ticker = exchange.GetTicker()
/*
The exchange interface may not be accessible due to network reasons (even if the docker program's device can open the exchange website, the API interface may not be accessible).
At this point, the ticker is null, and it will cause an error when accessing ticker.High, so when testing this code, make sure that the exchange interface can be accessed.
*/
Log("Symbol:", ticker.Symbol, "High:", ticker.High, "Low:", ticker.Low, "Sell:", ticker.Sell, "Buy:", ticker.Buy, "Last:", ticker.Last, "Open:", ticker.Open, "Volume:", ticker.Volume)
}
def main():
ticker = exchange.GetTicker()
Log("Symbol:", ticker["Symbol"], "High:", ticker["High"], "Low:", ticker["Low"], "Sell:", ticker["Sell"], "Buy:", ticker["Buy"], "Last:", ticker["Last"], "Open:", ticker.Open, "Volume:", ticker["Volume"])
void main() {
auto ticker = exchange.GetTicker();
Log("Symbol:", ticker.Symbol, "High:", ticker.High, "Low:", ticker.Low, "Sell:", ticker.Sell, "Buy:", ticker.Buy, "Last:", ticker.Last, "Open:", ticker.Open, "Volume:", ticker.Volume);
}
Untuk objek pertukaran niaga hadapan (iaitu,exchange
atauexchanges[0]
), anda perlu menetapkan kod kontrak menggunakanexchange.SetContractType()
fungsi sebelum memanggil fungsi ticker, yang tidak akan diulangi.
function main() {
var ticker = exchange.GetTicker("BTC_USDT")
Log(ticker)
}
def main():
ticker = exchange.GetTicker("BTC_USDT")
Log(ticker)
void main() {
auto ticker = exchange.GetTicker("BTC_USDT");
Log(ticker);
}
Gunakansymbol
parameter untuk meminta data pasaran untuk simbol tertentu (simbol spot).
PeraturanTicker
data yang dikembalikan olehexchange.GetTicker()
fungsi dalam sistem backtesting.High
danLow
adalah nilai simulasi, diambil daripada satu jual dan membeli satu pasaran pada masa itu.Ticker
data yang dikembalikan olehexchange.GetTicker()
di mana mereka tidak mempunyai fungsi dalam pasaran sebenar.High
danLow
nilai adalah berdasarkan data yang dikembalikan oleh pertukaran terkapasTick
antara muka, yang merangkumi harga tertinggi dan terendah dalam tempoh tertentu (biasanya tempoh 24 jam).
Bursa yang tidak menyokongexchange.GetTicker()
fungsi:
Nama Fungsi | Pertukaran Spot yang tidak disokong | Pertukaran niaga hadapan tanpa sokongan |
---|---|---|
GetTicker | – | Futures_Aevo |
{@fun/Market/exchange.GetDepth exchange.GetDepth}, {@fun/Market/exchange.GetTrades exchange.GetTrades}, {@fun/Market/exchange.GetRecords exchange.GetRecords}, {@fun/Market/exchange.GetTickers exchange.GetTickers}
Dapatkan struktur {@struct/Depth Depth} tempat atau kontrak yang sepadan dengan pasangan dagangan yang ditetapkan pada masa ini, kod kontrak, iaitu data buku pesanan.
Peraturanexchange.GetDepth()
fungsi mengembalikan struktur {@struct/Depth Depth} jika permintaan data berjaya, dan ia mengembalikan null jika permintaan data gagal.
{@struct/Depth Depth}, nilai sifar
pertukaran.GetDepth() pertukaran.GetDepth ((simbol)
Parametersymbol
digunakan untuk menentukan pasangan dagangan tertentu dan kod kontrak yang sepadan dengan data {@struct/Depth Depth} yang diminta. Jika parameter ini tidak diteruskan, data buku pesanan pasangan dagangan yang ditetapkan dan kod kontrak akan diminta secara lalai.exchange.GetDepth(symbol)
fungsi,exchange
adalah objek pertukaran spot. Jika anda perlu meminta untuk mendapatkan data buku pesanan dengan mata wang yang diisytiharkan sebagai USDT dan mata wang transaksi sebagai BTC, parametersymbol
ialah:"BTC_USDT"
, dan format adalah format pasangan dagangan yang ditakrifkan oleh platform FMZ.exchange.GetDepth(symbol)
fungsi,exchange
adalah objek pertukaran niaga hadapan. Jika anda perlu meminta data buku pesanan kontrak kekal standard U BTCsymbol
ialah:"BTC_USDT.swap"
, dan formatnya adalah gabunganPasangan dagangandanKod kontrakditakrifkan oleh platform FMZ, dipisahkan oleh watak exchange.GetDepth(symbol)
fungsi,exchange
adalah objek pertukaran niaga hadapan. Jika anda perlu meminta data buku pesanan kontrak pilihan standard U BTCsymbol
ialah:"BTC_USDT.BTC-240108-40000-C"
(mengambil Binance Option BTC-240108-40000-C sebagai contoh), format adalah gabunganPasangan daganganyang ditakrifkan oleh platform FMZ dan kod kontrak opsyen khusus yang ditakrifkan oleh bursa, dipisahkan oleh watak
function main(){
var depth = exchange.GetDepth()
/*
The exchange interface may not be accessible due to network reasons (even if the docker program's device can open the exchange website, the API interface may not be accessible).
At this point, the depth is null, which will cause an error when accessing depth.Asks[1].Price, so make sure you can access the exchange interface when testing the code.
*/
var price = depth.Asks[1].Price
Log("Sell 2 price is:", price)
}
def main():
depth = exchange.GetDepth()
price = depth["Asks"][1]["Price"]
Log("Sell 2 price is:", price)
void main() {
auto depth = exchange.GetDepth();
auto price = depth.Asks[1].Price;
Log("Sell 2 price is:", price);
}
Ujianexchange.GetDepth()
fungsi:
function main() {
// BTC U-based perpetual contract
var depth = exchange.GetDepth("BTC_USDT.swap")
Log(depth)
}
def main():
depth = exchange.GetDepth("BTC_USDT.swap")
Log(depth)
void main() {
auto depth = exchange.GetDepth("BTC_USDT.swap");
Log(depth);
}
Apabila konfigurasiexchange
objek adalah objek pertukaran niaga hadapan, menggunakansymbol
parameter untuk meminta data buku pesanan simbol tertentu (simbol masa hadapan).
Dalam sistem backtesting, data untuk setiap gred dikembalikan olehexchange.GetDepth()
fungsi apabila menggunakanMeniru Tickdalam sistem backtesting, data yang dikembalikan olehexchange.GetDepth()
fungsi apabila menggunakanTick sebenarUjian balik adalah gambar mendalam peringkat kedua.
{@fun/Market/exchange.GetTicker exchange.GetTicker}, {@fun/Market/exchange.GetTrades exchange.GetTrades}, {@fun/Market/exchange.GetRecords exchange.GetRecords}
Dapatkan array struktur {@struct/Trade Trade} tempat atau kontrak yang sepadan dengan pasangan dagangan yang ditetapkan pada masa ini, kod kontrak, iaitu data urus niaga pasaran.
Peraturanexchange.GetTrades()
fungsi mengembalikan pelbagai struktur {@struct/Trade Trade} jika permintaan data berjaya, dan ia mengembalikan nilai sifar jika permintaan data gagal.
{@struct/Trade Trade} array, nilai sifar
pertukaran.GetTrades() pertukaran.GetTrades ((simbol)
Parametersymbol
digunakan untuk menentukan pasangan dagangan dan kod kontrak tertentu yang sepadan dengan data array {@struct/Trade Trade} yang diminta. Jika parameter ini tidak diteruskan, data rekod transaksi terkini pasangan dagangan dan kod kontrak yang ditetapkan pada masa ini akan diminta secara lalai.exchange.GetTrades(symbol)
fungsi,exchange
Jika anda perlu meminta untuk mendapatkan data buku pesanan dengan mata wang yang diisytiharkan sebagai USDT dan mata wang dagangan sebagai BTC, parametersymbol
ialah:"BTC_USDT"
, dan format adalah format pasangan dagangan yang ditakrifkan oleh platform FMZ.exchange.GetTrades(symbol)
fungsi,exchange
adalah objek pertukaran niaga hadapan. Jika anda perlu meminta data buku pesanan kontrak kekal standard U BTCsymbol
ialah:"BTC_USDT.swap"
, dan formatnya adalah gabunganPasangan dagangandanKod kontrakditakrifkan oleh platform FMZ, dipisahkan oleh watak exchange.GetTrades(symbol)
fungsi,exchange
adalah objek pertukaran niaga hadapan. Jika anda perlu meminta data buku pesanan kontrak pilihan standard U BTCsymbol
ialah:"BTC_USDT.BTC-240108-40000-C"
(mengambil Binance Option BTC-240108-40000-C sebagai contoh), format adalah gabunganPasangan daganganyang ditakrifkan oleh platform FMZ dan kod kontrak opsyen khusus yang ditakrifkan oleh bursa, dipisahkan oleh watak
function main(){
var trades = exchange.GetTrades()
/*
The exchange interface may not be accessible due to network reasons (even if the docker program's device can open the exchange website, the API interface may not be accessible).
At this point, trade is null. When accessing trade[0].Id, it will cause an error. Therefore, when testing this code, ensure that you can access the exchange interface.
*/
Log("id:", trades[0].Id, "time:", trades[0].Time, "Price:", trades[0].Price, "Amount:", trades[0].Amount, "type:", trades[0].Type)
}
def main():
trades = exchange.GetTrades()
Log("id:", trades[0]["Id"], "time:", trades[0]["Time"], "Price:", trades[0]["Price"], "Amount:", trades[0]["Amount"], "type:", trades[0]["Type"])
void main() {
auto trades = exchange.GetTrades();
Log("id:", trades[0].Id, "time:", trades[0].Time, "Price:", trades[0].Price, "Amount:", trades[0].Amount, "type:", trades[0].Type);
}
Ujiexchange.GetTrades()
fungsi:
function main() {
// BTC's U-based perpetual contract
var trades = exchange.GetTrades("BTC_USDT.swap")
Log(trades)
}
def main():
trades = exchange.GetTrades("BTC_USDT.swap")
Log(trades)
void main() {
auto trades = exchange.GetTrades("BTC_USDT.swap");
Log(trades);
}
Apabila konfigurasiexchange
objek adalah objek pertukaran niaga hadapan, menggunakansymbol
parameter untuk meminta data rekod transaksi pasaran untuk simbol tertentu (simbol niaga hadapan).
exchange.GetTrades()
fungsi untuk mendapatkan pasangan dagangan semasa, sejarah transaksi pasaran (bukan mereka sendiri) yang sepadan dengan kontrak. Sesetengah pertukaran tidak menyokong fungsi ini, dan data tertentu yang dikembalikan adalah berapa banyak daripada julat rekod transaksi bergantung pada pertukaran dan perlu ditangani mengikut keadaan tertentu.exchange.GetRecords ()
fungsi mengembalikan urutan data yang sama, iaitu, elemen terakhir array adalah data yang paling dekat dengan masa semasa.
Perkhidmatanexchange.GetTrades()
fungsi mengembalikan array kosong apabila menggunakanMeniru Tickdata yang dikembalikan oleh sistemexchange.GetTrades()
fungsi apabila digunakanTick sebenarbacktesting dalam sistem backtesting adalah data snapshot aliran pesanan, iaitu array struktur {@struct/Trade Trade}.
Bursa yang tidak menyokongexchange.GetTrades()
fungsi:
Nama Fungsi | Pertukaran Spot yang tidak disokong | Pertukaran niaga hadapan tanpa sokongan |
---|---|---|
GetTrades | – | Futures_BitMart / Futures_Bibox |
{@fun/Market/exchange.GetTicker exchange.GetTicker}, {@fun/Market/exchange.GetDepth exchange.GetDepth}, {@fun/Market/exchange.GetRecords exchange.GetRecords}
Dapatkan array struktur {@struct/Record Record} tempat atau kontrak yang sepadan dengan pasangan dagangan yang ditetapkan pada masa ini, kod kontrak, iaitu data K-line.
Peraturanexchange.GetRecords()
fungsi mengembalikan pelbagai struktur {@struct/Record Record} apabila permintaan data berjaya, dan ia mengembalikan nilai sifar apabila permintaan data gagal.
{@struct/Record Record} array, nilai sifar
pertukaran.GetRecords() pertukaran.GetRecords ((simbol) pertukaran.GetRecords ((simbol, titik) pertukaran.GetRecords ((simbol, tempoh, had) pertukaran.GetRecords ((periode) pertukaran.GetRecords ((periode, had)
Parametersymbol
digunakan untuk menentukan pasangan dagangan dan kod kontrak tertentu yang sepadan dengan data array {@struct/Record Record} yang diminta. Jika parameter ini tidak diteruskan, data K-line pasangan dagangan dan kod kontrak yang ditetapkan pada masa ini akan diminta secara lalai.exchange.GetRecords(symbol)
fungsi,exchange
adalah objek pertukaran segera. Jika anda perlu meminta untuk mendapatkan data dengan mata wang yang diisytiharkan sebagai USDT dan mata wang transaksi sebagai BTC, parametersymbol
ialah:"BTC_USDT"
, dan format adalah format pasangan dagangan yang ditakrifkan oleh platform FMZ.exchange.GetRecords(symbol)
fungsi,exchange
adalah objek pertukaran niaga hadapan. Jika anda perlu meminta data buku pesanan kontrak kekal standard U BTCsymbol
ialah:"BTC_USDT.swap"
, dan formatnya adalah gabunganPasangan dagangandanKod kontrakditakrifkan oleh platform FMZ, dipisahkan oleh watak exchange.GetRecords(symbol)
fungsi,exchange
adalah objek pertukaran niaga hadapan. Jika anda perlu meminta data buku pesanan kontrak pilihan standard U BTCsymbol
ialah:"BTC_USDT.BTC-240108-40000-C"
(mengambil Binance Option BTC-240108-40000-C sebagai contoh), format adalah gabunganPasangan daganganyang ditakrifkan oleh platform FMZ dan kod kontrak opsyen khusus yang ditakrifkan oleh bursa, dipisahkan oleh watak period
menentukan tempoh data garis K yang diminta, contohnya: {@var/PERIOD/PERIOD_M1 PERIOD_M1}, {@var/PERIOD/PERIOD_M5 PERIOD_M5}, {@var/PERIOD/PERIOD_M15 PERIOD_M15}, dan lain-lain. Nilai parameterperiod
boleh dilalui bukan sahaja tempoh standard yang ditakrifkan, tetapi juga nilai bulat dalam saat. Jika parameter ini tidak dilalui, tempoh data K-garis yang diminta secara lalai adalah tempoh K-garis lalai konfigurasi masa nyata / backtest strategi semasa.
tempoh
palsu
nombor
Parameterlimit
digunakan untuk menentukan panjang data K-line yang diminta. Jika parameter ini tidak dilewatkan, panjang permintaan lalai adalah bilangan bar K-line maksimum yang diminta pada satu masa antara muka pertukaran K-line. Parameter ini boleh menyebabkan paging untuk menyoal data pertukaran K-line, dan penggunaan masa panggilan fungsi akan meningkat semasa pertanyaan paging.
had
palsu
nombor
function main() {
// Print K-line data with a K-line period of 120 seconds (2 minutes)
Log(exchange.GetRecords(60 * 2))
// Print K-line data with a K-line period of 5 minutes
Log(exchange.GetRecords(PERIOD_M5))
}
def main():
Log(exchange.GetRecords(60 * 2))
Log(exchange.GetRecords(PERIOD_M5))
void main() {
Log(exchange.GetRecords(60 * 2)[0]);
Log(exchange.GetRecords(PERIOD_M5)[0]);
}
Dapatkan data K-line untuk tempoh khusus.
function main() {
var records = exchange.GetRecords(PERIOD_H1)
/*
The exchange interface may not be accessible due to network reasons (even if the docker program's device can open the exchange website, the API interface may not be accessible).
At this point, records is null. When accessing records[0].Time, it will cause an error. Therefore, when testing this code, ensure that you can access the exchange interface.
*/
Log("The first k-line data is Time:", records[0].Time, "Open:", records[0].Open, "High:", records[0].High)
Log("The second k-line data is Time:", records[1].Time ,"Close:", records[1].Close)
Log("Current K-line (latest)", records[records.length-1], "Previous K-line", records[records.length-2])
}
def main():
records = exchange.GetRecords(PERIOD_H1)
Log("The first k-line data is Time:", records[0]["Time"], "Open:", records[0]["Open"], "High:", records[0]["High"])
Log("The second k-line data Time:", records[1]["Time"], "Close:", records[1]["Close"])
Log("Current K-line (latest)", records[-1], "Previous K-line", records[-2])
void main() {
auto records = exchange.GetRecords(PERIOD_H1);
Log("The first k-line data is Time:", records[0].Time, "Open:", records[0].Open, "High:", records[0].High);
Log("The second k-line data Time:", records[1].Time, "Close:", records[1].Close);
Log("Current K-line (latest)", records[records.size() - 1], "Previous K-line", records[records.size() - 2]);
}
Data bar K-line output:
function main() {
var records = exchange.GetRecords("BTC_USDT.swap", 60, 100)
Log(records)
}
def main():
records = exchange.GetRecords("BTC_USDT.swap", 60, 100)
Log(records)
void main() {
auto records = exchange.GetRecords("BTC_USDT.swap", 60, 100);
Log(records);
}
Apabila konfigurasiexchange
objek adalah objek pertukaran niaga hadapan, menggunakansymbol
, period
, danlimit
parameter untuk meminta data K-line produk tertentu (produk masa depan).
Tempoh K-garis lalai boleh ditetapkan di halaman backtest dan perdagangan sebenar.exchange.GetRecords()
Jika tiada parameter ditentukan apabila fungsi dipanggil, data K-line yang sepadan akan dikembalikan mengikut tempoh K-line yang ditetapkan dalam backtest dan parameter pasaran sebenar.
Nilai pulangan adalah pelbagaiRecord
struktur, data K-garis yang dikembalikan akan terkumpul dari masa ke masa, had atas bar K-garis terkumpul dipengaruhi olehexchange.SetMaxBarLen()
Peraturan fungsi. had lalai adalah 5000 bar apabila ia tidak ditetapkan. Apabila data K-line mencapai had pengumpulan bar K-line, ia akan dikemas kini dengan menambah bar K-line dan memadam bar K-line terdahulu (contohnya antrian masuk/keluar).Trade
array terstruktur) dalam masa nyata untuk menjana K-garis.
Jika antara muka K-line pertukaran menyokong pertanyaan paging, pelbagai permintaan API akan dibuat apabila memanggilexchange.SetMaxBarLen()
fungsi untuk menetapkan panjang garis K yang lebih besar.
Apabilaexchange.GetRecords()
fungsi dipanggil pada mulanya, bilangan bar K-garis yang diperoleh berbeza antara backtesting dan perdagangan sebenar: - Sistem backtesting akan memperoleh sejumlah bar K-garis sebelum permulaan julat masa backtesting terlebih dahulu (patuhan adalah 5000, tetapan sistem backtesting dan jumlah data akan mempengaruhi nombor akhir yang dikembalikan), sebagai data K-garis awal. - Bilangan bar K-garis yang diperoleh semasa perdagangan sebenar adalah berdasarkan jumlah maksimum data yang boleh diperoleh dari antara muka K-garis bursa.
Perkhidmatanperiod
parameter ditetapkan kepada 5, yang merupakan permintaan untuk mendapatkan data K-garis dengan tempoh 5 saat.period
Parameter tidak boleh dibahagikan dengan 60 (iaitu, tempoh yang diwakili tidak boleh dibahagikan dengan minit).exchange.GetTrades()
untuk mendapatkan data rekod transaksi dan meringkas data K-line yang diperlukan.period
parameter boleh dibahagikan dengan 60, maka data garis K yang diperlukan disintesis menggunakan data garis K sekurang-kurangnya 1 minit (jika mungkin, data garis K yang diperlukan disintesis menggunakan tempoh yang lebih besar).
Pengujian balik tahap simulasi dalam sistem pengujian balik memerlukan tetapan tempoh K-garis asas (apabila sistem pengujian balik mensimulasikan pengujian balik tahap, data K-garis yang sesuai digunakan untuk menjana data Tick mengikut tempoh K-garis asas yang ditetapkan). Perlu diperhatikan bahawa tempoh data K-garis yang diperoleh dalam strategi tidak boleh lebih kecil daripada tempoh K-garis asas. Kerana dalam pengujian balik tahap simulasi, data K-garis setiap tempoh dalam sistem pengujian balik disintesis dari data K-garis tempoh K-garis asas.
PerkhidmatanC++
bahasa mempunyai contoh kod berikut jika anda perlu membina data K-garis anda sendiri:
#include <sstream>
void main() {
Records r;
r.Valid = true;
for (auto i = 0; i < 10; i++) {
Record ele;
ele.Time = i * 100000;
ele.High = i * 10000;
ele.Low = i * 1000;
ele.Close = i * 100;
ele.Open = i * 10;
ele.Volume = i * 1;
r.push_back(ele);
}
// Output display: Records[10]
Log(r);
auto ma = TA.MA(r,10);
// Output display: [nan,nan,nan,nan,nan,nan,nan,nan,nan,450]
Log(ma);
}
Bursa yang tidak menyokongexchange.GetRecords()
fungsi:
Nama Fungsi | Pertukaran Spot yang tidak disokong | Pertukaran niaga hadapan tanpa sokongan |
---|---|---|
GetRecords | Zaif / Coincheck / BitFlyer | Futures_Aevo |
{@fun/Market/exchange.GetTicker exchange.GetTicker}, {@fun/Market/exchange.GetDepth exchange.GetDepth}, {@fun/Market/exchange.GetTrades exchange.GetTrades}, {@fun/Market/exchange.SetMaxBarLen exchange.SetMaxBarLen}
Dapatkan tempoh K-garis ditetapkan pada halaman laman web platform FMZ Quant Trading apabila backtesting dan menjalankan strategi dalam perdagangan langsung, iaitu tempoh K-garis lalai yang digunakan apabila memanggilexchange.GetRecords()
berfungsi tanpa lulus parameter.
Tempoh garis K dalam saat, nilai bulat dalam saat. nombor
pertukaran.GetPeriod()
function main() {
// For example, the K-line period set on the website page of the FMZ Quant Trading platform during backtesting and live trading is 1 hour.
var period = exchange.GetPeriod()
Log("K-line period:", period / (60 * 60), "hours")
}
def main():
period = exchange.GetPeriod()
Log("K-line period:", period / (60 * 60), "hours")
void main() {
auto period = exchange.GetPeriod();
Log("K-line period:", period / (60 * 60.0), "hours");
}
{@fun/Market/exchange.GetRecords pertukaran.GetRecords}
Tetapkan panjang maksimum K-garis.
pertukaran.SetMaxBarLen ((n)
Parametern
digunakan untuk menentukan panjang garis K maksimum.
n
betul
nombor
function main() {
exchange.SetMaxBarLen(50)
var records = exchange.GetRecords()
Log(records.length, records)
}
def main():
exchange.SetMaxBarLen(50)
r = exchange.GetRecords()
Log(len(r), r)
void main() {
exchange.SetMaxBarLen(50);
auto r = exchange.GetRecords();
Log(r.size(), r[0]);
}
Peraturanexchange.SetMaxBarLen()
fungsi mempengaruhi dua aspek untuk strategi cryptocurrency runtime:
{@fun/Market/exchange.GetRecords pertukaran.GetRecords}
Dapatkan kandungan asal dikembalikan oleh yang terakhirrest
permintaan untuk objek pertukaran semasa ({@var/EXCHANGE exchange}, {@var/EXCHANGE/exchanges exchanges}).
Data tindak balas untukrest
permintaan.
senar
pertukaran.GetRawJSON()
function main(){
exchange.GetAccount();
var obj = JSON.parse(exchange.GetRawJSON());
Log(obj);
}
import json
def main():
exchange.GetAccount()
obj = json.loads(exchange.GetRawJSON())
Log(obj)
void main() {
auto obj = exchange.GetAccount();
// C++ does not support the GetRawJSON function
Log(obj);
}
Peraturanexchange.GetRawJSON()
fungsi hanya disokong untuk perdagangan sebenar. fungsi ini tidak disokong oleh strategi dalamC++
language.
{@var/EXCHANGE pertukaran}
Dapatkan kadar pertukaran yang kini ditetapkan untuk objek pertukaran.
Nilai semasa kadar pertukaran objek pertukaran. nombor
pertukaran.GetRate()
function main(){
Log(exchange.GetTicker())
// Set up exchange rate conversion
exchange.SetRate(7)
Log(exchange.GetTicker())
Log("Current exchange rate:", exchange.GetRate())
}
def main():
Log(exchange.GetTicker())
exchange.SetRate(7)
Log(exchange.GetTicker())
Log("Current exchange rate:", exchange.GetRate())
void main() {
Log(exchange.GetTicker());
exchange.SetRate(7);
Log(exchange.GetTicker());
Log("Current exchange rate:", exchange.GetRate());
}
Jikaexchange.SetRate()
tidak dipanggil untuk menetapkan kadar penukaran,exchange.GetRate()
fungsi mengembalikan nilai kadar lalai 1. iaitu, data yang berkaitan dengan mata wang yang dipaparkan pada masa ini (quoteCurrency) tidak ditukar.
Jika nilai kadar pertukaran telah ditetapkan menggunakanexchange.SetRate()
, contohnya,exchange.SetRate(7)
Kemudian semua maklumat harga, seperti sebut harga, kedalaman, dan harga pesanan yang diperoleh melaluiexchange
objek pertukaran akan ditukar dengan mengalikan dengan kadar pertukaran yang ditetapkan7
.
Jikaexchange
sama dengan pertukaran dengan USD sebagai mata wang denominasi, selepas memanggilexchange.SetRate(7)
, semua harga di pasaran langsung akan ditukar kepada harga yang dekat dengan CNY dengan mengalikan7
Pada ketika ini, nilai kadar pertukaran yang diperoleh menggunakanexchange.GetRate()
adalah7
.
{@fun/Trade/exchange.SetRate exchange.SetRate}
Peraturanexchange.SetData()
fungsi digunakan untuk menetapkan data dimuatkan apabila strategi berjalan.
Panjang rentetan selepas parametervalue
Pengekodan JSON.
nombor
pertukaran.SetData ((kunci, nilai)
Nama pengumpulan data.
kunci
betul
senar
Data yang akan dimuatkan olehexchange.SetData()
Struktur data adalah sama dengan format data yang diminta olehexchange.GetData()
fungsi apabila meminta data luaran, iaitu:"schema": ["time", "data"]
.
nilai
betul
Array
/*backtest
start: 2020-01-21 00:00:00
end: 2020-02-12 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Bitfinex","currency":"BTC_USD"}]
*/
function main() {
var data = [
[1579536000000, "abc"],
[1579622400000, 123],
[1579708800000, {"price": 123}],
[1579795200000, ["abc", 123, {"price": 123}]]
]
exchange.SetData("test", data)
while(true) {
Log(exchange.GetData("test"))
Sleep(1000)
}
}
'''backtest
start: 2020-01-21 00:00:00
end: 2020-02-12 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Bitfinex","currency":"BTC_USD"}]
'''
def main():
data = [
[1579536000000, "abc"],
[1579622400000, 123],
[1579708800000, {"price": 123}],
[1579795200000, ["abc", 123, {"price": 123}]]
]
exchange.SetData("test", data)
while True:
Log(exchange.GetData("test"))
Sleep(1000)
/*backtest
start: 2020-01-21 00:00:00
end: 2020-02-12 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Bitfinex","currency":"BTC_USD"}]
*/
void main() {
json data = R"([
[1579536000000, "abc"],
[1579622400000, 123],
[1579708800000, {"price": 123}],
[1579795200000, ["abc", 123, {"price": 123}]]
])"_json;
exchange.SetData("test", data);
while(true) {
Log(exchange.GetData("test"));
Sleep(1000);
}
}
Ia memerlukan bahawa data untuk parametervalue
mempunyai format yang sama dengandata
Anda boleh melihat bahawa stempel masa1579622400000
sepadan dengan masa2020-01-22 00:00:00
, dan bahawa apabila program strategi dijalankan selepas masa ini, memanggilexchange.GetData()
fungsi untuk mendapatkan data sebelum data timestamp seterusnya1579708800000
, iaitu, masa2020-01-23 00:00:00
Apa yang anda dapat adalah[1579622400000, 123]
kandungan data itu, sebagai program terus berjalan, perubahan masa, dan sebagainya untuk mendapatkan item data oleh item. dalam contoh berikut, pada masa berjalan (backtesting atau perdagangan langsung), masa semasa mencapai atau melebihi timestamp1579795200000
, yangexchange.GetData()
fungsi dipanggil dan nilai pulangan adalah:{"Time":1579795200000,"Data":["abc", 123,{"price":123}]}
. "Time":1579795200000
sama dengan1579795200000
dalam data[1579795200000, ["abc", 123, {"price": 123}]]
. "Data":["abc", 123, {"price": 123}]
sepadan dengan data["abc", 123, {"price": 123}]]
dalam[1579795200000, ["abc", 123, {"price": 123}]]
.
Data yang dimuatkan boleh menjadi mana-mana penunjuk ekonomi, data industri, penunjuk yang relevan, dan lain-lain, yang digunakan untuk penilaian kuantitatif strategi semua maklumat yang boleh diukur.
{@fun/Market/exchange.GetData exchange.GetData}
Peraturanexchange.GetData()
fungsi digunakan untuk mendapatkan data dimuatkan olehexchange.SetData()
fungsi atau disediakan oleh pautan luaran.
Rekod dalam pengumpulan data. objek
pertukaran.GetData ((kunci) pertukaran.GetData (kunci, masa lapang)
Nama pengumpulan data. kunci betul senar Digunakan untuk menetapkan cache timeout dalam milidetik. masa lapang palsu nombor
/*backtest
start: 2020-01-21 00:00:00
end: 2020-02-12 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Bitfinex","currency":"BTC_USD"}]
*/
function main() {
exchange.SetData("test", [[1579536000000, _D(1579536000000)], [1579622400000, _D(1579622400000)], [1579708800000, _D(1579708800000)]])
while(true) {
Log(exchange.GetData("test"))
Sleep(1000 * 60 * 60 * 24)
}
}
'''backtest
start: 2020-01-21 00:00:00
end: 2020-02-12 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Bitfinex","currency":"BTC_USD"}]
'''
def main():
exchange.SetData("test", [[1579536000000, _D(1579536000000/1000)], [1579622400000, _D(1579622400000/1000)], [1579708800000, _D(1579708800000/1000)]])
while True:
Log(exchange.GetData("test"))
Sleep(1000 * 60 * 60 * 24)
/*backtest
start: 2020-01-21 00:00:00
end: 2020-02-12 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Bitfinex","currency":"BTC_USD"}]
*/
void main() {
json arr = R"([[1579536000000, ""], [1579622400000, ""], [1579708800000, ""]])"_json;
arr[0][1] = _D(1579536000000);
arr[1][1] = _D(1579622400000);
arr[2][1] = _D(1579708800000);
exchange.SetData("test", arr);
while(true) {
Log(exchange.GetData("test"));
Sleep(1000 * 60 * 60 * 24);
}
}
Panggilan untuk mendapatkan data yang ditulis secara langsung.
/*backtest
start: 2020-01-21 00:00:00
end: 2020-02-12 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Bitfinex","currency":"BTC_USD"}]
*/
function main() {
while(true) {
Log(exchange.GetData("http://xxx.xx.x.xx:9090/data"))
Sleep(1000)
}
}
'''backtest
start: 2020-01-21 00:00:00
end: 2020-02-12 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Bitfinex","currency":"BTC_USD"}]
'''
def main():
while True:
Log(exchange.GetData("http://xxx.xx.x.xx:9090/data"))
Sleep(1000)
/*backtest
start: 2020-01-21 00:00:00
end: 2020-02-12 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Bitfinex","currency":"BTC_USD"}]
*/
void main() {
while(true) {
Log(exchange.GetData("http://xxx.xx.x.xx:9090/data"));
Sleep(1000);
}
}
Ia menyokong untuk meminta data melalui pautan luaran, format data yang diminta untuk:
{
"schema":["time","data"],
"data":[
[1579536000000, "abc"],
[1579622400000, 123],
[1579708800000, {"price": 123}],
[1579795200000, ["abc", 123, {"price": 123}]]
]
}
Di mana?schema
adalah format data untuk setiap rekod dalam badan data yang dimuatkan, yang ditetapkan kepada["time", "data"]
yang sepadan dengan format data entri-oleh-masuk dalamdata
atribut.
Apa yang disimpan dalamdata
atribut adalah badan data, dengan setiap entri yang terdiri daripada timestamp tahap milidetik dan kandungan data (yang boleh menjadi mana-mana data yang boleh dikodkan JSON).
Program perkhidmatan untuk ujian, ditulis dalam Go:
package main
import (
"fmt"
"net/http"
"encoding/json"
)
func Handle (w http.ResponseWriter, r *http.Request) {
defer func() {
fmt.Println("req:", *r)
ret := map[string]interface{}{
"schema": []string{"time","data"},
"data": []interface{}{
[]interface{}{1579536000000, "abc"},
[]interface{}{1579622400000, 123},
[]interface{}{1579708800000, map[string]interface{}{"price":123}},
[]interface{}{1579795200000, []interface{}{"abc", 123, map[string]interface{}{"price":123}}},
},
}
b, _ := json.Marshal(ret)
w.Write(b)
}()
}
func main () {
fmt.Println("listen http://localhost:9090")
http.HandleFunc("/data", Handle)
http.ListenAndServe(":9090", nil)
}
Data tindak balas program apabila menerima permintaan:
{
"schema":["time","data"],
"data":[
[1579536000000, "abc"],
[1579622400000, 123],
[1579708800000, {"price": 123}],
[1579795200000, ["abc", 123, {"price": 123}]]
]
}
Kod strategi ujian:
function main() {
Log(exchange.GetData("http://xxx.xx.x.xx:9090/data"))
Log(exchange.GetData("https://www.fmz.com/upload/asset/32bf73a69fc12d36e76.json"))
}
def main():
Log(exchange.GetData("http://xxx.xx.x.xx:9090/data"))
Log(exchange.GetData("https://www.fmz.com/upload/asset/32bf73a69fc12d36e76.json"))
void main() {
Log(exchange.GetData("http://xxx.xx.x.xx:9090/data"));
Log(exchange.GetData("https://www.fmz.com/upload/asset/32bf73a69fc12d36e76.json"));
}
Kaedah panggilan untuk mendapatkan data pautan luaran.
function main() {
Log(exchange.GetData("https://www.datadata.com/api/v1/query/xxx/data")) // The xxx part of the link is the code of the query data, here xxx is an example.
}
def main():
Log(exchange.GetData("https://www.datadata.com/api/v1/query/xxx/data"))
void main() {
Log(exchange.GetData("https://www.datadata.com/api/v1/query/xxx/data"));
}
Minta data untuk pertanyaan yang dibuat di platformdata data, meminta bahawa format data jawapan adalah (harus mempunyai masa, medan data yang diterangkan dalam skim):
{
"data": [],
"schema": ["time", "data"]
}
medan exchange.GetData()
fungsi dipanggil, objek JSON dikembalikan, contohnya:{"Time":1579795200000, "Data":"..."}
.
Dapatkan data sekaligus untuk backtesting dan cache satu minit data untuk perdagangan langsung.from
(berstempel masa dalam saat),to
(timestamped dalam saat) kepada permintaan, parameter sepertiperiod
(periode garis K yang mendasari, bertanda masa dalam mili saat) digunakan untuk menentukan jangka masa di mana data akan diperoleh.
{@fun/Market/exchange.SetData exchange.SetData}
Peraturanexchange.GetMarkets()
fungsi digunakan untuk mendapatkan maklumat pasaran pertukaran.
Kamus yang mengandungi struktur {@struct/Market Market}. objek
pertukaran.GetMarkets()
function main() {
var markets = exchange.GetMarkets()
var currency = exchange.GetCurrency()
// Get the current contract code can also use exchange.GetContractType() function
var ct = "swap"
var key = currency + "." + ct
Log(key, ":", markets[key])
}
def main():
markets = exchange.GetMarkets()
currency = exchange.GetCurrency()
ct = "swap"
key = currency + "." + ct
Log(key, ":", markets[key])
void main() {
auto markets = exchange.GetMarkets();
auto currency = exchange.GetCurrency();
auto ct = "swap";
auto key = currency + "." + ct;
Log(key, ":", markets[key]);
}
Contoh panggilan kepada objek pertukaran niaga hadapan:
/*backtest
start: 2023-05-10 00:00:00
end: 2023-05-20 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
function main() {
var arrSymbol = ["SOL_USDT.swap", "BTC_USDT.quarter", "ETH_USDT.swap", "ETH_USDT.quarter"]
var tbl1 = {
type: "table",
title: "markets1",
cols: ["key", "Symbol", "BaseAsset", "QuoteAsset", "TickSize", "AmountSize", "PricePrecision", "AmountPrecision", "MinQty", "MaxQty", "MinNotional", "MaxNotional", "CtVal"],
rows: []
}
var markets1 = exchange.GetMarkets()
for (var key in markets1) {
var market = markets1[key]
tbl1.rows.push([key, market.Symbol, market.BaseAsset, market.QuoteAsset, market.TickSize, market.AmountSize, market.PricePrecision, market.AmountPrecision, market.MinQty, market.MaxQty, market.MinNotional, market.MaxNotional, market.CtVal])
}
for (var symbol of arrSymbol) {
exchange.GetTicker(symbol)
}
var tbl2 = {
type: "table",
title: "markets2",
cols: ["key", "Symbol", "BaseAsset", "QuoteAsset", "TickSize", "AmountSize", "PricePrecision", "AmountPrecision", "MinQty", "MaxQty", "MinNotional", "MaxNotional", "CtVal"],
rows: []
}
var markets2 = exchange.GetMarkets()
for (var key in markets2) {
var market = markets2[key]
tbl2.rows.push([key, market.Symbol, market.BaseAsset, market.QuoteAsset, market.TickSize, market.AmountSize, market.PricePrecision, market.AmountPrecision, market.MinQty, market.MaxQty, market.MinNotional, market.MaxNotional, market.CtVal])
}
LogStatus("`" + JSON.stringify([tbl1, tbl2]) + "`")
}
'''backtest
start: 2023-05-10 00:00:00
end: 2023-05-20 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
'''
import json
def main():
arrSymbol = ["SOL_USDT.swap", "BTC_USDT.quarter", "ETH_USDT.swap", "ETH_USDT.quarter"]
tbl1 = {
"type": "table",
"title": "markets1",
"cols": ["key", "Symbol", "BaseAsset", "QuoteAsset", "TickSize", "AmountSize", "PricePrecision", "AmountPrecision", "MinQty", "MaxQty", "MinNotional", "MaxNotional", "CtVal"],
"rows": []
}
markets1 = exchange.GetMarkets()
for key in markets1:
market = markets1[key]
tbl1["rows"].append([key, market["Symbol"], market["BaseAsset"], market["QuoteAsset"], market["TickSize"], market["AmountSize"], market["PricePrecision"], market["AmountPrecision"], market["MinQty"], market["MaxQty"], market["MinNotional"], market["MaxNotional"], market["CtVal"]])
for symbol in arrSymbol:
exchange.GetTicker(symbol)
tbl2 = {
"type": "table",
"title": "markets2",
"cols": ["key", "Symbol", "BaseAsset", "QuoteAsset", "TickSize", "AmountSize", "PricePrecision", "AmountPrecision", "MinQty", "MaxQty", "MinNotional", "MaxNotional", "CtVal"],
"rows": []
}
markets2 = exchange.GetMarkets()
for key in markets2:
market = markets2[key]
tbl2["rows"].append([key, market["Symbol"], market["BaseAsset"], market["QuoteAsset"], market["TickSize"], market["AmountSize"], market["PricePrecision"], market["AmountPrecision"], market["MinQty"], market["MaxQty"], market["MinNotional"], market["MaxNotional"], market["CtVal"]])
LogStatus("`" + json.dumps([tbl1, tbl2]) + "`")
/*backtest
start: 2023-05-10 00:00:00
end: 2023-05-20 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
void main() {
auto arrSymbol = {"SOL_USDT.swap", "BTC_USDT.quarter", "ETH_USDT.swap", "ETH_USDT.quarter"};
json tbl1 = R"({
"type": "table",
"title": "markets1",
"cols": ["key", "Symbol", "BaseAsset", "QuoteAsset", "TickSize", "AmountSize", "PricePrecision", "AmountPrecision", "MinQty", "MaxQty", "MinNotional", "MaxNotional", "CtVal"],
"rows": []
})"_json;
auto markets1 = exchange.GetMarkets();
for (auto& [key, market] : markets1.items()) {
json arrJson = {key, market["Symbol"], market["BaseAsset"], market["QuoteAsset"], market["TickSize"], market["AmountSize"], market["PricePrecision"], market["AmountPrecision"], market["MinQty"], market["MaxQty"], market["MinNotional"], market["MaxNotional"], market["CtVal"]};
tbl1["rows"].push_back(arrJson);
}
for (const auto& symbol : arrSymbol) {
exchange.GetTicker(symbol);
}
json tbl2 = R"({
"type": "table",
"title": "markets2",
"cols": ["key", "Symbol", "BaseAsset", "QuoteAsset", "TickSize", "AmountSize", "PricePrecision", "AmountPrecision", "MinQty", "MaxQty", "MinNotional", "MaxNotional", "CtVal"],
"rows": []
})"_json;
auto markets2 = exchange.GetMarkets();
for (auto& [key, market] : markets2.items()) {
json arrJson = {key, market["Symbol"], market["BaseAsset"], market["QuoteAsset"], market["TickSize"], market["AmountSize"], market["PricePrecision"], market["AmountPrecision"], market["MinQty"], market["MaxQty"], market["MinNotional"], market["MaxNotional"], market["CtVal"]};
tbl2["rows"].push_back(arrJson);
}
json tbls = R"([])"_json;
tbls.push_back(tbl1);
tbls.push_back(tbl2);
LogStatus("`" + tbls.dump() + "`");
}
Gunakan objek pertukaran niaga hadapan untuk memanggilexchange.GetMarkets()
fungsi dalam sistem backtesting. Sebelum memanggil mana-mana fungsi pasaran, GetMarkets hanya mengembalikan data pasaran pasangan dagangan lalai semasa. Selepas memanggil fungsi pasaran, ia mengembalikan data pasaran semua jenis yang diminta. Anda boleh merujuk kepada contoh ujian berikut:
Peraturanexchange.GetMarkets()
fungsi mengembalikan kamus dengan kunci yang dinamakan nama jenis perdagangan, dan untuk pembaikan spot yang diformat sebagai pasangan perdagangan, contohnya:
{
"BTC_USDT" : {...}, // The key value is the Market structure
"LTC_USDT" : {...},
...
}
Untuk pertukaran kontrak niaga hadapan, kerana mungkin terdapat beberapa kontrak untuk satu jenis, contohnyaBTC_USDT
Pasangan perdagangan, terdapat kontrak kekal, kontrak suku tahunan, dan sebagainya.exchange.GetMarkets()
fungsi mengembalikan kamus dengan nama kunci pasangan digabungkan dengan kod kontrak, contohnya:
{
"BTC_USDT.swap" : {...}, // The key value is the Market structure
"BTC_USDT.quarter" : {...},
"LTC_USDT.swap" : {...},
...
}
exchange.GetMarkets()
Fungsi menyokong perdagangan langsung, sistem backtesting.exchange.GetMarkets()
fungsi mengembalikan maklumat pasaran hanya untuk varieti yang didagangkan dalam talian di bursa.exchange.GetMarkets()
fungsi tidak menyokong kontrak opsyen.Bursa yang tidak menyokongexchange.GetMarkets()
fungsi:
Nama Fungsi | Pertukaran Spot yang tidak disokong | Pertukaran niaga hadapan tanpa sokongan |
---|---|---|
GetMarkets | Coincheck / Bithumb / BitFlyer | – |
{@struct/Pasar Pasaran}
Peraturanexchange.GetTickers()
fungsi digunakan untuk mendapatkan data ticker pertukaran agregat (saringan struktur {@struct/Ticker Ticker}).exchange
Mengembalikan data ticker untuk semua pasangan dagangan apabila ia adalah objek pertukaran spot;exchange
mengembalikan data ticker untuk semua kontrak apabila ia adalah objek pertukaran niaga hadapan.
Peraturanexchange.GetTickers()
fungsi mengembalikan pelbagai struktur {@struct/Ticker Ticker} apabila berjaya meminta data, dan null apabila gagal.
{@struct/Ticker Ticker} array, nilai sifar
pertukaran.GetTickers()
function main() {
var tickers = exchange.GetTickers()
if (tickers && tickers.length > 0) {
Log("Number of tradable items on the exchange:", tickers.length)
}
}
def main():
tickers = exchange.GetTickers()
if tickers and len(tickers) > 0:
Log("Number of tradable items on the exchange:", len(tickers))
void main() {
auto tickers = exchange.GetTickers();
if (tickers.Valid && tickers.size() > 0) {
Log("Number of tradable items on the exchange:", tickers.size());
}
}
Panggilexchange.GetTickers()
fungsi untuk mendapatkan data pasaran agregat.
/*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 = ["ADA_USDT", "LTC_USDT", "ETH_USDT", "SOL_USDT"]
// Before requesting other trading pair market data, call Get Tickers
var tickers1 = exchange.GetTickers()
var tbl1 = {type: "table", title: "tickers1", cols: ["Symbol", "High", "Open", "Low", "Last", "Buy", "Sell", "Time", "Volume"], rows: []}
for (var ticker of tickers1) {
tbl1.rows.push([ticker.Symbol, ticker.High, ticker.Open, ticker.Low, ticker.Last, ticker.Buy, ticker.Sell, ticker.Time, ticker.Volume])
}
// Request market data for other trading pairs
for (var symbol of arrSymbol) {
exchange.GetTicker(symbol)
}
// Call GetTickers again
var tickers2 = exchange.GetTickers()
var tbl2 = {type: "table", title: "tickers2", cols: ["Symbol", "High", "Open", "Low", "Last", "Buy", "Sell", "Time", "Volume"], rows: []}
for (var ticker of tickers2) {
tbl2.rows.push([ticker.Symbol, ticker.High, ticker.Open, ticker.Low, ticker.Last, ticker.Buy, ticker.Sell, ticker.Time, ticker.Volume])
}
LogStatus("`" + JSON.stringify([tbl1, tbl2]) + "`")
}
'''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 = ["ADA_USDT", "LTC_USDT", "ETH_USDT", "SOL_USDT"]
tickers1 = exchange.GetTickers()
tbl1 = {"type": "table", "title": "tickers1", "cols": ["Symbol", "High", "Open", "Low", "Last", "Buy", "Sell", "Time", "Volume"], "rows": []}
for ticker in tickers1:
tbl1["rows"].append([ticker["Symbol"], ticker["High"], ticker["Open"], ticker["Low"], ticker["Last"], ticker["Buy"], ticker["Sell"], ticker["Time"], ticker["Volume"]])
for symbol in arrSymbol:
exchange.GetTicker(symbol)
tickers2 = exchange.GetTickers()
tbl2 = {"type": "table", "title": "tickers2", "cols": ["Symbol", "High", "Open", "Low", "Last", "Buy", "Sell", "Time", "Volume"], "rows": []}
for ticker in tickers2:
tbl2["rows"].append([ticker["Symbol"], ticker["High"], ticker["Open"], ticker["Low"], ticker["Last"], ticker["Buy"], ticker["Sell"], ticker["Time"], ticker["Volume"]])
LogStatus("`" + json.dumps([tbl1, tbl2]) + "`")
/*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"}]
*/
json tickerToJson(const Ticker& ticker) {
json arrJson;
arrJson.push_back(ticker.Symbol);
arrJson.push_back(ticker.High);
arrJson.push_back(ticker.Open);
arrJson.push_back(ticker.Low);
arrJson.push_back(ticker.Last);
arrJson.push_back(ticker.Buy);
arrJson.push_back(ticker.Sell);
arrJson.push_back(ticker.Time);
arrJson.push_back(ticker.Volume);
return arrJson;
}
void main() {
std::string arrSymbol[] = {"ADA_USDT", "LTC_USDT", "ETH_USDT", "SOL_USDT"};
auto tickers1 = exchange.GetTickers();
json tbl1 = R"({
"type": "table",
"cols": ["Symbol", "High", "Open", "Low", "Last", "Buy", "Sell", "Time", "Volume"],
"rows": []
})"_json;
tbl1["title"] = "tickers1";
for (const auto& ticker : tickers1) {
json arrJson = tickerToJson(ticker);
tbl1["rows"].push_back(arrJson);
}
for (const std::string& symbol : arrSymbol) {
exchange.GetTicker(symbol);
}
auto tickers2 = exchange.GetTickers();
json tbl2 = R"({
"type": "table",
"cols": ["Symbol", "High", "Open", "Low", "Last", "Buy", "Sell", "Time", "Volume"],
"rows": []
})"_json;
tbl2["title"] = "tickers2";
for (const auto& ticker : tickers2) {
json arrJson = tickerToJson(ticker);
tbl2["rows"].push_back(arrJson);
}
json tbls = R"([])"_json;
tbls.push_back(tbl1);
tbls.push_back(tbl2);
LogStatus("`" + tbls.dump() + "`");
}
Gunakan objek pertukaran spot dan memanggilexchange.GetTickers()
fungsi dalam sistem backtest. Sebelum memanggil mana-mana fungsi pasaran, GetTickers hanya mengembalikan data ticker pasangan dagangan lalai semasa. Selepas memanggil fungsi pasaran, ia mengembalikan data ticker semua jenis yang diminta. Anda boleh merujuk kepada contoh ujian berikut:
Bursa yang tidak menyokongexchange.GetTickers()
fungsi:
Nama Fungsi | Pertukaran Spot yang tidak disokong | Pertukaran niaga hadapan tanpa sokongan |
---|---|---|
GetTickers | Zaif / WOO / Gemini / Coincheck / BitFlyer / Bibox | Futures_WOO / Futures_dYdX / Futures_Deribit / Futures_Bibox / Futures_Aevo |
{@struct/Ticker Ticker}, {@fun/Market/exchange.GetTicker pertukaran.GetTicker}
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}
Peraturanexchange.GetAccount()
fungsi digunakan untuk meminta maklumat akaun pertukaran.GetAccount()
fungsi adalah fungsi ahli objek pertukaran {@var/EXCHANGE exchange}.exchange
objek hanya berkaitan denganexchange
, dan ia tidak akan diulangi selepas dokumentasi.
Bertanya maklumat aset akaun dan kembali struktur {@struct/Akaun Akaun} jika pertanyaan berjaya atau tidak sah jika gagal. {@struct/Akaun Akaun}, nilai sifar
pertukaran.GetAccount ((()
function main(){
// Switching trading pairs
exchange.IO("currency", "BTC_USDT")
// Take OKX futures as an example, set the contract as the current week's contract, the current trading pair is BTC_USDT, so the current contract is BTC's U-nominal current week contract
exchange.SetContractType("this_week")
// Get current account asset data
var account = exchange.GetAccount()
// Available balance of USDT as margin
Log(account.Balance)
// USDT freeze amount as margin
Log(account.FrozenBalance)
// Current asset equity
Log(account.Equity)
// The unrealized profit and loss of all positions held with the current asset as margin
Log(account.UPnL)
}
def main():
exchange.IO("currency", "BTC_USDT")
exchange.SetContractType("this_week")
account = exchange.GetAccount()
Log(account["Balance"])
Log(account["FrozenBalance"])
Log(account["Equity"])
Log(account["UPnL"])
void main() {
exchange.IO("currency", "BTC_USDT");
exchange.SetContractType("this_week");
auto account = exchange.GetAccount();
Log(account.Balance);
Log(account.FrozenBalance);
Log(account["Equity"])
Log(account["UPnL"])
}
Buat pasangan dagangan, kod kontrak, dan dapatkan maklumat akaun semasa.
Jika objek pertukaran ditetapkan untuk pertukaran kontrak niaga hadapan cryptocurrency, dan beralih ke kontrak denganUSDT
sebagai margin (lihat {@fun/Account/exchange.SetCurrency exchange.SetCurrency}, {@fun/Futures/exchange.SetContractType exchange.SetContractType} fungsi untuk cara menukar).USDT
sebagai margin, yang dicatatkan dalamBalance
, FrozenBalance
atribut struktur {@struct/Akaun Akaun}.
Jika objek pertukaran ditetapkan untuk pertukaran kontrak niaga hadapan cryptocurrency, dan beralih ke kontrak berasaskan mata wang, aset itu dalam mata wang sebagai margin dan dicatatkan dalamStocks
, FrozenStocks
atribut struktur {@struct/Akaun Akaun}.
Apabila menggunakan akaun gabungan Binance Futures, apabila memanggilexchange.GetAccount()
fungsi untuk meminta maklumat akaun, data yang dikemas kini adalah jumlah semua aset ditukar kepadaUSD. Ia dipaparkan dalamBalance
Jika anda perlu mengira jumlah penukaran aset lain, anda boleh menggunakan jumlah penukaran USD dibahagikan dengan harga indeks (aset yang akan ditukaran) dan kemudian dibahagikan dengan kadar gadai (aset yang akan ditukaran) untuk mengira.
{@struct/Account Account}, {@fun/Account/exchange.SetCurrency exchange.SetCurrency}, {@fun/Futures/exchange.SetContractType exchange.SetContractType}
Peraturanexchange.GetAssets
fungsi digunakan untuk meminta maklumat aset akaun pertukaran.
Peraturanexchange.GetAssets()
fungsi mengembalikan array struktur {@struct/Asset Asset} jika permintaan data berjaya, atau null jika permintaan gagal.
{@struct/Asset Asset} array, nilai sifar
pertukaran.GetAssets()
function main() {
// exchange.SetCurrency("BTC_USDT") // You can set up trading pairs
// exchange.SetContractType("swap") // You can set up contracts
var assets = exchange.GetAssets()
Log(assets)
}
def main():
# exchange.SetCurrency("BTC_USDT") # You can set up trading pairs
# exchange.SetContractType("swap") # You can set up contracts
assets = exchange.GetAssets()
Log(assets)
void main() {
// exchange.SetCurrency("BTC_USDT"); // You can set up trading pairs
// exchange.SetContractType("swap"); // You can set up contracts
auto assets = exchange.GetAssets();
Log(assets);
}
Dapatkan maklumat mengenai aset akaun pertukaran,exchange.GetAssets()
Mengembalikan array dengan elemen struktur Aset.
PeraturanGetAssets()
fungsi objek Bursa Berjangka mengembalikan aset margin di bawah pasangan dagangan semasa (berasaskan mata wang, berasaskan USDT, berasaskan USDC, dan lain-lain).
{@struct/Asset Asset}
Peraturanexchange.GetName()
fungsi digunakan untuk mendapatkan nama pertukaran yang objek pertukaran semasa terikat.
Peraturanexchange.GetName()
fungsi mengembalikan nama bursa yang ditakrifkan oleh platform FMZ Quant Trading.
senar
pertukaran.GetName()
function main() {
Log("The exchange object exchange is judged to be Binance spot, and the result is judged to be:", exchange.GetName() == "Binance")
}
def main():
Log("The exchange object exchange is judged to be Binance spot, and the result is judged to be:", exchange.GetName() == "Binance")
void main() {
Log("The exchange object exchange is judged to be Binance spot, and the result is judged to be:", exchange.GetName() == "Binance");
}
Peraturanexchange.GetName()
fungsi biasanya digunakan untuk mengenal pasti objek pertukaran, sepertiexchange
atauexchanges[1]
, exchanges[2]
Nama bursa kontrak niaga hadapan cryptocurrency mempunyai awalan tetapFutures_
.
{@fun/Account/exchange.GetLabel pertukaran.GetLabel}
Peraturanexchange.GetLabel()
fungsi digunakan untuk mendapatkan label tersuai yang ditetapkan apabila objek pertukaran dikonfigurasi.
Peraturanexchange.GetLabel()
fungsi mengembalikan label tersuai yang ditetapkan apabila objek pertukaran dikonfigurasikan.
senar
pertukaran.GetLabel()
function main() {
Log("exchange label:", exchange.GetLabel())
}
def main():
Log("exchange label:", exchange.GetLabel())
void main() {
Log("exchange label:", exchange.GetLabel());
}
Pertukaran objek sepertiexchange
atauexchanges[1]
, exchanges[2]
dalam kod strategi dikenal pasti dengan tag set.
{@var/EXCHANGE pertukaran}
Peraturanexchange.GetCurrency()
fungsi digunakan untuk mendapatkan pasangan dagangan yang ditetapkan pada masa ini.
Peraturanexchange.GetCurrency()
fungsi mengembalikan pasangan dagangan yang ditetapkan oleh objek pertukaran semasa {@var/EXCHANGE exchange}.
senar
pertukaran.GetCurrency()
function main() {
Log("the current trading pair of exchange is:", exchange.GetCurrency())
}
def main():
Log("the current trading pair of exchange is:", exchange.GetCurrency())
void main() {
Log("the current trading pair of exchange is:", exchange.GetCurrency());
}
Format pasangan dagangan adalah huruf besar seragam, menggunakan tanda bawah untuk memisahkanbaseCurrency
danquoteCurrency
, sepertiBTC_USDT
.
{@fun/Account/exchange.SetCurrency exchange.SetCurrency}
Peraturanexchange.SetCurrency()
fungsi digunakan untuk menukar pasangan dagangan semasa objek pertukaran {@var/EXCHANGE exchange}.
pertukaran.Set Mata wang ((mata wang)
Peraturancurrency
Parameter digunakan untuk menetapkan pasangan dagangan untuk ditukar. format pasangan dagangan adalah huruf besar seragam, menggunakan garis bawah untuk memisahkanbaseCurrency
daripadaquoteCurrency
, sepertiBTC_USDT
.
Mata wang
betul
senar
function main() {
var ticker = exchange.GetTicker()
Log(ticker)
Log(exchange.GetAccount())
// Switching trading pairs, pay attention to the changes of ticker data and account information after switching
exchange.SetCurrency("LTC_USDT")
Log("Switch to LTC_USDT")
ticker = exchange.GetTicker()
Log(ticker)
Log(exchange.GetAccount())
}
def main():
ticker = exchange.GetTicker()
Log(ticker)
Log(exchange.GetAccount())
exchange.SetCurrency("LTC_USDT")
Log("Switch to 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 to LTC_USDT");
ticker = exchange.GetTicker();
Log(ticker);
Log(exchange.GetAccount());
}
exchange.IO("currency", "BTC_USDT")
kaedah menukar, sila rujuk kepada {@funexcahnge.IO}.BTC_USDT
boleh ditukar kepadaLTC_USDT
, bukan untukLTC_BTC
.BTC_USDT
, bilanganBTC
adalah 3, bilanganUSDT
Pada masa ini, beralih keLTC_USDT
segera, bilangan mata wang dagangan adalah 0 selepas beralih, iaitu bilanganLTC_USDT
dalam akaun adalah 0. Iaitu, bilanganLTC
dalam akaun adalah 0, dan pasangan dagangan yang ditukar berkongsi bilanganUSDT
, iaitu 10 000.{@fun/Account/exchange.GetCurrency exchange.GetCurrency}
Peraturanexchange.GetQuoteCurrency()
Fungsi digunakan untuk mendapatkan nama mata wang yang diisytiharkan pasangan dagangan semasa, iaituquoteCurrency
.
Peraturanexchange.GetQuoteCurrency()
fungsi mengembalikan nama mata wang yang diisytiharkan pasangan dagangan semasa.
senar
pertukaran.GetQuoteCurrency()
function main() {
exchange.SetCurrency("BTC_USDT")
Log("BTC_USDT denominated currency name:", exchange.GetQuoteCurrency())
// exchange.SetCurrency("ETH_BTC")
// Log("ETH_BTC denominated currency name:", exchange.GetQuoteCurrency())
}
def main():
exchange.SetCurrency("BTC_USDT")
Log("BTC_USDT denominated currency name:", exchange.GetQuoteCurrency())
# exchange.SetCurrency("ETH_BTC")
# Log("ETH_BTC denominated currency name:", exchange.GetQuoteCurrency())
void main() {
exchange.SetCurrency("BTC_USDT");
Log("BTC_USDT denominated currency name:", exchange.GetQuoteCurrency());
// exchange.SetCurrency("ETH_BTC")
// Log("ETH_BTC denominated currency name:", exchange.GetQuoteCurrency())
}
Sebagai contoh: {@var/EXCHANGE pertukaran} pertukaran objekBTC_USDT
, yangexchange.GetQuoteCurrency()
fungsi pulanganUSDT
. Jika pasangan dagangan semasa adalahETH_BTC
, yangexchange.GetQuoteCurrency()
fungsi pulanganBTC
.
{@fun/Account/exchange.GetCurrency exchange.GetCurrency}, {@fun/Account/exchange.SetCurrency exchange.SetCurrency}
Peraturanexchange.GetPositions()
fungsi digunakan untuk mendapatkan maklumat kedudukan;GetPositions()
fungsi adalah fungsi ahli objek pertukaran {@var/EXCHANGE exchange}.GetPositions()
fungsi mendapat maklumat kedudukan akaun pertukaran terikat kepada objek pertukaranexchange
. Tujuan fungsi (metode) ahliexchange
objek hanya berkaitan denganexchange
dan tidak akan diulang di sini.
Peraturanexchange.GetPositions()
fungsi mengembalikan pelbagai struktur {@struct/Position Position} jika permintaan data berjaya, dan ia mengembalikan nilai null jika permintaan data gagal.
{@struct/Position Position} array, nilai sifar
pertukaran.GetPositions ((() pertukaran.GetPositions (simbol)
Parametersymbol
digunakan untuk menetapkansimbol perdaganganatauJulat simbol daganganuntuk ditanyakan.
Jikasymbol
Jika parameter tidak diteruskan, lalai adalah untuk meminta data kedudukan semua simbol 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":"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) {
exchange.CreateOrder(symbol, "buy", -1, 1)
exchange.CreateOrder(symbol, "sell", -1, 1)
}
var defaultPositions = exchange.GetPositions()
var swapPositions = exchange.GetPositions("USDT.swap")
var futuresPositions = exchange.GetPositions("USDT.futures")
var btcUsdtSwapPositions = exchange.GetPositions("BTC_USDT.swap")
var tbls = []
var arr = [defaultPositions, swapPositions, futuresPositions, btcUsdtSwapPositions]
var tblDesc = ["defaultPositions", "swapPositions", "futuresPositions", "btcUsdtSwapPositions"]
for (var index in arr) {
var positions = arr[index]
var tbl = {type: "table", title: tblDesc[index], cols: ["Symbol", "MarginLevel", "Amount", "FrozenAmount", "Price", "Profit", "Type", "ContractType", "Margin"], rows: [] }
for (var pos of positions) {
tbl.rows.push([pos.Symbol, pos.MarginLevel, pos.Amount, pos.FrozenAmount, pos.Price, pos.Profit, pos.Type, pos.ContractType, pos.Margin])
}
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:
exchange.CreateOrder(symbol, "buy", -1, 1)
exchange.CreateOrder(symbol, "sell", -1, 1)
defaultPositions = exchange.GetPositions()
swapPositions = exchange.GetPositions("USDT.swap")
futuresPositions = exchange.GetPositions("USDT.futures")
btcUsdtSwapPositions = exchange.GetPositions("BTC_USDT.swap")
tbls = []
arr = [defaultPositions, swapPositions, futuresPositions, btcUsdtSwapPositions]
tblDesc = ["defaultPositions", "swapPositions", "futuresPositions", "btcUsdtSwapPositions"]
for index in range(len(arr)):
positions = arr[index]
tbl = {"type": "table", "title": tblDesc[index], "cols": ["Symbol", "MarginLevel", "Amount", "FrozenAmount", "Price", "Profit", "Type", "ContractType", "Margin"], "rows": []}
for pos in positions:
tbl["rows"].append([pos["Symbol"], pos["MarginLevel"], pos["Amount"], pos["FrozenAmount"], pos["Price"], pos["Profit"], pos["Type"], pos["ContractType"], pos["Margin"]])
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) {
exchange.CreateOrder(symbol, "buy", -1, 1);
exchange.CreateOrder(symbol, "sell", -1, 1);
}
auto defaultPositions = exchange.GetPositions();
auto swapPositions = exchange.GetPositions("USDT.swap");
auto futuresPositions = exchange.GetPositions("USDT.futures");
auto btcUsdtSwapPositions = exchange.GetPositions("BTC_USDT.swap");
json tbls = R"([])"_json;
std::vector<std::vector<Position>> arr = {defaultPositions, swapPositions, futuresPositions, btcUsdtSwapPositions};
std::string tblDesc[] = {"defaultPositions", "swapPositions", "futuresPositions", "btcUsdtSwapPositions"};
for (int index = 0; index < arr.size(); index++) {
auto positions = arr[index];
json tbl = R"({
"type": "table",
"cols": ["Symbol", "MarginLevel", "Amount", "FrozenAmount", "Price", "Profit", "Type", "ContractType", "Margin"],
"rows": []
})"_json;
tbl["title"] = tblDesc[index];
for (const auto& pos : positions) {
json arrJson = R"([])"_json;
arrJson.push_back(pos.Symbol);
arrJson.push_back(pos.MarginLevel);
arrJson.push_back(pos.Amount);
arrJson.push_back(pos.FrozenAmount);
arrJson.push_back(pos.Price);
arrJson.push_back(pos.Profit);
arrJson.push_back(pos.Type);
arrJson.push_back(pos.ContractType);
arrJson.push_back(pos.Margin);
tbl["rows"].push_back(arrJson);
}
tbls.push_back(tbl);
}
LogStatus(_D(), "\n", "`" + tbls.dump() + "`");
return;
}
Menggunakan objek pertukaran niaga hadapan untuk meletakkan pesanan pasaran untuk pelbagai pasangan dagangan yang berbeza dan kod kontrak.
Kontrak niaga hadapan mata wang kripto berbeza dengan spot mata wang kripto, yang hanya mempunyai konsep kedudukan yang logik.Pasangan dagangan, Kod kontrakSila rujuk {@fun/Account/exchange.SetCurrency exchange.SetCurrency}, {@fun/Futures/exchange.SetContractType exchange.SetContractType} fungsi.
DalamGetPositions
fungsi, senario penggunaan parameter simbol diringkaskan seperti berikut:
Klasifikasi Objek Pertukaran | simbol Parameter | Lingkup pertanyaan | Perhatikan |
---|---|---|---|
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 berasaskan USDT akan ditanyakan.GetPositions("USDT.swap") |
Masa hadapan | Tentukan produk dagangan, parameter simbol adalah: |
Mencari kontrak kekal berasaskan USDT 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 | - |
DalamGetPositions
fungsi, objek pertukaran niaga hadapan
Julat dimensi pertanyaan diringkaskan seperti berikut:
simbol Parameter | Penentuan skop 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. kontrak.
USD.futures.Skop 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. Jangkauan kontrak penghantaran margin bercampur. Futures_Kraken Exchange.
USD.swap_pf Rentang kontrak kekal margin campuran. Futures_Kraken Exchange.
Serasi denganexchange.GetPosition()
panggilan,GetPosition
adalah sama denganGetPositions
.
Apabila akaun yang diwakili oleh objek pertukaranexchange
tidak mempunyai kedudukan dalamJulat pertanyaanatauInstrumen dagangan tertentu, yangexchange.GetPositions()
fungsi mengembalikan array kosong, contohnya:[]
.
{@struct/Position Position}, {@fun/Account/exchange.SetCurrency exchange.SetCurrency}, {@fun/Futures/exchange.SetContractType exchange.SetContractType}
Peraturanexchange.SetMarginLevel()
Fungsi ini digunakan untuk menetapkan nilai leverage pasangan dagangan atau kontrak yang ditentukan olehsymbol
Parameter. Serasi dengan hanya lulus dalam parametermarginLevel
untuk menetapkan nilai leverage pasangan dagangan semasa atau kontrak objek pertukaran {@var/EXCHANGE exchange}.
pertukaran.SetMarginLevel ((simbol, marginLevel) pertukaran.SetMarginLevel ((marginLevel)
Peraturansymbol
parameter digunakan untuk menentukan pasangan dagangan atau kontrak yang mana nilai leverage perlu diselaraskan.symbol
parameterSetMarginLevel()
fungsi adalah selaras dengan formatsymbol
parameterGetTicker()
fungsi.
simbol
palsu
senar
PeraturanmarginLevel
parameter digunakan untuk menetapkan nilai leverage, yang biasanya bilangan bulat untuk pertukaran dan ia juga menyokong tetapan nilai leverage titik terapung untuk beberapa pertukaran.
marginLevel
betul
nombor
function main() {
exchange.SetMarginLevel(10)
// Set the leverage of BTC’s USDT-margined perpetual contract to 15
exchange.SetMarginLevel("BTC_USDT.swap", 15)
}
def main():
exchange.SetMarginLevel(10)
exchange.SetMarginLevel("BTC_USDT.swap", 15)
void main() {
exchange.SetMarginLevel(10);
exchange.SetMarginLevel("BTC_USDT.swap", 15);
}
Peraturanexchange.SetMarginLevel()
fungsi menyokong cryptocurrency kontrak niaga hadapan objek pertukaran sahaja. sistem backtesting menyokong memanggilexchange.SetMarginLevel()
fungsi untuk menetapkan nilai leverage.
Untuk kontrak niaga hadapan mata wang kripto, mekanisme leverage tidak seragam kerana bursa kontrak niaga hadapan mata wang kripto.exchange.SetMarginLevel()
fungsi tidak menjana permintaan rangkaian, tetapi hanya menetapkan pembolehubah leverage dalam sistem FMZ yang mendasari (digunakan untuk lulus parameter dalam antara muka penempatan pesanan). Nilai leverage beberapa kontrak niaga hadapan bursa adalah tetapan bursa, yang perlu ditetapkan di halaman laman web bursa atau menggunakan antara muka API.exchange.SetMarginLevel()
fungsi akan menjana permintaan rangkaian dan mungkin gagal menetapkan leverage. boleh ada banyak sebab untuk ini, sebagai contoh: terdapat kedudukan semasa atau pesanan menunggu, yang membuat mustahil untuk menetapkan nilai leverage baru untuk pasangan perdagangan atau kontrak ini.
Bursa yang tidak menyokongexchange.SetMarginLevel()
fungsi:
Nama Fungsi | Pertukaran Spot yang tidak disokong | Pertukaran niaga hadapan tanpa sokongan |
---|---|---|
SetMarginLevel | – | Futures_dYdX / Futures_Deribit |
{@var/EXCHANGE pertukaran}
Peraturanexchange.SetDirection()
fungsi digunakan untuk menetapkan arah pesanan fungsi {@fun/Trade/exchange.Buy exchange.Buy}, fungsi {@fun/Trade/exchange.Sell exchange.Sell} apabila meletakkan pesanan untuk kontrak niaga hadapan.
pertukaran.SetDirection ((arah)
Peraturandirection
parameter digunakan untuk menetapkan arah kontrak niaga hadapan apabila pesanan diletakkan."buy"
, "closesell"
, "sell"
, "closebuy"
.
Arah
betul
senar
function main(){
// For example, set to OKX futures contract of this week
exchange.SetContractType("this_week")
// Set leverage to 5 times
exchange.SetMarginLevel(5)
// Set the order type to long
exchange.SetDirection("buy")
// Place an order for 2 contracts at 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);
}
Peraturanexchange.SetDirection()
Fungsi menetapkan persamaan antara arah urus niaga kontrak niaga hadapan dan fungsi penempatan pesanan:
Fungsi penempatan pesanan | Arah yang ditetapkan oleh parameter fungsi SetDirection | Catatan |
---|---|---|
exchange.Buy | Beli dan buka kedudukan panjang | |
exchange.Buy | Beli dan tutup kedudukan pendek | |
exchange.Sell | Jual dan buka kedudukan pendek | |
exchange.Sell | Jual dan tutup kedudukan panjang |
{@fun/Trade/exchange.Buy pertukaran.Buy}, {@fun/Trade/exchange.Sell pertukaran.Sell}
Peraturanexchange.SetContractType()
fungsi digunakan untuk menetapkan kod kontrak semasa objek pertukaran {@var/EXCHANGE exchange}.
Peraturanexchange.SetContractType()
fungsi mengembalikan struktur yang mengandungi kod kontrak pertukaran yang sepadan dengan kod kontrak semasa.quarter
, dan struktur nilai pulangan fungsi ini ialah:{"InstrumentID": "BTCUSD_230630", "instrument": "BTCUSD_230630"}
.
objek
pertukaran.SetContractType ((simbol)
Peraturansymbol
parameter digunakan untuk menetapkan kod kontrak, nilai pilihan adalah:"this_week"
, "next_week"
, "quarter"
, "next_quarter"
, "swap"
, dan lain-lain
Kontrak niaga hadapan mata wang kriptokontrak penghantaranKod, jika tidak ditentukan, biasanya mempunyai:
this_week
: kontrak minggu semasa.next_week
: kontrak minggu depan.quarter
: kontrak suku tahun.next_quarter
: kontrak suku tahun seterusnya.Kontrak tetapKod dalam kontrak niaga hadapan mata wang kripto, jika tidak ditentukan, umumnya mempunyai:swap
Kontrak kekal.simbol betul senar
function main() {
// Set to this week contract
exchange.SetContractType("this_week")
}
def main():
exchange.SetContractType("this_week")
void main() {
exchange.SetContractType("this_week");
}
Tetapkan kontrak semasa sebagai kontrak minggu semasa:
function main() {
// The default trading pair is BTC_USD, set the contract for this week, and the contract is a currency standard contract
exchange.SetContractType("this_week")
Log("ticker:", exchange.GetTicker())
// Switching trading pairs, then setting up contracts, switching to USDT as margin contracts, as opposed to currency standard contracts
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());
}
Apabila membuat kontrak denganUSDT
sebagai margin, anda perlu menukar pasangan dagangan dalam kod (anda juga boleh menetapkan pasangan dagangan secara langsung apabila menambah objek pertukaran):
function main(){
// Set the contract for this week
var ret = exchange.SetContractType("this_week")
// Return information about the current week's contracts
Log(ret)
}
def main():
ret = exchange.SetContractType("this_week")
Log(ret)
void main() {
auto ret = exchange.SetContractType("this_week");
Log(ret);
}
Mencetak nilai pulanganexchange.SetContractType()
fungsi:
Dalam strategi kontrak niaga hadapan cryptocurrency, mengambil contoh beralih keBTC_USDT
Pasangan dagangan: Apabila menukar pasangan dagangan menggunakanexchange.SetCurrency("BTC_USDT")
atauexchange.IO("currency", "BTC_USDT")
fungsi, selepas beralih, anda perlu menggunakanexchange.SetContractType()
Sistem ini menentukan sama ada ia adalah satu pasangan dagangan baru atau tidak.kontrak standard mata wangatau aKontrak standard USDTSebagai contoh, jika pasangan dagangan ditetapkan untukBTC_USDT
, gunakanexchange.SetContractType("swap")
fungsi untuk menetapkan kod kontrak untukswap
. Pada ketika ini, ia ditetapkan untukBTC
untukStandard USDTkontrak kekal. Jika pasangan daganganBTC_USD
, gunakanexchange.SetContractType("swap")
fungsi untuk menetapkan kod kontrak untukswap
. Pada ketika ini, ia ditetapkan untukBTC
...standard mata wangkontrak kekal.
Maklumat mengenai pertukaran kontrak niaga hadapan cryptocurrency yang disokong, dengan nama kontrak untuk setiap pertukaran seperti berikut:
Futures_OKCoin (OKX)
Tetapkan kontrak kekal:exchange.SetContractType("swap")
Set untuk kontrak minggu ini:exchange.SetContractType("this_week")
Set untuk kontrak minggu depan:exchange.SetContractType("next_week")
Tetapkan kontrak bulanan:exchange.SetContractType("month")
Tetapkan kontrak bulan depan:exchange.SetContractType("next_month")
Set kepada kontrak suku tahunan:exchange.SetContractType("quarter")
Set untuk kontrak suku berikutnya:exchange.SetContractType("next_quarter")
OKX mempunyai kontrak perdagangan pra pasaran: tarikh penghantaran kontrak adalah masa tetap. Kod kontrak yang ditakrifkan oleh bursa adalah, sebagai contoh:HMSTR-USDT-250207
. Tetapkan pasangan dagangan kepadaHMSTR_USDT
pada platform FMZ, dan kemudian menggunakanexchange.SetContractType("HMSTR-USDT-250207")
untuk menetapkan kontrak.
Untuk fungsi yang menyokongsymbol
parameter, seperti:exchange.GetTicker()
, exchange.CreateOrder()
, dan lain-lain.symbol
parameter sebagai:HMSTR_USDT.HMSTR-USDT-250207
untuk mendapatkan data pasaran kontrak ini atau membuat pesanan.
Futures_HuobiDM (Futures Huobi)
Set untuk kontrak minggu ini:exchange.SetContractType("this_week")
.
Set untuk kontrak minggu depan:exchange.SetContractType("next_week")
.
Set kepada kontrak suku tahunan:exchange.SetContractType("quarter")
.
Set untuk kontrak suku berikutnya:exchange.SetContractType("next_quarter")
.
Tetapkan kontrak kekal:exchange.SetContractType("swap")
.
Ia menyokong kontrak denganUSDT
sebagai margin, ambilBTC
kontrak sebagai contoh: penggunaanexchange.IO("currency", "BTC_USDT")
untuk beralih kepada kontrak yang menggunakanUSDT
sebagai margin.
Atau tetapkan pasangan dagangan semasa kepadaBTC_USDT
langsung semasa mengkonfigurasi parameter perdagangan langsung dan menambah objek pertukaran.exchange.SetContractType()
fungsi lagi untuk menetapkan kontrak.
Futures_BitMEX (BitMEX)
Tetapkan kontrak kekal:exchange.SetContractType("swap")
.
Kontrak penghantaran bursa Futures_BitMEX adalah kontrak bulanan dengan kod kontrak berikut (dari Januari hingga Disember):
"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"
Menetapkan kontrak penghantaran:exchange.SetContractType("December")
. Sebagai contoh, apabila pasangan dagangan ditetapkan untukXBT_USDT
, yangexchange.SetContractType("December")
fungsi dipanggil untuk menetapkan kontrak untuk penghantaran Disember dalam USDT berasaskan BTC (mengikut kod kontrak sebenarXBTUSDTZ23
).
Ringkasan Maklumat Kontrak Futures_BitMEX
Kod kontrak yang ditakrifkan oleh Futures_BitMEX | Pasangan dagangan yang sepadan dalam FMZ | Kod kontrak yang sepadan dalam FMZ | Perhatikan |
---|---|---|---|
DOGEUSD | DOGE_USD | Pertukaran | USD, XBT diselesaikan. XBT adalah BTC. |
DOGEUSDT | DOGE_USDT | Pertukaran | Dilambangkan dalam USDT, diselesaikan dalam USDT. |
XBTETH | XBT_ETH | Pertukaran | ETH dilambangkan, XBT diselesaikan. |
XBTEUR | XBT_EUR | Pertukaran | Diminomi dalam EUR, diselesaikan dalam XBT. |
USDTUSDC | USDT_USDC | Pertukaran | USDC dilambangkan, XBT diselesaikan. |
ETHUSD_ETH | ETH_USD_ETH | Pertukaran | Dimenomi USD, ETH diselesaikan. |
XBTH24 | XBT_USD | Mac | Tarikh tamat tempoh: 24 Mac, kod bulan adalah: H; dalam mata wang USD, diselesaikan dalam XBT. |
ETHUSDZ23 | ETH_USD | Disember | Tarikh tamat tempoh: 23 Disember, kod bulan ialah: Z; dalam mata wang USD, diselesaikan dalam XBT. |
XBTUSDTZ23 | XBT_USDT | Disember | Tarikh tamat tempoh: 23 Disember, kod bulan adalah: Z ; dilambangkan dalam USDT, diselesaikan dalam USDT. |
ADAZ23 | ADA_XBT | Disember | Tarikh tamat tempoh: 23 Disember, kod bulan adalah: Z ; penagihan XBT, penyelesaian XBT. |
P_XBTETFX23 | USDT_XXX | P_XBTETFX23 | Tempoh tamat tempoh: 11/23/23; dinyatakan sebagai peratusan dan diselesaikan dalam USDT. |
Futures_GateIO
Set untuk kontrak minggu ini:exchange.SetContractType("this_week")
.
Set untuk kontrak minggu depan:exchange.SetContractType("next_week")
.
Set kepada kontrak suku tahunan:exchange.SetContractType("quarter")
.
Set untuk kontrak suku berikutnya:exchange.SetContractType("next_quarter")
.
Tetapkan kontrak kekal:exchange.SetContractType("swap")
.
Ia menyokong kontrak denganUSDT
sebagai margin, ambilBTC
kontrak sebagai contoh: penggunaanexchange.IO("currency", "BTC_USDT")
untuk beralih kepada kontrak yang menggunakanUSDT
sebagai margin.
Atau tetapkan pasangan dagangan semasa kepadaBTC_USDT
langsung semasa mengkonfigurasi parameter perdagangan langsung dan menambah objek pertukaran.exchange.SetContractType()
fungsi lagi untuk menetapkan kontrak.
Futures_Deribit
Tetapkan kontrak kekal:exchange.SetContractType("swap")
.
Ia menyokong DeribitUSDC
kontrak.
Kontrak penghantaran adalah:"this_week"
, "next_week"
, "month"
, "quarter"
, "next_quarter"
, "third_quarter"
, "fourth_quarter"
.
CFD (future_combo):"this_week,swap"
, "next_week,swap"
, "next_quarter,this_week"
, "third_quarter,this_week"
, "month,next_week"
, terdapat banyak kombinasi.
Untuk kontrak opsyen, anda perlu memasukkan kod kontrak opsyen khusus yang ditakrifkan oleh bursa, lihat laman web Deribit untuk butiran.
Futures_KuCoin
Sebagai contoh, jika pasangan dagangan ditetapkan untukBTC_USD
dan kod kontrak ditetapkan, ia adalah kontrak berasaskan mata wang:
Tetapkan kontrak kekal:exchange.SetContractType("swap")
.
Set kepada kontrak suku tahunan:exchange.SetContractType("quarter")
.
Set untuk kontrak suku berikutnya:exchange.SetContractType("next_quarter")
.
USDT sebagai kontrak margin:
Sebagai contoh, jika pasangan dagangan ditetapkan untukBTC_USDT
, dan kemudian menetapkan kod kontrak, ia adalah kontrak dengan USDT sebagai margin.
Tetapkan kontrak kekal:exchange.SetContractType("swap")
.
Futures_Binance
Binance Futures Exchange lalai untuk kontrak kekal pasangan dagangan semasa, kod kontrak:swap
.
Tetapkan kontrak kekal:exchange.SetContractType("swap")
, kontrak kekal Binance mempunyai kontrak yang menggunakanUSDT
Sebagai contoh,USDT
kontrak kekal standardBTC
boleh digunakan sebagai kontrak margin, dan pasangan dagangan ditetapkan untukBTC_USDT
. Binance juga menyokong kontrak kekal yang menggunakan syiling sebagai margin, sebagai contoh,BTC
Binance standard kontrak kekal, dengan pasangan perdagangan ditetapkan untukBTC_USD
.
Set kepada kontrak suku tahunan:exchange.SetContractType("quarter")
, kontrak penghantaran mempunyai kontrak standard mata wang (iaitu, menggunakan mata wang sebagai margin), sebagai contoh,BTC
kontrak suku tahunan, pasangan dagangan ditetapkan untuk:BTC_USD
dan kemudian menetapkan kontrakexchange.SetContractType("quarter")
, ia ditetapkan untukBTC
kontrak suku tahunan dengan kontrak standard mata wang.
Set untuk kontrak suku berikutnya:exchange.SetContractType("next_quarter")
, contohnya,BTC
daripada kontrak suku tahunan standard mata wang, pasangan dagangan ditetapkan untuk:BTC_USD
, dan kemudian menetapkan kontrakexchange.SetContractType("next_quarter")
.
Binance menyokong sebahagianUSDT
sebagai kontrak penghantaran margin, mengambilBTC
sebagai contoh, menetapkan pasangan dagangan untukBTC_USDT
, kemudian letakkan kod kontrak.
Sokongan untuk kontrak Pilihan Binance:
Format kod kontrak opsyen adalah berdasarkan kod kontrak opsyen yang ditakrifkan oleh bursa:BTC-241227-15000-C
, XRP-240112-0.5-C
, BTC-241227-15000-P
Ambil kod kontrak pilihan BinanceBTC-241227-15000-P
sebagai contoh: BTC adalah kod mata wang pilihan, 241227 adalah tarikh pelaksanaan, 15000 adalah harga pelaksanaan, P mewakili pilihan jual, dan C mewakili pilihan beli.
Untuk butiran mengenai jenis opsyen, sama ada ia adalah opsyen Eropah atau opsyen Amerika, sila rujuk maklumat yang berkaitan dengan kontrak opsyen bursa.
Bursa mungkin menyekat penjual opsyen dan mengharuskan mereka memohon kelayakan secara berasingan.
Futures_Bibox
Kod kontrak untuk kontrak kekal Bibox:swap
.
Tetapkan kontrak kekal:exchange.SetContractType("swap")
.
Futures_Bybit
Pendapatan yang ditetapkan adalah kontrak kekal untuk pasangan dagangan semasa, kod kontrak:swap
.
Kod kontrak minggu ini:this_week
.
Kod kontrak minggu depan:next_week
.
Kod kontrak minggu ketiga:third_week
.
Kod kontrak bulanan:month
.
Kod kontrak bulan depan:next_month
.
Kod kontrak suku tahunan:quarter
.
Kod kontrak suku berikutnya:next_quarter
.
Kod kontrak suku ketiga:third_quarter
.
Masa hadapan_Kraken
Default adalah kontrak kekal pasangan dagangan semasa, kod kontrak:swap
.
swap
Kontrak kekal.month
: kontrak bulan semasa.quarter
: kontrak suku tahun.next_quarter
Kontrak suku berikutnya.swap_pf
: Kontrak kekal margin campuran.quarter_ff
: Kontrak suku tahunan dengan margin bercampur.month_ff
: Kontrak margin campuran bulan semasa.next_quarter_ff
: Margin campuran kontrak suku berikutnya.
Futures_Bitfinex
Default adalah kontrak kekal untuk pasangan dagangan semasa, kod kontrak:swap
.
Futures_Bitget
Default adalah kontrak kekal untuk pasangan dagangan semasa, kod kontrak:swap
.
Pasangan dagangan ditetapkan untukBTC_USD
untuk kontrak standard mata wang, dan pasangan dagangan ditetapkan kepadaBTC_USDT
untuk kontrak yang diselesaikan olehUSDT
. Kontrak demo boleh ditubuhkan dengan pasangan dagangan sebagaiSBTC_USD
, BTC_SUSDT
.
Futures_dYdX
Kod kontrak untuk kontrak kekal dYdX:swap
.
Tetapkan kontrak kekal:exchange.SetContractType("swap")
, dYdX mempunyai kontrak standard USDT sahaja.
Futures_MEXC
Kod kontrak untuk kontrak kekal MEXC:swap
.
Tetapkan kontrak kekal:exchange.SetContractType("swap")
. Tetapkan pasangan dagangan kepadaBTC_USD
, yang merupakan kontrak standard mata wang, dan menetapkan pasangan dagangan untukBTC_USDT
, yang merupakanUSDT
- Kontrak diselesaikan.
Futures_Crypto
Token dalam akaun dicrypto.compertukaran boleh ditukar kepada kredit dalam dolar AS untuk digunakan sebagai margin untuk perdagangan kontrak.
Tetapkan kontrak kekal:exchange.SetContractType("swap")
. Contoh memanggilexchange.SetContractType("swap")
fungsi untuk menetapkan kontrak kekal untuk BTC apabila pasangan dagangan ditetapkan untukBTC_USD
.
Peraturancrypto.comKontrak penghantaran pertukaran adalah kontrak bulanan dengan kod kontrak berikut (dari Januari hingga Disember):
"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"
Tetapkan kontrak penghantaran:exchange.SetContractType("October")
. Sebagai contoh, apabila pasangan dagangan ditetapkan untukBTC_USD
, panggil fungsiexchange.SetContractType("October")
untuk menetapkan kontrak penghantaran Oktober untuk BTC.
Kod kontrak yang sepadan pada masa ini adalah:BTCUSD-231027
.
Futures_WOO
Futures_WOO sokongan pertukaranUSDT
berdasarkan kontrak dengan kod kontrak kekalswap
. Sebagai contoh, apabila pasangan dagangan ditetapkan untukBTC_USDT
, fungsiexchange.SetContractType("swap")
dipanggil untuk menetapkan kontrak semasa untuk menjadi kontrak kekal berasaskan USDT untuk BTC.
{@fun/Futures/exchange.GetContractType exchange.GetContractType}, {@fun/Account/exchange.SetCurrency exchange.SetCurrency}
Peraturanexchange.GetContractType()
fungsi digunakan untuk mendapatkan kod kontrak untuk tetapan semasa objek pertukaran {@var/EXCHANGE exchange}.
Peraturanexchange.GetContractType()
fungsi mengembalikan kod kontrak yang ditakrifkan oleh platform FMZ, contohnya:this_week
, swap
, dan lain-lain
senar
pertukaran.GetContractType()
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());
}
{@fun/Futures/exchange.SetContractType pertukaran.SetContractType}
Peraturanexchange.GetFundings()
fungsi digunakan untuk mendapatkan data kadar pembiayaan untuk tempoh semasa.
Peraturanexchange.GetFundings()
fungsi mengembalikan pelbagai struktur {@struct/Funding Funding} apabila permintaan data berjaya, dan mengembalikan nilai sifar apabila permintaan data gagal.
{@struct/Funding Funding} array, nilai sifar
pertukaran.GetFundings() pertukaran.GetFundings ((simbol)
Parametersymbol
digunakan untuk menetapkansimbol transaksiatauJulat simbol transaksiyang akan ditanya.symbol
Jika parameter ini tidak diteruskan, data kadar pembiayaan semasa semua instrumen akan diminta secara lalai dalam julat dimensi pasangan dagangan semasa dan kod kontrak.
simbol palsu senar
/*backtest
start: 2024-10-01 00:00:00
end: 2024-10-23 00:05:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"SOL_USDC"}]
*/
function main() {
// LPT_USDT.swap 4-hour period
var symbols = ["SOL_USDT.swap", "ETH_USDT.swap", "LTC_USDT.swap", "SOL_USDC.swap", "ETH_USDC.swap", "BTC_USD.swap", "BTC_USDT.quarter", "LPT_USDT.swap"]
for (var symbol of symbols) {
exchange.GetTicker(symbol)
}
var arr = []
var arrParams = ["no param", "LTC_USDT.swap", "USDT.swap", "USD.swap", "USDC.swap", "USDT.futures", "BTC_USDT.quarter"]
for (p of arrParams) {
if (p == "no param") {
arr.push(exchange.GetFundings())
} else {
arr.push(exchange.GetFundings(p))
}
}
var tbls = []
var index = 0
for (var fundings of arr) {
var tbl = {
"type": "table",
"title": arrParams[index],
"cols": ["Symbol", "Interval", "Time", "Rate"],
"rows": [],
}
for (var f of fundings) {
tbl["rows"].push([f.Symbol, f.Interval / 3600000, _D(f.Time), f.Rate * 100 + " %"])
}
tbls.push(tbl)
index++
}
LogStatus(_D(), "\n Requested market types:", symbols, "\n`" + JSON.stringify(tbls) + "`")
}
'''backtest
start: 2024-10-01 00:00:00
end: 2024-10-23 00:05:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"SOL_USDC"}]
'''
import json
def main():
# LPT_USDT.swap 4-hour period
symbols = ["SOL_USDT.swap", "ETH_USDT.swap", "LTC_USDT.swap", "SOL_USDC.swap", "ETH_USDC.swap", "BTC_USD.swap", "BTC_USDT.quarter", "LPT_USDT.swap"]
for symbol in symbols:
exchange.GetTicker(symbol)
arr = []
arrParams = ["no param", "LTC_USDT.swap", "USDT.swap", "USD.swap", "USDC.swap", "USDT.futures", "BTC_USDT.quarter"]
for p in arrParams:
if p == "no param":
arr.append(exchange.GetFundings())
else:
arr.append(exchange.GetFundings(p))
tbls = []
index = 0
for fundings in arr:
tbl = {
"type": "table",
"title": arrParams[index],
"cols": ["Symbol", "Interval", "Time", "Rate"],
"rows": [],
}
for f in fundings:
tbl["rows"].append([f["Symbol"], f["Interval"] / 3600000, _D(f["Time"]), str(f["Rate"] * 100) + " %"])
tbls.append(tbl)
index += 1
LogStatus(_D(), "\n Requested market types:", symbols, "\n`" + json.dumps(tbls) + "`")
/*backtest
start: 2024-10-01 00:00:00
end: 2024-10-23 00:05:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"SOL_USDC"}]
*/
void main() {
// LPT_USDT.swap 4-hour period
json arrSymbol = R"([])"_json;
std::string symbols[] = {"SOL_USDT.swap", "ETH_USDT.swap", "LTC_USDT.swap", "SOL_USDC.swap", "ETH_USDC.swap", "BTC_USD.swap", "BTC_USDT.quarter", "LPT_USDT.swap"};
for (const std::string& symbol : symbols) {
exchange.GetTicker(symbol);
arrSymbol.push_back(symbol);
}
std::vector<std::vector<Funding>> arr = {};
std::string arrParams[] = {"no param", "LTC_USDT.swap", "USDT.swap", "USD.swap", "USDC.swap", "USDT.futures", "BTC_USDT.quarter"};
for (const std::string& p : arrParams) {
if (p == "no param") {
arr.push_back(exchange.GetFundings());
} else {
arr.push_back(exchange.GetFundings(p));
}
}
json tbls = R"([])"_json;
int index = 0;
for (int i = 0; i < arr.size(); i++) {
auto fundings = arr[i];
json tbl = R"({
"type": "table",
"cols": ["Symbol", "Interval", "Time", "Rate"],
"rows": []
})"_json;
tbl["title"] = arrParams[index];
for (int j = 0; j < fundings.size(); j++) {
auto f = fundings[j];
// json arrJson = {f.Symbol, f.Interval / 3600000, _D(f.Time), string(f.Rate * 100) + " %"};
json arrJson = {f.Symbol, f.Interval / 3600000, _D(f.Time), f.Rate};
tbl["rows"].push_back(arrJson);
}
tbls.push_back(tbl);
index++;
}
LogStatus(_D(), "\n Requested market types:", arrSymbol.dump(), "\n`" + tbls.dump() + "`");
}
Gunakan objek pertukaran niaga hadapan untuk memanggilexchange.GetFundings()
fungsi dalam sistem backtesting. Sebelum memanggil mana-mana fungsi pasaran, GetFundings hanya mengembalikan data Pembiayaan pasangan dagangan lalai semasa. Selepas memanggil fungsi pasaran, ia mengembalikan data Pembiayaan semua jenis yang diminta. Anda boleh merujuk kepada contoh ujian berikut:
Untuk bursa niaga hadapan yang tidak menyokong pertanyaan kumpulan data kadar pembiayaan, jikasymbol
parameter ditentukan sebagai julat pertanyaan, contohnya:USDT.swap
atausymbol
parameter tidak lulus, antara muka akan melaporkan ralat.GetFundings()
fungsi menggunakan objek pertukaran niaga hadapan jenis ini, anda mesti menentukansymbol
parameter sebagai jenis kontrak kekal tertentu untuk menyoal data kadar pembiayaan semasa jenis.
Perkhidmatanexchange.GetFundings()
fungsi menyokong sistem perdagangan dan backtesting sebenar.
Bursa yang tidak menyokong pemerolehan kumpulan data kadar pembiayaan: Futures_Bitget, Futures_OKX, Futures_MEXC, Futures_Deribit, Futures_Crypto. Perlu lulus dalamsymbol
parameter dengan kod simbol tertentu, contohnya:ETH_USDT.swap
.
Bursa yang tidak menyokongexchange.GetFundings()
fungsi:
Nama Fungsi | Pertukaran Spot yang tidak disokong | Pertukaran niaga hadapan tanpa sokongan |
---|---|---|
GetFundings | – | Futures_DigiFinex |
{@struct/Pembiayaan Pembiayaan}
Peraturanexchange.SetBase()
fungsi digunakan untuk menetapkan alamat asas antara muka API pertukaran yang dikonfigurasikan dalam objek pertukaran {@var/EXCHANGE exchange}.
pertukaran.SetBase (s)
Peraturans
parameter digunakan untuk menentukan alamat asas antara muka API pertukaran.
s
betul
senar
function main() {
// Use 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());
}
Mengubah alamat pangkalan API pertukaran tidak disokong dalam sistem backtesting, kerana sistem backtesting adalah persekitaran simulasi sandbox dan ia tidak benar-benar mengakses antara muka API pertukaran.
{@fun/Trade/exchange.IO exchange.IO}
Peraturanexchange.GetBase()
fungsi digunakan untuk mendapatkan alamat asas antara muka API pertukaran semasa.
Alamat asas antara muka API pertukaran semasa. senar
pertukaran.GetBase()
function main() {
Log(exchange.GetBase())
}
def main():
Log(exchange.GetBase())
void main() {
Log(exchange.GetBase());
}
{@fun/NetSettings/exchange.SetBase exchange.SetBase}
Peraturanexchange.SetProxy()
fungsi digunakan untuk menetapkan konfigurasi proksi objek pertukaran {@var/EXCHANGE exchange}.
pertukaran.SetProxy ((proxy)
Peraturanproxy
parameter digunakan untuk menentukan konfigurasi proksi.
penggantinya
betul
senar
function main() {
exchange.SetProxy("socks5://192.168.1.10:8080")
// If you can't access the exchange ticker interface, set up an available ss5 proxy and you can access the ticker interface
Log(exchange.GetTicker())
}
def main():
exchange.SetProxy("socks5://192.168.1.10:8080")
Log(exchange.GetTicker())
void main() {
exchange.SetProxy("socks5://192.168.1.10:8080");
Log(exchange.GetTicker());
}
Mengatur objek pertukaran {@var/EXCHANGE exchange}socks5
Proxy:
function main(){
exchange.SetProxy("ip://10.0.3.15")
// The requested IP address is 10.0.3.15
exchange.GetTicker()
}
def main():
exchange.SetProxy("ip://10.0.3.15")
exchange.GetTicker()
void main() {
exchange.SetProxy("ip://10.0.3.15");
exchange.GetTicker();
}
Selain daripadaspesifikasi globaldaripada alamat IP permintaan dari objek pertukaran {@var/EXCHANGE exchange}, terdapat juga sokongan untuk menentukan alamat IP berdasarkan {@var/EXCHANGE exchange}:
Jika tetapan proksi gagal,exchange.SetProxy()
fungsi akan mengembalikan null apabila dipanggil.exchange.SetProxy()
fungsi menetapkan proksi untukrest
Satu proksi boleh ditetapkan untuk setiap objek pertukaran {@var/EXCHANGE exchange}, dan akses ke antara muka pertukaran terikat kepada objek pertukaran {@var/EXCHANGE exchange} selepas menetapkan proksi akan diakses melalui proksi.
Sokongan untuk menetapkansocks5
proksi, mengambil objek pertukaran pertama ditambah {@var/EXCHANGE exchange} iaitu:exchanges[0]
sebagai contoh:
exchange.SetProxy("socks5://127.0.0.1:8889")
.exchange.SetProxy("socks5://username:password@127.0.0.1:8889")
. username
adalah nama pengguna danpassword
adalah kata laluan.exchange.SetProxy("")
.Menyokong menetapkan alamat IP permintaan dari objek pertukaran {@var/EXCHANGE exchange},global tertentu.
{@var/EXCHANGE pertukaran}
Peraturanexchange.SetTimeout()
Fungsi digunakan untuk menetapkan masa lapangrest
permintaan untuk objek pertukaran {@var/EXCHANGE exchange}.
pertukaran.SetTimeout (timeout)
Peraturantimeout
Parameter digunakan untuk menentukan bilangan milidetik untuk tetapan waktu henti.
masa lapang
betul
nombor
function main() {
exchange.SetTimeout(3000)
Log(exchange.GetTicker())
}
def main():
exchange.SetTimeout(3000)
Log(exchange.GetTicker())
void main() {
exchange.SetTimeout(3000);
Log(exchange.GetTicker());
}
Parametertimeout
adalah nilai milidetik, 1000 milidetik sama dengan 1 saat.rest
hanya protokol, digunakan untuk menetapkan masa lapang padarest
permintaan, ia berlaku dengan menetapkan sekali sahaja.exchange.SetTimeout(3000)
, menetapkanrest
meminta masa lapang untukexchange
panggilan fungsi dengan permintaan rangkaian sepertiexchange.GetTicker()
yang tidak menerima jawapan selama lebih daripada 3 saat akan tamat tempoh, dan panggilan fungsi yang melakukan tamat tempoh akan mengembalikan nilai sifar.SetTimeout()
bukan fungsi global, ia adalah kaedah objek pertukaran {@var/EXCHANGE exchange}.
{@var/EXCHANGE pertukaran}
Platform Perdagangan Kuantum FMZ benar-benar menyokong fungsi pelbagai benangJavaScript
strategi bahasa dari bawah sistem, dan melaksanakan objektif berikut:
Objek | Arahan | Catatan |
---|---|---|
Penggelek | Objek global berbilang benang | Fungsi ahli:Thread , getThread , mainThread , dan lain-lain |
Benang | Objek benang | Fungsi ahli:peekMessage , postMessage , join , dan lain-lain |
ThreadLock | Objek kunci benang | Fungsi ahli:acquire , release . Mereka boleh dihantar ke persekitaran benang sebagai parameter fungsi pelaksanaan benang. |
ThreadEvent | Objek peristiwa | Fungsi ahli:set , clear , wait , isSet . Mereka boleh dihantar ke dalam persekitaran benang sebagai parameter fungsi pelaksanaan benang. |
ThreadCondition | Objek keadaan | Fungsi ahli:notify , notifyAll , wait , acquire , release . Mereka boleh dihantar ke dalam persekitaran benang sebagai parameter fungsi pelaksanaan benang. |
ThreadDict | Objek kamus | Fungsi ahli:get , set . Mereka boleh dihantar ke persekitaran benang sebagai parameter fungsi pelaksanaan benang. |
Peraturanthreading
object adalah alat pengurusan multithreading global yang menyediakan fungsi seperti membuat utas serentak, kunci utas, dan objek keadaan.threading
Objek ini hanya disokong olehJavaScript
strategi bahasa.
PeraturanThread()
fungsi digunakan untuk membuat benang serentak.
PeraturanThread()
fungsi mengembalikan aThread
objek, yang digunakan untuk menguruskan benang serentak yang dicipta, komunikasi benang, dll.
Thread
objek
Thread ((func,...args) Thread ((... item)
Parameterfunc
adalah fungsi untuk pelaksanaan serentak (diterbitkan oleh rujukan), dan menyokong menyampaikan fungsi tanpa nama.func
boleh menerima pelbagai parameter, yang akan dihantar melalui...args
Oleh itu, senarai parameterfunc
perlu konsisten dengan...args
.
fungsi
betul
fungsi
Parameterarg
adalah parameter sebenar yang dihantar kepadafunc
(iaitu fungsi pelaksanaan thread serentak) apabila panggilan balik dijalankan; mungkin terdapat beberapa parameterarg
, dan senarai parameterfunc
perlu konsisten dengan...args
.
arg
palsu
rentetan, nombor, bool, objek, susunan, fungsi, nilai sifar dan jenis lain yang disokong oleh sistem
Parameteritem
adalah array yang mengandungi rujukan fungsi dan parameter mereka yang akan dijalankan secara serentak.item
parameter boleh dihantar dalam apabila memanggilThread
function.
item betul Array
function test1(a, b, c) {
Log("test1:", a, b, c)
}
function main() {
var t1 = threading.Thread(test1, 1, 2, 3)
var t2 = threading.Thread(function (msg) {
Log("msg:", msg)
}, "Hello thread2")
t1.join()
t2.join()
}
Buat utas serentak untuk kedua-dua fungsi tersuai dan fungsi tanpa nama.
function test1(msg) {
Log("msg:", msg)
test2("Hello test2")
}
function main() {
var t1 = threading.Thread(
[function(a, b, c) {Log(a, b, c)}, 1, 2, 3],
[test1, "Hello test1"],
[`function test2(msg) {Log("msg:", msg)}`])
t1.join()
}
GunakanThread(...items)
bentuk untuk mencipta benang serentak dan melaksanakan pelbagai fungsi secara berurutan.
function ml(input) {
const net = new brain.NeuralNetwork()
net.train([
{ input: [0, 0], output: [0] },
{ input: [0, 1], output: [1] },
{ input: [1, 0], output: [1] },
{ input: [1, 1], output: [0] },
])
return net.run(input)
}
function main() {
var ret = threading.Thread([ml, [1, 0]], [HttpQuery("https://unpkg.com/brain.js")]).join()
// ret: {"id":1,"terminated":false,"elapsed":337636000,"ret":{"0":0.9339330196380615}}
Log(ret)
}
Ia menyokong lulus dalam rentetan fungsi dan boleh mengimport perpustakaan luaran secara dinamik untuk pengkomputeran serentak.
Fungsi benangfunc
telah diteruskan ke dalamThread()
fungsi untuk pelaksanaan serentak berjalan dalam persekitaran yang terpencil, jadi pembolehubah di luar benang tidak boleh dirujuk secara langsung, dan penyusunan akan gagal apabila dirujuk. Pada masa yang sama, rujukan kepada fungsi penutupan lain tidak disokong dalam benang. Semua API yang disediakan oleh platform boleh dipanggil dalam benang, tetapi fungsi lain yang ditakrifkan pengguna tidak boleh dipanggil.
Ia menyokong sistem backtesting dan persekitaran perdagangan langsung. Semua fungsi yang berkaitan dengan thread serentak hanya disokong sebagai keserasian kod dalam sistem backtesting dan tidak akan dilaksanakan oleh thread serentak, jadi mereka tidak akan diulangi dalam bab ini.
{@fun/Threads/threading/getThread getThread}, {@fun/Threads/threading/mainThread mainThread}, {@fun/Threads/threading/currentThread currentThread}, {@fun/Threads/threading/Lock Lock}, {@fun/Threads/threading/Condition Condition}, {@fun/Threads/threading/Event Event}, {@fun/Threads/threading/Dict Dict}, {@fun/Threads/threading/pending pending}, {@fun/Threads/threading/eventLoop}
PeraturangetThread()
fungsi digunakan untuk mendapatkan objek thread berdasarkan ID thread yang ditentukan.
PeraturangetThread()
fungsi mengembalikanThread
objek dengan threadId yang ditentukan oleh parameter
Thread
objek
getThread ((threadId)
ParameterthreadId
adalah ID objek thread. Dapatkan objek thread yang sepadan dengan menentukan parameter.
ThreadId betul nombor
function main() {
var t1 = threading.Thread(function () {
Log("Hello thread1")
})
// The Thread object has a method: id(), which is used to get the thread ID. You can view the section of the document corresponding to the Thread object.
var threadId = t1.id()
var threadName = t1.name()
Log("threadId:", threadId, ", threadName:", threadName)
var t2 = threading.getThread(threadId)
Log(`threadId == t2.id():`, threadId == t2.id(), `, threadName == t2.name():`, threadName == t2.name())
}
Dapatkan objek benang yang ditentukan melaluithreadId
.
Ia menyokong sistem backtesting dan persekitaran perdagangan langsung.
Jika benang yang anda ingin mendapatkan telah dijalankan dan dikeluarkan, anda tidak boleh menggunakanthreading.getThread(threadId)
untuk mendapatkan objek benang benang.
{@fun/Threads/threading/Thread Thread}, {@fun/Threads/threading/mainThread mainThread}, {@fun/Threads/threading/currentThread currentThread}, {@fun/Threads/threading/Lock Lock}, {@fun/Threads/threading/Condition Condition}, {@fun/Threads/threading/Event Event}, {@fun/Threads/threads/Dict Dict}, {@fun/Threads/threading/pending pending}, {@fun/Threads/threading/eventLoop eventLoop}
PeraturanmainThread()
fungsi digunakan untuk mendapatkan objek benang benang utama, iaitu benang di manamain()
fungsi dalam strategi terletak.
PeraturanmainThread()
fungsi mengembalikan objek benang benang utama.
Thread
objek
mainThread()
function main() {
Log("The threadId of the main thread:", threading.mainThread().id())
}
DapatkanThread
objek benang utama dan outputthreadId
daripada benang utama.
function test() {
Log("Output the main thread ID in the test function:", threading.mainThread().id())
}
function main() {
var t1 = threading.Thread(test)
t1.join()
}
Objek benang benang utama juga boleh diperoleh dalam benang serentak.
Ia menyokong sistem backtesting dan persekitaran perdagangan langsung.
{@fun/Threads/getThread getThread}, {@fun/Threads/threading/Thread Thread}, {@fun/Threads/threading/currentThread currentThread}, {@fun/Threads/threading/Lock Lock}, {@fun/Threads/threading/Condition Condition}, {@fun/Threads/threading/Event Event}, {@fun/Threads/threads/Dict Dict}, {@fun/Threads/threading/pending pending}, {@fun/Threads/threading/eventLoop Loop}
PeraturancurrentThread()
fungsi digunakan untuk mendapatkan objek benang benang semasa.
PeraturancurrentThread()
fungsi mengembalikan objek benang benang semasa.
Thread
objek
CurrentThread ((()
function test() {
Log("Id of the current thread:", threading.currentThread().id())
}
function main() {
var t1 = threading.Thread(test)
t1.join()
}
DapatkanThread
objek benang semasa dan outputthreadId
daripada benang semasa.
Ia menyokong sistem backtesting dan persekitaran perdagangan langsung.
{@fun/Threads/threading/Thread Thread}, {@fun/Threads/threading/mainThread mainThread}, {@fun/Threads/threading/Thread Thread}, {@fun/Threads/threading/Lock Lock}, {@fun/Threads/threads/threading/Condition Condition}, {@fun/Threads/threads/threading/Event Event}, {@fun/Threads/threads/threading/Dict Dict}, {@fun/Threads/threading/threading/pending pending}, {@fun/Threads/threading/eventLoop eventLoop}
PeraturanLock()
fungsi digunakan untuk mencipta objek kunci benang.
PeraturanLock()
fungsi mengembalikan objek kunci benang.
ThreadLock
objek
Kunci.
function consumer(productionQuantity, dict, lock) {
for (var i = 0; i < productionQuantity; i++) {
lock.acquire()
var count = dict.get("count")
Log("consumer:", count)
Sleep(1000)
lock.release()
}
}
function producer(productionQuantity, dict, lock) {
for (var i = 0; i < productionQuantity; i++) {
lock.acquire()
dict.set("count", i)
Log("producer:", i)
Sleep(1000)
lock.release()
}
}
function main() {
var dict = threading.Dict()
dict.set("count", -1)
var lock = threading.Lock()
var productionQuantity = 10
var producerThread = threading.Thread(producer, productionQuantity, dict, lock)
var consumerThread = threading.Thread(consumer, productionQuantity, dict, lock)
consumerThread.join()
producerThread.join()
}
Dua benang serentak mengakses sumber yang sama.
Ia menyokong sistem backtesting dan persekitaran perdagangan langsung.
{@fun/Threads/threading/getThread getThread}, {@fun/Threads/threading/mainThread mainThread}, {@fun/Threads/threading/currentThread currentThread}, {@fun/Threads/threads/threading/ThreadThread}, {@fun/Threads/threads/threading/Condition Condition}, {@fun/Threads/threads/threading/Event Event}, {@fun/Threads/threads/threading/Dict Dict}, {@fun/Threads/threads/threading/pending pending}, {@fun/Threads/threads/threading/eventLoop}
PeraturanCondition()
fungsi digunakan untuk membuat objek pembolehubah keadaan, yang digunakan untuk mencapai penyegerakan dan komunikasi antara benang dalam persekitaran serentak berbilang benang.Condition()
, benang boleh menunggu apabila keadaan tertentu tidak dipenuhi sehingga benang lain memaklumkan bahawa keadaan telah dipenuhi.
PeraturanCondition()
fungsi mengembalikan aThreadCondition
object.
ThreadCondition
objek
Keadaan
function consumer(productionQuantity, dict, condition) {
for (var i = 0; i < productionQuantity; i++) {
condition.acquire()
while (dict.get("array").length == 0) {
condition.wait()
}
var arr = dict.get("array")
var count = arr.shift()
dict.set("array", arr)
Log("consumer:", count, ", array:", arr)
condition.release()
Sleep(1000)
}
}
function producer(productionQuantity, dict, condition) {
for (var i = 0; i < productionQuantity; i++) {
condition.acquire()
var arr = dict.get("array")
arr.push(i)
dict.set("array", arr)
Log("producer:", i, ", array:", arr)
condition.notify()
condition.release()
Sleep(1000)
}
}
function main() {
var dict = threading.Dict()
dict.set("array", [])
var condition = threading.Condition()
var productionQuantity = 10
var producerThread = threading.Thread(producer, productionQuantity, dict, condition)
var consumerThread = threading.Thread(consumer, productionQuantity, dict, condition)
consumerThread.join()
producerThread.join()
}
Dua benang serentak mengakses sumber yang sama.
Sistem backtesting tidak melaksanakan fungsi ini, ia hanya mentakrifkannya.
{@fun/Threads/getThread getThread}, {@fun/Threads/threads/mainThread mainThread}, {@fun/Threads/threading/currentThread currentThread}, {@fun/Threads/threads/threading/Lock Lock}, {@fun/Threads/threads/threading/Thread Thread}, {@fun/Threads/threads/threading/Event Event}, {@fun/Threads/threads/threading/Dict Dict}, {@fun/Threads/threading/threading/pending pending}, {@fun/Threads/threading/eventLoop}
PeraturanEvent()
fungsi digunakan untuk menciptaperistiwa benangobjek, yang digunakan untuk menyegerakkan antara utas, membolehkan satu utas menunggu pemberitahuan atau isyarat dari utas lain.
PeraturanEvent()
fungsi mengembalikan aThreadEvent
object.
ThreadEvent
objek
Acara
function consumer(productionQuantity, dict, pEvent, cEvent) {
for (var i = 0; i < productionQuantity; i++) {
while (dict.get("array").length == 0) {
pEvent.wait()
}
if (pEvent.isSet()) {
pEvent.clear()
}
var arr = dict.get("array")
var count = arr.shift()
dict.set("array", arr)
Log("consumer:", count, ", array:", arr)
cEvent.set()
Sleep(1000)
}
}
function producer(productionQuantity, dict, pEvent, cEvent) {
for (var i = 0; i < productionQuantity; i++) {
while (dict.get("array").length != 0) {
cEvent.wait()
}
if (cEvent.isSet()) {
cEvent.clear()
}
var arr = dict.get("array")
arr.push(i)
dict.set("array", arr)
Log("producer:", i, ", array:", arr)
pEvent.set()
Sleep(1000)
}
}
function main() {
var dict = threading.Dict()
dict.set("array", [])
var pEvent = threading.Event()
var cEvent = threading.Event()
var productionQuantity = 10
var producerThread = threading.Thread(producer, productionQuantity, dict, pEvent, cEvent)
var consumerThread = threading.Thread(consumer, productionQuantity, dict, pEvent, cEvent)
consumerThread.join()
producerThread.join()
}
Dua benang serentak mengakses sumber yang sama.
Ia menyokong sistem backtesting dan persekitaran perdagangan langsung.
{@fun/Threads/threading/getThread getThread}, {@fun/Threads/threading/mainThread mainThread}, {@fun/Threads/threading/currentThread currentThread}, {@fun/Threads/threads/threading/Lock Lock}, {@fun/Threads/threads/threading/Condition Condition}, {@fun/Threads/threads/threading/Thread Thread}, {@fun/Threads/threads/threading/Dict Dict}, {@fun/Threads/threads/threading/pending pending}, {@fun/Threads/threads/threading/eventLoop}
PeraturanDict()
fungsi digunakan untuk membuat objek kamus untuk lulus ke benang serentak.
PeraturanDict()
fungsi mengembalikan aThreadDict
object.
ThreadDict
objek
Dict ((()
function threadFun1(obj) {
obj["age"] = 100
while (true) {
Log("threadFun1 obj:", obj)
Sleep(5000)
}
}
function threadFun2(obj) {
while (true) {
Log("threadFun2 obj:", obj)
Sleep(5000)
}
}
function main() {
var obj = {"age": 10}
var t1 = threading.Thread(threadFun1, obj)
var t2 = threading.Thread(threadFun2, obj)
t1.join()
t2.join()
}
Memindahkan objek biasa ke fungsi pelaksanaan utas serentak untuk menguji sama ada mengubah suai nilai kunci objek akan menyebabkan perubahan nilai kunci objek di utas lain.
function threadFun1(threadDict) {
threadDict.set("age", 100)
while (true) {
Log(`threadFun1 threadDict.get("age"):`, threadDict.get("age"))
Sleep(5000)
}
}
function threadFun2(threadDict) {
while (true) {
Log(`threadFun2 threadDict.get("age"):`, threadDict.get("age"))
Sleep(5000)
}
}
function main() {
var threadDict = threading.Dict()
threadDict.set("age", 10)
var t1 = threading.Thread(threadFun1, threadDict)
var t2 = threading.Thread(threadFun2, threadDict)
t1.join()
t2.join()
}
BerikanThreadDict
objek yang dicipta olehDict()
fungsi kepada fungsi pelaksanaan utas serentak, dan menguji sama ada mengubah suai nilai kunci objek akan menyebabkan nilai kunci objek dalam utas lain berubah.
Apabila objek biasa diteruskan ke fungsi utas serentak, ia diteruskan sebagai salinan mendalam.
Ia menyokong sistem backtesting dan persekitaran perdagangan langsung.
{@fun/Threads/threading/getThread getThread}, {@fun/Threads/threading/mainThread mainThread}, {@fun/Threads/threading/currentThread currentThread}, {@fun/Threads/threading/Lock Lock}, {@fun/Threads/threading/Condition Condition}, {@fun/Threads/threading/Event Event}, {@fun/Threads/threading/threading/Thread Thread}, {@fun/Threads/threading/pending pending}, {@fun/Threads/threading/eventLoop}
Peraturanpending
fungsi digunakan untuk mendapatkan bilangan benang serentak yang berjalan dalam program strategi semasa.
Peraturanpending()
fungsi mengembalikan bilangan benang serentak bahawa program strategi semasa sedang berjalan.
nombor
masih belum selesai.
function threadFun1() {
Log("threadFun1")
Sleep(3000)
}
function threadFun2() {
for (var i = 0; i < 3; i++) {
LogStatus(_D(), "print from threadFun2")
Sleep(3000)
}
}
function main() {
Log(`begin -- threading.pending():`, threading.pending())
var t1 = threading.Thread(threadFun1)
var t2 = threading.Thread(threadFun2)
Log(`after threading.Thread -- threading.pending():`, threading.pending())
t1.join()
t2.join()
Log(`after thread.join -- threading.pending():`, threading.pending())
}
Buat dua benang yang berjalan serentak dan panggilpending()
fungsi pada nod masa yang berbeza.
Apabila strategimain()
fungsi mula berjalan, memanggil fungsipending()
langsung akan kembali 1, kerana benang utama di mana strategimain()
fungsi terletak juga benang menunggu.
Ia menyokong sistem backtesting dan persekitaran perdagangan langsung.
{@fun/Threads/threading/getThread getThread}, {@fun/Threads/threading/mainThread mainThread}, {@fun/Threads/threading/currentThread currentThread}, {@fun/Threads/threading/Lock Lock}, {@fun/Threads/threading/Condition Condition}, {@fun/Threads/threading/Event Event}, {@fun/Threads/threading/Dict Dict}, {@fun/Threads/threading/Thread Thread}, {@fun/Threads/threading/eventLoop}
Thread
objek boleh dicipta atau dikembalikan olehthreading.Thread()
, threading.getThread()
, threading.mainThread()
, danthreading.currentThread()
.
PeraturanpeekMessage()
fungsi digunakan untuk mendapatkan mesej dari utas.
PeraturanpeekMessage()
fungsi mengembalikan mesej yang diterima oleh utas yang dikaitkan dengan objek utas semasa.
rentetan, nombor, bool, objek, susunan, nilai sifar dan jenis lain yang disokong oleh sistem
PeekMessage() peekMessage ((timeout)
Parametertimeout
adalah tetapan masa lapang. Ia akan menyekat dan menunggu bilangan milidetik yang ditetapkan oleh parameter dan mengembalikan data. Jika tidak ada data dan masa lapang melebihi had, nilai sifar akan dikembalikan. Jikatimeout
ditetapkan kepada 0 atautimeout
parameter tidak lulus, ia bermakna bahawa proses akan menyekat dan menunggu sehingga data diterima dari saluran.timeout
Jika set kepada -1, ia bermaksud bahawa proses tidak akan menyekat dan mengembalikan data dengan segera. Jika tidak ada data, nilai null akan dikembalikan.
masa lapang palsu nombor
function main() {
var t1 = threading.Thread(function() {
for (var i = 0; i < 10; i++) {
Log("thread1 postMessage():", i)
threading.mainThread().postMessage(i)
Sleep(500)
}
})
while (true) {
var msg = threading.currentThread().peekMessage()
Log("main peekMessage():", msg)
if (msg == 9) {
break
}
Sleep(1000)
}
t1.join()
}
Hantar mesej ke thread utama dari thread serentak.
Apabila menulis program, kita perlu memberi perhatian kepada masalah thread deadlock.
{@fun/Threads/Thread/postMessage postMessage}, {@fun/Threads/Thread/join join}, {@fun/Threads/Thread/terminate terminate}, {@fun/Threads/Thread/getData getData}, {@fun/Threads/Thread/setData setData}, {@fun/Threads/Thread/id id}, {@fun/Threads/Thread/name}, {@Threads/Threads/eventLoop eventLoop}
PeraturanpostMessage()
fungsi digunakan untuk menghantar mesej ke utas.
postMessage ((msg)
Parametermsg
adalah mesej yang akan dihantar.
msg betul Sebarang jenis yang disokong oleh sistem, seperti rentetan, nombor, bool, objek, array, nilai sifar, dan lain-lain.
function main() {
var t1 = threading.Thread(function() {
for (var i = 0; i < 10; i++) {
Log("thread1 postMessage():", i)
threading.mainThread().postMessage(i)
Sleep(500)
}
})
for (var i = 0; i < 10; i++) {
var event = threading.mainThread().eventLoop()
Log("main event:", event)
Sleep(500)
}
t1.join()
}
Hantar mesej dalam utas serentak dan gunakaneventLoop()
untuk menerima pemberitahuan mesej.
Apabila fungsi pelaksanaan threadpostMessage()
fungsi untuk menghantar isyarat atau data, peristiwa mesej juga dihasilkan.eventLoop()
fungsi untuk menerima pemberitahuan mesej.
{@fun/Threads/Thread/peekMessage peekMessage}, {@fun/Threads/Thread/join join}, {@fun/Threads/Thread/terminate terminate}, {@fun/Threads/Thread/getData getData}, {@fun/Threads/Thread/setData setData}, {@fun/Threads/Thread/id id}, {@fun/Threads/Threads/Thread/name name}, {@fun/Threads/Thread/eventLoop eventLoop}
Peraturanjoin()
fungsi digunakan untuk menunggu untuk utas untuk keluar dan mendapatkan semula sumber sistem.
PeraturanThreadRet
objekmengandungi data mengenai hasil pelaksanaan.
ThreadRet
objek
menyertai ((() join ((timeout)
Peraturantimeout
parameter digunakan untuk menetapkan masa lapang dalam mili saat untuk menunggu untuk benang untuk selesai.timeout
parameter ditetapkan kepada 0 atautimeout
parameter tidak ditetapkan,join()
fungsi akan menyekat dan menunggu sehingga benang selesai menjalankan.timeout
parameter ditetapkan kepada -1,join()
Fungsi akan kembali dengan segera.
masa lapang palsu nombor
function main() {
var t1 = threading.Thread(function() {
Log("Hello thread1")
Sleep(5000)
})
var ret = t1.join(1000)
Log("ret:", ret) // ret: undefined
ret = t1.join()
Log("ret:", ret) // ret: {"id":1,"terminated":false,"elapsed":5003252000}
}
Ujijoin()
fungsi untuk masa lapang dan output nilai pulangan.
Peraturanjoin()
fungsi masa keluar dan kembaliundefined
.
{@fun/Threads/Thread/peekMessage peekMessage}, {@fun/Threads/Thread/postMessage postMessage}, {@fun/Threads/Thread/terminate terminate}, {@fun/Threads/Thread/getData getData}, {@fun/Threads/Thread/setData setData}, {@fun/Threads/Thread/id id}, {@fun/Threads/Thread/name name}, {@fun/Threads/Threads/Thread/eventLoop eventLoop}
Peraturanterminate()
fungsi digunakan untuk memaksa menamatkan thread dan melepaskan sumber perkakasan yang digunakan oleh thread yang dicipta.
mengakhiri ((()
function main() {
var t1 = threading.Thread(function() {
for (var i = 0; i < 10; i++) {
Log("thread1 i:", i)
Sleep(1000)
}
})
Sleep(3000)
t1.terminate()
Log("after t1.terminate()")
while (true) {
LogStatus(_D())
Sleep(1000)
}
}
Menamatkan pelaksanaan thread dengan paksa. Selepas memaksa menamatkan thread, tidak akan ada output dari thread ini dalam log.
Untuk benang yang diakhiri secara paksa olehterminate()
fungsi, kita tidak boleh lagi menggunakanjoin()
fungsi untuk menunggu mereka untuk menamatkan.
{@fun/Threads/Thread/peekMessage peekMessage}, {@fun/Threads/Thread/postMessage postMessage}, {@fun/Threads/Thread/join join}, {@fun/Threads/Thread/getData getData}, {@fun/Threads/Thread/setData setData}, {@fun/Threads/Thread/id id}, {@fun/Threads/Thread/name name}, {@fun/Threads/Thread/eventLoop eventLoop}
PeraturangetData()
fungsi digunakan untuk mengakses pembolehubah yang direkodkan dalam persekitaran benang. data adalah sah apabila benang belum menjalankanjoin()
fungsi (menunggu kejayaan keluar) dan tidak menjalankanterminate()
fungsi (mengakhiri benang secara paksa).
PeraturangetData()
fungsi mengembalikan nilai kunci yang sepadan dengankey
parameter dalam pasangan kunci-nilai yang disimpan dalam konteks thread semasa.
rentetan, nombor, bool, objek, susunan, nilai sifar dan jenis lain yang disokong oleh sistem
getData() getData (kunci)
Peraturankey
parameter adalah nama kunci pasangan kunci-nilai yang disimpan.
kunci betul senar
function main() {
var t1 = threading.Thread(function() {
for (var i = 0; i < 5; i++) {
threading.currentThread().setData("count", i)
Log(`setData("count"):`, i)
Sleep(1000)
}
})
for (var i = 0; i < 5; i++) {
var count = threading.getThread(t1.id()).getData("count")
Log(`getData("count"):`, count)
Sleep(1000)
}
t1.join()
}
Mencatatkan nilai kuncicount
dalam persekitaran benang serentak, dan kemudian membaca nilai kuncicount
dalam benang utama.
{@fun/Threads/Thread/peekMessage peekMessage}, {@fun/Threads/Thread/postMessage postMessage}, {@fun/Threads/Thread/join join}, {@fun/Threads/Thread/terminate terminate}, {@fun/Threads/Thread/setData setData}, {@fun/Threads/Thread/id id}, {@fun/Threads/Thread/name name}, {@fun/Threads/Thread/eventLoop eventLoop}
PeraturansetData()
fungsi digunakan untuk menyimpan pembolehubah dalam konteks benang.
setData ((kunci, nilai)
Peraturankey
parameter digunakan untuk menentukan nama kunci pasangan kunci-nilai yang disimpan.
kunci
betul
senar
Peraturanvalue
parameter digunakan untuk menentukan nilai kunci pasangan kunci-nilai yang disimpan.
nilai betul Sebarang jenis yang disokong oleh sistem, seperti rentetan, nombor, bool, objek, array, nilai sifar, dan lain-lain.
function main() {
var t1 = threading.Thread(function() {
threading.currentThread().setData("data", 100)
})
Sleep(1000)
Log(`t1.getData("data"):`, t1.getData("data"))
t1.join()
}
Tetapkan pasangan kunci-nilai di benang serentak dan baca pasangan kunci-nilai di benang utama.
Data adalah sah apabila benang belum dilaksanakanjoin()
fungsi (menunggu kejayaan keluar) dan tidak menjalankanterminate()
fungsi (mengakhiri benang secara paksa). Nilai parametervalue
mestilah pembolehubah yang boleh diserialisasikan.
{@fun/Threads/Thread/peekMessage peekMessage}, {@fun/Threads/Thread/postMessage postMessage}, {@fun/Threads/Thread/join join}, {@fun/Threads/Thread/terminate terminate}, {@fun/Threads/Thread/getData getData}, {@fun/Threads/Thread/id id}, {@fun/Threads/Thread/name name}, {@fun/Threads/Thread/eventLoop eventLoop}
Peraturanid()
fungsi digunakan untuk mengembalikanthreadId
dari contoh objek multithread semasa.
Nilai pulanganid()
fungsi ialahthreadId
.
nombor
id()
function main() {
var t1 = threading.Thread(function() {
threading.currentThread().setData("data", 100)
})
Log(`t1.id():`, t1.id())
t1.join()
}
Membuat benang yang berjalan serentak dan outputthreadId
daripada benang serentak ini dalam benang utama.
{@fun/Threads/Thread/peekMessage peekMessage}, {@fun/Threads/Thread/postMessage postMessage}, {@fun/Threads/Thread/join join}, {@fun/Threads/Thread/terminate terminate}, {@fun/Threads/Thread/getData getData}, {@fun/Threads/Thread/setData setData}, {@fun/Threads/Thread/name name}, {@fun/Threads/Threads/Thread/eventLoop eventLoop}
Peraturanname()
fungsi digunakan untuk mengembalikan nama contoh objek multithread semasa.
Peraturanname()
fungsi mengembalikan nama benang bersamaan.
senar
nama (()
function main() {
var t1 = threading.Thread(function() {
threading.currentThread().setData("data", 100)
})
Log(`t1.name():`, t1.name()) // t1.name(): Thread-1
t1.join()
}
Buat thread serentak dan keluarkan nama thread serentak dalam thread utama.
{@fun/Threads/Thread/peekMessage peekMessage}, {@fun/Threads/Thread/postMessage postMessage}, {@fun/Threads/Thread/join join}, {@fun/Threads/Thread/terminate terminate}, {@fun/Threads/Thread/getData getData}, {@fun/Threads/Thread/setData setData}, {@fun/Threads/Thread/id id}, {@fun/Threads/Thread/eventLoop eventLoop}
PeraturaneventLoop()
fungsi digunakan untuk mendengar untuk peristiwa yang diterima oleh benang.
PeraturaneventLoop()
fungsi mengembalikan maklumat peristiwa yang diterima oleh thread semasa. LihatStruktur Maklumat Acara.
objek, nilai sifar
eventLoop (dalam bahasa Inggeris) eventLoop (timeout)
Parametertimeout
adalah tetapan masa lapang dalam milidetik. Jika parametertimeout
Jika ia lebih besar daripada 0, ia akan menetapkan masa tunggu acara. Jika ia kurang daripada 0, ia akan mengembalikan acara terbaru dengan serta-merta.
masa lapang palsu nombor
function main() {
var t1 = threading.Thread(function() {
while (true) {
var eventMsg = threading.currentThread().eventLoop() // Blocking wait
// 2024-11-14 10:14:18 thread1 eventMsg: {"Seq":1,"Event":"thread","ThreadId":0,"Index":1,"Queue":0,"Nano":1731550458699947000}
Log(_D(), "thread1 eventMsg:", eventMsg)
}
})
var t2 = threading.Thread(function() {
while (true) {
var eventMsg = threading.currentThread().eventLoop(-1) // Return immediately
Log(_D(), "thread2 eventMsg:", eventMsg)
Sleep(5000)
}
})
var t3 = threading.Thread(function() {
while (true) {
var eventMsg = threading.currentThread().eventLoop(3000) // Set a 3 second timeout
Log(_D(), "thread3 eventMsg:", eventMsg)
}
})
t1.postMessage("Hello ", t1.name())
t2.postMessage("Hello ", t2.name())
t3.postMessage("Hello ", t3.name())
t1.join()
t2.join()
t3.join()
}
Melakukan tiga benang serentak dan mengeluarkan maklumat peristiwa yang diterima. Jika masa tamat berlaku atau fungsi kembali dengan segera, nilai output adalah sifar.
Mekanisme pemprosesaneventLoop()
fungsi adalah sama dengan fungsi globalEventLoop()
.
{@fun/Threads/Thread/peekMessage peekMessage}, {@fun/Threads/Thread/postMessage postMessage}, {@fun/Threads/Thread/join join}, {@fun/Threads/Thread/terminate terminate}, {@fun/Threads/Thread/getData getData}, {@fun/Threads/Thread/setData setData}, {@fun/Threads/Thread/id id}, {@fun/Threads/Thread/name name}
Objek kunci benang, digunakan untuk pemprosesan penyegerakan pelbagai benang.
Peraturanacquire()
fungsi digunakan untuk meminta kunci benang (kunci).
mendapatkan ((()
Sila rujukthreading.Lock()
Bahagian untuk contoh.
Peraturanacquire()
fungsi digunakan untuk meminta kunci thread.acquire()
fungsi objek kunci thread, ia cuba untuk memperoleh kunci. Jika kunci tidak kini dipegang oleh utas lain, utas panggilan berjaya memperoleh kunci dan meneruskan pelaksanaan. Jika kunci sudah dipegang oleh utas lain, utas panggilanacquire()
akan disekat sehingga kunci dilepaskan.
{@fun/Threads/threading/Lock Lock}, {@fun/Threads/ThreadLock/release release}
Peraturanrelease()
fungsi digunakan untuk melepaskan kunci benang (membuka kunci).
Pembebasan ((()
function consumer(productionQuantity, dict, pLock, cLock) {
for (var i = 0; i < productionQuantity; i++) {
pLock.acquire()
cLock.acquire()
var arr = dict.get("array")
var count = arr.shift()
dict.set("array", arr)
Log("consumer:", count, ", array:", arr)
cLock.release()
Sleep(1000)
pLock.release()
}
}
function producer(productionQuantity, dict, pLock, cLock) {
for (var i = 0; i < productionQuantity; i++) {
cLock.acquire() // cLock.acquire() placed after pLock.acquire() will not cause deadlock
pLock.acquire()
var arr = dict.get("array")
arr.push(i)
dict.set("array", arr)
Log("producer:", i, ", array:", arr)
pLock.release()
Sleep(1000)
cLock.release()
}
}
function main() {
var dict = threading.Dict()
dict.set("array", [])
var pLock = threading.Lock()
var cLock = threading.Lock()
var productionQuantity = 10
var producerThread = threading.Thread(producer, productionQuantity, dict, pLock, cLock)
var consumerThread = threading.Thread(consumer, productionQuantity, dict, pLock, cLock)
consumerThread.join()
producerThread.join()
}
Ujian senario buntu
Perlu diperhatikan bahawa penggunaan kunci benang yang tidak betul boleh menyebabkan kebuntuan.
{@fun/Threads/threading/Lock Lock}, {@fun/Threads/ThreadLock/acquire acquire}
Objek peristiwa, digunakan untuk pemberitahuan dan isyarat peristiwa berbilang benang.
Peraturanset()
fungsi digunakan untuk memberitahu peristiwa (set isyarat).
set (()
Sila rujukthreading.Event()
Bahagian untuk contoh.
Jika isyarat telah ditetapkan menggunakanset()
Kita perlu membersihkan isyarat dan menetapkannya semula.
{@fun/Threads/ThreadEvent/clear clear}, {@fun/Threads/ThreadEvent/wait wait}, {@fun/Threads/ThreadEvent/isSet isSet}
Peraturanclear()
Fungsi digunakan untuk membersihkan isyarat.
jelas.
Sila rujukthreading.Event()
Bahagian untuk contoh.
{@fun/Threads/ThreadEvent/set set}, {@fun/ThreadEvent/wait wait}, {@fun/Threads/ThreadEvent/isSet isSet}
Peraturanwait()
fungsi digunakan untuk menetapkan acara (isyarat) menunggu, dan akan menyekat sebelum acara (isyarat) ditetapkan; ia menyokong menetapkan parameter timeout.
Peraturanwait()
fungsi mengembalikan sama ada masa lapang telah berlaku. Jika ya, ia mengembalikan nilai benar.
bool
Tunggu. tunggu (timeout)
Peraturantimeout
Parameter digunakan untuk menetapkan masa tunggu dalam mili saat.
masa lapang palsu nombor
function main() {
var event = threading.Event()
var t1 = threading.Thread(function(event) {
var ret = event.wait(100)
Log(`event.wait(100):`, ret)
ret = event.wait()
Log(`event.wait():`, ret)
}, event)
Sleep(1000)
event.set()
t1.join()
}
Uji nilai pulanganwait()
function.
{@fun/Threads/ThreadEvent/set set}, {@fun/Threads/ThreadEvent/clear clear}, {@fun/Threads/ThreadEvent/isSet isSet}
PeraturanisSet()
fungsi digunakan untuk menentukan sama ada peristiwa (isyarat) telah ditetapkan.
PeraturanisSet()
fungsi mengembalikan sama ada acara (isyarat) telah ditetapkan; jika acara (isyarat) telah ditetapkan, ia mengembalikan nilai benar.
bool
isSet()
Sila rujukthreading.Event()
Bahagian untuk contoh.
{@fun/Threads/ThreadEvent/set set}, {@fun/Threads/ThreadEvent/clear clear}, {@fun/Threads/ThreadEvent/wait wait}
Objek keadaan, digunakan untuk penyegerakan pelbagai benang.
Peraturannotify()
fungsi digunakan untuk membangunkan thread menunggu (jika ada). Hanya thread yang telah dipanggilwait()
Sistem akan terbangun.
maklumkan
function consumer(dict, condition) {
while (true) {
condition.acquire()
while (dict.get("array").length == 0) {
Log(threading.currentThread().name(), "wait()...", ", array:", dict.get("array"))
condition.wait()
}
var arr = dict.get("array")
var num = arr.shift()
Log(threading.currentThread().name(), ", num:", num, ", array:", arr, "#FF0000")
dict.set("array", arr)
Sleep(1000)
condition.release()
}
}
function main() {
var condition = threading.Condition()
var dict = threading.Dict()
dict.set("array", [])
var t1 = threading.Thread(consumer, dict, condition)
var t2 = threading.Thread(consumer, dict, condition)
var t3 = threading.Thread(consumer, dict, condition)
Sleep(1000)
var i = 0
while (true) {
condition.acquire()
var msg = ""
var arr = dict.get("array")
var randomNum = Math.floor(Math.random() * 5) + 1
if (arr.length >= 3) {
condition.notifyAll()
msg = "notifyAll"
} else {
arr.push(i)
dict.set("array", arr)
if (randomNum > 3 && arr.length > 0) {
condition.notify()
msg = "notify"
} else {
msg = "pass"
}
i++
}
Log(_D(), "randomNum:", randomNum, ", array:", arr, ", msg:", msg)
condition.release()
Sleep(1000)
}
}
Gunakannotify()
fungsi untuk membangunkan benang menunggu.
Peraturannotify()
fungsi membangunkan utas dalam barisan menunggu.
Apabilanotify()
Fungsi membangunkan benang, benang akan mendapatkan semula kunci benang.
{@fun/Threads/ThreadCondition/notifyAll notifyAll}, {@fun/Threads/ThreadCondition/wait wait}, {@fun/Threads/ThreadCondition/acquire acquire}, {@fun/Threads/ThreadCondition/release release}
PeraturannotifyAll()
Fungsi membangunkan semua benang menunggu.
memberitahuSemua()
Sila rujukThreadCondition.notify()
Bahagian untuk contoh.
PeraturannotifyAll()
Fungsi membangkitkan semua benang menunggu satu demi satu, dan benang yang dibangkitkan mendapatkan semula kunci benang.
{@fun/Threads/ThreadCondition/notify notify}, {@fun/Threads/ThreadCondition/wait wait}, {@fun/Threads/ThreadCondition/acquire acquire}, {@fun/Threads/ThreadCondition/release release}
Peraturanwait()
Fungsi digunakan untuk membuat benang menunggu di bawah keadaan tertentu yang direka.
Tunggu.
Sila rujukThreadCondition.notify()
Bahagian untuk contoh.
Peraturanwait()
Fungsi melepaskan kunci benang dan mendapatkan semula kunci benang apabila bangun.
{@fun/Threads/ThreadCondition/notify notify}, {@fun/Threads/ThreadCondition/notifyAll notifyAll}, {@fun/Threads/ThreadCondition/acquire acquire}, {@fun/Threads/ThreadCondition/release release}
Peraturanacquire()
fungsi digunakan untuk meminta kunci benang (kunci).
mendapatkan ((()
Sila rujukThreadCondition.notify()
Bahagian untuk contoh.
Sebelum digunakanwait()
, anda perlu meminta kunci benang (kunci) objek keadaan semasa.
{@fun/Threads/ThreadCondition/notify notify}, {@fun/Threads/ThreadCondition/notifyAll notifyAll}, {@fun/Threads/ThreadCondition/wait wait}, {@fun/Threads/ThreadCondition/release release}
Peraturanrelease()
fungsi digunakan untuk melepaskan kunci benang (membuka kunci).
Pembebasan ((()
Sila rujukThreadCondition.notify()
Bahagian untuk contoh.
Selepas digunakanwait()
, kita perlu melepaskan kunci benang (membuka kunci) objek keadaan semasa.
{@fun/Threads/ThreadCondition/notify notify}, {@fun/Threads/ThreadCondition/notifyAll notifyAll}, {@fun/Threads/ThreadCondition/wait wait}, {@fun/Threads/ThreadCondition/acquire acquire}
Objek kamus, digunakan untuk berkongsi data.
Peraturanget()
fungsi digunakan untuk mendapatkan nilai kunci yang direkodkan dalam objek kamus.
Peraturanget()
fungsi mengembalikan nilai kunci yang ditentukan olehkey
parameter.
rentetan, nombor, bool, objek, susunan, nilai sifar dan jenis lain yang disokong oleh sistem
Dapatkan kunci
Peraturankey
Parameter digunakan untuk menentukan nama kunci yang sepadan dengan kunci yang akan diperoleh.
kunci betul senar
function main() {
var event = threading.Event()
var dict = threading.Dict()
dict.set("data", 100)
var t1 = threading.Thread(function(dict, event) {
Log(`thread1, dict.get("data"):`, dict.get("data"))
event.set()
event.clear()
event.wait()
Log(`after main change data, thread1 dict.get("data"):`, dict.get("data"))
dict.set("data", 0)
}, dict, event)
event.wait()
dict.set("data", 99)
event.set()
event.clear()
t1.join()
Log(`main thread, dict.get("data"):`, dict.get("data"))
}
Gunakan objek peristiwa untuk memberitahu utas untuk membaca dan mengubah suai data.
{@fun/Threads/ThreadDict/set set}
Peraturanset()
fungsi digunakan untuk menetapkan pasangan kunci-nilai.
set (kunci, nilai)
Parameterkey
digunakan untuk menetapkan nama kunci yang akan diubah.
kunci
betul
senar
Parametervalue
digunakan untuk menetapkan nilai kunci yang akan diubah.
nilai betul rentetan, nombor, bool, objek, susunan, nilai sifar dan jenis lain yang disokong oleh sistem
Sila rujukThreadDict.get()
Bahagian untuk contoh.
{@fun/Threads/ThreadDict/get get}
Dalam Platform Perdagangan Kuantum FMZ, ia terutamanya melaksanakan pelbagai fungsi, panggilan yang berkaitan dengan blockchain melaluiexchange.IO()
Dokumen berikut menerangkanexchange.IO()
Cara panggilan sistem penghantaranexchange.IO("abi", ...)
fungsi digunakan untuk mendaftarkan ABI.
exchange.IO(k, alamat, abiContent)
Peraturank
parameter digunakan untuk menetapkan fungsiexchange.IO()
fungsi, ditetapkan kepada"abi"
bermaksud bahawa fungsi digunakan untuk mendaftarABI
.
k
betul
senar
Peraturanaddress
parameter digunakan untuk menentukan alamat kontrak pintar.
alamat
betul
senar
PeraturanabiContent
parameter digunakan untuk menentukanABI
daripada kontrak pintar.
abiContent
betul
senar
function main() {
// register Uniswap SwapRouter02 abi
var routerAddress = "0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45"
var abi = `[{"inputs":[{"components":[{"internalType":"bytes","name":"path","type":"bytes"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMaximum","type":"uint256"}],"internalType":"struct IV3SwapRouter.ExactOutputParams","name":"params","type":"tuple"}],"name":"exactOutput","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}],"stateMutability":"payable","type":"function"}]`
// Get the ```ABI``` content of the contract can be obtained with the following URL, taking the ```result``` field only, e.g:
exchange.IO("abi", routerAddress, abi)
}
Kaedah panggilan kontrak pintar tidak perlu didaftarkan jika ia adalah kaedah ERC20 standard.
DapatkanABI
kandungan kontrak boleh didapati dengan URL berikut, mengambilresult
Hanya bidang, contohnya:
https://api.etherscan.io/api?module=contract&action=getabi&address=0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45
Kaedah panggilanexchange.IO("api", "eth", ...)
fungsi digunakan untuk memanggil kaedah Ethereum RPC.
Peraturanexchange.IO("api", "eth", ...)
fungsi mengembalikan nilai pulangan kaedah RPC yang dipanggil.
string, nombor, bool, objek, array, null dan semua jenis lain yang disokong oleh sistem
exchange.IO(k, blockChain, rpcMethod)exchange.IO(k, blockChain, rpcMethod,...args)
Peraturank
parameter digunakan untuk menetapkan fungsiexchange.IO()
fungsi, ditetapkan kepada"api"
menunjukkan bahawa fungsi digunakan untuk memperluaskan permintaan panggilan.
k
betul
senar
PeraturanblockChain
parameter digunakan untuk menetapkan fungsiexchange.IO()
fungsi, ditetapkan kepada"eth"
menunjukkan bahawa fungsi digunakan untuk panggilan kaedah RPC di Rangkaian Ethereum.
blockChain
betul
senar
PerkhidmatanrpcMethod
Parameter digunakan untuk menetapkan kaedah RPC yang akan dipanggil olehexchange.IO()
fungsi.
rpcMethod
betul
senar
Peraturanarg
parameter digunakan untuk menentukan parameter kaedah RPC yang akan dipanggil.arg
Jenis dan bilanganarg
parameter bergantung kepada kaedah RPC yang ditentukan olehrpcMethod
parameter.
arg
palsu
string, nombor, bool, objek, array, fungsi, null, dan semua jenis lain yang disokong oleh sistem
function main() {
// "owner" needs to be replaced with the specific wallet address
// Parameter labels for the "latest" string position: 'latest', 'earliest' or 'pending', please refrer to https://eth.wiki/json-rpc/API#the-default-block-parameter
// The return value ethBalance is a hexadecimal string: 0x9b19ce56113070
var ethBalance = exchange.IO("api", "eth", "eth_getBalance", "owner", "latest")
// ETH has a precision unit of 1e18
var ethDecimal = 18
// Because of the JavaScript language precision, it is necessary to use the system underlying package function BigInt, BigDecimal to process
// Convert ethBalance to readable amount, 0x9b19ce56113070 to 0.043656995388076145
Log(Number((BigDecimal(BigInt(ethBalance))/BigDecimal(Math.pow(10, ethDecimal))).toString()))
}
Periksa baki ETH dalam dompet anda:
function mian() {
// ETH has a precision unit of 1e18
var ethDecimal = 18
// Number of transfers, readable amount e.g. 0.01 ETH
var sendAmount = 0.01
// Due to the JavaScript language precision, it is necessary to use the system underlying encapsulated functions BigInt, BigDecimal to process, and to convert the readable amount to the data processed on the chain
var toAmount = (BigDecimal(sendAmount)*BigDecimal(Math.pow(10, ethDecimal))).toFixed(0)
// "toAddress" is the address of the recipient's ETH wallet at the time of the transfer, which needs to be filled in specifically, and toAmount is the number of transfers
exchange.IO("api", "eth", "send", "toAddress", toAmount)
}
Untuk pemindahan ETH, anda boleh menetapkan{gasPrice: 11, gasLimit: 111, nonce: 111}
parameter, yang ditetapkan pada parameter terakhirexchange.IO()
Anda boleh mengabaikannonce
dan menggunakan sistem lalai, atau meninggalkangasLimit/gasPrice/nonce
mematikan dan menggunakan nilai lalai sistem untuk semua.
function toAmount(s, decimals) {
return Number((BigDecimal(BigInt(s))/BigDecimal(Math.pow(10, decimals))).toString())
}
function main() {
var gasPrice = exchange.IO("api", "eth", "eth_gasPrice")
Log("gasPrice:", toAmount(gasPrice, 0)) // 5000000000 , in wei (5 gwei)
}
SoalangasPrice
:
function toAmount(s, decimals) {
// The toAmount function can convert hex-encoded values to decimal values
return Number((BigDecimal(BigInt(s))/BigDecimal(Math.pow(10, decimals))).toString())
}
function main() {
// Coding approve (authorization) method calls
var data = exchange.IO("encode", "0x111111111117dC0aa78b770fA6A738034120C302", "approve", "0xe592427a0aece92de3edee1f18e0157c05861564", "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff")
Log("data:", data)
var gasPrice = exchange.IO("api", "eth", "eth_gasPrice")
Log("gasPrice:", toAmount(gasPrice, 0))
var obj = {
"from" : "0x0xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", // walletAddress
"to" : "0x111111111117dC0aa78b770fA6A738034120C302",
"gasPrice" : gasPrice,
"value" : "0x0",
"data" : "0x" + data,
}
var gasLimit = exchange.IO("api", "eth", "eth_estimateGas", obj)
Log("gasLimit:", toAmount(gasLimit, 0))
Log("gas fee", toAmount(gasLimit, 0) * toAmount(gasPrice, 0) / 1e18)
}
Soalaneth_estimateGas
:
Parameter keduaexchange.IO()
fungsi dengan"eth"
boleh langsung memanggil kaedah RPC yang tersedia untuk pelayan node Ethereum.
{@fun BigDecimal}, {@fun BigInt}
Peraturanexchange.IO("encode", ...)
fungsi dipanggil untuk pengekodan data.
Peraturanexchange.IO("encode", ...)
fungsi mengembalikan data yang dikodkan.
senar
exchange.IO(k, dataFormat,...args)exchange.IO(k, alamat, dataFormat)exchange.IO(k, alamat, dataFormat,...args)
Peraturank
parameter digunakan untuk menetapkan fungsiexchange.IO()
fungsi, ditetapkan kepada"encode"
bermaksud fungsi digunakan untuk pengekodan data.
k
betul
senar
Peraturanaddress
parameter digunakan untuk menetapkan alamat kontrak pintar.exchange.IO("encode", ...)
Fungsi, melalui dalamaddress
parameter menunjukkan pengekodan panggilan kaedah pada kontrak pintar.exchange.IO("encode", ...)
fungsi, jikaaddress
parameter tidak diteruskan, fungsi ini digunakan untuk mengkod perintah jenis yang ditentukan dan berfungsi bersamaan denganabi.encode
dalamSolidity
.
alamat
palsu
senar
PeraturandataFormat
Parameter digunakan untuk menentukan kaedah, jenis, dan urutan data yang dikodkan.
dataFormat
betul
senar
Perkhidmatanarg
parameter digunakan untuk menentukan nilai data tertentu yang sepadan dengandataFormat
Mungkin ada lebih daripada satu parameterarg
parameter, dan jenis dan bilanganarg
parameter bergantung kepadadataFormat
tetapan parameter.
arg
palsu
rentetan, nombor, tuple, array, dan semua jenis lain yang disokong oleh sistem
function main() {
// Main network address of ContractV3SwapRouterV2: 0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45
// Calling the unwrapWETH9 method requires registering the ABI first, which is omitted here
// "owner" represents the wallet address, which need to fill in the specific, 1 represents the number of unpacking, unpacking a WETH into ETH
var data = exchange.IO("encode", "0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45", "unwrapWETH9(uint256,address)", 1, "owner")
Log(data)
}
Sebagai contoh, memanggil kaedah pengekodanunwrapWETH9
:
function main() {
var x = 10
var address = "0x02a5fBb259d20A3Ad2Fdf9CCADeF86F6C1c1Ccc9"
var str = "Hello World"
var array = [1, 2, 3]
var ret = exchange.IO("encode", "uint256,address,string,uint256[]", x, address, str, array) // uint i.e. uint256 , the type length needs to be specified on FMZ
Log("ret:", ret)
/*
000000000000000000000000000000000000000000000000000000000000000a // x
00000000000000000000000002a5fbb259d20a3ad2fdf9ccadef86f6c1c1ccc9 // address
0000000000000000000000000000000000000000000000000000000000000080 // Offset of str
00000000000000000000000000000000000000000000000000000000000000c0 // Offset of array
000000000000000000000000000000000000000000000000000000000000000b // The length of str
48656c6c6f20576f726c64000000000000000000000000000000000000000000 // str data
0000000000000000000000000000000000000000000000000000000000000003 // The length of the array
0000000000000000000000000000000000000000000000000000000000000001 // array the first data
0000000000000000000000000000000000000000000000000000000000000002 // array the second data
0000000000000000000000000000000000000000000000000000000000000003 // array the third data
*/
}
Ia sama dengan contoh pengekodanabi.encode
dalamSolidity
:
function main() {
var types = "tuple(a uint256,b uint8,c address),bytes"
var ret = exchange.IO("encode", types, {
a: 30,
b: 20,
c: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"
}, "0011")
Log("encode: ", ret)
}
Ia menyokong pengekodan tuple atau urutan jenis yang mengandungi tuple.
Perintah jenis ini terdiri daripada:tuple
, bytes
, jadi apabila memanggilexchange.IO()
untuk pengekodan, anda perlu terus lulus dua parameter:
{
a: 30,
b: 20,
c: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"
}
Parameter yang dihantar juga harus konsisten dengan struktur dan jenistuple
, seperti yang ditakrifkan dalamtypes
Parameter borang:tuple(a uint256,b uint8,c address)
.
bytes
:"0011"
function main() {
var path = ["0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", "0xdac17f958d2ee523a2206206994597c13d831ec7"] // ETH address, USDT address
var ret = exchange.IO("encode", "address[]", path)
Log("encode: ", ret)
}
Ia menyokong pengekodan berurutan array atau jenis yang mengandungi array:
Peraturanexchange.IO()
fungsi merangkumiencode
kaedah, yang boleh mengembalikan kod panggilan fungsi kehex
Untuk kegunaan khusus, anda boleh merujuk kepada platform
Peraturanexchange.IO("encodePacked", ...)
fungsi dipanggil dengan cara yang digunakan untukencodePacked
encoding.
Peraturanexchange.IO("encodePacked", ...)
fungsi mengembalikanencodePacked
data dikodkan.
senar
exchange.IO(k, dataFormat,...args)
Peraturank
parameter digunakan untuk menetapkan fungsiexchange.IO()
fungsi, ditetapkan kepada"encodePacked"
bermaksud bahawa fungsi digunakan untuk dataencodePacked
pengekodan.
k
betul
senar
PeraturandataFormat
parameter digunakan untuk menentukan jenis dan urutanencodePacked
data dikodkan.
dataFormat
betul
senar
Peraturanarg
parameter digunakan untuk menentukan nilai data tertentu yang sepadan dengandataFormat
Mungkin ada lebih daripada satu parameterarg
parameter, dan jenis dan bilanganarg
parameter bergantung kepadadataFormat
tetapan parameter.
arg
betul
rentetan, nombor, tuple, array, dan semua jenis lain yang disokong oleh sistem
function main() {
var fee = exchange.IO("encodePacked", "uint24", 3000)
var tokenInAddress = "0x111111111117dC0aa78b770fA6A738034120C302"
var tokenOutAddress = "0x6b175474e89094c44da98b954eedeac495271d0f"
var path = tokenInAddress.slice(2).toLowerCase()
path += fee + tokenOutAddress.slice(2).toLowerCase()
Log("path:", path)
}
Apabila digunakanUniswap V3
, anda perlu lulus dalam parameter seperti laluan pertukaran, anda perlu menggunakanencodePacked
Operasi pengekodan:
Peraturanexchange.IO("decode", ...)
Fungsi dipanggil dengan cara yang digunakan untuk mendekod.
Peraturanexchange.IO("decode", ...)
fungsi mengembalikan data yang telah didekodkan. Mengembalikan rentetan apabila hanya ada satu data yang ditentukan olehdataFormat
Mengembalikan array apabila terdapat lebih daripada satu data yang ditentukan olehdataFormat
parameter.
array、string
exchange.IO(k, dataFormat, data)
Peraturank
parameter digunakan untuk menetapkan fungsiexchange.IO()
fungsi, dan menetapkannya kepada"decode"
bermaksud bahawa fungsi digunakan untuk mendekod data.
k
betul
senar
PeraturandataFormat
Parameter digunakan untuk menentukan jenis dan urutan data yang didekodkan.
dataFormat
betul
senar
Perkhidmatandata
parameter digunakan untuk menetapkan data yang akan didekodkan.
data
betul
senar
function main() {
var types = "tuple(a uint256,b uint8,c address),bytes"
var ret = exchange.IO("encode", types, {
a: 30,
b: 20,
c: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"
}, "0011")
Log("encode: ", ret)
var rawData = exchange.IO("decode", types, ret)
Log("decode:", rawData)
}
Pengoperasian terbalikexchange.IO("encode", ...)
fungsi:
function main() {
// register SwapRouter02 abi
var walletAddress = "0x398a93ca23CBdd2642a07445bCD2b8435e0a373f"
var routerAddress = "0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45"
var abi = `[{"inputs":[{"components":[{"internalType":"bytes","name":"path","type":"bytes"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMaximum","type":"uint256"}],"internalType":"struct IV3SwapRouter.ExactOutputParams","name":"params","type":"tuple"}],"name":"exactOutput","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}],"stateMutability":"payable","type":"function"}]`
exchange.IO("abi", routerAddress, abi) // abi only uses the contents of the local exactOutput method, the full abi can be searched on the Internet
// encode path
var fee = exchange.IO("encodePacked", "uint24", 3000)
var tokenInAddress = "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"
var tokenOutAddress = "0xdac17f958d2ee523a2206206994597c13d831ec7"
var path = tokenInAddress.slice(2).toLowerCase()
path += fee + tokenOutAddress.slice(2).toLowerCase()
Log("path:", path)
var dataTuple = {
"path" : path,
"recipient" : walletAddress,
"amountOut" : 1000,
"amountInMaximum" : 1,
}
// encode SwapRouter02 exactOutput
var rawData = exchange.IO("encode", routerAddress, "exactOutput", dataTuple)
Log("method hash:", rawData.slice(0, 8)) // 09b81346
Log("params hash:", rawData.slice(8))
// decode exactOutput params
var decodeRaw = exchange.IO("decode", "tuple(path bytes,recipient address,amountOut uint256,amountInMaximum uint256)", rawData.slice(8))
Log("decodeRaw:", decodeRaw)
}
Contoh berikut pertama melakukanencodePacked
operasi padapath
pemprosesan parameter, keranaexactOutput
panggilan kaedah yang perlu dikodkan kemudian memerlukanpath
sebagai parameter. Kemudianencode
KesemuaexactOutput
kaedah kontrak laluan, yang hanya mempunyai satu parameter jenistuple
. Nama kaedahexactOutput
dikodkan sebagai:0x09b81346
, dan menggunakanexchange.IO("decode", ...)
kaedah untuk memecahkan kod hasildecodeRaw
, konsisten dengan pembolehubahdataTuple
.
Untuk pemprosesan data,exchange.IO()
Fungsi menyokong bukan sahaja pengekodan, tetapi juga dekod.
Peraturanexchange.IO("key", ...)
fungsi dipanggil dengan cara untuk menukar kunci peribadi.
exchange.IO(k, kunci)
Parameterk
digunakan untuk menetapkan fungsiexchange.IO()
fungsi, ditetapkan kepada"key"
bermakna fungsi digunakan untuk menukar kunci peribadi.
k
betul
senar
Peraturankey
Parameter digunakan untuk menetapkan kunci peribadi.
kunci
betul
senar
function main() {
exchange.IO("key", "Private Key") // "Private Key" represents the private key string, which needs to be filled in specifically
}
Peraturanexchange.IO()
fungsi menyokong menukar kunci peribadi dan ia boleh memanipulasi pelbagai alamat dompet. Ia juga mungkin untuk menambah pelbagai objek pertukaran (lihat: {@var/EXCHANGE/exchanges exchanges}) untuk memanipulasi pelbagai alamat dompet.
Peraturanexchange.IO("api", ...)
fungsi dipanggil dengan cara yang digunakan untuk memanggil kaedah kontrak pintar.
Peraturanexchange.IO("api", ...)
fungsi mengembalikan nilai pulangan kaedah kontrak pintar yang dipanggil.
string, nombor, bool, objek, array, null dan semua jenis lain yang disokong oleh sistem
exchange.IO(k, alamat, kaedah)exchange.IO(k, alamat, kaedah,... args)exchange.IO(k, alamat, kaedah, nilai,... args)
Peraturank
parameter digunakan untuk menetapkan fungsiexchange.IO()
fungsi, ditetapkan kepada"api"
menunjukkan bahawa fungsi digunakan untuk memperluaskan permintaan panggilan.
k
betul
senar
Peraturanaddress
parameter digunakan untuk menentukan alamat kontrak pintar.
alamat
betul
senar
Peraturanmethod
parameter digunakan untuk menentukan kaedah kontrak pintar yang akan dipanggil.
kaedah
betul
senar
Perkhidmatanvalue
parameter digunakan untuk menetapkan jumlah ETH yang akan dihantar.stateMutability
atribut kaedah kontrak pintar yang akan dilaksanakan adalahpayable
, kemudianvalue
parameter perlu lulus."stateMutability": "payable"
Atribut boleh dilihat dari ABI.exchange.IO()
fungsi akan menentukan parameter yang diperlukan berdasarkanstateMutability
Atribut dalam ABI yang telah didaftarkan.stateMutability
atribut adalahnonpayable
, kemudianvalue
Parameter tidak perlu dihantar.
nilai
palsu
nombor,string
Peraturanarg
parameter digunakan untuk menentukan parameter kaedah kontrak pintar yang akan dipanggil.arg
parameter, dan jenis dan bilanganarg
parameter bergantung kepada kaedah kontrak pintar yang akan dipanggil.
arg
palsu
rentetan, nombor, bool, dan semua jenis lain yang disokong oleh sistem
function main(){
var tokenAddress = "0x111111111117dC0aa78b770fA6A738034120C302" // The contract address of the token, the token is 1INCH in the example
Log(exchange.IO("api", tokenAddress, "decimals")) // Query, print 1INCH tokens with precision index of 18
}
Peraturandecimals
kaedah adalahconstant
kaedah ERC20 yang tidak menimbulkan penggunaan gas dan ia boleh menyoal data ketepatan token.decimals
Nilai pulangan: data ketepatan token.
function main(){
// The contract address of the token, in the example the token is 1INCH
var tokenAddress = "0x111111111117dC0aa78b770fA6A738034120C302"
// For example, the query yields 1000000000000000000, divided by the precision unit of the token 1e18, the wallet to which the current exchange object is bound has authorized 1 1INCH to the spender address
Log(exchange.IO("api", tokenAddress, "allowance", "owner", "spender"))
}
Peraturanallowance
kaedah adalahconstant
kaedah ERC20 yang tidak menjana penggunaan gas dan boleh pertanyaan jumlah yang dibenarkan token untuk alamat kontrak tertentu.allowance
kaedah mengambil 2 parameter, yang pertama adalah alamat dompet dan yang kedua adalah alamat yang dibenarkan.
owner
: alamat dompet, contoh digantikan dengan rentetan spender
: alamat kontrak yang dibenarkan, contoh digantikan oleh rentetan Uniswap V3 router v1
address.
function main(){
// The contract address of the token, the token is 1INCH in the example
var tokenAddress = "0x111111111117dC0aa78b770fA6A738034120C302"
// The hexadecimal string of the authorization amount: 0xde0b6b3a7640000 , the corresponding decimal string: 1e18 , 1e18 divided by the precision unit of the token, i.e. 1 token amount, so this refers to the authorization of one token
Log(exchange.IO("api", tokenAddress, "approve", "spender", "0xde0b6b3a7640000"))
}```
The ```approve``` method is a non-```constant``` method of ERC20, which generates gas consumption and is used to authorize the operation amount of a token to a contract address. The ```approve``` method takes 2 parameters, the first one is the address to be authorized and the second one is the amount to be authorized. Return value: txid.
```spender```: the address of the authorized contract, the example is replaced by the string "spender", the actual use needs to fill in the specific address, for example, it can be ```Uniswap V3 router v1``` address. ```0xde0b6b3a7640000```: the number of authorizations, here is the hexadecimal string, the corresponding decimal value is 1e18, divided by the token precision unit in the example (i.e. 1e18). The result is that 1 token is authorized. The third parameter of the ```exchange.IO()``` function is passed to the method name ```approve```, which can also be written in the form of methodId, such as "0x571ac8b0". It is also possible to write the full standard method name, for example: "approve(address,uint256)".
```javascript
function main() {
var ContractV3SwapRouterV2 = "0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45"
var tokenInName = "ETH"
var amountIn = 0.01
var options = {gasPrice: 5000000000, gasLimit: 21000, nonce: 100} // This is an example, depending on the actual scene settings
var data = "" // The encoded data, here is the empty string, depending on the actual scene settings
var tx = exchange.IO("api", ContractV3SwapRouterV2, "multicall(uint256,bytes[])", (tokenInName == 'ETH' ? amountIn : 0), (new Date().getTime() / 1000) + 3600, data, options || {})
}
Peraturanmulticall
kaedah adalah bukan-constant
kaedahUniswap V3
yang menjana penggunaan gas dan digunakan untuk menebus token dengan pelbagai cara.
Perkhidmatanmulticall
kaedah boleh mempunyai pelbagai cara untuk lulus parameter, anda boleh memeriksa ABI yang mengandungi kaedah secara khusus, anda perlu mendaftar ABI sebelum memanggil kaedah.
Untuk contoh khususmulticall
anda boleh merujuk kepada platform
Beberapa butiran diterangkan di sini menggunakan kod palsu:
exchange.IO("api", ContractV3SwapRouterV2, "multicall(uint256,bytes[])", value, deadline, data)
ContractV3SwapRouterV2
: alamat penghala v2 Uniswap V3.value
: jumlah ETH untuk dipindahkan, ditetapkan kepada 0 jika token dalam operasi pertukaran bukan ETH.deadline
: deadline
ialah parametermulticall
kaedah, yang boleh ditetapkan kepada (new Date().getTime() / 1000) + 3600, menunjukkan bahawa ia sah selama satu jam.data
: data
ialah parametermulticall
kaedah, data operasi pembungkusan yang akan dilakukan.
Sama sepertiexchange.IO("api", "eth", "send", "toAddress", toAmount)
, yanggasLimit/gasPrice/nonce
tetapan panggilan kaedah boleh ditentukan apabila memanggilmulticall
kaedah.
Sekali lagi, kita menggunakan kod palsu untuk menerangkan:
exchange.IO("api", ContractV3SwapRouterV2, "multicall(uint256,bytes[])", value, deadline, data, {gasPrice: 123456, gasLimit: 21000})
Parameter{gasPrice: 11, gasLimit: 111, nonce: 111}
boleh ditetapkan mengikut keperluan khusus, yang ditetapkan kepada parameter terakhirexchange.IO()
fungsi.
Anda boleh terlepasnonce
dan menggunakan sistem nilai lalai, atau meninggalkangasLimit/gasPrice/nonce
mematikan dan menggunakan nilai lalai sistem untuk semua.
Peraturanexchange.IO("address")
fungsi dipanggil sedemikian rupa untuk mendapatkan alamat dompet yang dikonfigurasikan oleh objek pertukaran {@var/EXCHANGE exchange}.
Peraturanexchange.IO("address")
fungsi mengembalikan alamat dompet yang dikonfigurasikan.
senar
exchange.IO(k)
Peraturank
parameter digunakan untuk menetapkan fungsiexchange.IO()
fungsi, ditetapkan kepada"address"
bermaksud bahawa fungsi digunakan untuk mendapatkan alamat dompet yang dikonfigurasikan.
k
betul
senar
function main() {
Log(exchange.IO("address")) // Print the wallet address of the private key configured on the exchange object
}
Peraturanexchange.IO("base", ...)
fungsi dipanggil dengan cara untuk menetapkan alamat nod RPC.
exchange.IO(k, alamat)
Peraturank
parameter digunakan untuk menetapkan fungsiexchange.IO()
fungsi, ditetapkan kepada"base"
bermaksud fungsi digunakan untuk menukar nod RPC.
k
betul
senar
Peraturanaddress
parameter digunakan untuk menetapkan alamat nod RPC.
alamat
betul
senar
function main() {
var chainRpc = "https://bsc-dataseed.binance.org"
e.IO("base", chainRpc) // Switching to BSC chain
}
PeraturanTA.MACD()
fungsi digunakan untuk mengiraIndikator MACD kepelbagaian dan kesamaan yang dihaluskan secara eksponen.
Nilai pulanganTA.MACD()
fungsi adalah array dua dimensi dengan struktur:[DIF, DEA, MACD]
.
Array
TA.MACD ((inReal) TA.MACD ((inReal, optInFastPeriod, optInSlowPeriod, optInSignalPeriod)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
betul
{@struct/Record Record} array struktur, array nombor
PerkhidmatanoptInFastPeriod
Parameter digunakan untuk menetapkan tempoh cepat.
optInFastPeriod
palsu
nombor
PeraturanoptInSlowPeriod
parameter digunakan untuk menetapkan tempoh perlahan.
optInSlowPeriod
palsu
nombor
PeraturanoptInSignalPeriod
parameter digunakan untuk menetapkan tempoh isyarat.
pilihanDalam Tempoh Isyarat
palsu
nombor
function main(){
// You can fill in different k-line periods, such as PERIOD_M1,PERIOD_M30,PERIOD_H1...
var records = exchange.GetRecords(PERIOD_M15)
var macd = TA.MACD(records, 12, 26, 9)
// Watching the logs, you can see that three arrays are returned, corresponding to DIF, DEA and MACD.
Log("DIF:", macd[0], "DEA:", macd[1], "MACD:", macd[2])
}
def main():
r = exchange.GetRecords(PERIOD_M15)
macd = TA.MACD(r, 12, 26, 9)
Log("DIF:", macd[0], "DEA:", macd[1], "MACD:", macd[2])
void main() {
auto r = exchange.GetRecords(PERIOD_M15);
auto macd = TA.MACD(r, 12, 26, 9);
Log("DIF:", macd[0], "DEA:", macd[1], "MACD:", macd[2]);
}
PeraturanTA
Perpustakaan indikator FMZ Quant, dioptimumkan untuk algoritma penunjuk biasa.JavaScript
, Python
, C++
panggilan strategi bahasa,Kod perpustakaan TA sumber terbuka.
Nilai lalaioptInFastPeriod
, optInSlowPeriod
, danoptInSignalPeriod
parameterTA.MACD()
Fungsi adalah:12
, 26
, dan9
.
{@fun/TA/TA.KDJ TA.KDJ}, {@fun/TA/TA.RSI TA.RSI}, {@fun/TA/TA.ATR TA.ATR}, {@fun/TA/TA.OBV TA.OBV}, {@fun/TA/TA.MA},TA.MA}, {@fun/TA/TA.EMA TA.EMA}, {@fun/TA/TA.BOLL TA.BOLL}, {@fun/TA/TA.Alligator TA.Alligator}, {@fun/TA/TA.CMF TA.CMF}, {@fun/TA/TA.Highest TA.Highest}, {@fun/TA/TA.Lowest TA.Lowest}
PeraturanTA.KDJ()
fungsi digunakan untuk mengiraIndikator stokastik.
Nilai pulanganTA.KDJ()
fungsi adalah array dua dimensi dengan struktur:[K, D, J]
.
Array
TA.KDJ ((inReal) TA.KDJ ((inReal, tempoh, kPeriod, dPeriod)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
betul
{@struct/Record Record} array struktur, array nombor
Perkhidmatanperiod
parameter digunakan untuk menetapkan tempoh 1.
tempoh
palsu
nombor
PeraturankPeriod
parameter digunakan untuk menetapkan tempoh 2.
kPeriod
palsu
nombor
PeraturandPeriod
parameter digunakan untuk menetapkan tempoh 3.
dPeriode
palsu
nombor
function main(){
var records = exchange.GetRecords(PERIOD_M15)
var kdj = TA.KDJ(records, 9, 3, 3)
Log("k:", kdj[0], "d:", kdj[1], "j:", kdj[2])
}
def main():
r = exchange.GetRecords(PERIOD_M15)
kdj = TA.KDJ(r, 9, 3, 3)
Log("k:", kdj[0], "d:", kdj[1], "j:", kdj[2])
void main() {
auto r = exchange.GetRecords();
auto kdj = TA.KDJ(r, 9, 3, 3);
Log("k:", kdj[0], "d:", kdj[1], "j:", kdj[2]);
}
Nilai lalai untukperiod
, kPeriod
, dandPeriod
parameterTA.KDJ()
Fungsi adalah:9
, 3
, dan3
.
{@fun/TA/TA.MACD TA.MACD}, {@fun/TA/TA.RSI TA.RSI}, {@fun/TA/TA.ATR TA.ATR}, {@fun/TA/TA.OBV TA.OBV}, {@fun/TA/TA.MA},TA.MA}, {@fun/TA/TA.EMA TA.EMA}, {@fun/TA/TA.BOLL TA.BOLL}, {@fun/TA/TA.Alligator TA.Alligator}, {@fun/TA/TA.CMF TA.CMF}, {@fun/TA/TA.Highest TA.Highest}, {@fun/TA/TA.Lowest TA.Lowest}
PeraturanTA.RSI()
fungsi digunakan untuk mengiraIndikator Kekuatan.
Nilai pulanganTA.RSI()
Fungsi adalah: array satu dimensi.
Array
TA.RSI ((inReal) TA.RSI ((inReal, optInTimePeriod)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
betul
{@struct/Record Record} array struktur, array nombor
PerkhidmatanoptInTimePeriod
parameter digunakan untuk menetapkan tempoh.
optInTimePeriod
palsu
nombor
function main(){
var records = exchange.GetRecords(PERIOD_M30)
var rsi = TA.RSI(records, 14)
Log(rsi)
}
def main():
r = exchange.GetRecords(PERIOD_M30)
rsi = TA.RSI(r, 14)
Log(rsi)
void main() {
auto r = exchange.GetRecords(PERIOD_M30);
auto rsi = TA.RSI(r, 14);
Log(rsi);
}
Nilai lalaioptInTimePeriod
parameterTA.RSI()
Fungsi adalah:14
.
{@fun/TA/TA.MACD TA.MACD}, {@fun/TA/TA.KDJ TA.KDJ}, {@fun/TA/TA.ATR TA.ATR}, {@fun/TA/TA.OBV TA.OBV}, {@fun/TA/TA.MA},TA.MA}, {@fun/TA/TA.EMA TA.EMA}, {@fun/TA/TA.BOLL TA.BOLL}, {@fun/TA/TA.Alligator TA.Alligator}, {@fun/TA/TA.CMF TA.CMF}, {@fun/TA/TA.Highest TA.Highest}, {@fun/TA/TA.Lowest TA.Lowest}
PeraturanTA.ATR()
fungsi digunakan untuk mengiraPenunjuk Volatiliti Benar Purata.
Nilai pulanganTA.ATR()
Fungsi adalah: array satu dimensi.
Array
TA.ATR ((inPriceHLC) TA.ATR ((inPriceHLC, optInTimePeriod)
PeraturaninPriceHLC
parameter digunakan untuk menentukan data garis K.
inPriceHLC
betul
Array struktur {@struct/Record Record}
PeraturanoptInTimePeriod
parameter digunakan untuk menetapkan tempoh.
optInTimePeriod
palsu
nombor
function main(){
var records = exchange.GetRecords(PERIOD_M30)
var atr = TA.ATR(records, 14)
Log(atr)
}
def main():
r = exchange.GetRecords(PERIOD_M30)
atr = TA.ATR(r, 14)
Log(atr)
void main() {
auto r = exchange.GetRecords(PERIOD_M30);
auto atr = TA.ATR(r, 14);
Log(atr);
}
Nilai lalaioptInTimePeriod
parameterTA.ATR()
Fungsi adalah:14
.
{@fun/TA/TA.MACD TA.MACD}, {@fun/TA/TA.KDJ TA.KDJ}, {@fun/TA/TA.RSI TA.RSI}, {@fun/TA/TA.OBV TA.OBV}, {@fun/TA/TA.MA},TA.MA}, {@fun/TA/TA.EMA TA.EMA}, {@fun/TA/TA.BOLL TA.BOLL}, {@fun/TA/TA.Alligator TA.Alligator}, {@fun/TA/TA.CMF TA.CMF}, {@fun/TA/TA.Highest TA.Highest}, {@fun/TA/TA.Lowest TA.Lowest}
PeraturanTA.OBV()
fungsi digunakan untuk mengirapenunjuk gelombang tenaga.
Nilai pulanganTA.OBV()
Fungsi adalah: array satu dimensi.
Array
TA.OBV ((inReal) TA.OBV ((inReal, inPriceV)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
betul
{@struct/Record Record} array struktur, array nombor
PerkhidmataninPriceV
Parameter digunakan untuk menentukan data jumlah transaksi.
dalamPriceV
palsu
Array struktur {@struct/Record Record}
function main(){
var records = exchange.GetRecords(PERIOD_M30)
var obv = TA.OBV(records)
Log(obv)
}
def main():
r = exchange.GetRecords(PERIOD_M30)
obv = TA.OBV(r)
Log(obv)
void main() {
auto r = exchange.GetRecords(PERIOD_M30);
auto obv = TA.OBV(r);
Log(obv);
}
{@fun/TA/TA.MACD TA.MACD}, {@fun/TA/TA.KDJ TA.KDJ}, {@fun/TA/TA.RSI TA.RSI}, {@fun/TA/TA.ATR TA.ATR}, {@fun/TA/TA.MA},TA.MA}, {@fun/TA/TA.EMA TA.EMA}, {@fun/TA/TA.BOLL TA.BOLL}, {@fun/TA/TA.Alligator TA.Alligator}, {@fun/TA/TA.CMF TA.CMF}, {@fun/TA/TA.Highest TA.Highest}, {@fun/TA/TA.Lowest TA.Lowest}
PeraturanTA.MA()
fungsi digunakan untuk mengiraIndikator MACD.
Nilai pulanganTA.MA()
Fungsi adalah: array satu dimensi.
Array
TA.MA(InReal)TA.MA(inReal, optInTimePeriod)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
betul
{@struct/Record Record} array struktur, array nombor
PerkhidmatanoptInTimePeriod
parameter digunakan untuk menetapkan tempoh.
optInTimePeriod
palsu
nombor
function main(){
var records = exchange.GetRecords(PERIOD_M30)
var ma = TA.MA(records, 14)
Log(ma)
}
def main():
r = exchange.GetRecords(PERIOD_M30)
ma = TA.MA(r, 14)
Log(ma)
void main() {
auto r = exchange.GetRecords(PERIOD_M30);
auto ma = TA.MA(r, 14);
Log(ma);
}
Nilai lalaioptInTimePeriod
parameterTA.MA()
Fungsi adalah:9
.
{@fun/TA/TA.MACD TA.MACD}, {@fun/TA/TA.KDJ TA.KDJ}, {@fun/TA/TA.RSI TA.RSI}, {@fun/TA/TA.ATR TA.ATR}, {@fun/TA/TA.OBV TA.OBV}, {@fun/TA/TA.EMA TA.EMA}, {@fun/TA/TA.BOLL TA.BOLL}, {@fun/TA/TA.Alligator TA.Alligator}, {@fun/TA/TA.CM TA.F.CMF}, {@fun/TA/TA.Highest.Highest}, {@fun/TA/TA.Lowest.TA.Lowest}, {@fun/TA/TA.Lowest.TA.Lowest}
PeraturanTA.EMA()
fungsi digunakan untuk mengiraPenunjuk purata eksponen.
Nilai pulanganTA.EMA()
Fungsi adalah: array satu dimensi.
Array
TA.EMA ((inReal) TA.EMA ((dalamReal, optInTimePeriod)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
betul
{@struct/Record Record} array struktur, array nombor
PerkhidmatanoptInTimePeriod
parameter digunakan untuk menetapkan tempoh.
optInTimePeriod
palsu
nombor
function main(){
var records = exchange.GetRecords()
// Determine if the number of K-line bars meets the calculation period of the indicator
if (records && records.length > 9) {
var ema = TA.EMA(records, 9)
Log(ema)
}
}
def main():
r = exchange.GetRecords()
if r and len(r) > 9:
ema = TA.EMA(r, 9)
Log(ema)
void main() {
auto r = exchange.GetRecords();
if(r.Valid && r.size() > 9) {
auto ema = TA.EMA(r, 9);
Log(ema);
}
}
Nilai lalaioptInTimePeriod
parameterTA.EMA()
Fungsi adalah:9
.
{@fun/TA/TA.MACD TA.MACD}, {@fun/TA/TA.KDJ TA.KDJ}, {@fun/TA/TA.RSI TA.RSI}, {@fun/TA/TA.ATR TA.ATR}, {@fun/TA/TA.OBV TA.OBV}, {@fun/TA/TA.MA},TA.MA}, {@fun/TA/TA.BOLL TA.BOLL}, {@fun/TA/TA.Alligator TA.Alligator}, {@fun/TA/TA.CMF TA.CMF}, {@fun/TA/TA.Highest TA.Highest}, {@fun/TA/TA.Lowest TA.Lowest}
PeraturanTA.BOLL()
fungsi digunakan untuk mengiraIndikator Bollinger Band.
Nilai pulanganTA.BOLL()
fungsi adalah array dua dimensi dengan struktur:[upLine, midLine, downLine]
.
Array
TA.BOLL ((inReal) TA.BOLL ((inReal, tempoh, pengganda)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
betul
{@struct/Record Record} array struktur, array nombor
Perkhidmatanperiod
parameter digunakan untuk menetapkan tempoh.
tempoh
palsu
nombor
Peraturanmultiplier
parameter digunakan untuk menetapkan pengganda.
pengganda
palsu
nombor
function main() {
var records = exchange.GetRecords()
if(records && records.length > 20) {
var boll = TA.BOLL(records, 20, 2)
var upLine = boll[0]
var midLine = boll[1]
var downLine = boll[2]
Log(upLine)
Log(midLine)
Log(downLine)
}
}
def main():
r = exchange.GetRecords()
if r and len(r) > 20:
boll = TA.BOLL(r, 20, 2)
upLine = boll[0]
midLine = boll[1]
downLine = boll[2]
Log(upLine)
Log(midLine)
Log(downLine)
void main() {
auto r = exchange.GetRecords();
if(r.Valid && r.size() > 20) {
auto boll = TA.BOLL(r, 20, 2);
auto upLine = boll[0];
auto midLine = boll[1];
auto downLine = boll[2];
Log(upLine);
Log(midLine);
Log(downLine);
}
}
Nilai lalai untukperiod
danmultiplier
parameterTA.BOLL()
Fungsi adalah:20
dan2
.
{@fun/TA/TA.MACD TA.MACD}, {@fun/TA/TA.KDJ TA.KDJ}, {@fun/TA/TA.RSI TA.RSI}, {@fun/TA/TA.ATR TA.ATR}, {@fun/TA/TA.OBV TA.OBV}, {@fun/TA/TA.MA},TA.MA}, {@fun/TA/TA.EMA TA.EMA}, {@fun/TA/TA.Alligator TA.Alligator}, {@fun/TA/TA.CMF TA.CMF}, {@fun/TA/TA.Highest TA.Highest}, {@fun/TA/TA.Lowest TA.Lowest}
PeraturanTA.Alligator()
fungsi digunakan untuk mengiraIndikator Buaya.
Nilai pulanganTA.Alligator()
fungsi adalah array dua dimensi dengan struktur:[jawLine, teethLine, lipsLine]
.
Array
TA. Alligator ((inReal) TA. Alligator ((inReal, rahangLength, gigiLength, bibirLength
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
betul
{@struct/Record Record} array struktur, array nombor
PerkhidmatanjawLength
parameter digunakan untuk menetapkan tempoh rahang.
rahangLength
palsu
nombor
PeraturanteethLength
parameter digunakan untuk menetapkan tempoh gigi.
gigiLengkung
palsu
nombor
PeraturanlipsLength
parameter digunakan untuk menetapkan tempoh bibir atas.
BibirLength
palsu
nombor
function main(){
var records = exchange.GetRecords()
var alligator = TA.Alligator(records)
Log("jawLine:", alligator[0])
Log("teethLine:", alligator[1])
Log("lipsLine:", alligator[2])
}
def main():
records = exchange.GetRecords()
alligator = TA.Alligator(records)
Log("jawLine:", alligator[0])
Log("teethLine:", alligator[1])
Log("lipsLine:", alligator[2])
void main() {
auto records = exchange.GetRecords();
auto alligator = TA.Alligator(records);
Log("jawLine:", alligator[0]);
Log("teethLine:", alligator[1]);
Log("lipsLine:", alligator[2]);
}
Nilai lalaijawLength
, teethLength
, danlipsLength
parameterTA.Alligator()
Fungsi adalah:13
, 8
, dan5
.
{@fun/TA/TA.MACD TA.MACD}, {@fun/TA/TA.KDJ TA.KDJ}, {@fun/TA/TA.RSI TA.RSI}, {@fun/TA/TA.ATR TA.ATR}, {@fun/TA/TA.OBV TA.OBV}, {@fun/TA/TA.MA},TA.MA}, {@fun/TA/TA.EMA TA.EMA}, {@fun/TA/TA.BOLL TA.BOLL}, {@fun/TA/TA.CMF TA.CMF}, {@fun/TA/TA.Highest TA.Highest}, {@fun/TA/TA.Lowest TA.Lowest}
PeraturanTA.CMF()
fungsi digunakan untuk mengiraIndikator Aliran Wang Chaikin.
Nilai pulanganTA.CMF()
Fungsi adalah: array satu dimensi.
Array
TA.CMF ((inReal) TA.CMF ((inReal, inPriceV)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
betul
{@struct/Record Record} array struktur, array nombor
PerkhidmataninPriceV
parameter digunakan untuk menentukan data jumlah.
dalamPriceV
palsu
Array struktur {@struct/Record Record}
function main() {
var records = exchange.GetRecords()
var cmf = TA.CMF(records)
Log(cmf)
}
def main():
records = exchange.GetRecords()
cmf = TA.CMF(records)
Log(cmf)
void main() {
auto records = exchange.GetRecords();
auto cmf = TA.CMF(records);
Log(cmf);
}
{@fun/TA/TA.MACD TA.MACD}, {@fun/TA/TA.KDJ TA.KDJ}, {@fun/TA/TA.RSI TA.RSI}, {@fun/TA/TA.ATR TA.ATR}, {@fun/TA/TA.OBV TA.OBV}, {@fun/TA/TA.MA},TA.MA}, {@fun/TA/TA.EMA TA.EMA}, {@fun/TA/TA.BOLL TA.BOLL}, {@fun/TA/TA.Alligator TA.Alligator}, {@fun/TA/TA.Highest TA.Highest}, {@fun/TA/TA.Lowest TA.Lowest}
PeraturanTA.Highest()
fungsi digunakan untuk mengiraharga tertinggi dalam tempoh.
PeraturanTA.Highest()
fungsi mengembalikan nilai maksimum atribut dalam tempoh tertentu terakhir, tidak termasuk Bar semasa.
nombor
TA.Tinggi ((inReal) TA.Paling tinggi ((dalamReal, tempoh, attr)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
betul
{@struct/Record Record} array struktur, array nombor
Perkhidmatanperiod
parameter digunakan untuk menetapkan tempoh.
tempoh
palsu
nombor
Peraturanattr
parameter digunakan untuk menetapkan sifat, secara pilihan:Open
, Close
, Low
, High
, Volume
, OpenInterest
.
attr
palsu
senar
function main() {
var records = exchange.GetRecords()
var highestForOpen = TA.Highest(records, 10, "Open")
Log(highestForOpen)
}
def main():
records = exchange.GetRecords()
highestForOpen = TA.Highest(records, 10, "Open")
Log(highestForOpen)
void main() {
auto records = exchange.GetRecords();
auto highestForOpen = TA.Highest(records.Open(), 10);
Log(highestForOpen);
}
Sebagai contoh, jikaTA.Highest(records, 30, "High")
fungsi dipanggil, jika parameter tempohperiod
ditetapkan kepada0
, ia bermakna untuk mengira semuaBars
data K-line yang dihantar olehinReal
parameter; jika parameter atributattr
tidak ditentukan, data K-line yang diserahkan olehinReal
parameter dianggap sebagai array biasa.
{@fun/TA/TA.MACD TA.MACD}, {@fun/TA/TA.KDJ TA.KDJ}, {@fun/TA/TA.RSI TA.RSI}, {@fun/TA/TA.ATR TA.ATR}, {@fun/TA/TA.OBV TA.OBV}, {@fun/TA/TA.MA},TA.MA}, {@fun/TA/TA.EMA TA.EMA}, {@fun/TA/TA.BOLL TA.BOLL}, {@fun/TA/TA.Alligator TA.Alligator}, {@fun/TA/TA.CMF TA.CMF}, {@fun/TA/TA.Lowest TA.Lowest}
PeraturanTA.Lowest()
fungsi digunakan untuk mengiraharga terendah tempoh.
PeraturanTA.Lowest()
fungsi mengembalikan nilai minimum atribut dalam tempoh tertentu terakhir, tidak termasuk Bar semasa.
nombor
TA.Lowest ((inReal) TA.Terendah ((dalamReal, tempoh, attr)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
betul
{@struct/Record Record} array struktur, array nombor
Perkhidmatanperiod
parameter digunakan untuk menetapkan tempoh.
tempoh
palsu
nombor
Peraturanattr
parameter digunakan untuk menetapkan sifat, secara pilihan:Open
, Close
, Low
, High
, Volume
, OpenInterest
.
attr
palsu
senar
function main() {
var records = exchange.GetRecords()
var lowestForOpen = TA.Lowest(records, 10, "Open")
Log(lowestForOpen)
}
def main():
records = exchange.GetRecords()
lowestForOpen = TA.Lowest(records, 10, "Open")
Log(lowestForOpen)
void main() {
auto records = exchange.GetRecords();
auto lowestForOpen = TA.Lowest(records.Open(), 10);
Log(lowestForOpen);
}
Sebagai contoh, jikaTA.Lowest(records, 30, "Low")
fungsi dipanggil, jika parameter tempohperiod
ditetapkan kepada0
, ia bermakna untuk mengira semuaBars
data K-line yang dihantar olehinReal
parameter; jika parameter atributattr
tidak ditentukan, data K-line yang diserahkan olehinReal
parameter dianggap sebagai array biasa.
PenggunaanTA.Highest()
danTA.Lowest()
fungsi dalamC++
strategi perlu diperhatikan bahawaHighest()
danLowest()
Setiap fungsi hanya mempunyai 2 parameter.
Dan parameter pertama yang dihantar bukan data K-liner
diperolehi apabila fungsiauto r = exchange.GetRecords()
dipanggil.
Awak perlu hubungir
kaedah dan lulus dalam data atribut tertentu.r.Close()
data harga penutupan.Close
, High
, Low
, Open
, Volume
seperti dalamr.Close()
kaedah panggilan.
Contoh ujianC++
strategi bahasa:
void main() {
Records r;
r.Valid = true;
for (auto i = 0; i < 10; i++) {
Record ele;
ele.Time = i * 100000;
ele.High = i * 10000;
ele.Low = i * 1000;
ele.Close = i * 100;
ele.Open = i * 10;
ele.Volume = i * 1;
r.push_back(ele);
}
for(int j = 0; j < r.size(); j++){
Log(r[j]);
}
// Note: the first parameter passed is not r, you need to call r.Close()
auto highest = TA.Highest(r.Close(), 8);
Log(highest);
}
{@fun/TA/TA.MACD TA.MACD}, {@fun/TA/TA.KDJ TA.KDJ}, {@fun/TA/TA.RSI TA.RSI}, {@fun/TA/TA.ATR TA.ATR}, {@fun/TA/TA.OBV TA.OBV}, {@fun/TA/TA.MA},TA.MA}, {@fun/TA/TA.EMA TA.EMA}, {@fun/TA/TA.BOLL TA.BOLL}, {@fun/TA/TA.Alligator TA.Alligator}, {@fun/TA/TA.CMF TA.CMF}, {@fun/TA/TA.Highest TA.Highest}
PeraturanTA.SMA()
fungsi digunakan untuk mengirapenunjuk purata bergerak mudah.
Nilai pulanganTA.SMA()
Fungsi adalah: array satu dimensi.
Array
TA.SMA ((inReal) TA.SMA ((inReal, optInTimePeriod)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
betul
{@struct/Record Record} array struktur, array nombor
PerkhidmatanoptInTimePeriod
parameter digunakan untuk menetapkan tempoh.
optInTimePeriod
palsu
nombor
function main(){
var records = exchange.GetRecords(PERIOD_M30)
var sma = TA.SMA(records, 14)
Log(sma)
}
def main():
r = exchange.GetRecords(PERIOD_M30)
sma = TA.SMA(r, 14)
Log(sma)
void main() {
auto r = exchange.GetRecords(PERIOD_M30);
auto sma = TA.SMA(r, 14);
Log(sma);
}
Nilai lalaioptInTimePeriod
parameterTA.SMA()
Fungsi adalah:9
.
{@fun/TA/TA.MACD TA.MACD}, {@fun/TA/TA.KDJ TA.KDJ}, {@fun/TA/TA.RSI TA.RSI}, {@fun/TA/TA.ATR TA.ATR}, {@fun/TA/TA.OBV TA.OBV}, {@fun/TA/TA.MA},TA.MA}, {@fun/TA/TA.EMA TA.EMA}, {@fun/TA/TA.BOLL TA.BOLL}, {@fun/TA/TA.Alligator TA.Alligator}, {@fun/TA/TA.CMF TA.CMF}, {@fun/TA/TA.Highest TA.Highest}, {@fun/TA/TA.Lowest TA.Lowest}
Peraturantalib.CDL2CROWS()
fungsi digunakan untuk mengiraDua gagak (grafik K-line - Dua gagak).
Nilai pulangantalib.CDL2CROWS()
Fungsi adalah array satu dimensi.
Array
talib.CDL2CROWS ((inPriceOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
betul
Array struktur {@struct/Record Record}
function main() {
var records = exchange.GetRecords()
var ret = talib.CDL2CROWS(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDL2CROWS(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDL2CROWS(records);
Log(ret);
}
PeraturanCDL2CROWS()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:CDL2CROWS(Records[Open,High,Low,Close]) = Array(outInteger)
Untuk panggilan diPython
bahasa, parameter lulus adalah berbeza dan perlu berdasarkan penerangan di atas:Records[Open,High,Low,Close]
.
Contoh pembahagian pembolehubahrecords
(iaitu parameterinPriceOHLC
, ketik {@struct/Record Record} susunan struktur) ke dalam:Open
senarai: ditulis dalam Python sebagairecords.Open
.
High
senarai: ditulis sebagairecords.High
dalam Python.Low
senarai: ditulis dalam Python sebagairecords.Low
.
Close
senarai: ditulis dalam Python sebagairecords.Close
.
Di panggil dalam kod strategi Python:
talib.CDL2CROWS(records.Open, records.High, records.Low, records.Close)
Yang lain.talib
penunjuk diterangkan dengan cara yang sama dan mereka tidak akan diulangi.
Peraturantalib.CDL3BLACKCROWS()
fungsi digunakan untuk mengiraTiga gagak hitam (grafik K-line - Tiga gagak hitam).
Nilai pulangantalib.CDL3BLACKCROWS()
Fungsi adalah: array satu dimensi.
Array
talib.CDL3BLACKCROWS ((inPriceOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
betul
Array struktur {@struct/Record Record}
function main() {
var records = exchange.GetRecords()
var ret = talib.CDL3BLACKCROWS(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDL3BLACKCROWS(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDL3BLACKCROWS(records);
Log(ret);
}
PeraturanCDL3BLACKCROWS()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:CDL3BLACKCROWS(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDL3INSIDE()
fungsi digunakan untuk mengiraTiga dalam atas/bawah (grafik garis K: Tiga dalam atas/bawah).
Nilai pulangantalib.CDL3INSIDE()
Fungsi adalah: array satu dimensi.
Array
Talib.CDL3INSIDE ((inPriceOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
betul
Array struktur {@struct/Record Record}
function main() {
var records = exchange.GetRecords()
var ret = talib.CDL3INSIDE(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDL3INSIDE(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDL3INSIDE(records);
Log(ret);
}
PeraturanCDL3INSIDE()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:CDL3INSIDE(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDL3LINESTRIKE()
fungsi digunakan untuk mengiraPenarikan Tiga Baris (K-garis carta: Penarikan Tiga Baris).
Nilai pulangantalib.CDL3LINESTRIKE()
Fungsi adalah: array satu dimensi.
Array
talib.CDL3LINESTRIKE ((inPriceOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
betul
Array struktur {@struct/Record Record}
function main() {
var records = exchange.GetRecords()
var ret = talib.CDL3LINESTRIKE(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDL3LINESTRIKE(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDL3LINESTRIKE(records);
Log(ret);
}
PeraturanCDL3LINESTRIKE()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:CDL3LINESTRIKE(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDL3OUTSIDE()
fungsi digunakan untuk mengiraTiga di luar ke atas / ke bawah (grafik K-garis: Tiga di luar ke atas / ke bawah).
Nilai pulangantalib.CDL3OUTSIDE()
Fungsi adalah: array satu dimensi.
Array
Talib.CDL3OUTSIDE ((inPriceOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
betul
Array struktur {@struct/Record Record}
function main() {
var records = exchange.GetRecords()
var ret = talib.CDL3OUTSIDE(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDL3OUTSIDE(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDL3OUTSIDE(records);
Log(ret);
}
PeraturanCDL3OUTSIDE()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:CDL3OUTSIDE(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDL3STARSINSOUTH()
fungsi digunakan untuk mengiraThree Stars In The South (Gambar K-line: Tiga Bintang Di Selatan).
Nilai pulangantalib.CDL3STARSINSOUTH()
Fungsi adalah: array satu dimensi.
Array
Talib.CDL3STARSINSOUTH ((inPriceOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
betul
Array struktur {@struct/Record Record}
function main() {
var records = exchange.GetRecords()
var ret = talib.CDL3STARSINSOUTH(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDL3STARSINSOUTH(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDL3STARSINSOUTH(records);
Log(ret);
}
PeraturanCDL3STARSINSOUTH()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:CDL3STARSINSOUTH(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDL3WHITESOLDIERS()
fungsi digunakan untuk mengiraTiga Tentera Putih yang Berkemajuan (Gambar garis K: Tiga Tentera Putih yang Berkemajuan).
Nilai pulangantalib.CDL3WHITESOLDIERS()
Fungsi adalah: array satu dimensi.
Array
talib.CDL3WHITESOLDIERS ((inPriceOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
betul
Array struktur {@struct/Record Record}
function main() {
var records = exchange.GetRecords()
var ret = talib.CDL3WHITESOLDIERS(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDL3WHITESOLDIERS(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDL3WHITESOLDIERS(records);
Log(ret);
}
PeraturanCDL3WHITESOLDIERS()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:CDL3WHITESOLDIERS(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLABANDONEDBABY()
fungsi digunakan untuk mengiraBayi yang ditinggalkan (grafik K-line: Bayi yang ditinggalkan).
Nilai pulangantalib.CDLABANDONEDBABY()
Fungsi adalah: array satu dimensi.
Array
talib.CDLABANDONEDBABY ((inPriceOHLC) talib.CDLABANDONEDBABY ((inPriceOHLC, optInPenetration)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
betul
Array struktur {@struct/Record Record}
PeraturanoptInPenetration
parameter digunakan untuk menetapkan Penetrasi, nilai lalai adalah 0.3.
optInPenetration
palsu
nombor
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLABANDONEDBABY(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLABANDONEDBABY(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLABANDONEDBABY(records);
Log(ret);
}
PeraturanCDLABANDONEDBABY()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:CDLABANDONEDBABY(Records[Open,High,Low,Close],Penetration = 0.3) = Array(outInteger)
Peraturantalib.CDLADVANCEBLOCK()
fungsi digunakan untuk mengiraBlok Advance (Gambar K-garis: Advance).
Nilai pulangantalib.CDLADVANCEBLOCK()
Fungsi adalah array satu dimensi.
Array
talib.CDLADVANCEBLOCK ((inPriceOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
betul
Array struktur {@struct/Record Record}
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLADVANCEBLOCK(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLADVANCEBLOCK(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLADVANCEBLOCK(records);
Log(ret);
}
PeraturanCDLADVANCEBLOCK()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:CDLADVANCEBLOCK(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLBELTHOLD()
fungsi digunakan untuk mengiraPegang tali pinggang (grafik garis K: Pegang tali pinggang).
Nilai pulangantalib.CDLBELTHOLD()
Fungsi adalah: array satu dimensi.
Array
talib.CDLBELTHOLD ((inPriceOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
betul
Array struktur {@struct/Record Record}
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLBELTHOLD(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLBELTHOLD(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLBELTHOLD(records);
Log(ret);
}
PeraturanCDLBELTHOLD()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:CDLBELTHOLD(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLBREAKAWAY()
fungsi digunakan untuk mengiraBreakaway (grafik garis K: Breakaway).
Nilai pulangantalib.CDLBREAKAWAY()
Fungsi adalah: array satu dimensi.
Array
talib.CDLBREAKAWAY ((inPriceOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
betul
Array struktur {@struct/Record Record}
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLBREAKAWAY(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLBREAKAWAY(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLBREAKAWAY(records);
Log(ret);
}
CDLBREAKAWAY()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:CDLBREAKAWAY(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLCLOSINGMARUBOZU()
fungsi digunakan untuk mengiraMenutup Marubozu (grafik K-line: menutup tanpa kepala dan tanpa kaki).
Nilai pulangantalib.CDLCLOSINGMARUBOZU()
Fungsi adalah: array satu dimensi.
Array
talib.CDLCLOSINGMARUBOZU ((inPriceOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
betul
Array struktur {@struct/Record Record}
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLCLOSINGMARUBOZU(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLCLOSINGMARUBOZU(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLCLOSINGMARUBOZU(records);
Log(ret);
}
PeraturanCDLCLOSINGMARUBOZU()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:CDLCLOSINGMARUBOZU(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLCONCEALBABYSWALL()
fungsi digunakan untuk mengiraMenyimpan Baby Swallow (K-line chart: Menyimpan Baby Swallow corak).
Nilai pulangantalib.CDLCONCEALBABYSWALL()
Fungsi adalah: array satu dimensi.
Array
Talib.CDLCONCEALBABYSWALL (dalam harga OHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
betul
Array struktur {@struct/Record Record}
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLCONCEALBABYSWALL(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLCONCEALBABYSWALL(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLCONCEALBABYSWALL(records);
Log(ret);
}
PeraturanCDLCONCEALBABYSWALL()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:CDLCONCEALBABYSWALL(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLCOUNTERATTACK()
fungsi digunakan untuk mengiraserangan balas (K-line chart: Counterattack).
Nilai pulangantalib.CDLCOUNTERATTACK()
Fungsi adalah array satu dimensi.
Array
talib.CDLCONTERATTACK ((dalamPriceOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
betul
Array struktur {@struct/Record Record}
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLCOUNTERATTACK(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLCOUNTERATTACK(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLCOUNTERATTACK(records);
Log(ret);
}
PeraturanCDLCOUNTERATTACK()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:CDLCOUNTERATTACK(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLDARKCLOUDCOVER()
fungsi digunakan untuk mengiraPenutup Awan Gelap (grafik garis K: penutup awan gelap).
Nilai pulangantalib.CDLDARKCLOUDCOVER()
Fungsi adalah array satu dimensi.
Array
talib.CDLDARKCLOUDCOVER ((inPriceOHLC) talib.CDLDARKCLOUDCOVER ((inPriceOHLC, optInPenetration)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
betul
Array struktur {@struct/Record Record}
PeraturanoptInPenetration
parameter digunakan untuk menetapkan Penetrasi, nilai lalai adalah 0.5.
optInPenetration
palsu
nombor
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLDARKCLOUDCOVER(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLDARKCLOUDCOVER(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLDARKCLOUDCOVER(records);
Log(ret);
}
PeraturanCDLDARKCLOUDCOVER()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:CDLDARKCLOUDCOVER(Records[Open,High,Low,Close],Penetration = 0.5) = Array(outInteger)
Peraturantalib.CDLDOJI()
fungsi digunakan untuk mengiraDoji (K-line chart: Doji).
Nilai pulangantalib.CDLDOJI()
Fungsi adalah: array satu dimensi.
Array
Talib.CDLDOJI ((inPriceOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
betul
Array struktur {@struct/Record Record}
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLDOJI(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLDOJI(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLDOJI(records);
Log(ret);
}
PeraturanCDLDOJI()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:CDLDOJI(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLDOJISTAR()
fungsi digunakan untuk mengiraBintang Doji (K-line chart: Bintang Doji).
Nilai pulangantalib.CDLDOJISTAR()
Fungsi adalah: array satu dimensi.
Array
Talib.CDLDOJISTAR ((inPriceOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
betul
Array struktur {@struct/Record Record}
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLDOJISTAR(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLDOJISTAR(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLDOJISTAR(records);
Log(ret);
}
PeraturanCDLDOJISTAR()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:CDLDOJISTAR(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLDRAGONFLYDOJI()
fungsi digunakan untuk mengiraDragonfly Doji (K-line chart: Dragonfly Doji).
Nilai pulangantalib.CDLDRAGONFLYDOJI()
Fungsi adalah: array satu dimensi.
Array
Talib.CDLDRAGONFLYDOJI (dalam Harga OHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
betul
Array struktur {@struct/Record Record}
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLDRAGONFLYDOJI(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLDRAGONFLYDOJI(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLDRAGONFLYDOJI(records);
Log(ret);
}
PeraturanCDLDRAGONFLYDOJI()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:CDLDRAGONFLYDOJI(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLENGULFING()
fungsi digunakan untuk mengiraPola menelan (grafik garis K: menelan).
Nilai pulangantalib.CDLENGULFING()
Fungsi adalah array satu dimensi.
Array
Talib.CDLENGULFING ((inPriceOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
betul
Array struktur {@struct/Record Record}
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLENGULFING(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLENGULFING(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLENGULFING(records);
Log(ret);
}
PeraturanCDLENGULFING()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:CDLENGULFING(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLEVENINGDOJISTAR()
fungsi digunakan untuk mengiraBintang Doji Malam (K-line chart: Bintang Doji Malam).
Nilai pulangantalib.CDLEVENINGDOJISTAR()
Fungsi adalah: array satu dimensi.
Array
Talib.CDLEVENINGDOJISTAR (dalam Harga OHLC) talib.CDLEVENINGDOJISTAR ((dalamPriceOHLC, optInPenetration)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
betul
Array struktur {@struct/Record Record}
PeraturanoptInPenetration
parameter digunakan untuk menetapkan Penetrasi, nilai lalai adalah 0.3.
optInPenetration
palsu
nombor
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLEVENINGDOJISTAR(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLEVENINGDOJISTAR(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLEVENINGDOJISTAR(records);
Log(ret);
}
PeraturanCDLEVENINGDOJISTAR()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:CDLEVENINGDOJISTAR(Records[Open,High,Low,Close],Penetration = 0.3) = Array(outInteger)
Peraturantalib.CDLEVENINGSTAR()
fungsi digunakan untuk mengiraBintang Malam (K-line chart: Bintang Malam).
Nilai pulangantalib.CDLEVENINGSTAR()
Fungsi adalah: array satu dimensi.
Array
Talib.CDLEVENINGSTAR ((inPriceOHLC) Talib.CDLEVENINGSTAR ((inPriceOHLC, optInPenetration)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
betul
Array struktur {@struct/Record Record}
PeraturanoptInPenetration
parameter digunakan untuk menetapkan Penetrasi, nilai lalai adalah 0.3.
optInPenetration
palsu
nombor
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLEVENINGSTAR(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLEVENINGSTAR(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLEVENINGSTAR(records);
Log(ret);
}
PeraturanCDLEVENINGSTAR()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:CDLEVENINGSTAR(Records[Open,High,Low,Close],Penetration = 0.3) = Array(outInteger)
Peraturantalib.CDLGAPSIDESIDEWHITE()
fungsi digunakan untuk mengiraGaris putih berdekatan jurang atas/bawah (grafik garisan K: garisan putih berdekatan jurang atas/bawah).
Nilai pulangantalib.CDLGAPSIDESIDEWHITE()
Fungsi adalah: array satu dimensi.
Array
Talib.CDLGAPSIDESIDEWHITE ((inPriceOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
betul
Array struktur {@struct/Record Record}
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLGAPSIDESIDEWHITE(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLGAPSIDESIDEWHITE(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLGAPSIDESIDEWHITE(records);
Log(ret);
}
PeraturanCDLGAPSIDESIDEWHITE()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:CDLGAPSIDESIDEWHITE(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLGRAVESTONEDOJI()
fungsi digunakan untuk mengiraGravestone Doji (Gambar K-line: Gravestone Doji).
Nilai pulangantalib.CDLGRAVESTONEDOJI()
Fungsi adalah: array satu dimensi.
Array
Talib.CDLGRAVESTONEDOJI (dalam Harga OHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
betul
Array struktur {@struct/Record Record}
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLGRAVESTONEDOJI(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLGRAVESTONEDOJI(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLGRAVESTONEDOJI(records);
Log(ret);
}
PeraturanCDLGRAVESTONEDOJI()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:CDLGRAVESTONEDOJI(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLHAMMER()
fungsi digunakan untuk mengiraHammer (K-garis carta: Hammer).
Nilai pulangantalib.CDLHAMMER()
Fungsi adalah: array satu dimensi.
Array
talib.CDLHAMMER ((inPriceOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
betul
Array struktur {@struct/Record Record}
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLHAMMER(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLHAMMER(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLHAMMER(records);
Log(ret);
}
PeraturanCDLHAMMER()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:CDLHAMMER(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLHANGINGMAN()
fungsi digunakan untuk mengiraHanging Man (K-line chart: Hanging Man).
Nilai pulangantalib.CDLHANGINGMAN()
Fungsi adalah array satu dimensi.
Array
Talib.CDLHANGINGMAN ((inPriceOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
betul
Array struktur {@struct/Record Record}
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLHANGINGMAN(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLHANGINGMAN(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLHANGINGMAN(records);
Log(ret);
}
PeraturanCDLHANGINGMAN()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:CDLHANGINGMAN(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLHARAMI()
fungsi digunakan untuk mengiracorak Harami (grafik garis K: garis negatif dan positif).
Nilai pulangantalib.CDLHARAMI()
Fungsi adalah array satu dimensi.
Array
talib.CDLHARAMI ((inPriceOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
betul
Array struktur {@struct/Record Record}
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLHARAMI(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLHARAMI(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLHARAMI(records);
Log(ret);
}
PeraturanCDLHARAMI()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:CDLHARAMI(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLHARAMICROSS()
fungsi digunakan untuk mengiraHarami Cross Pattern (K-line chart: melintasi garis negatif dan positif).
Nilai pulangantalib.CDLHARAMICROSS()
Fungsi adalah: array satu dimensi.
Array
Talib.CDLHARAMICROSS ((inPriceOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
betul
Array struktur {@struct/Record Record}
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLHARAMICROSS(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLHARAMICROSS(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLHARAMICROSS(records);
Log(ret);
}
PeraturanCDLHARAMICROSS()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:CDLHARAMICROSS(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLHIGHWAVE()
fungsi digunakan untuk mengiraLilin Gelombang Tinggi (K-line chart: Long Leg Cross).
Nilai pulangantalib.CDLHIGHWAVE()
Fungsi adalah array satu dimensi.
Array
talib.CDLHIGHWAVE ((inPriceOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
betul
Array struktur {@struct/Record Record}
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLHIGHWAVE(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLHIGHWAVE(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLHIGHWAVE(records);
Log(ret);
}
PeraturanCDLHIGHWAVE()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:CDLHIGHWAVE(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLHIKKAKE()
fungsi digunakan untuk mengiracorak Hikkake (K-garis carta: perangkap).
Nilai pulangantalib.CDLHIKKAKE()
Fungsi adalah array satu dimensi.
Array
talib.CDLHIKKAKE ((inPriceOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
betul
Array struktur {@struct/Record Record}
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLHIKKAKE(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLHIKKAKE(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLHIKKAKE(records);
Log(ret);
}
PeraturanCDLHIKKAKE()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:CDLHIKKAKE(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLHIKKAKEMOD()
fungsi digunakan untuk mengiracorak Hikkake yang diubahsuai (grafik K-line: perangkap yang diubahsuai).
Nilai pulangantalib.CDLHIKKAKEMOD()
Fungsi adalah: array satu dimensi.
Array
Talib.CDLHIKKAKEMOD ((inPriceOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
betul
Array struktur {@struct/Record Record}
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLHIKKAKEMOD(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLHIKKAKEMOD(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLHIKKAKEMOD(records);
Log(ret);
}
PeraturanCDLHIKKAKEMOD()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:CDLHIKKAKEMOD(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLHOMINGPIGEON()
fungsi digunakan untuk mengiraMerpati Homing (K-line chart: Merpati).
Nilai pulangantalib.CDLHOMINGPIGEON()
Fungsi adalah: array satu dimensi.
Array
talib.CDLHOMINGPIGEON ((inPriceOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
betul
Array struktur {@struct/Record Record}
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLHOMINGPIGEON(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLHOMINGPIGEON(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLHOMINGPIGEON(records);
Log(ret);
}
PeraturanCDLHOMINGPIGEON()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:CDLHOMINGPIGEON(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLIDENTICAL3CROWS()
fungsi digunakan untuk mengiraTiga gagak yang sama..
Nilai pulangantalib.CDLIDENTICAL3CROWS()
Fungsi adalah: array satu dimensi.
Array
Talib.CDLIDENTICAL3CROWS (dalam harga OHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
betul
Array struktur {@struct/Record Record}
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLIDENTICAL3CROWS(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLIDENTICAL3CROWS(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLIDENTICAL3CROWS(records);
Log(ret);
}
PeraturanCDLIDENTICAL3CROWS()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:CDLIDENTICAL3CROWS(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLINNECK()
fungsi digunakan untuk mengiraCorak di leher (K-garis carta: neckline).
Nilai pulangantalib.CDLINNECK()
Fungsi adalah: array satu dimensi.
Array
Talib.CDLINNECK ((inPriceOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
betul
Array struktur {@struct/Record Record}
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLINNECK(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLINNECK(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLINNECK(records);
Log(ret);
}
PeraturanCDLINNECK()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:CDLINNECK(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLINVERTEDHAMMER()
fungsi digunakan untuk mengiraHammer terbalik (grafik garis K: Hammer terbalik).
Nilai pulangantalib.CDLINVERTEDHAMMER()
Fungsi adalah: array satu dimensi.
Array
talib.CDLINVERTEDHAMMER ((inPriceOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
betul
Array struktur {@struct/Record Record}
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLINVERTEDHAMMER(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLINVERTEDHAMMER(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLINVERTEDHAMMER(records);
Log(ret);
}
PeraturanCDLINVERTEDHAMMER()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:CDLINVERTEDHAMMER(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLKICKING()
fungsi digunakan untuk mengiraMenendang (K-garis carta: menendang).
Nilai pulangantalib.CDLKICKING()
Fungsi adalah array satu dimensi.
Array
Talib.CDLKICKING ((inPriceOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
betul
Array struktur {@struct/Record Record}
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLKICKING(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLKICKING(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLKICKING(records);
Log(ret);
}
PeraturanCDLKICKING()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:CDLKICKING(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLKICKINGBYLENGTH()
fungsi digunakan untuk mengiratendangan - banteng/beruang yang ditentukan oleh Marubozu yang lebih panjang (grafik K-line: tendangan banteng/beruang tendangan).
Nilai pulangantalib.CDLKICKINGBYLENGTH()
Fungsi adalah: array satu dimensi.
Array
Talib.CDLKICKINGBYLENGTH ((dalam HargaOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
betul
Array struktur {@struct/Record Record}
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLKICKINGBYLENGTH(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLKICKINGBYLENGTH(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLKICKINGBYLENGTH(records);
Log(ret);
}
PeraturanCDLKICKINGBYLENGTH()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:CDLKICKINGBYLENGTH(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLLADDERBOTTOM()
fungsi digunakan untuk mengiraBahagian bawah tangga (grafik garis K: Bahagian bawah tangga).
Nilai pulangantalib.CDLLADDERBOTTOM()
Fungsi adalah: array satu dimensi.
Array
Talib.CDLLADDERBOTTOM ((inPriceOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
betul
Array struktur {@struct/Record Record}
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLLADDERBOTTOM(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLLADDERBOTTOM(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLLADDERBOTTOM(records);
Log(ret);
}
PeraturanCDLLADDERBOTTOM()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:CDLLADDERBOTTOM(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLLONGLEGGEDDOJI()
fungsi digunakan untuk mengiraDoji Berkaki Panjang (K-line chart: Long Legged Doji).
Nilai pulangantalib.CDLLONGLEGGEDDOJI()
Fungsi adalah: array satu dimensi.
Array
Talib.CDLLONGLEGGEDDOJI (dalam Harga OHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
betul
Array struktur {@struct/Record Record}
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLLONGLEGGEDDOJI(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLLONGLEGGEDDOJI(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLLONGLEGGEDDOJI(records);
Log(ret);
}
PeraturanCDLLONGLEGGEDDOJI()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:CDLLONGLEGGEDDOJI(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLLONGLINE()
fungsi digunakan untuk mengiraLilin panjang lilin (K-garis carta: Long Line).
Nilai pulangantalib.CDLLONGLINE()
Fungsi adalah: array satu dimensi.
Array
Talib.CDLLONGLINE ((inPriceOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
betul
Array struktur {@struct/Record Record}
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLLONGLINE(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLLONGLINE(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLLONGLINE(records);
Log(ret);
}
PeraturanCDLLONGLINE()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:CDLLONGLINE(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLMARUBOZU()
fungsi digunakan untuk mengiraMarubozu (grafik K-line: kepala dan kaki telanjang).
Nilai pulangantalib.CDLMARUBOZU()
Fungsi adalah array satu dimensi.
Array
talib.CDLMARUBOZU ((inPriceOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
betul
Array struktur {@struct/Record Record}
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLMARUBOZU(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLMARUBOZU(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLMARUBOZU(records);
Log(ret);
}
PeraturanCDLMARUBOZU()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:CDLMARUBOZU(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLMATCHINGLOW()
fungsi digunakan untuk mengiraMencocokkan Rendah (Gambar K-garis: Mencocokkan Rendah).
Nilai pulangantalib.CDLMATCHINGLOW()
Fungsi adalah: array satu dimensi.
Array
talib.CDLMATCHINGLOW ((inPriceOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
betul
Array struktur {@struct/Record Record}
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLMATCHINGLOW(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLMATCHINGLOW(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLMATCHINGLOW(records);
Log(ret);
}
PeraturanCDLMATCHINGLOW()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:CDLMATCHINGLOW(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLMATHOLD()
fungsi digunakan untuk mengiraMat Hold (grafik K-line: Mat Hold).
Nilai pulangantalib.CDLMATHOLD()
Fungsi adalah: array satu dimensi.
Array
talib.CDLMATHOLD ((inPriceOHLC) talib.CDLMATHOLD ((inPriceOHLC, optInPenetration)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
betul
Array struktur {@struct/Record Record}
PeraturanoptInPenetration
parameter adalah pilihan dan digunakan untuk menentukan peratusan lebar garis trend menaik/menurun, nilai lalai adalah 0.5.
optInPenetration
palsu
nombor
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLMATHOLD(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLMATHOLD(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLMATHOLD(records);
Log(ret);
}
PeraturanCDLMATHOLD()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:CDLMATHOLD(Records[Open,High,Low,Close],Penetration = 0.5) = Array(outInteger)
Peraturantalib.CDLMORNINGDOJISTAR()
fungsi digunakan untuk mengiraMorning Doji Star (Gambar garis K: Morning Doji Star).
Nilai pulangantalib.CDLMORNINGDOJISTAR()
Fungsi adalah: array satu dimensi.
Array
Talib.CDLMORNINGDOJISTAR ((dalam HargaOHLC) Talib.CDLMORNINGDOJISTAR ((dalamPriceOHLC, optInPenetration)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
betul
Array struktur {@struct/Record Record}
PeraturanoptInPenetration
parameter digunakan untuk menentukan tahap tumpang tindih antara harga pembukaan pengesahan dan bahagian pepejal, nilai lalai adalah 0.3.
optInPenetration
palsu
nombor
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLMORNINGDOJISTAR(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLMORNINGDOJISTAR(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLMORNINGDOJISTAR(records);
Log(ret);
}
PeraturanCDLMORNINGDOJISTAR()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:CDLMORNINGDOJISTAR(Records[Open,High,Low,Close],Penetration = 0.3) = Array(outInteger)
Peraturantalib.CDLMORNINGSTAR()
fungsi digunakan untuk mengiraMorning Star (K-line chart: Morning Star).
Nilai pulangantalib.CDLMORNINGSTAR()
Fungsi adalah: array satu dimensi.
Array
talib.CDLMORNINGSTAR ((inPriceOHLC) talib.CDLMORNINGSTAR ((inPriceOHLC, optInPenetration)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
betul
Array struktur {@struct/Record Record}
PeraturanoptInPenetration
parameter adalah ambang peratusan pergerakan harga yang diperlukan untuk pengesahan trend dan mengambil nilai dalam julat [0,1], dengan nilai lalai 0.3.
optInPenetration
palsu
nombor
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLMORNINGSTAR(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLMORNINGSTAR(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLMORNINGSTAR(records);
Log(ret);
}
PeraturanCDLMORNINGSTAR()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:CDLMORNINGSTAR(Records[Open,High,Low,Close],Penetration=0.3) = Array(outInteger)
Peraturantalib.CDLONNECK()
fungsi digunakan untuk mengiraCorak di leher (grafik K-line: Corak di leher).
Nilai pulangantalib.CDLONNECK()
Fungsi adalah array satu dimensi.
Array
Talib.CDLONNECK ((inPriceOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
betul
Array struktur {@struct/Record Record}
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLONNECK(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLONNECK(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLONNECK(records);
Log(ret);
}
PeraturanCDLONNECK()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:CDLONNECK(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLPIERCING()
fungsi digunakan untuk mengiraPattern Penembusan (K-line chart: Pattern Penembusan).
Nilai pulangantalib.CDLPIERCING()
Fungsi adalah array satu dimensi.
Array
Talib.CDLPIERCING ((inPriceOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
betul
Array struktur {@struct/Record Record}
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLPIERCING(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLPIERCING(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLPIERCING(records);
Log(ret);
}
PeraturanCDLPIERCING()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:CDLPIERCING(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLRICKSHAWMAN()
fungsi digunakan untuk mengiraRickshaw Man (K-line chart: Rickshaw Man).
Nilai pulangantalib.CDLRICKSHAWMAN()
Fungsi adalah: array satu dimensi.
Array
Talib.CDLRICKSHAWMAN ((inPriceOHLC)
PeraturaninPriceOHLC
Parameter digunakan untuk menentukan data garis K.
inPriceOHLC
betul
Array struktur {@struct/Record Record}
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLRICKSHAWMAN(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLRICKSHAWMAN(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLRICKSHAWMAN(records);
Log(ret);
}
PeraturanCDLRICKSHAWMAN()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:CDLRICKSHAWMAN(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLRISEFALL3METHODS()
fungsi digunakan untuk mengiraKetiga Kaedah Naik/Jatuh (K-line chart: Tiga Kaedah Naik/Jatuh).
Nilai pulangantalib.CDLRISEFALL3METHODS()
Fungsi adalah: array satu dimensi.
Array
talib.CDLRISEFALL3METHODS ((dalam harga OHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
betul
Array struktur {@struct/Record Record}
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLRISEFALL3METHODS(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLRISEFALL3METHODS(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLRISEFALL3METHODS(records);
Log(ret);
}
PeraturanCDLRISEFALL3METHODS()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:CDLRISEFALL3METHODS(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLSEPARATINGLINES()
fungsi digunakan untuk mengiraGaris pemisah (grafik K-garis: Garis pemisah).
Nilai pulangantalib.CDLSEPARATINGLINES()
Fungsi adalah array satu dimensi.
Array
Talib.CDL SEPARATINGLINES (dalam Harga OHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
betul
Array struktur {@struct/Record Record}
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLSEPARATINGLINES(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLSEPARATINGLINES(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLSEPARATINGLINES(records);
Log(ret);
}
PeraturanCDLSEPARATINGLINES()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:CDLSEPARATINGLINES(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLSHOOTINGSTAR()
fungsi digunakan untuk mengiraBintang Menembak (K-line chart: Bintang Menembak).
Nilai pulangantalib.CDLSHOOTINGSTAR()
Fungsi adalah array satu dimensi.
Array
Talib.CDLSHOOTINGSTAR ((dalam HargaOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
betul
Array struktur {@struct/Record Record}
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLSHOOTINGSTAR(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLSHOOTINGSTAR(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLSHOOTINGSTAR(records);
Log(ret);
}
PeraturanCDLSHOOTINGSTAR()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:CDLSHOOTINGSTAR(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLSHORTLINE()
fungsi digunakan untuk mengiraLilin Pendek Candle (K-garis carta: Garis Pendek).
Nilai pulangantalib.CDLSHORTLINE()
Fungsi adalah: array satu dimensi.
Array
talib.CDLSSORTLINE ((inPriceOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
betul
Array struktur {@struct/Record Record}
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLSHORTLINE(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLSHORTLINE(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLSHORTLINE(records);
Log(ret);
}
PeraturanCDLSHORTLINE()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:CDLSHORTLINE(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLSPINNINGTOP()
fungsi digunakan untuk mengiraSpinning Top (Gambar K-garis: Spinning Top).
Nilai pulangantalib.CDLSPINNINGTOP()
Fungsi adalah: array satu dimensi.
Array
Talib.CDLSPINNINGTOP ((inPriceOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
betul
Array struktur {@struct/Record Record}
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLSPINNINGTOP(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLSPINNINGTOP(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLSPINNINGTOP(records);
Log(ret);
}
PeraturanCDLSPINNINGTOP()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:CDLSPINNINGTOP(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLSTALLEDPATTERN()
fungsi digunakan untuk mengiracorak yang terhenti (grafik K-line: corak yang terhenti).
Nilai pulangantalib.CDLSTALLEDPATTERN()
Fungsi adalah: array satu dimensi.
Array
talib.CDLSTALLEDPATTERN ((dalam harga OHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
betul
Array struktur {@struct/Record Record}
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLSTALLEDPATTERN(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLSTALLEDPATTERN(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLSTALLEDPATTERN(records);
Log(ret);
}
PeraturanCDLSTALLEDPATTERN()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:CDLSTALLEDPATTERN(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLSTICKSANDWICH()
fungsi digunakan untuk mengiraStick Sandwich (K-line chart: Stick Sandwich).
Nilai pulangantalib.CDLSTICKSANDWICH()
Fungsi adalah array satu dimensi.
Array
Talib.CDLSTICKSSANDWICH (dalam Harga OHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
betul
Array struktur {@struct/Record Record}
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLSTICKSANDWICH(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLSTICKSANDWICH(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLSTICKSANDWICH(records);
Log(ret);
}
PeraturanCDLSTICKSANDWICH()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:CDLSTICKSANDWICH(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLTAKURI()
fungsi digunakan untuk mengiraTakuri (doji lalat naga dengan garis bayang-bayang bawah yang sangat panjang) (Gambar garis K: Takuri).
Nilai pulangantalib.CDLTAKURI()
Fungsi adalah array satu dimensi.
Array
talib.CDLTAKURI ((inPriceOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
betul
Array struktur {@struct/Record Record}
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLTAKURI(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLTAKURI(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLTAKURI(records);
Log(ret);
}
PeraturanCDLTAKURI()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:CDLTAKURI(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLTASUKIGAP()
fungsi digunakan untuk mengiraTasuki Gap (Gambar garisan K: Tasuki Gap).
Nilai pulangantalib.CDLTASUKIGAP()
Fungsi adalah array satu dimensi.
Array
talib.CDLTASUKIGAP ((inPriceOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
betul
Array struktur {@struct/Record Record}
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLTASUKIGAP(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLTASUKIGAP(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLTASUKIGAP(records);
Log(ret);
}
PeraturanCDLTASUKIGAP()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:CDLTASUKIGAP(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLTHRUSTING()
fungsi digunakan untuk mengiraPola Mendorong (K-garis carta: Pola Mendorong).
Nilai pulangantalib.CDLTHRUSTING()
Fungsi adalah: array satu dimensi.
Array
Talib.CDLTHRUSTING ((inPriceOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
betul
Array struktur {@struct/Record Record}
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLTHRUSTING(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLTHRUSTING(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLTHRUSTING(records);
Log(ret);
}
PeraturanCDLTHRUSTING()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:CDLTHRUSTING(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLTRISTAR()
fungsi digunakan untuk mengiraCorak Tristar (K-line chart: Corak Tristar).
Nilai pulangantalib.CDLTRISTAR()
Fungsi adalah: array satu dimensi.
Array
Talib.CDLTRISTAR ((inPriceOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
betul
Array struktur {@struct/Record Record}
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLTRISTAR(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLTRISTAR(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLTRISTAR(records);
Log(ret);
}
PeraturanCDLTRISTAR()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:CDLTRISTAR(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLUNIQUE3RIVER()
fungsi digunakan untuk mengiraSungai Unique 3 (Gambar K-line: Sungai Unique 3).
Nilai pulangantalib.CDLUNIQUE3RIVER()
Fungsi adalah: array satu dimensi.
Array
Talib.CDLUNIQUE3RIVER ((inPriceOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
betul
Array struktur {@struct/Record Record}
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLUNIQUE3RIVER(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLUNIQUE3RIVER(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLUNIQUE3RIVER(records);
Log(ret);
}
PeraturanCDLUNIQUE3RIVER()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:CDLUNIQUE3RIVER(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLUPSIDEGAP2CROWS()
fungsi digunakan untuk mengiraUpside Gap Two Crows (Gambar garisan K: Upside Gap Two Crows).
Nilai pulangantalib.CDLUPSIDEGAP2CROWS()
Fungsi adalah: array satu dimensi.
Array
talib.CDLUPSIDEGAP2CROWS ((inPriceOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
betul
Array struktur {@struct/Record Record}
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLUPSIDEGAP2CROWS(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLUPSIDEGAP2CROWS(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLUPSIDEGAP2CROWS(records);
Log(ret);
}
PeraturanCDLUPSIDEGAP2CROWS()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:CDLUPSIDEGAP2CROWS(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLXSIDEGAP3METHODS()
fungsi digunakan untuk mengiraKesenjangan Upside/Downside Tiga Kaedah (K-line chart: Kesenjangan Upside/Downside Tiga Kaedah).
Nilai pulangantalib.CDLXSIDEGAP3METHODS()
Fungsi adalah: array satu dimensi.
Array
Talib.CDLXSIDEGAP3METHODS ((dalam HargaOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
betul
Array struktur {@struct/Record Record}
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLXSIDEGAP3METHODS(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLXSIDEGAP3METHODS(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLXSIDEGAP3METHODS(records);
Log(ret);
}
PeraturanCDLXSIDEGAP3METHODS()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:CDLXSIDEGAP3METHODS(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.AD()
fungsi digunakan untuk mengiraChaikin A/D Line (penunjuk stokastik garis).
Nilai pulangantalib.AD()
Fungsi adalah: array satu dimensi.
Array
talib.AD(dalam HargaHLCV)
PeraturaninPriceHLCV
parameter digunakan untuk menentukan data garis K.
inPriceHLCV
betul
Array struktur {@struct/Record Record}
function main() {
var records = exchange.GetRecords()
var ret = talib.AD(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.AD(records.High, records.Low, records.Close, records.Volume)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.AD(records);
Log(ret);
}
PeraturanAD()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:AD(Records[High,Low,Close,Volume]) = Array(outReal)
Peraturantalib.ADOSC()
fungsi digunakan untuk mengiraChaikin A/D Oscillator (Oscillator Chaikin).
Nilai pulangantalib.ADOSC()
Fungsi adalah array satu dimensi.
Array
talib.ADOSC ((inPriceHLCV) talib.ADOSC ((inPriceHLCV, optInFastPeriod, optInSlowPeriod)
PeraturaninPriceHLCV
parameter digunakan untuk menentukan data garis K.
inPriceHLCV
betul
Array struktur {@struct/Record Record}
PeraturanoptInFastPeriod
Parameter digunakan untuk menetapkan tempoh cepat.
optInFastPeriod
palsu
nombor
PeraturanoptInSlowPeriod
parameter digunakan untuk menetapkan tempoh perlahan.
optInSlowPeriod
palsu
nombor
function main() {
var records = exchange.GetRecords()
var ret = talib.ADOSC(records, 3, 10)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.ADOSC(records.High, records.Low, records.Close, records.Volume, 3, 10)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.ADOSC(records, 3, 10);
Log(ret);
}
PeraturanADOSC()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:ADOSC(Records[High,Low,Close,Volume],Fast Period = 3,Slow Period = 10) = Array(outReal)
Peraturantalib.OBV()
fungsi digunakan untuk mengiraPada jumlah imbangan (gelombang tenaga).
Nilai pulangantalib.OBV()
Fungsi adalah array satu dimensi.
Array
talib.OBV ((inReal) talib.OBV ((inReal, inPriceV)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
betul
{@struct/Record Record} array struktur, array nombor
PerkhidmataninPriceV
parameter digunakan untuk menentukan data garis K.
dalamPriceV
palsu
Array struktur {@struct/Record Record}
function main() {
var records = exchange.GetRecords()
var ret = talib.OBV(records, records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.OBV(records.Close, records.Volume)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.OBV(records);
Log(ret);
}
PeraturanOBV()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:OBV(Records[Close],Records[Volume]) = Array(outReal)
Peraturantalib.ACOS()
fungsi digunakan untuk mengiraVektor Trigonometri ACos (fungsi kosinus terbalik).
Nilai pulangantalib.ACOS()
Fungsi adalah array satu dimensi.
Array
talib.ACOS ((inReal)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
betul
{@struct/Record Record} array struktur, array nombor
function main() {
var data = [-1, 0, 1]
var ret = talib.ACOS(data)
Log(ret)
}
import talib
import numpy as np
def main():
data = [-1.0, 0, 1.0]
ret = talib.ACOS(np.array(data))
Log(ret)
void main() {
std::vector<double> data = {-1, 0, 1};
auto ret = talib.ACOS(data);
Log(ret);
}
PeraturanACOS()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:ACOS(Records[Close]) = Array(outReal)
Peraturantalib.ASIN()
fungsi digunakan untuk mengiraVektor Trigonometrik ASin (fungsi sinus terbalik).
Nilai pulangantalib.ASIN()
Fungsi adalah array satu dimensi.
Array
talib.ASIN ((inReal)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
betul
{@struct/Record Record} array struktur, array nombor
function main() {
var data = [-1, 0, 1]
var ret = talib.ASIN(data)
Log(ret)
}
import talib
import numpy as np
def main():
data = [-1.0, 0, 1.0]
ret = talib.ASIN(np.array(data))
Log(ret)
void main() {
std::vector<double> data = {-1, 0, 1};
auto ret = talib.ASIN(data);
Log(ret);
}
PeraturanASIN()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:ASIN(Records[Close]) = Array(outReal)
Peraturantalib.ATAN()
fungsi digunakan untuk mengiraVektor Trigonometri ATan (fungsi tangen terbalik).
Nilai pulangantalib.ATAN()
Fungsi adalah: array satu dimensi.
Array
talib.ATAN ((inReal)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
betul
{@struct/Record Record} array struktur, array nombor
function main() {
var data = [-3.14/2, 0, 3.14/2]
var ret = talib.ATAN(data)
Log(ret)
}
import talib
import numpy as np
def main():
data = [-3.14/2, 0, 3.14/2]
ret = talib.ATAN(np.array(data))
Log(ret)
void main() {
std::vector<double> data = {-3.14/2, 0, 3.14/2};
auto ret = talib.ATAN(data);
Log(ret);
}
PeraturanATAN()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:ATAN(Records[Close]) = Array(outReal)
Peraturantalib.CEIL()
fungsi digunakan untuk mengiraSekatan Vektor (fungsi membulat).
Nilai pulangantalib.CEIL()
Fungsi adalah array satu dimensi.
Array
Talib.CEIL ((inReal)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
betul
{@struct/Record Record} array struktur, array nombor
function main() {
var records = exchange.GetRecords()
var ret = talib.CEIL(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CEIL(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CEIL(records);
Log(ret);
}
PeraturanCEIL()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:CEIL(Records[Close]) = Array(outReal)
Peraturantalib.COS()
fungsi digunakan untuk mengiraKos trigonometri vektor (fungsi kosinus).
Nilai pulangantalib.COS()
Fungsi adalah: array satu dimensi.
Array
talib.COS ((inReal)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
betul
{@struct/Record Record} array struktur, array nombor
function main() {
var data = [-3.14, 0, 3.14]
var ret = talib.COS(data)
Log(ret)
}
import talib
import numpy as np
def main():
data = [-3.14, 0, 3.14]
ret = talib.COS(np.array(data))
Log(ret)
void main() {
std::vector<double> data = {-3.14, 0, 3.14};
auto ret = talib.COS(data);
Log(ret);
}
PeraturanCOS()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:COS(Records[Close]) = Array(outReal)
Peraturantalib.COSH()
fungsi digunakan untuk mengiraVektor Trigonometri Cosh (nilai kosinus hiperbolik).
Nilai pulangantalib.COSH()
Fungsi adalah array satu dimensi.
Array
talib.COSH ((inReal)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
betul
{@struct/Record Record} array struktur, array nombor
function main() {
var data = [-1, 0, 1]
var ret = talib.COSH(data)
Log(ret)
}
import talib
import numpy as np
def main():
data = [-1.0, 0, 1.0]
ret = talib.COSH(np.array(data))
Log(ret)
void main() {
std::vector<double> data = {-1, 0, 1};
auto ret = talib.COSH(data);
Log(ret);
}
PeraturanCOSH()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:COSH(Records[Close]) = Array(outReal)
Peraturantalib.EXP()
fungsi digunakan untuk mengiraVektor Aritmatika Exp (fungsi eksponensial).
Nilai pulangantalib.EXP()
Fungsi adalah: array satu dimensi.
Array
talib.EXP ((inReal)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
betul
{@struct/Record Record} array struktur, array nombor
function main() {
var data = [0, 1, 2]
var ret = talib.EXP(data) // e^0, e^1, e^2
Log(ret)
}
import talib
import numpy as np
def main():
data = [0, 1.0, 2.0]
ret = talib.EXP(np.array(data))
Log(ret)
void main() {
std::vector<double> data = {0, 1.0, 2.0};
auto ret = talib.EXP(data);
Log(ret);
}
PeraturanEXP()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:EXP(Records[Close]) = Array(outReal)
Peraturantalib.FLOOR()
fungsi digunakan untuk mengiraVektor Lantai (dibulatkan ke bawah).
Nilai pulangantalib.FLOOR()
Fungsi adalah array satu dimensi.
Array
talib.FLOOR ((inReal)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
betul
{@struct/Record Record} array struktur, array nombor
function main() {
var records = exchange.GetRecords()
var ret = talib.FLOOR(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.FLOOR(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.FLOOR(records);
Log(ret);
}
PeraturanFLOOR()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:FLOOR(Records[Close]) = Array(outReal)
Peraturantalib.LN()
fungsi digunakan untuk mengiraVektor Log Natural (logaritma semula jadi).
Nilai pulangantalib.LN()
Fungsi adalah array satu dimensi.
Array
talib.LN ((inReal)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
betul
{@struct/Record Record} array struktur, array nombor
function main() {
var data = [1, 2, 3]
var ret = talib.LN(data)
Log(ret)
}
import talib
import numpy as np
def main():
data = [1.0, 2.0, 3.0]
ret = talib.LN(np.array(data))
Log(ret)
void main() {
std::vector<double> data = {1, 2, 3};
auto ret = talib.LN(data);
Log(ret);
}
PeraturanLN()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:LN(Records[Close]) = Array(outReal)
Peraturantalib.LOG10()
fungsi digunakan untuk mengiraVektor Log10 (fungsi logaritma).
Nilai pulangantalib.LOG10()
Fungsi adalah array satu dimensi.
Array
talib.LOG10 ((inReal)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
betul
{@struct/Record Record} array struktur, array nombor
function main() {
var data = [10, 100, 1000]
var ret = talib.LOG10(data)
Log(ret)
}
import talib
import numpy as np
def main():
data = [10.0, 100.0, 1000.0]
ret = talib.LOG10(np.array(data))
Log(ret)
void main() {
std::vector<double> data = {10, 100, 1000};
auto ret = talib.LOG10(data);
Log(ret);
}
PeraturanLOG10()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:LOG10(Records[Close]) = Array(outReal)
Peraturantalib.SIN()
fungsi digunakan untuk mengiraVektor Trigonometri Sin (nilai sinus).
Nilai pulangantalib.SIN()
Fungsi adalah array satu dimensi.
Array
talib.SIN ((inReal)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
betul
{@struct/Record Record} array struktur, array nombor
function main() {
var data = [-3.14/2, 0, 3.14/2]
var ret = talib.SIN(data)
Log(ret)
}
import talib
import numpy as np
def main():
data = [-3.14/2, 0, 3.14/2]
ret = talib.SIN(np.array(data))
Log(ret)
void main() {
std::vector<double> data = {-3.14/2, 0, 3.14/2};
auto ret = talib.SIN(data);
Log(ret);
}
PeraturanSIN()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:SIN(Records[Close]) = Array(outReal)
Peraturantalib.SINH()
fungsi digunakan untuk mengiraVektor Trigonometrik Sinh (fungsi sinus hiperbolik).
Nilai pulangantalib.SINH()
Fungsi adalah: array satu dimensi.
Array
talib.SINH ((inReal)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
betul
{@struct/Record Record} array struktur, array nombor
function main() {
var data = [-1, 0, 1]
var ret = talib.SINH(data)
Log(ret)
}
import talib
import numpy as np
def main():
data = [-1.0, 0, 1.0]
ret = talib.SINH(np.array(data))
Log(ret)
void main() {
std::vector<double> data = {-1, 0, 1};
auto ret = talib.SINH(data);
Log(ret);
}
PeraturanSINH()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:SINH(Records[Close]) = Array(outReal)
Peraturantalib.SQRT()
fungsi digunakan untuk mengiraAkar Kuadrat vektor (akar kuadrat).
Nilai pulangantalib.SQRT()
Fungsi adalah: array satu dimensi.
Array
talib.SQRT ((inReal)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
betul
{@struct/Record Record} array struktur, array nombor
function main() {
var data = [4, 64, 100]
var ret = talib.SQRT(data)
Log(ret)
}
import talib
import numpy as np
def main():
data = [4.0, 64.0, 100.0]
ret = talib.SQRT(np.array(data))
Log(ret)
void main() {
std::vector<double> data = {4, 64, 100};
auto ret = talib.SQRT(data);
Log(ret);
}
PeraturanSQRT()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:SQRT(Records[Close]) = Array(outReal)
Peraturantalib.TAN()
fungsi digunakan untuk mengiraVektor Trigonometri Tan (tangen).
Nilai pulangantalib.TAN()
Fungsi adalah array satu dimensi.
Array
Talib.TAN ((inReal)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
betul
{@struct/Record Record} array struktur, array nombor
function main() {
var data = [-1, 0, 1]
var ret = talib.TAN(data)
Log(ret)
}
import talib
import numpy as np
def main():
data = [-1.0, 0, 1.0]
ret = talib.TAN(np.array(data))
Log(ret)
void main() {
std::vector<double> data = {-1, 0, 1};
auto ret = talib.TAN(data);
Log(ret);
}
PeraturanTAN()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:TAN(Records[Close]) = Array(outReal)
Peraturantalib.TANH()
fungsi digunakan untuk mengiraVektor Trigonometri Tanh (fungsi tangen hiperbolik).
Nilai pulangantalib.TANH()
Fungsi adalah: array satu dimensi.
Array
talib.TANH ((inReal)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
betul
{@struct/Record Record} array struktur, array nombor
function main() {
var data = [-1, 0, 1]
var ret = talib.TANH(data)
Log(ret)
}
import talib
import numpy as np
def main():
data = [-1.0, 0, 1.0]
ret = talib.TANH(np.array(data))
Log(ret)
void main() {
std::vector<double> data = {-1, 0, 1};
auto ret = talib.TANH(data);
Log(ret);
}
PeraturanTANH()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:TANH(Records[Close]) = Array(outReal)
Peraturantalib.MAX()
fungsi digunakan untuk mengira nilai tertinggi (maksimum) untuktempoh tertentu.
Nilai pulangantalib.MAX()
Fungsi adalah: array satu dimensi.
Array
Talib.MAX ((inReal) talib.MAX ((inReal, optInTimePeriod)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
betul
{@struct/Record Record} array struktur, array nombor
PerkhidmatanoptInTimePeriod
parameter digunakan untuk menetapkan tempoh, nilai lalai adalah 30.
optInTimePeriod
palsu
nombor
function main() {
var records = exchange.GetRecords()
var ret = talib.MAX(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.MAX(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.MAX(records);
Log(ret);
}
PeraturanMAX()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:MAX(Records[Close],Time Period = 30) = Array(outReal)
Peraturantalib.MAXINDEX()
fungsi digunakan untuk mengiraIndeks nilai tertinggi dalam tempoh yang ditentukan (indeks maksimum).
Nilai pulangantalib.MAXINDEX()
Fungsi adalah: array satu dimensi.
Array
talib.MAXINDEX ((inReal) talib.MAXINDEX ((inReal, optInTimePeriod)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
betul
{@struct/Record Record} array struktur, array nombor
PerkhidmatanoptInTimePeriod
parameter digunakan untuk menetapkan tempoh, nilai lalai adalah 30.
optInTimePeriod
palsu
nombor
function main() {
var records = exchange.GetRecords()
var ret = talib.MAXINDEX(records, 5)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.MAXINDEX(records.Close, 5)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.MAXINDEX(records, 5);
Log(ret);
}
PeraturanMAXINDEX()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:MAXINDEX(Records[Close],Time Period = 30) = Array(outInteger)
Peraturantalib.MIN()
Fungsi digunakan untuk mengira nilai terendah (nilai minimum) ** untuk tempoh yang ditentukan.
Nilai pulangantalib.MIN()
Fungsi adalah: array satu dimensi.
Array
talib.MIN ((inReal) talib.MIN ((inReal, optInTimePeriod)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
betul
{@struct/Record Record} array struktur, array nombor
PerkhidmatanoptInTimePeriod
parameter digunakan untuk menetapkan tempoh, nilai lalai adalah 30.
optInTimePeriod
palsu
nombor
function main() {
var records = exchange.GetRecords()
var ret = talib.MIN(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.MIN(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.MIN(records);
Log(ret);
}
PeraturanMIN()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:MIN(Records[Close],Time Period = 30) = Array(outReal)
Peraturantalib.MININDEX()
fungsi digunakan untuk mengiraindeks nilai terendah (indeks nilai minimum)untuk tempoh yang ditentukan.
Nilai pulangantalib.MININDEX()
Fungsi adalah: array satu dimensi.
Array
talib.MININDEX ((inReal) talib.MININDEX ((inReal, optInTimePeriod)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
betul
{@struct/Record Record} array struktur, array nombor
PerkhidmatanoptInTimePeriod
parameter digunakan untuk menetapkan tempoh, nilai lalai adalah 30.
optInTimePeriod
palsu
nombor
function main() {
var records = exchange.GetRecords()
var ret = talib.MININDEX(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.MININDEX(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.MININDEX(records);
Log(ret);
}
PeraturanMININDEX()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:MININDEX(Records[Close],Time Period = 30) = Array(outInteger)
Peraturantalib.MINMAX()
fungsi digunakan untuk mengiraNilai terendah dan tertinggi (minimum dan maksimum) untuk tempoh yang ditentukan.
Nilai pulangantalib.MINMAX()
fungsi adalah array dua dimensi. elemen pertama array dua dimensi ini adalah array nilai minimum, dan elemen kedua adalah array nilai maksimum.
Array
talib.MINMAX ((inReal) talib.MINMAX ((inReal, optInTimePeriod)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
betul
{@struct/Record Record} array struktur, array nombor
PerkhidmatanoptInTimePeriod
parameter digunakan untuk menetapkan tempoh, nilai lalai adalah 30.
optInTimePeriod
palsu
nombor
function main() {
var records = exchange.GetRecords()
var ret = talib.MINMAX(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.MINMAX(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.MINMAX(records);
Log(ret);
}
PeraturanMINMAX()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:MINMAX(Records[Close],Time Period = 30) = [Array(outMin),Array(outMax)]
Peraturantalib.MINMAXINDEX()
fungsi digunakan untuk mengiraIndeks nilai terendah dan tertinggi (indeks minimum dan maksimum) dalam tempoh yang ditentukan.
Nilai pulangantalib.MINMAXINDEX()
fungsi adalah: array dua dimensi. elemen pertama daripada array dua dimensi ini adalah minimum array yang diindeks, dan elemen kedua adalah maksimum array yang diindeks.
Array
talib.MINMAXINDEX ((inReal) talib.MINMAXINDEX ((inReal, optInTimePeriod)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
betul
{@struct/Record Record} array struktur, array nombor
PerkhidmatanoptInTimePeriod
parameter digunakan untuk menetapkan tempoh, nilai lalai adalah 30.
optInTimePeriod
palsu
nombor
function main() {
var records = exchange.GetRecords()
var ret = talib.MINMAXINDEX(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.MINMAXINDEX(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.MINMAXINDEX(records);
Log(ret);
}
PeraturanMINMAXINDEX()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:MINMAXINDEX(Records[Close],Time Period = 30) = [Array(outMinIdx),Array(outMaxIdx)]
Peraturantalib.SUM()
fungsi digunakan untuk mengiraRingkasan.
Nilai pulangantalib.SUM()
Fungsi adalah: array satu dimensi.
Array
talib.SUM ((inReal) talib.SUM ((inReal, optInTimePeriod)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
betul
{@struct/Record Record} array struktur, array nombor
PerkhidmatanoptInTimePeriod
parameter digunakan untuk menetapkan tempoh, nilai lalai adalah 30.
optInTimePeriod
palsu
nombor
function main() {
var records = exchange.GetRecords()
var ret = talib.SUM(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.SUM(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.SUM(records);
Log(ret);
}
PeraturanSUM()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:SUM(Records[Close],Time Period = 30) = Array(outReal)
Peraturantalib.HT_DCPERIOD()
fungsi digunakan untuk mengiraTransformasi Hilbert - tempoh kitaran dominan (Transformasi Hilbert, tempoh dominan).
Nilai pulangantalib.HT_DCPERIOD()
Fungsi adalah: array satu dimensi.
Array
talib.HT_DCPERIOD ((inReal)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
betul
{@struct/Record Record} array struktur, array nombor
function main() {
var records = exchange.GetRecords()
var ret = talib.HT_DCPERIOD(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.HT_DCPERIOD(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.HT_DCPERIOD(records);
Log(ret);
}
PeraturanHT_DCPERIOD()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:HT_DCPERIOD(Records[Close]) = Array(outReal)
Peraturantalib.HT_DCPHASE()
fungsi digunakan untuk mengiraTransformasi Hilbert - fasa kitaran dominan (Transformasi Hilbert, fasa kitaran dominan).
Nilai pulangantalib.HT_DCPHASE()
Fungsi adalah: array satu dimensi.
Array
talib.HT_DCPHASE ((inReal)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
betul
{@struct/Record Record} array struktur, array nombor
function main() {
var records = exchange.GetRecords()
var ret = talib.HT_DCPHASE(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.HT_DCPHASE(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.HT_DCPHASE(records);
Log(ret);
}
PeraturanHT_DCPHASE()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:HT_DCPHASE(Records[Close]) = Array(outReal)
Peraturantalib.HT_PHASOR()
fungsi digunakan untuk mengiraTransformasi Hilbert - Komponen Phasor (Transformasi Hilbert, Komponen fasa).
Nilai pulangantalib.HT_PHASOR()
Fungsi adalah array dua dimensi.
Array
talib.HT_PHASOR ((inReal)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
betul
{@struct/Record Record} array struktur, array nombor
function main() {
var records = exchange.GetRecords()
var ret = talib.HT_PHASOR(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.HT_PHASOR(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.HT_PHASOR(records);
Log(ret);
}
PeraturanHT_PHASOR()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:HT_PHASOR(Records[Close]) = [Array(outInPhase),Array(outQuadrature)]
Peraturantalib.HT_SINE()
fungsi digunakan untuk mengiraTransformasi Hilbert - SinusWave (Transformasi Hilbert, Sinus Wave).
Nilai pulangantalib.HT_SINE()
Fungsi adalah: array dua dimensi.
Array
Talib.HT_SINE ((inReal)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
betul
{@struct/Record Record} array struktur, array nombor
function main() {
var records = exchange.GetRecords()
var ret = talib.HT_SINE(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.HT_SINE(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.HT_SINE(records);
Log(ret);
}
PeraturanHT_SINE()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:HT_SINE(Records[Close]) = [Array(outSine),Array(outLeadSine)]
Peraturantalib.HT_TRENDMODE()
fungsi digunakan untuk mengiraTransformasi Hilbert - Trend dan mod kitaran.
Nilai pulangantalib.HT_TRENDMODE()
Fungsi adalah: array satu dimensi.
Array
Talib.HT_TRENDMODE ((inReal)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
betul
{@struct/Record Record} array struktur, array nombor
function main() {
var records = exchange.GetRecords()
var ret = talib.HT_TRENDMODE(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.HT_TRENDMODE(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.HT_TRENDMODE(records);
Log(ret);
}
PeraturanHT_TRENDMODE()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:HT_TRENDMODE(Records[Close]) = Array(outInteger)
Peraturantalib.ATR()
fungsi digunakan untuk mengiraJulat sebenar purata.
Nilai pulangantalib.ATR()
Fungsi adalah array satu dimensi.
Array
talib.ATR ((inPriceHLC) talib.ATR ((inPriceHLC, optInTimePeriod)
PeraturaninPriceHLC
parameter digunakan untuk menentukan data garis K.
inPriceHLC
betul
Array struktur {@struct/Record Record}
PeraturanoptInTimePeriod
parameter digunakan untuk menetapkan tempoh, nilai lalai adalah 14.
optInTimePeriod
palsu
nombor
function main() {
var records = exchange.GetRecords()
var ret = talib.ATR(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.ATR(records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.ATR(records);
Log(ret);
}
PeraturanATR()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:ATR(Records[High,Low,Close],Time Period = 14) = Array(outReal)
Peraturantalib.NATR()
fungsi digunakan untuk mengiraJulat sebenar purata yang normal.
Nilai pulangantalib.NATR()
Fungsi adalah array satu dimensi.
Array
talib.NATR ((inPriceHLC) talib.NATR ((inPriceHLC, optInTimePeriod)
PeraturaninPriceHLC
parameter digunakan untuk menentukan data garis K.
inPriceHLC
betul
Array struktur {@struct/Record Record}
PeraturanoptInTimePeriod
parameter digunakan untuk menetapkan tempoh, nilai lalai adalah 14.
optInTimePeriod
palsu
nombor
function main() {
var records = exchange.GetRecords()
var ret = talib.NATR(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.NATR(records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.NATR(records);
Log(ret);
}
PeraturanNATR()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:NATR(Records[High,Low,Close],Time Period = 14) = Array(outReal)
Peraturantalib.TRANGE()
fungsi digunakan untuk mengiraJulat sebenar.
Nilai pulangantalib.TRANGE()
Fungsi adalah: array satu dimensi.
Array
Talib.TRANGE ((inPriceHLC)
PeraturaninPriceHLC
parameter digunakan untuk menentukan data garis K.
inPriceHLC
betul
Array struktur {@struct/Record Record}
function main() {
var records = exchange.GetRecords()
var ret = talib.TRANGE(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.TRANGE(records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.TRANGE(records);
Log(ret);
}
PeraturanTRANGE()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:TRANGE(Records[High,Low,Close]) = Array(outReal)
Peraturantalib.BBANDS()
fungsi digunakan untuk mengiraBollinger Bands.
Nilai pulangantalib.BBANDS()
fungsi adalah: array dua dimensi. Array mengandungi tiga elemen iaitu: array baris atas, array baris tengah, dan array baris bawah.
Array
talib.BBANDS ((inReal) talib.BBANDS ((inReal, optInTimePeriod) talib.BBANDS ((inReal, optInTimePeriod, optInNbDevUp) talib.BBANDS ((inReal, optInTimePeriod, optInNbDevUp, optInNbDevDn) talib.BBANDS ((inReal, optInTimePeriod, optInNbDevUp, optInNbDevDn, optInMAType)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
betul
{@struct/Record Record} array struktur, array nombor
PerkhidmatanoptInTimePeriod
parameter digunakan untuk menetapkan tempoh, nilai lalai adalah 5.
optInTimePeriod
palsu
nombor
PeraturanoptInNbDevUp
parameter digunakan untuk menetapkan pengganda garis atas, nilai lalai adalah 2.
pilihanInNbDevUp
palsu
nombor
PerkhidmatanoptInNbDevDn
parameter digunakan untuk menetapkan pengganda baris bawah, nilai lalai adalah 2.
pilihanInNbDevDn
palsu
nombor
PerkhidmatanoptInMAType
parameter digunakan untuk menetapkan jenis purata, nilai lalai adalah 0.
pilihanInMATyp
palsu
nombor
function main() {
var records = exchange.GetRecords()
var ret = talib.BBANDS(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.BBANDS(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.BBANDS(records);
Log(ret);
}
PeraturanBBANDS()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:BBANDS(Records[Close],Time Period = 5,Deviations up = 2,Deviations down = 2,MA Type = 0) = [Array(outRealUpperBand),Array(outRealMiddleBand),Array(outRealLowerBand)]
Peraturantalib.DEMA()
fungsi digunakan untuk mengiraPurata Bergerak Eksponensial Ganda.
Nilai pulangantalib.DEMA()
Fungsi adalah array satu dimensi.
Array
Talib.DEMA ((inReal) talib.DEMA ((inReal, optInTimePeriod)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
betul
{@struct/Record Record} array struktur, array nombor
PerkhidmatanoptInTimePeriod
parameter digunakan untuk menetapkan tempoh, nilai lalai adalah 30.
optInTimePeriod
palsu
nombor
function main() {
var records = exchange.GetRecords()
var ret = talib.DEMA(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.DEMA(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.DEMA(records);
Log(ret);
}
PeraturanDEMA()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:DEMA(Records[Close],Time Period = 30) = Array(outReal)
Peraturantalib.EMA()
fungsi digunakan untuk mengiraPurata Bergerak Eksponensial.
Nilai pulangantalib.EMA()
Fungsi adalah array satu dimensi.
Array
Talib.EMA ((inReal) talib.EMA ((inReal, optInTimePeriod)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
betul
{@struct/Record Record} array struktur, array nombor
PerkhidmatanoptInTimePeriod
parameter digunakan untuk menetapkan tempoh, nilai lalai adalah 30.
optInTimePeriod
palsu
nombor
function main() {
var records = exchange.GetRecords()
var ret = talib.EMA(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.EMA(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.EMA(records);
Log(ret);
}
PeraturanEMA()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:EMA(Records[Close],Time Period = 30) = Array(outReal)
Peraturantalib.HT_TRENDLINE()
fungsi digunakan untuk mengiraTransformasi Hilbert - Barisan Trend Seketika (Transformasi Hilbert, Trend Seketika).
Nilai pulangantalib.HT_TRENDLINE()
Fungsi adalah: array satu dimensi.
Array
talib.HT_TRENDLINE ((inReal)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
betul
{@struct/Record Record} array struktur, array nombor
function main() {
var records = exchange.GetRecords()
var ret = talib.HT_TRENDLINE(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.HT_TRENDLINE(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.HT_TRENDLINE(records);
Log(ret);
}
PeraturanHT_TRENDLINE()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:HT_TRENDLINE(Records[Close]) = Array(outReal)
Peraturantalib.KAMA()
fungsi digunakan untuk mengiraKaufman Adaptive Moving Average.
Nilai pulangantalib.KAMA()
Fungsi adalah: array satu dimensi.
Array
Talib.KAMA ((inReal) talib.KAMA ((inReal, optInTimePeriod)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
betul
{@struct/Record Record} array struktur, array nombor
PerkhidmatanoptInTimePeriod
parameter digunakan untuk menetapkan tempoh, nilai lalai adalah 30.
optInTimePeriod
palsu
nombor
function main() {
var records = exchange.GetRecords()
var ret = talib.KAMA(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.KAMA(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.KAMA(records);
Log(ret);
}
PeraturanKAMA()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:KAMA(Records[Close],Time Period = 30) = Array(outReal)
Peraturantalib.MA()
fungsi digunakan untuk mengiraPurata bergerak.
Nilai pulangantalib.MA()
Fungsi adalah: array satu dimensi.
Array
talib.MA(InReal)talib.MA(inReal, optInTimePeriod)talib.MA(inReal, optInTimePeriod, optInMAType)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
betul
{@struct/Record Record} array struktur, array nombor
PerkhidmatanoptInTimePeriod
parameter digunakan untuk menetapkan tempoh, nilai lalai adalah 30.
optInTimePeriod
palsu
nombor
PeraturanoptInMAType
parameter digunakan untuk menetapkan jenis purata, nilai lalai adalah 0.
pilihanInMATyp
palsu
nombor
function main() {
var records = exchange.GetRecords()
var ret = talib.MA(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.MA(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.MA(records);
Log(ret);
}
PeraturanMA()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:MA(Records[Close],Time Period = 30,MA Type = 0) = Array(outReal)
Peraturantalib.MAMA()
fungsi digunakan untuk mengiraMESA Purata Bergerak Sesuai.
Nilai pulangantalib.MAMA()
Fungsi adalah: array dua dimensi.
Array
Talib.MAMA ((inReal) talib.MAMA ((inReal, optInFastLimit) talib.MAMA ((inReal, optInFastLimit, optInSlowLimit)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
betul
{@struct/Record Record} array struktur, array nombor
PerkhidmatanoptInFastLimit
parameter digunakan untuk menetapkan had pantas, nilai lalai adalah 0.5.
pilihanInFastLimit
palsu
nombor
PerkhidmatanoptInSlowLimit
parameter digunakan untuk menetapkan had perlahan, nilai lalai adalah 0.05.
optInSlowLimit
palsu
nombor
function main() {
var records = exchange.GetRecords()
var ret = talib.MAMA(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.MAMA(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.MAMA(records);
Log(ret);
}
PeraturanMAMA()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:MAMA(Records[Close],Fast Limit = 0.5,Slow Limit = 0.05) = [Array(outMAMA),Array(outFAMA)]
Peraturantalib.MIDPOINT()
fungsi digunakan untuk mengiraTitik tengah tempoh (titik tengah).
Nilai pulangantalib.MIDPOINT()
Fungsi adalah array satu dimensi.
Array
Talib.MIDPOINT ((inReal) talib.MIDPOINT ((inReal, optInTimePeriod)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
betul
{@struct/Record Record} array struktur, array nombor
PerkhidmatanoptInTimePeriod
parameter digunakan untuk menetapkan tempoh, nilai lalai adalah 14.
optInTimePeriod
palsu
nombor
function main() {
var records = exchange.GetRecords()
var ret = talib.MIDPOINT(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.MIDPOINT(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.MIDPOINT(records);
Log(ret);
}
PeraturanMIDPOINT()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:MIDPOINT(Records[Close],Time Period = 14) = Array(outReal)
Peraturantalib.MIDPRICE()
fungsi digunakan untuk mengiraHarga titik tengah sepanjang tempoh (harga titik tengah).
Nilai pulangantalib.MIDPRICE()
Fungsi adalah array satu dimensi.
Array
talib.MIDPRICE ((inPriceHL) talib.MIDPRICE ((inPriceHL, optInTimePeriod)
PeraturaninPriceHL
parameter digunakan untuk menentukan data garis K.
inPriceHL
betul
Array struktur {@struct/Record Record}
PeraturanoptInTimePeriod
parameter digunakan untuk menetapkan tempoh, nilai lalai adalah 14.
optInTimePeriod
palsu
nombor
function main() {
var records = exchange.GetRecords()
var ret = talib.MIDPRICE(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.MIDPRICE(records.High, records.Low)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.MIDPRICE(records);
Log(ret);
}
PeraturanMIDPRICE()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:MIDPRICE(Records[High,Low],Time Period = 14) = Array(outReal)
Peraturantalib.SAR()
fungsi digunakan untuk mengiraSAR Parabolik.
Nilai pulangantalib.SAR()
Fungsi adalah: array satu dimensi.
Array
talib.SAR ((inPriceHL) talib.SAR ((inPriceHL, optInAcceleration) talib.SAR ((inPriceHL, optInAcceleration, optInMaximum)
PeraturaninPriceHL
parameter digunakan untuk menentukan data garis K.
inPriceHL
betul
Array struktur {@struct/Record Record}
PeraturanoptInAcceleration
parameter digunakan untuk menetapkan Faktor Pengecasan, nilai lalai adalah 0.02.
PilihPengcepat
palsu
nombor
PerkhidmatanoptInMaximum
parameter digunakan untuk menetapkan maksimum AF, nilai lalai adalah 0.2.
pilihanInMaximum
palsu
nombor
function main() {
var records = exchange.GetRecords()
var ret = talib.SAR(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.SAR(records.High, records.Low)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.SAR(records);
Log(ret);
}
PeraturanSAR()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:SAR(Records[High,Low],Acceleration Factor = 0.02,AF Maximum = 0.2) = Array(outReal)
Peraturantalib.SAREXT()
fungsi digunakan untuk mengiraSAR parabolik - Ditingkatkan (penyelenggara parabolik yang dipertingkatkan).
Nilai pulangantalib.SAREXT()
Fungsi adalah array satu dimensi.
Array
talib.SAREXT ((inPriceHL) talib.SAREXT ((inPriceHL, optInStartValue) talib.SAREXT ((inPriceHL, optInStartValue, optInOffsetOnReverse) talib.SAREXT ((inPriceHL, optInStartValue, optInOffsetOnReverse, optInAccelerationInitLong) talib.SAREXT ((inPriceHL, optInStartValue, optInOffsetOnReverse, optInAccelerationInitLong, optInAccelerationLong) talib.SAREXT ((inPriceHL, optInStartValue, optInOffsetOnReverse, optInAccelerationInitLong, optInAccelerationLong, optInAccelerationMaxLong) talib.SAREXT ((inPriceHL, optInStartValue, optInOffsetOnReverse, optInAccelerationInitLong, optInAccelerationLong, optInAccelerationMaxLong, optInAccelerationInitShort) talib.SAREXT ((inPriceHL, optInStartValue, optInOffsetOnReverse, optInAccelerationInitLong, optInAccelerationLong, optInAccelerationMaxLong, optInAccelerationInitShort, optInAccelerationShort) talib.SAREXT ((inPriceHL, optInStartValue, optInOffsetOnReverse, optInAccelerationInitLong, optInAccelerationLong, optInAccelerationMaxLong, optInAccelerationInitShort, optInAccelerationShort, optInAccelerationMaxShort)
PeraturaninPriceHL
parameter digunakan untuk menentukan data garis K.
inPriceHL
betul
Array struktur {@struct/Record Record}
PeraturanoptInStartValue
parameter digunakan untuk menetapkan Nilai Mula, nilai lalai adalah 0.
pilihanInStartValue
palsu
nombor
PerkhidmatanoptInOffsetOnReverse
Parameter digunakan untuk menetapkan Offset pada Reverse, nilai lalai adalah 0.
pilihanInOffsetOnReverse
palsu
nombor
PerkhidmatanoptInAccelerationInitLong
parameter digunakan untuk menetapkan AF Init Long, nilai lalai adalah 0.02.
Pilih dalamPengcepat dalamItLong
palsu
nombor
PerkhidmatanoptInAccelerationLong
parameter digunakan untuk menetapkan AF panjang, nilai lalai adalah 0.02.
pilihanInAccelerationLong
palsu
nombor
PerkhidmatanoptInAccelerationMaxLong
parameter digunakan untuk menetapkan AF Max Long, nilai lalai adalah 0.2.
pilihanInAccelerationMaxLong
palsu
nombor
PerkhidmatanoptInAccelerationInitShort
parameter digunakan untuk menetapkan AF Init Short, nilai lalai adalah 0.02.
Pilih dalamPengcepat dalamSingkat
palsu
nombor
PerkhidmatanoptInAccelerationShort
parameter digunakan untuk menetapkan AF Pendek, nilai lalai adalah 0.02.
pilihanInAccelerationShort
palsu
nombor
PerkhidmatanoptInAccelerationMaxShort
parameter digunakan untuk menetapkan AF Max Short, nilai lalai adalah 0.2.
optInAccelerationMaxShort
palsu
nombor
function main() {
var records = exchange.GetRecords()
var ret = talib.SAREXT(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.SAREXT(records.High, records.Low)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.SAREXT(records);
Log(ret);
}
PeraturanSAREXT()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:SAREXT(Records[High,Low],Start Value = 0,Offset on Reverse = 0,AF Init Long = 0.02,AF Long = 0.02,AF Max Long = 0.2,AF Init Short = 0.02,AF Short = 0.02,AF Max Short = 0.2) = Array(outReal)
Peraturantalib.SMA()
fungsi digunakan untuk mengirapurata bergerak mudah.
Nilai pulangantalib.SMA()
Fungsi adalah: array satu dimensi.
Array
talib.SMA ((inReal) talib.SMA ((inReal, optInTimePeriod)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
betul
{@struct/Record Record} array struktur, array nombor
PerkhidmatanoptInTimePeriod
parameter digunakan untuk menetapkan tempoh, nilai lalai adalah 30.
optInTimePeriod
palsu
nombor
function main() {
var records = exchange.GetRecords()
var ret = talib.SMA(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.SMA(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.SMA(records);
Log(ret);
}
PeraturanSMA()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:SMA(Records[Close],Time Period = 30) = Array(outReal)
Peraturantalib.T3()
fungsi digunakan untuk mengiraRata-rata Bergerak Eksponensial Tiga (T3) (rata-rata bergerak eksponensial tiga).
Nilai pulangantalib.T3()
Fungsi adalah array satu dimensi.
Array
Talib.T3 ((inReal) talib.T3 ((inReal, optInTimePeriod) talib.T3 ((inReal, optInTimePeriod, optInVFactor)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
betul
{@struct/Record Record} array struktur, array nombor
PerkhidmatanoptInTimePeriod
parameter digunakan untuk menetapkan tempoh, nilai lalai adalah 5.
optInTimePeriod
palsu
nombor
PeraturanoptInVFactor
parameter digunakan untuk menetapkan Volume Factor, nilai lalai adalah 0.7.
pilihanInVFactor
palsu
nombor
function main() {
var records = exchange.GetRecords()
var ret = talib.T3(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.T3(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.T3(records);
Log(ret);
}
PeraturanT3()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:T3(Records[Close],Time Period = 5,Volume Factor = 0.7) = Array(outReal)
Peraturantalib.TEMA()
fungsi digunakan untuk mengiraPurata Bergerak Eksponensial Ganda.
Nilai pulangantalib.TEMA()
Fungsi adalah array satu dimensi.
Array
talib.TEMA ((inReal) talib.TEMA ((inReal, optInTimePeriod)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
betul
{@struct/Record Record} array struktur, array nombor
PerkhidmatanoptInTimePeriod
parameter digunakan untuk menetapkan tempoh, nilai lalai adalah 30.
optInTimePeriod
palsu
nombor
function main() {
var records = exchange.GetRecords()
var ret = talib.TEMA(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.TEMA(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.TEMA(records);
Log(ret);
}
PeraturanTEMA()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:TEMA(Records[Close],Time Period = 30) = Array(outReal)
Peraturantalib.TRIMA()
fungsi digunakan untuk mengiraPurata bergerak segitiga (purata bergerak tri-eksponensial).
Nilai pulangantalib.TRIMA()
Fungsi adalah array satu dimensi.
Array
Talib.TRIMA ((inReal) talib.TRIMA ((inReal, optInTimePeriod)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
betul
{@struct/Record Record} array struktur, array nombor
PerkhidmatanoptInTimePeriod
parameter digunakan untuk menetapkan tempoh, nilai lalai adalah 30.
optInTimePeriod
palsu
nombor
function main() {
var records = exchange.GetRecords()
var ret = talib.TRIMA(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.TRIMA(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.TRIMA(records);
Log(ret);
}
PeraturanTRIMA()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:TRIMA(Records[Close],Time Period = 30) = Array(outReal)
Peraturantalib.WMA()
fungsi digunakan untuk mengiraPurata Bergerak Bertimbang (WMA).
Nilai pulangantalib.WMA()
Fungsi adalah array satu dimensi.
Array
talib.WMA ((inReal) talib.WMA ((inReal, optInTimePeriod)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
betul
{@struct/Record Record} array struktur, array nombor
PerkhidmatanoptInTimePeriod
parameter digunakan untuk menetapkan tempoh, nilai lalai adalah 30.
optInTimePeriod
palsu
nombor
function main() {
var records = exchange.GetRecords()
var ret = talib.WMA(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.WMA(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.WMA(records);
Log(ret);
}
PeraturanWMA()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:WMA(Records[Close],Time Period = 30) = Array(outReal)
Peraturantalib.LINEARREG()
fungsi digunakan untuk mengiraRegresi Linear.
Nilai pulangantalib.LINEARREG()
Fungsi adalah array satu dimensi.
Array
talib.LINEARREG ((inReal) talib.LINEARREG ((dalamReal, optInTimePeriod)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
betul
{@struct/Record Record} array struktur, array nombor
PerkhidmatanoptInTimePeriod
parameter digunakan untuk menetapkan tempoh, nilai lalai adalah 14.
optInTimePeriod
palsu
nombor
function main() {
var records = exchange.GetRecords()
var ret = talib.LINEARREG(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.LINEARREG(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.LINEARREG(records);
Log(ret);
}
PeraturanLINEARREG()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:LINEARREG(Records[Close],Time Period = 14) = Array(outReal)
Peraturantalib.LINEARREG_ANGLE()
fungsi digunakan untuk mengiraSudut Regresi Linear.
Nilai pulangantalib.LINEARREG_ANGLE()
Fungsi adalah: array satu dimensi.
Array
talib.LINEARREG_ANGLE ((inReal) talib.LINEARREG_ANGLE ((inReal, optInTimePeriod)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
betul
{@struct/Record Record} array struktur, array nombor
PerkhidmatanoptInTimePeriod
parameter digunakan untuk menetapkan tempoh, nilai lalai adalah 14.
optInTimePeriod
palsu
nombor
function main() {
var records = exchange.GetRecords()
var ret = talib.LINEARREG_ANGLE(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.LINEARREG_ANGLE(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.LINEARREG_ANGLE(records);
Log(ret);
}
PeraturanLINEARREG_ANGLE()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:LINEARREG_ANGLE(Records[Close],Time Period = 14) = Array(outReal)
Peraturantalib.LINEARREG_INTERCEPT()
fungsi digunakan untuk mengiraPemangkasan Regresi Linear.
Nilai pulangantalib.LINEARREG_INTERCEPT()
Fungsi adalah: array satu dimensi.
Array
talib.LINEARREG_INTERCEPT ((inReal) talib.LINEARREG_INTERCEPT ((dalamReal, optInTimePeriod)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
betul
{@struct/Record Record} array struktur, array nombor
PerkhidmatanoptInTimePeriod
parameter digunakan untuk menetapkan tempoh, nilai lalai adalah 14.
optInTimePeriod
palsu
nombor
function main() {
var records = exchange.GetRecords()
var ret = talib.LINEARREG_INTERCEPT(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.LINEARREG_INTERCEPT(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.LINEARREG_INTERCEPT(records);
Log(ret);
}
PeraturanLINEARREG_INTERCEPT()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:LINEARREG_INTERCEPT(Records[Close],Time Period = 14) = Array(outReal)
Peraturantalib.LINEARREG_SLOPE()
fungsi digunakan untuk mengiraKemunduran Linier Slope.
Nilai pulangantalib.LINEARREG_SLOPE()
Fungsi adalah: array satu dimensi.
Array
talib.LINEARREG_SLOPE ((inReal) talib.LINEARREG_SLOPE ((inReal, optInTimePeriod)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
betul
{@struct/Record Record} array struktur, array nombor
PerkhidmatanoptInTimePeriod
parameter digunakan untuk menetapkan tempoh, nilai lalai adalah 14.
optInTimePeriod
palsu
nombor
function main() {
var records = exchange.GetRecords()
var ret = talib.LINEARREG_SLOPE(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.LINEARREG_SLOPE(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.LINEARREG_SLOPE(records);
Log(ret);
}
PeraturanLINEARREG_SLOPE()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:LINEARREG_SLOPE(Records[Close],Time Period = 14) = Array(outReal)
Peraturantalib.STDDEV()
fungsi digunakan untuk mengiraPenyimpangan standard.
Nilai pulangantalib.STDDEV()
Fungsi adalah: array satu dimensi.
Array
talib.STDDEV ((inReal) talib.STDDEV ((inReal, optInTimePeriod) talib.STDDEV ((inReal, optInTimePeriod, optInNbDev)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
betul
{@struct/Record Record} array struktur, array nombor
PerkhidmatanoptInTimePeriod
parameter digunakan untuk menetapkan tempoh, nilai lalai adalah 5.
optInTimePeriod
palsu
nombor
PeraturanoptInNbDev
parameter digunakan untuk menetapkan Penyimpangan, nilai lalai adalah 1.
pilihanInNbDev
palsu
nombor
function main() {
var records = exchange.GetRecords()
var ret = talib.STDDEV(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.STDDEV(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.STDDEV(records);
Log(ret);
}
PeraturanSTDDEV()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:STDDEV(Records[Close],Time Period = 5,Deviations = 1) = Array(outReal)
Peraturantalib.TSF()
fungsi digunakan untuk mengiraRamalan Siri Masa.
Nilai pulangantalib.TSF()
Fungsi adalah array satu dimensi.
Array
talib.TSF ((inReal) talib.TSF ((inReal, optInTimePeriod)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
betul
{@struct/Record Record} array struktur, array nombor
PerkhidmatanoptInTimePeriod
parameter digunakan untuk menetapkan tempoh, nilai lalai adalah 14.
optInTimePeriod
palsu
nombor
function main() {
var records = exchange.GetRecords()
var ret = talib.TSF(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.TSF(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.TSF(records);
Log(ret);
}
PeraturanTSF()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:TSF(Records[Close],Time Period = 14) = Array(outReal)
Peraturantalib.VAR()
fungsi digunakan untuk mengiraVarians.
Nilai pulangantalib.VAR()
Fungsi adalah: array satu dimensi.
Array
talib.VAR ((inReal) talib.VAR ((inReal, optInTimePeriod) talib.VAR ((inReal, optInTimePeriod, optInNbDev)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
betul
{@struct/Record Record} array struktur, array nombor
PerkhidmatanoptInTimePeriod
parameter digunakan untuk menetapkan tempoh, nilai lalai adalah 5.
optInTimePeriod
palsu
nombor
PeraturanoptInNbDev
parameter digunakan untuk menetapkan Penyimpangan, nilai lalai adalah 1.
pilihanInNbDev
palsu
nombor
function main() {
var records = exchange.GetRecords()
var ret = talib.VAR(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.VAR(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.VAR(records);
Log(ret);
}
PeraturanVAR()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:VAR(Records[Close],Time Period = 5,Deviations = 1) = Array(outReal)
Peraturantalib.ADX()
fungsi digunakan untuk mengiraIndeks Pergerakan Arah Purata.
Nilai pulangantalib.ADX()
Fungsi adalah array satu dimensi.
Array
talib.ADX ((inPriceHLC) talib.ADX ((inPriceHLC, optInTimePeriod)
PeraturaninPriceHLC
parameter digunakan untuk menentukan data garis K.
inPriceHLC
betul
Array struktur {@struct/Record Record}
PeraturanoptInTimePeriod
parameter digunakan untuk menetapkan tempoh, nilai lalai adalah 14.
optInTimePeriod
palsu
nombor
function main() {
var records = exchange.GetRecords()
var ret = talib.ADX(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.ADX(records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.ADX(records);
Log(ret);
}
PeraturanADX()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:ADX(Records[High,Low,Close],Time Period = 14) = Array(outReal)
Peraturantalib.ADXR()
fungsi digunakan untuk mengiraPenarafan Indeks Pergerakan Arah Purata (indeks penilaian).
Nilai pulangantalib.ADXR()
Fungsi adalah array satu dimensi.
Array
talib.ADXR ((inPriceHLC) talib.ADXR ((inPriceHLC, optInTimePeriod)
PeraturaninPriceHLC
parameter digunakan untuk menentukan data garis K.
inPriceHLC
betul
Array struktur {@struct/Record Record}
PeraturanoptInTimePeriod
parameter digunakan untuk menetapkan tempoh, nilai lalai adalah 14.
optInTimePeriod
palsu
nombor
function main() {
var records = exchange.GetRecords()
var ret = talib.ADXR(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.ADXR(records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.ADXR(records);
Log(ret);
}
PeraturanADXR()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:ADXR(Records[High,Low,Close],Time Period = 14) = Array(outReal)
Peraturantalib.APO()
fungsi digunakan untuk mengiraOsilator harga mutlak.
Nilai pulangantalib.APO()
Fungsi adalah: array satu dimensi.
Array
talib.APO ((inReal) talib.APO ((inReal, optInFastPeriod) talib.APO ((inReal, optInFastPeriod, optInSlowPeriod) talib.APO ((inReal, optInFastPeriod, optInSlowPeriod, optInMAType)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
betul
{@struct/Record Record} array struktur, array nombor
PerkhidmatanoptInFastPeriod
parameter digunakan untuk menetapkan tempoh cepat, nilai lalai adalah 12.
optInFastPeriod
palsu
nombor
PerkhidmatanoptInSlowPeriod
parameter digunakan untuk menetapkan tempoh perlahan, nilai lalai adalah 26.
optInSlowPeriod
palsu
nombor
PerkhidmatanoptInMAType
parameter digunakan untuk menetapkan jenis purata, nilai lalai adalah 0.
pilihanInMATyp
palsu
nombor
function main() {
var records = exchange.GetRecords()
var ret = talib.APO(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.APO(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.APO(records);
Log(ret);
}
PeraturanAPO()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:APO(Records[Close],Fast Period = 12,Slow Period = 26,MA Type = 0) = Array(outReal)
Peraturantalib.AROON()
fungsi digunakan untuk mengiraAroon (penunjuk Aroon).
Nilai pulangantalib.AROON()
Fungsi adalah array dua dimensi.
Array
talib.AROON ((inPriceHL) talib.AROON ((inPriceHL, optInTimePeriod)
PeraturaninPriceHL
parameter digunakan untuk menentukan data garis K.
inPriceHL
betul
Array struktur {@struct/Record Record}
PeraturanoptInTimePeriod
parameter digunakan untuk menetapkan tempoh, nilai lalai adalah 14.
optInTimePeriod
palsu
nombor
function main() {
var records = exchange.GetRecords()
var ret = talib.AROON(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.AROON(records.High, records.Low)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.AROON(records);
Log(ret);
}
PeraturanAROON()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:AROON(Records[High,Low],Time Period = 14) = [Array(outAroonDown),Array(outAroonUp)]
Peraturantalib.AROONOSC()
fungsi digunakan untuk mengiraAroon Oscillator.
Nilai pulangantalib.AROONOSC()
Fungsi adalah: array satu dimensi.
Array
talib.AROONOSC ((inPriceHL) talib.AROONOSC ((dalam HargaHL, pilih dalam Tempoh)
PeraturaninPriceHL
parameter digunakan untuk menentukan data garis K.
inPriceHL
betul
Array struktur {@struct/Record Record}
PeraturanoptInTimePeriod
parameter digunakan untuk menetapkan tempoh, nilai lalai adalah 14.
optInTimePeriod
palsu
nombor
function main() {
var records = exchange.GetRecords()
var ret = talib.AROONOSC(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.AROONOSC(records.High, records.Low)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.AROONOSC(records);
Log(ret);
}
PeraturanAROONOSC()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:AROONOSC(Records[High,Low],Time Period = 14) = Array(outReal)
Peraturantalib.BOP()
fungsi digunakan untuk mengiraKeseimbangan Kuasa.
Nilai pulangantalib.BOP()
Fungsi adalah array satu dimensi.
Array
talib.BOP ((inPriceOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
betul
Array struktur {@struct/Record Record}
function main() {
var records = exchange.GetRecords()
var ret = talib.BOP(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.BOP(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.BOP(records);
Log(ret);
}
PeraturanBOP()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:BOP(Records[Open,High,Low,Close]) = Array(outReal)
Peraturantalib.CCI()
fungsi digunakan untuk mengiraIndeks Saluran Komoditi (penunjuk homeopati).
Nilai pulangantalib.CCI()
Fungsi adalah array satu dimensi.
Array
talib.CCI ((inPriceHLC) talib.CCI ((inPriceHLC, optInTimePeriod)
PeraturaninPriceHLC
parameter digunakan untuk menentukan data garis K.
inPriceHLC
betul
Array struktur {@struct/Record Record}
PeraturanoptInTimePeriod
parameter digunakan untuk menetapkan tempoh, nilai lalai adalah 14.
optInTimePeriod
palsu
nombor
function main() {
var records = exchange.GetRecords()
var ret = talib.CCI(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CCI(records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CCI(records);
Log(ret);
}
PeraturanCCI()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:CCI(Records[High,Low,Close],Time Period = 14) = Array(outReal)
Peraturantalib.CMO()
fungsi digunakan untuk mengiraOsilator Momentum Chande (CMO).
Nilai pulangantalib.CMO()
Fungsi adalah: array satu dimensi.
Array
talib.CMO ((inReal) talib.CMO ((inReal, optInTimePeriod)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
betul
{@struct/Record Record} array struktur, array nombor
PerkhidmatanoptInTimePeriod
parameter digunakan untuk menetapkan tempoh, nilai lalai adalah 14.
optInTimePeriod
palsu
nombor
function main() {
var records = exchange.GetRecords()
var ret = talib.CMO(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CMO(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CMO(records);
Log(ret);
}
PeraturanCMO()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:CMO(Records[Close],Time Period = 14) = Array(outReal)
Peraturantalib.DX()
fungsi digunakan untuk mengiraIndeks Pergerakan Arah.
Nilai pulangantalib.DX()
Fungsi adalah: array satu dimensi.
Array
talib.DX ((inPriceHLC) talib.DX ((inPriceHLC, optInTimePeriod)
PeraturaninPriceHLC
parameter digunakan untuk menentukan data garis K.
inPriceHLC
betul
Array struktur {@struct/Record Record}
PeraturanoptInTimePeriod
parameter digunakan untuk menetapkan tempoh, nilai lalai adalah 14.
optInTimePeriod
palsu
nombor
function main() {
var records = exchange.GetRecords()
var ret = talib.DX(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.DX(records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.DX(records);
Log(ret);
}
PeraturanDX()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:DX(Records[High,Low,Close],Time Period = 14) = Array(outReal)
Peraturantalib.MACD()
fungsi digunakan untuk mengiraRata-rata bergerak Convergence/Divergence (rata-rata bergerak yang dihaluskan secara eksponensial).
Nilai pulangantalib.MACD()
Fungsi adalah: array dua dimensi.
Array
talib.MACD ((inReal) talib.MACD ((inReal, optInFastPeriod) talib.MACD ((inReal, optInFastPeriod, optInSlowPeriod) talib.MACD ((inReal, optInFastPeriod, optInSlowPeriod, optInSignalPeriod)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
betul
{@struct/Record Record} array struktur, array nombor
PerkhidmatanoptInFastPeriod
parameter digunakan untuk menetapkan tempoh cepat, nilai lalai adalah 12.
optInFastPeriod
palsu
nombor
PerkhidmatanoptInSlowPeriod
parameter digunakan untuk menetapkan tempoh perlahan, nilai lalai adalah 26.
optInSlowPeriod
palsu
nombor
PerkhidmatanoptInSignalPeriod
parameter digunakan untuk menetapkan tempoh isyarat, nilai lalai adalah 9.
pilihanDalam Tempoh Isyarat
palsu
nombor
function main() {
var records = exchange.GetRecords()
var ret = talib.MACD(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.MACD(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.MACD(records);
Log(ret);
}
PeraturanMACD()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:MACD(Records[Close],Fast Period = 12,Slow Period = 26,Signal Period = 9) = [Array(outMACD),Array(outMACDSignal),Array(outMACDHist)]
Peraturantalib.MACDEXT()
fungsi digunakan untuk mengiraMACD dengan jenis MA yang boleh dikawal.
Nilai pulangantalib.MACDEXT()
Fungsi adalah array dua dimensi.
Array
talib.MACDEXT ((inReal) talib.MACDEXT ((inReal, optInFastPeriod) talib.MACDEXT ((inReal, optInFastPeriod, optInFastMAType) talib.MACDEXT ((inReal, optInFastPeriod, optInFastMAType, optInSlowPeriod) talib.MACDEXT ((inReal, optInFastPeriod, optInFastMAType, optInSlowPeriod, optInSlowMAType) talib.MACDEXT ((inReal, optInFastPeriod, optInFastMAType, optInSlowPeriod, optInSlowMAType, optInSignalPeriod) talib.MACDEXT ((inReal, optInFastPeriod, optInFastMAType, optInSlowPeriod, optInSlowMAType, optInSignalPeriod, optInSignalMAType)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
betul
{@struct/Record Record} array struktur, array nombor
PerkhidmatanoptInFastPeriod
parameter digunakan untuk menetapkan tempoh cepat, nilai lalai adalah 12.
optInFastPeriod
palsu
nombor
PerkhidmatanoptInFastMAType
parameter digunakan untuk menetapkan jenis purata pantas, nilai lalai adalah 0.
pilihanInFastMAType
palsu
nombor
PerkhidmatanoptInSlowPeriod
parameter digunakan untuk menetapkan tempoh perlahan, nilai lalai adalah 26.
optInSlowPeriod
palsu
nombor
PerkhidmatanoptInSlowMAType
Parameter digunakan untuk menetapkan jenis purata perlahan, nilai lalai adalah 0.
pilihanInSlowMAType
palsu
nombor
PerkhidmatanoptInSignalPeriod
parameter digunakan untuk menetapkan tempoh isyarat, nilai lalai adalah 9.
pilihanDalam Tempoh Isyarat
palsu
nombor
PerkhidmatanoptInSignalMAType
parameter digunakan untuk menetapkan jenis purata isyarat, nilai lalai adalah 0.
pilihanInSignalMAType
palsu
nombor
function main() {
var records = exchange.GetRecords()
var ret = talib.MACDEXT(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.MACDEXT(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.MACDEXT(records);
Log(ret);
}
PeraturanMACDEXT()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:MACDEXT(Records[Close],Fast Period = 12,Fast MA = 0,Slow Period = 26,Slow MA = 0,Signal Period = 9,Signal MA = 0) = [Array(outMACD),Array(outMACDSignal),Array(outMACDHist)]
Peraturantalib.MACDFIX()
fungsi digunakan untuk mengiraPemasangan Convergence/Divergence Purata Bergerak 12/26.
Nilai pulangantalib.MACDFIX()
Fungsi adalah array dua dimensi.
Array
Talib.MACDFIX ((inReal) talib.MACDFIX ((inReal, optInSignalPeriod)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
betul
{@struct/Record Record} array struktur, array nombor
PerkhidmatanoptInSignalPeriod
parameter digunakan untuk menetapkan tempoh isyarat, nilai lalai adalah 9.
pilihanDalam Tempoh Isyarat
palsu
nombor
function main() {
var records = exchange.GetRecords()
var ret = talib.MACDFIX(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.MACDFIX(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.MACDFIX(records);
Log(ret);
}
PeraturanMACDFIX()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:MACDFIX(Records[Close],Signal Period = 9) = [Array(outMACD),Array(outMACDSignal),Array(outMACDHist)]
Peraturantalib.MFI()
fungsi digunakan untuk mengiraIndeks Aliran Wang.
Nilai pulangantalib.MFI()
Fungsi adalah array satu dimensi.
Array
talib.MFI ((inPriceHLCV) talib.MFI ((inPriceHLCV, optInTimePeriod)
PeraturaninPriceHLCV
parameter digunakan untuk menentukan data garis K.
inPriceHLCV
betul
Array struktur {@struct/Record Record}
PeraturanoptInTimePeriod
parameter digunakan untuk menetapkan tempoh, nilai lalai adalah 14.
optInTimePeriod
palsu
nombor
function main() {
var records = exchange.GetRecords()
var ret = talib.MFI(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.MFI(records.High, records.Low, records.Close, records.Volume)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.MFI(records);
Log(ret);
}
PeraturanMFI()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:MFI(Records[High,Low,Close,Volume],Time Period = 14) = Array(outReal)
Peraturantalib.MINUS_DI()
fungsi digunakan untuk mengiraPenunjuk arah negatif (penunjuk negatif).
Nilai pulangantalib.MINUS_DI()
Fungsi adalah array satu dimensi.
Array
talib.MINUS_DI (dalam harga) talib.MINUS_DI ((inPriceHLC, optInTimePeriod)
PeraturaninPriceHLC
parameter digunakan untuk menentukan data garis K.
inPriceHLC
betul
Array struktur {@struct/Record Record}
PeraturanoptInTimePeriod
parameter digunakan untuk menetapkan tempoh, nilai lalai adalah 14.
optInTimePeriod
palsu
nombor
function main() {
var records = exchange.GetRecords()
var ret = talib.MINUS_DI(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.MINUS_DI(records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.MINUS_DI(records);
Log(ret);
}
PeraturanMINUS_DI()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:MINUS_DI(Records[High,Low,Close],Time Period = 14) = Array(outReal)
Peraturantalib.MINUS_DM()
fungsi digunakan untuk mengiraMinus Pergerakan Arah (pergerakan negatif).
Nilai pulangantalib.MINUS_DM()
Fungsi adalah array satu dimensi.
Array
talib.MINUS_DM ((inPriceHL) talib.MINUS_DM ((inPriceHL, optInTimePeriod)
PeraturaninPriceHL
parameter digunakan untuk menentukan data garis K.
inPriceHL
betul
Array struktur {@struct/Record Record}
PeraturanoptInTimePeriod
parameter digunakan untuk menetapkan tempoh, nilai lalai adalah 14.
optInTimePeriod
palsu
nombor
function main() {
var records = exchange.GetRecords()
var ret = talib.MINUS_DM(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.MINUS_DM(records.High, records.Low)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.MINUS_DM(records);
Log(ret);
}
PeraturanMINUS_DM()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:MINUS_DM(Records[High,Low],Time Period = 14) = Array(outReal)
Peraturantalib.MOM()
fungsi digunakan untuk mengiraMomentum.
Nilai pulangantalib.MOM()
Fungsi adalah array satu dimensi.
Array
talib.MOM ((inReal) talib.MOM ((inReal, optInTimePeriod)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
betul
{@struct/Record Record} array struktur, array nombor
PerkhidmatanoptInTimePeriod
parameter digunakan untuk menetapkan tempoh, nilai lalai adalah 10.
optInTimePeriod
palsu
nombor
function main() {
var records = exchange.GetRecords()
var ret = talib.MOM(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.MOM(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.MOM(records);
Log(ret);
}
PeraturanMOM()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:MOM(Records[Close],Time Period = 10) = Array(outReal)
Peraturantalib.PLUS_DI()
fungsi digunakan untuk mengiraTambah Petunjuk Arah.
Nilai pulangantalib.PLUS_DI()
Fungsi adalah: array satu dimensi.
Array
Talib.PLUS_DI (dalam Harga) talib.PLUS_DI ((inPriceHLC, optInTimePeriod)
PeraturaninPriceHLC
parameter digunakan untuk menentukan data garis K.
inPriceHLC
betul
Array struktur {@struct/Record Record}
PeraturanoptInTimePeriod
parameter digunakan untuk menetapkan tempoh, nilai lalai adalah 14.
optInTimePeriod
palsu
nombor
function main() {
var records = exchange.GetRecords()
var ret = talib.PLUS_DI(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.PLUS_DI(records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.PLUS_DI(records);
Log(ret);
}
PeraturanPLUS_DI()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:PLUS_DI(Records[High,Low,Close],Time Period = 14) = Array(outReal)
Peraturantalib.PLUS_DM()
fungsi digunakan untuk mengiraTambah Pergerakan Arah.
Nilai pulangantalib.PLUS_DM()
Fungsi adalah array satu dimensi.
Array
talib.PLUS_DM ((inPriceHL) talib.PLUS_DM ((inPriceHL, optInTimePeriod)
PeraturaninPriceHL
parameter digunakan untuk menentukan data garis K.
inPriceHL
betul
Array struktur {@struct/Record Record}
PeraturanoptInTimePeriod
parameter digunakan untuk menetapkan tempoh, nilai lalai adalah 14.
optInTimePeriod
palsu
nombor
function main() {
var records = exchange.GetRecords()
var ret = talib.PLUS_DM(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.PLUS_DM(records.High, records.Low)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.PLUS_DM(records);
Log(ret);
}
PeraturanPLUS_DM()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:PLUS_DM(Records[High,Low],Time Period = 14) = Array(outReal)
Peraturantalib.PPO()
fungsi digunakan untuk mengiraPeratusan Osilator Harga.
Nilai pulangantalib.PPO()
Fungsi adalah array satu dimensi.
Array
Talib.PPO ((inReal) talib.PPO ((inReal, optInFastPeriod) talib.PPO ((inReal, optInFastPeriod, optInSlowPeriod) talib.PPO ((inReal, optInFastPeriod, optInSlowPeriod, optInMAType)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
betul
{@struct/Record Record} array struktur, array nombor
PerkhidmatanoptInFastPeriod
parameter digunakan untuk menetapkan tempoh cepat, nilai lalai adalah 12.
optInFastPeriod
palsu
nombor
PerkhidmatanoptInSlowPeriod
parameter digunakan untuk menetapkan tempoh perlahan, nilai lalai adalah 26.
optInSlowPeriod
palsu
nombor
PerkhidmatanoptInMAType
parameter digunakan untuk menetapkan jenis purata, nilai lalai adalah 0.
pilihanInMATyp
palsu
nombor
function main() {
var records = exchange.GetRecords()
var ret = talib.PPO(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.PPO(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.PPO(records);
Log(ret);
}
PeraturanPPO()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:PPO(Records[Close],Fast Period = 12,Slow Period = 26,MA Type = 0) = Array(outReal)
Peraturantalib.ROC()
fungsi digunakan untuk mengiraKadar perubahan: ((harga/prevPrice) -1) * 100 (penunjuk kadar perubahan).
Nilai pulangantalib.ROC()
Fungsi adalah array satu dimensi.
Array
talib.ROC ((inReal) talib.ROC ((inReal, optInTimePeriod)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
betul
{@struct/Record Record} array struktur, array nombor
PerkhidmatanoptInTimePeriod
parameter digunakan untuk menetapkan tempoh, nilai lalai adalah 10.
optInTimePeriod
palsu
nombor
function main() {
var records = exchange.GetRecords()
var ret = talib.ROC(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.ROC(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.ROC(records);
Log(ret);
}
PeraturanROC()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:ROC(Records[Close],Time Period = 10) = Array(outReal)
Peraturantalib.ROCP()
fungsi digunakan untuk mengiraKadar perubahan Peratusan: (harga-prevPrice) /prevPrice ( kadar perubahan harga).
Nilai pulangantalib.ROCP()
Fungsi adalah: array satu dimensi.
Array
talib.ROCP ((inReal) talib.ROCP ((inReal, optInTimePeriod)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
betul
{@struct/Record Record} array struktur, array nombor
PerkhidmatanoptInTimePeriod
parameter digunakan untuk menetapkan tempoh, nilai lalai adalah 10.
optInTimePeriod
palsu
nombor
function main() {
var records = exchange.GetRecords()
var ret = talib.ROCP(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.ROCP(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.ROCP(records);
Log(ret);
}
PeraturanROCP()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:ROCP(Records[Close],Time Period = 10) = Array(outReal)
Peraturantalib.ROCR()
fungsi digunakan untuk mengiraNisbah kadar perubahan: (harga/prevPrice) ( Nisbah perubahan harga).
Nilai pulangantalib.ROCR()
Fungsi adalah array satu dimensi.
Array
talib.ROCR ((inReal) talib.ROCR ((inReal, optInTimePeriod)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
betul
{@struct/Record Record} array struktur, array nombor
PerkhidmatanoptInTimePeriod
parameter digunakan untuk menetapkan tempoh, nilai lalai adalah 10.
optInTimePeriod
palsu
nombor
function main() {
var records = exchange.GetRecords()
var ret = talib.ROCR(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.ROCR(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.ROCR(records);
Log(ret);
}
PeraturanROCR()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:ROCR(Records[Close],Time Period = 10) = Array(outReal)
Peraturantalib.ROCR100()
fungsi digunakan untuk mengiraKadar perubahan nisbah 100 skala: (harga/prevPrice) * 100 (nombor perubahan harga).
Nilai pulangantalib.ROCR100()
Fungsi adalah: array satu dimensi.
Array
talib.ROCR100 ((inReal) talib.ROCR100 ((inReal, optInTimePeriod)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
betul
{@struct/Record Record} array struktur, array nombor
PerkhidmatanoptInTimePeriod
parameter digunakan untuk menetapkan tempoh, nilai lalai adalah 10.
optInTimePeriod
palsu
nombor
function main() {
var records = exchange.GetRecords()
var ret = talib.ROCR100(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.ROCR100(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.ROCR100(records);
Log(ret);
}
PeraturanROCR100()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:ROCR100(Records[Close],Time Period = 10) = Array(outReal)
Peraturantalib.RSI()
fungsi digunakan untuk mengiraIndeks Kekuatan Relatif.
Nilai pulangantalib.RSI()
Fungsi adalah array satu dimensi.
Array
talib.RSI ((inReal) talib.RSI ((inReal, optInTimePeriod)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
betul
{@struct/Record Record} array struktur, array nombor
PerkhidmatanoptInTimePeriod
parameter digunakan untuk menetapkan tempoh, nilai lalai adalah 14.
optInTimePeriod
palsu
nombor
function main() {
var records = exchange.GetRecords()
var ret = talib.RSI(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.RSI(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.RSI(records);
Log(ret);
}
PeraturanRSI()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:RSI(Records[Close],Time Period = 14) = Array(outReal)
Peraturantalib.STOCH()
fungsi digunakan untuk mengiraStochastic (penunjuk STOCH).
Nilai pulangantalib.STOCH()
Fungsi adalah array dua dimensi.
Array
talib.STOCH ((inPriceHLC) talib.STOCH ((inPriceHLC, optInFastK_Period) talib.STOCH ((inPriceHLC, optInFastK_Period, optInSlowK_Period) talib.STOCH ((inPriceHLC, optInFastK_Period, optInSlowK_Period, optInSlowK_MAType) talib.STOCH ((inPriceHLC, optInFastK_Period, optInSlowK_Period, optInSlowK_MAType, optInSlowD_Period) talib.STOCH ((inPriceHLC, optInFastK_Period, optInSlowK_Period, optInSlowK_MAType, optInSlowD_Period, optInSlowD_MAType)
PeraturaninPriceHLC
parameter digunakan untuk menentukan data garis K.
inPriceHLC
betul
Array struktur {@struct/Record Record}
PeraturanoptInFastK_Period
parameter digunakan untuk menetapkan tempoh Fast-K, nilai lalai adalah 5.
optInFastK_Period
palsu
nombor
PerkhidmatanoptInSlowK_Period
parameter digunakan untuk menetapkan tempoh Slow-K, nilai lalai adalah 3.
optInSlowK_Period
palsu
nombor
PerkhidmatanoptInSlowK_MAType
parameter digunakan untuk menetapkan jenis purata Slow-K, nilai lalai adalah 0.
pilihanInSlowK_MAType
palsu
nombor
PerkhidmatanoptInSlowD_Period
parameter digunakan untuk menetapkan tempoh Slow-D, nilai lalai adalah 3.
optInSlowD_Period
palsu
nombor
PerkhidmatanoptInSlowD_MAType
parameter digunakan untuk menetapkan jenis purata Slow-D, nilai lalai adalah 0.
pilihanInSlowD_MAType
palsu
nombor
function main() {
var records = exchange.GetRecords()
var ret = talib.STOCH(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.STOCH(records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.STOCH(records);
Log(ret);
}
PeraturanSTOCH()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:STOCH(Records[High,Low,Close],Fast-K Period = 5,Slow-K Period = 3,Slow-K MA = 0,Slow-D Period = 3,Slow-D MA = 0) = [Array(outSlowK),Array(outSlowD)]
Peraturantalib.STOCHF()
fungsi digunakan untuk mengiraStochastic Fast (penunjuk STOCH cepat).
Nilai pulangantalib.STOCHF()
Fungsi adalah array dua dimensi.
Array
talib.STOCHF ((inPriceHLC) talib.STOCHF ((inPriceHLC, optInFastK_Period) talib.STOCHF ((inPriceHLC, optInFastK_Period, optInFastD_Period) talib.STOCHF ((inPriceHLC, optInFastK_Period, optInFastD_Period, optInFastD_MAType)
PeraturaninPriceHLC
parameter digunakan untuk menentukan data garis K.
inPriceHLC
betul
Array struktur {@struct/Record Record}
PeraturanoptInFastK_Period
parameter digunakan untuk menetapkan tempoh Fast-K, nilai lalai adalah 5.
optInFastK_Period
palsu
nombor
PerkhidmatanoptInFastD_Period
parameter digunakan untuk menetapkan tempoh Fast-D, nilai lalai adalah 3.
optInFastD_Period
palsu
nombor
PerkhidmatanoptInFastD_MAType
parameter digunakan untuk menetapkan jenis purata Fast-D, nilai lalai adalah 0.
pilihanInFastD_MAType
palsu
nombor
function main() {
var records = exchange.GetRecords()
var ret = talib.STOCHF(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.STOCHF(records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.STOCHF(records);
Log(ret);
}
PeraturanSTOCHF()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:STOCHF(Records[High,Low,Close],Fast-K Period = 5,Fast-D Period = 3,Fast-D MA = 0) = [Array(outFastK),Array(outFastD)]
Peraturantalib.STOCHRSI()
fungsi digunakan untuk mengiraIndeks Kekuatan Relatif Stochastic.
Nilai pulangantalib.STOCHRSI()
Fungsi adalah: array dua dimensi.
Array
Talib.STOCHRSI ((inReal) talib.STOCHRSI ((inReal, optInTimePeriod) talib.STOCHRSI ((inReal, optInTimePeriod, optInFastK_Period) talib.STOCHRSI ((inReal, optInTimePeriod, optInFastK_Period, optInFastD_Period) talib.STOCHRSI ((inReal, optInTimePeriod, optInFastK_Period, optInFastD_Period, optInFastD_MAType)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
betul
{@struct/Record Record} array struktur, array nombor
PerkhidmatanoptInTimePeriod
parameter digunakan untuk menetapkan tempoh, nilai lalai adalah 14.
optInTimePeriod
palsu
nombor
PeraturanoptInFastK_Period
parameter digunakan untuk menetapkan tempoh Fast-K, nilai lalai adalah 5.
optInFastK_Period
palsu
nombor
PerkhidmatanoptInFastD_Period
parameter digunakan untuk menetapkan tempoh Fast-D, nilai lalai adalah 3.
optInFastD_Period
palsu
nombor
PerkhidmatanoptInFastD_MAType
parameter digunakan untuk menetapkan jenis purata Fast-D, nilai lalai adalah 0.
pilihanInFastD_MAType
palsu
nombor
function main() {
var records = exchange.GetRecords()
var ret = talib.STOCHRSI(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.STOCHRSI(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.STOCHRSI(records);
Log(ret);
}
PeraturanSTOCHRSI()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:STOCHRSI(Records[Close],Time Period = 14,Fast-K Period = 5,Fast-D Period = 3,Fast-D MA = 0) = [Array(outFastK),Array(outFastD)]
Peraturantalib.TRIX()
fungsi digunakan untuk mengiraRate-of-Change (ROC) 1 hari daripada EMA Ganda Lempar.
Nilai pulangantalib.TRIX()
Fungsi adalah: array satu dimensi.
Array
Talib.TRIX ((inReal) talib.TRIX ((inReal, optInTimePeriod)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
betul
{@struct/Record Record} array struktur, array nombor
PerkhidmatanoptInTimePeriod
parameter digunakan untuk menetapkan tempoh, nilai lalai adalah 30.
optInTimePeriod
palsu
nombor
function main() {
var records = exchange.GetRecords()
var ret = talib.TRIX(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.TRIX(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.TRIX(records);
Log(ret);
}
PeraturanTRIX()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:TRIX(Records[Close],Time Period = 30) = Array(outReal)
Peraturantalib.ULTOSC()
fungsi digunakan untuk mengiraOscillator Utama.
Nilai pulangantalib.ULTOSC()
Fungsi adalah array satu dimensi.
Array
talib.ULTOSC ((inPriceHLC) talib.ULTOSC ((inPriceHLC, optInTimePeriod1) talib.ULTOSC ((inPriceHLC, optInTimePeriod1, optInTimePeriod2) talib.ULTOSC ((inPriceHLC, optInTimePeriod1, optInTimePeriod2, optInTimePeriod3)
PeraturaninPriceHLC
parameter digunakan untuk menentukan data garis K.
inPriceHLC
betul
Array struktur {@struct/Record Record}
PeraturanoptInTimePeriod1
parameter digunakan untuk menetapkan tempoh pertama, nilai lalai adalah 7.
optInTimePeriod1
palsu
nombor
PerkhidmatanoptInTimePeriod2
parameter digunakan untuk menetapkan tempoh kedua, nilai lalai adalah 14.
optInTimePeriod2
palsu
nombor
PerkhidmatanoptInTimePeriod3
parameter digunakan untuk menetapkan tempoh ketiga, nilai lalai adalah 28.
optInTimePeriod3
palsu
nombor
function main() {
var records = exchange.GetRecords()
var ret = talib.ULTOSC(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.ULTOSC(records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.ULTOSC(records);
Log(ret);
}
PeraturanULTOSC()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:ULTOSC(Records[High,Low,Close],First Period = 7,Second Period = 14,Third Period = 28) = Array(outReal)
Peraturantalib.WILLR()
fungsi digunakan untuk mengiraWilliams
Nilai pulangantalib.WILLR()
Fungsi adalah: array satu dimensi.
Array
Talib.WILLR ((inPriceHLC) talib.WILLR ((inPriceHLC, optInTimePeriod)
PeraturaninPriceHLC
parameter digunakan untuk menentukan data garis K.
inPriceHLC
betul
Array struktur {@struct/Record Record}
PeraturanoptInTimePeriod
parameter digunakan untuk menetapkan tempoh, nilai lalai adalah 14.
optInTimePeriod
palsu
nombor
function main() {
var records = exchange.GetRecords()
var ret = talib.WILLR(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.WILLR(records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.WILLR(records);
Log(ret);
}```
The ```WILLR()``` function is described in the talib library documentation as: ```WILLR(Records[High,Low,Close],Time Period = 14) = Array(outReal)```
### talib.AVGPRICE
The ```talib.AVGPRICE()``` function is used to calculate **Average Price**.
The return value of the ```talib.AVGPRICE()``` function is a one-dimensional array.
array
talib.AVGPRICE(inPriceOHLC)
The ```inPriceOHLC``` parameter is used to specify the K-line data.
inPriceOHLC
true
{@struct/Record Record} structure array
```javascript
function main() {
var records = exchange.GetRecords()
var ret = talib.AVGPRICE(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.AVGPRICE(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.AVGPRICE(records);
Log(ret);
}
PeraturanAVGPRICE()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:AVGPRICE(Records[Open,High,Low,Close]) = Array(outReal)
Peraturantalib.MEDPRICE()
fungsi digunakan untuk mengiraHarga purata.
Nilai pulangantalib.MEDPRICE()
Fungsi adalah array satu dimensi.
Array
talib.MEDPRICE ((inPriceHL)
PeraturaninPriceHL
parameter digunakan untuk menentukan data garis K.
inPriceHL
betul
Array struktur {@struct/Record Record}
function main() {
var records = exchange.GetRecords()
var ret = talib.MEDPRICE(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.MEDPRICE(records.High, records.Low)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.MEDPRICE(records);
Log(ret);
}
PeraturanMEDPRICE()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:MEDPRICE(Records[High,Low]) = Array(outReal)
Peraturantalib.TYPPRICE()
fungsi digunakan untuk mengiraHarga Tipikal.
Nilai pulangantalib.TYPPRICE()
Fungsi adalah array satu dimensi.
Array
talib.TYPPRICE ((inPriceHLC)
PeraturaninPriceHLC
parameter digunakan untuk menentukan data garis K.
inPriceHLC
betul
Array struktur {@struct/Record Record}
function main() {
var records = exchange.GetRecords()
var ret = talib.TYPPRICE(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.TYPPRICE(records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.TYPPRICE(records);
Log(ret);
}
PeraturanTYPPRICE()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:TYPPRICE(Records[High,Low,Close]) = Array(outReal)
Peraturantalib.WCLPRICE()
fungsi digunakan untuk mengiraHarga Penutupan Bertingkat.
Nilai pulangantalib.WCLPRICE()
Fungsi adalah array satu dimensi.
Array
talib.WCLPRICE ((inPriceHLC)
PeraturaninPriceHLC
parameter digunakan untuk menentukan data garis K.
inPriceHLC
betul
Array struktur {@struct/Record Record}
function main() {
var records = exchange.GetRecords()
var ret = talib.WCLPRICE(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.WCLPRICE(records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.WCLPRICE(records);
Log(ret);
}
PeraturanWCLPRICE()
fungsi diterangkan dalam dokumentasi perpustakaan talib sebagai:WCLPRICE(Records[High,Low,Close]) = Array(outReal)