Mengembalikan nomor versi sistem saat ini.
Nomor versi sistem saat ini, seperti3.6
Aku tidak tahu.
string
Versi ((()
function main() {
Log("version:", Version())
}
def main():
Log("version:", Version())
void main() {
Log("version:", Version());
}
Nomor versi sistem adalah nomor versi dari program docker.
Fungsi tidur, menyebabkan program berhenti sejenak.
Tidur (millisecond)
Peraturanmillisecond
parameter digunakan untuk mengatur durasi tidur dan jumlah milidetik.
Milisekund
benar
nomor
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, ketika menjalankanSleep(1000)
fungsi, program akan tidur selama 1 detik.Sleep(0.1)
. Ini mendukung parameter minimum dari0.000001
, yaitu hibernasi nanodetik, di mana 1 nanodetik sama dengan1e-6
Milisekund.
Ketika menulis strategi diPython
bahasa,Sleep(millisecond)
fungsi harus digunakan untuk intervall polling, waktu untuk menunggu operasi.time.sleep(second)
fungsi dariPython
Itu adalahtime
ini karena menggunakantime.sleep(second)
fungsi dalam strategi membuat program strategi menunggu untuk periode waktu sebenarnya ketika backtesting (tidak melewatkan seri waktu dari sistem backtesting), sehingga menyebabkan strategi untuk backtest sangat lambat.
Tentukan apakah lingkungan operasi strategi adalah sistem backtesting.
Strategi mengembalikan nilai sebenarnya, misalnya:true
Strategi ini mengembalikan nilai palsu, misalnya:false
ketika berjalan di lingkungan perdagangan langsung.
bool
Apakah Virtual ((()
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 apakah lingkungan berjalan saat ini adalah sistem backtesting, yang digunakan untuk kompatibel dengan perbedaan antara backtesting dan perdagangan langsung.
Kirim email.
Pengiriman email yang berhasil mengembalikan nilai yang sebenarnya, misalnya,true
, dan pengiriman gagal mengembalikan nilai palsu, misalnya,false
Aku tidak tahu.
bool
Mail ((smtpServer, smtpUsername, smtpPassword, mailTo, judul, tubuh)
Digunakan untuk menentukanSMTP
alamat layanan pengirim email.
smtpServer
benar
string
Digunakan untuk menentukan alamat email pengirim email.
smtpNama pengguna
benar
string
PeraturanSMTP
kata sandi untuk kotak surat pengirim email.
smtpPassword
benar
string
Digunakan untuk menentukan alamat email penerima email.
mailTo
benar
string
Alamat email.
Judul
benar
string
Tubuh email.
tubuh
benar
string
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 sandi untukSMTP
layanan, bukan kata sandi kotak surat.
Saat mengatursmtpServer
parameter, jika Anda perlu mengubah port, Anda dapat menambahkan nomor port langsung di parametersmtpServer
. Misalnya: QQ mailsmtp.qq.com:587
, yang tersedia untuk pengujian.
Jika kesalahan dilaporkan:unencryped connection
, Anda perlu memodifikasismtpServer
dariMail
Format parameter adalah:ssl://xxx.com:xxx
, misalnya,ssl
metodeSMTP
untuk QQ mail:ssl://smtp.qq.com:465
atausmtp://xxx.com:xxx
Aku tidak tahu.
Ini tidak bekerja di sistem backtesting.
{@fun/Global/Mail_Go Mail_Go}
Versi asinkron dariMail
function.
PeraturanMail_Go
fungsi mengembalikan objek bersamaan segera, dan Anda dapat menggunakanwait
metode dari objek bersamaan untuk mendapatkan hasil pengiriman surat. pengiriman surat yang sukses mengembalikan nilai benar, misalnya,true
, dan pengiriman gagal mengembalikan nilai palsu, misalnya,false
Aku tidak tahu.
objek
Mail_Go ((smtpServer, smtpUsername, smtpPassword, mailTo, judul, body)
Ini digunakan untuk menentukanSMTP
alamat layanan pengirim email.
smtpServer
benar
string
Ini digunakan untuk menentukan alamat email pengirim email.
smtpNama pengguna
benar
string
PeraturanSMTP
kata sandi untuk kotak surat pengirim email.
smtpPassword
benar
string
Ini digunakan untuk menentukan alamat email penerima email.
mailTo
benar
string
Alamat email.
Judul
benar
string
Tubuh email.
tubuh
benar
string
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.
Ini tidak bekerja di sistem backtesting.
{@fun/Global/Mail Mail}
Log kesalahan filter.
SetErrorFilter ((filter)
Senar ekspresi reguler. Filter benar string
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 kesalahan umum.
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);
}
Menyaring pesan kesalahan antarmuka.
Log kesalahan yang cocok dengan ekspresi reguler ini tidak akan diunggah ke sistem log. Anda dapat memanggilnya beberapa kali (tidak ada batasan jumlah kali) untuk mengatur beberapa kondisi filter. Ekspresi reguler yang ditetapkan beberapa kali akan dikumpulkan dan berlaku pada saat yang sama. Anda dapat mengatur string kosong untuk mengatur ulang ekspresi reguler yang digunakan untuk menyaring log kesalahan:SetErrorFilter("")
. Log yang disaring tidak lagi ditulis ke file database yang sesuai dengan ID perdagangan langsung di direktori docker untuk mencegah laporan kesalahan yang sering dari membengkak file database.
Dapatkan ID proses perdagangan langsung.
Kembalikan ID proses perdagangan langsung. string
GetPid ((()
function main(){
var id = GetPid()
Log(id)
}
def main():
id = GetPid()
Log(id)
void main() {
auto id = GetPid();
Log(id);
}
Dapatkan pesan kesalahan terakhir.
Pesan kesalahan terakhir. string
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);
}
Ini tidak bekerja di sistem backtesting.
Dapatkan perintah interaksi strategi.
Format perintah kembali adalahControlName:Data
. ControlName
adalah nama kontrol, danData
adalah data yang dimasukkan ke dalam kontrol. Jika kontrol interaktif tidak memiliki kotak input, kotak drop-down dan komponen lain (misalnya kontrol tombol tanpa kotak input) maka format perintah yang dikembalikan adalahControlName
, yang hanya mengembalikan nama kontrol.
string
GetCommand ((()
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);
}
}
Mendeteksi perintah interaksi dan menggunakanLog
fungsi untuk output perintah interaksi ketika terdeteksi.
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);
}
}
Misalnya, strategi kontrol interaktif menambahkan kontrol tanpa kotak input, kontrol interaktif diberi nama:buy
, informasi deskripsi kontrol adalah:buy
, yang merupakan kontrol tombol. Lanjutkan dengan menambahkan kontrol dengan kotak input. Kontrol interaktif bernama:sell
dan pesan deskripsi kontrol adalah:sell
, yang merupakan kontrol interaktif yang merupakan kombinasi dari tombol dan kotak input. kode interaksi dirancang dalam strategi untuk menanggapi kontrol interaksi yang berbeda:
Ini tidak bekerja di sistem backtesting.
Dapatkan nilai Meta ditulis saat menghasilkan kode pendaftaran strategi.
Meta
data.
string
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 skenario aplikasi: PenggunaanMeta
untuk membatasi jumlah aset yang dioperasikan oleh strategi.
Skenario aplikasi: perlu melakukan batas modal untuk penyewa strategi yang berbeda.Meta
nilai yang ditetapkan saat menghasilkan kode pendaftaran tidak dapat melebihi 190 karakter danGetMeta()
Jika tidak ada metadata (Meta
) ditetapkan saat menghasilkan kode pendaftaran strategi,GetMeta()
Fungsi ini tidak berfungsi di sistem backtesting.
Untuk primitifSocket
akses, mendukungtcp
, udp
, tls
, unix
Mendukung 4 protokol komunikasi populer:mqtt
, nats
, amqp
, kafka
. Dukungan untuk menghubungkan ke database:sqlite3
, mysql
, postgres
, clickhouse
.
PeraturanDial()
fungsi mengembalikan null jika waktu habis. panggilan normal mengembalikan objek koneksi yang memiliki tiga metode:read
, write
danclose
.read
metode digunakan untuk membaca data,write
metode digunakan untuk mengirim data danclose
metode digunakan untuk menutup koneksi.
Peraturanread
Metode ini mendukung parameter berikut:
ws.read()
.ws.read(2000)
menentukan timeout dua detik (2000 millisecond).-1
berarti bahwa fungsi mengembalikan langsung, terlepas dari kehadiran atau tidak adanya pesan, misalnya:ws.read(-1)
Aku tidak tahu.
Mengirim parameter-2
berarti bahwa fungsi mengembalikan segera dengan atau tanpa pesan, tetapi hanya pesan terbaru yang dikembalikan, dan pesan yang disimpen dibuang.ws.read(-2)
.read()
deskripsi buffer fungsi:
Data masuk yang didorong oleh protokol WebSocket dapat menyebabkan akumulasi data jika interval waktu antara strategiread()
Data ini disimpan di buffer, yang memiliki struktur data antrian dengan maksimum 2000. Setelah 2000 dilampaui, data terbaru dimasukkan ke buffer dan data tertua dihapus.
Skenario | Tidak ada parameter | Parameter: -1 | Parameter: -2 | Parameter: 2000, dalam milidetik |
---|---|---|---|---|
Data sudah di buffer | Kembalikan data tertua segera | Kembalikan data tertua segera | Kembali data terbaru segera | Kembalikan data tertua segera |
Tidak ada data di buffer | Kembali saat diblokir ke data | Kembali null segera | Kembali null segera | Tunggu 2000 ms, kembali null jika tidak ada data, kembali null jika ada data |
Koneksi WebSocket terputus atau dihubungkan kembali oleh yang mendasarinya | read() function mengembalikan string kosong, yaitu: |
objek
Pilih (Alamat) Pilih (alamat, waktu)
Alamat permintaan. alamat benar string detik timeout, timeout palsu Nomor
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 antarmuka 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 ke antarmuka ticker WebSocket 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 ke antarmuka ticker WebSocket 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 koneksi yang dikembalikan oleh fungsi Dial saat terhubung ke database memiliki dua fungsi metode yang unik untuknya:
exec(sqlString)
: Digunakan untuk mengeksekusi pernyataan SQL dengan cara yang mirip denganDBExec()
function.fd()
: Thefd()
fungsi mengembalikan pegangan (misalnya, variabel pegangan adalah pegangan) yang akan digunakan oleh thread lain untuk terhubung kembali (bahkan jika objek yang dibuat oleh Dial telah ditutup oleh pelaksanaanclose()
fungsi untuk menutup koneksi) dengan melewati pegangan keDial()
fungsi, misalnya,Dial(handle)
Gunakan kembali koneksi.
Berikut ini adalah contoh dari fungsi Dial menghubungkan kesqlite3
database.Rincian dariaddress
parameter, dipisahkan oleh|
simbol setelah alamat normal:wss://ws.okx.com:8443/ws/v5/public
Jika ada.|
karakter dalam string parameter, kemudian||
Bagian setelah itu adalah beberapa pengaturan parameter fungsi, dan setiap parameter terhubung dengan&
karakter. Misalnya,ss5
Parameter proxy dan kompresi dapat disatukan sebagai berikut:Dial("wss://ws.okx.com:8443/ws/v5/public|proxy=socks5://xxx:9999&compress=gzip_raw&mode=recv")
Fungsi yang didukung oleh parameter alamat dari fungsi Dial | Deskripsi parameter |
---|---|
Parameter yang terkait dengan kompresi data protokol WebSocket: compress=parameter value | compress adalah metode kompresi, pilihan parameter compress adalah: gzip_raw, gzip, dll. Jika metode gzip tidak standar gzip, Anda dapat menggunakan metode diperpanjang: gzip_raw |
Parameter yang terkait dengan kompresi data protokol WebSocket: mode=nilai parameter | mode adalah mode kompresi, parameter mode dapat dual, send, recv. dual adalah kompresi dua arah, mengirim data terkompresi, menerima data terkompresi. send adalah mengirim data terkompresi. recv adalah menerima data terkompresi, dekompresi lokal. |
Protokol WebSocket menetapkan parameter terkait auto-reconnect yang mendasari: reconnect=parameter value | reconnect adalah apakah untuk mengatur reconnect, reconnect=true adalah untuk mengaktifkan reconnect. |
Protokol WebSocket menetapkan parameter terkait auto-reconnect yang mendasari: interval=nilai parameter | interval adalah interval percobaan ulang, dalam milidetik, interval=10000 adalah interval percobaan ulang 10 detik, default adalah 1 detik ketika tidak diatur, yaitu interval=1000. |
Protokol WebSocket menetapkan parameter terkait auto-reconnect yang mendasari: payload=parameter value | payload adalah pesan langganan yang perlu dikirim saat WebSocket dihubungkan kembali, misalnya: payload=okokok. |
Parameter yang terkait dengan kaus kaki5 proxy: proxy=nilai parameter | Proxy adalah pengaturan proxy ss5, format nilai parameter: socks5://name:pwd@192.168.0.1:1080, nama adalah nama pengguna server ss5, pwd adalah password login server ss5, 1080 adalah port layanan ss5. |
PeraturanDial()
Fungsi hanya didukung untuk perdagangan langsung.
Saat terhubung ke database menggunakan fungsi Dial, string koneksi ditulis dengan referensi ke proyek driver bahasa go untuk setiap database.
Basis data yang didukung | Proyek Penggerak | Senar koneksi | Pengamatan |
---|---|---|---|
Sqlite3 | github.com/mattn/go-sqlite3 | sqlite3://file:test.db?cache=shared&mode=memory | Peraturansqlite3:// Prefiks menunjukkan bahwa database 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 | – |
Tumbuh | 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 | – |
Harap dicatat bahwa ketikapayload
konten yang ditetapkan dalamaddress
parameter berisi karakter=
atau karakter khusus lainnya, dapat mempengaruhi analisis dariaddress
parameter dariDial
fungsi, seperti contoh berikut.
contoh panggilan backPack Exchange websocket private interface:
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 kode bekerja dengan baik:
client = Dial("wss://ws.backpack.exchange")
client.write(JSON.stringify(payload))
Jika Anda menulisnya langsung dipayload
, tidak akan berfungsi dengan baik, misalnya:
client = Dial("wss://ws.backpack.exchange|payload=" + JSON.stringify(payload))
Saat ini, hanya JavaScript mendukung penggunaanmqtt
, nats
, amqp
, dankafka
kode 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")
}
}
Referensi dokumentasi rinci:Menjelajahi FMZ: Praktik Protokol Komunikasi Antara Strategi Perdagangan Langsung
Kirim permintaan Http.
Mengembalikan data respons dari permintaan. Jika nilai yang dikembalikan adalahJSON
string, itu dapat dianalisis olehJSON.parse()
Fungsi dalamJavaScript
strategi bahasa, dan olehjson::parse()
Fungsi dalamC++
Jika debug ditetapkan menjadi true dalam struktur opsi, nilai pengembalian adalah objek (JSON); jika debug ditetapkan menjadi false, nilai pengembalian adalah string.
string, objek
HttpQuery (URL) HttpQuery ((url, opsi)
URL permintaan HTTP. Url benar string Pengaturan terkait permintaan HTTP, misalnya, dapat disusun sebagai 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
Sidik jari.
Pengaturan yang didukung termasuk opsi 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"
...
gedung pencakar langit:"cloudscraper"
...
mms_:"mms_ios"
...
mesh_:"mesh_ios"
, "mesh_ios_1"
, "mesh_ios_2"
, "mesh_android"
, "mesh_android_1"
, "mesh_android_2"
...
Konfirmasi_:"confirmed_ios"
, "confirmed_android"
...
Oke."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 pesan jawaban penuh.false
, hanya data dalamBody
dari pesan balasan dikembalikan.profile
lapangan dapat dilewatkan.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 antarmuka API ticker publik 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 pengaturan proxy.
PeraturanHttpQuery()
Fungsi hanya mendukungJavaScript
, C++
bahasa,Python
bahasa dapat menggunakanurllib
Perpustakaan untuk mengirim permintaan Http langsung.HttpQuery()
digunakan terutama untuk mengakses antarmuka pertukaran yang tidak memerlukan tanda tangan, seperti antarmuka publik seperti informasi ticker.HttpQuery()
dapat digunakan dalam sistem backtesting untuk mengirim permintaan (hanyaGET
Backtesting terbatas pada penggunaan 20 kunjungan ke berbagaiURLs
, danHttpQuery()
kunjungan akan cache data.URL
diakses untuk kedua kalinya,HttpQuery()
fungsi mengembalikan data yang di-cache dan tidak ada lagi permintaan jaringan yang sebenarnya terjadi.
{@fun/Global/HttpQuery_Go HttpQuery_Go}
Mengirim permintaan HTTP, versi asinkron dariHttpQuery
function.
PeraturanHttpQuery_Go()
fungsi segera mengembalikan objek bersamaan yang dapat digunakan untuk mendapatkan hasil permintaan HTTP menggunakanwait
metode dariJSON.parse()
fungsi dapat digunakan untuk menganalisisJSON.parse()
Fungsi dalamJavaScript
strategi bahasa.
objek
HttpQuery_Go ((url) HttpQuery_Go ((url, opsi)
URL permintaan HTTP. Url benar string Pengaturan terkait permintaan HTTP, misalnya, dapat disusun sebagai 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 pesan jawaban penuh.false
, hanya data dalamBody
dari pesan balasan dikembalikan.profile
lapangan dapat dilewatkan.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 asinkron ke antarmuka publik pertukaran untuk data ticker agregat.
PeraturanHttpQuery_Go()
Fungsi hanya mendukungJavaScript
, yangPython
bahasa dapat digunakan denganurllib
Perpustakaan untuk mengirim permintaan Http langsung.HttpQuery_Go()
digunakan terutama untuk mengakses antarmuka yang tidak memerlukan tanda tangan di bursa, seperti antarmuka publik seperti informasi ticker.HttpQuery_Go
fungsi tidak didukung dalam sistem backtesting.
{@fun/Global/HttpQuery HttpQuery}
Fungsi ini mengkodekan data sesuai dengan parameter yang diteruskan.
PeraturanEncode
fungsi mengembalikan data setelah pengkodean dan enkripsi.
string
Encode ((algo, inputFormat, outputFormat, data) Encode ((algo, inputFormat, outputFormat, data, kunciFormat, kunci)
Parameteralgo
adalah algoritma yang digunakan dalam perhitungan pengkodean. Pengaturan dukungan adalah:raw
(tidak ada algoritma yang digunakan), "tanda", algo
juga mendukung: algo
juga mendukung: algo
dapat ditulis sebagai ed25519.seed
perhitungan.
sesuatu
benar
string
Digunakan untuk menentukan format data daridata
parameter.inputFormat
parameter dapat ditetapkan sebagai salah satu dari berikut:raw
, hex
, base64
, string
. hex
dikodekan, base64
dikodekan, dan outputFormat
parameter dapat ditetapkan sebagai salah satu dari berikut:raw
, hex
, base64
, string
. hex
dikodekan, base64
dikodekan, dan data
adalah data yang akan diproses.
data
benar
string
Digunakan untuk menentukan format data darikey
parameter.key
parameter dapat ditetapkan sebagai salah satu dari berikut:raw
, hex
, base64
, string
. hex
dikodekan, base64
dikodekan, dan key
adalah kunci rahasia yang digunakan untukHMAC
Enkripsi.key
diperlukan ketika parameteralgo
diatur untuksign
atausignTx
.key
parameter tidak digunakan untukHMAC
Enkripsi ketikaalgo
parameter ditetapkan menjadi
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 mendukung:
PeraturanEncode()
fungsi hanya didukung untuk perdagangan langsung.key
dankeyFormat
parameter tidak lulus, makakey
Enkripsi tidak digunakan.
Dapatkan tanda waktu nanodetik saat ini.
PeraturanUnixNano()
Fungsi mengembalikan tanda waktu nanodetik.
Nomor
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 time stamp millisecond, Anda dapat menggunakan kode berikut:
{@fun/Global/Unix Unix}
Dapatkan time stamp saat ini di tingkat kedua.
Mengembalikan timestamp tingkat dua. Nomor
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 informasi sistem dari perangkat di mana docker terletak.
Informasi sistem. string
GetOS()
function main() {
Log("GetOS:", GetOS())
}
def main():
Log("GetOS:", GetOS())
void main() {
Log("GetOS:", GetOS());
}
Sebagai contoh, panggilan keGetOS()
fungsi untuk docker yang berjalan padaMac OSsistem operasi mungkin kembali:darwin/amd64
Karena komputer Apple memiliki beberapa arsitektur hardware.darwin
adalah nama dariMac OS system.
Menghitung hash MD5 dari parameterdata
.
Nilai hash MD5. string
MD5 (data)
Data yang membutuhkan perhitungan MD5. data benar string
function main() {
Log("MD5", MD5("hello world"))
}
def main():
Log("MD5", MD5("hello world"))
void main() {
Log("MD5", MD5("hello world"));
}
MenelponMD5("hello world")
fungsi, nilai yang dikembalikan adalah:5eb63bbbe01eeed093cb22bb8f5acdc3
.
{@fun/Global/Encode Encode}
Fungsi antarmuka database.
Sebuah objek yang berisi hasil dari eksekusiSqlpernyataan, misalnya:
{"columns":["TS","HIGH","OPEN","LOW","CLOSE","VOLUME"],"values":[[1518970320000,100,99.1,90,100,12345.6]]}
objek
DBExec ((sql)
Sqlstring pernyataan. Sql benar string
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;"));
}
Dukungan database di memori, untukDBExec
parameter fungsi, jikaSqlpernyataan dimulai dengan:
kemudian dioperasikan dalam database in-memory, akan lebih cepat tanpa menulis file.
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));
}
Tambahkan, hapus, periksa dan ubah catatan dalam tabel.
FungsiDBExec()
dapat mengoperasikan database perdagangan langsung (database SQLite) dengan melewati parameter.SQLiteSistem cadangan tabel di basis data perdagangan langsung:kvdb
, cfg
, log
, profit
, chart
, jangan bekerja di meja ini.Transaksitidak didukung dan tidak dianjurkan untuk melakukan operasi tersebut, yang dapat menyebabkan konflik dalam sistem.DBExec()
Fungsi hanya didukung untuk perdagangan langsung.
{@fun/Global/_G _G}
Buat UUID.
UUID 32 bit. string
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 hanya mendukung perdagangan langsung.
Dengarkan untuk peristiwa, itu kembali ketika adaWebSocket
data yang dapat dibaca atau tugas bersamaan, sepertiexchange.Go()
, HttpQuery_Go()
, dll telah selesai.
Jika objek yang dikembalikan bukan nilai nol,Event
yang terkandung dalam konten pengembalian adalah jenis pemicu peristiwa. Misalnya struktur nilai pengembalian berikut:
{"Seq":1,"Event":"Exchange_GetTrades","ThreadId":0,"Index":3,"Nano":1682068771309583400}
objek
EventLoop ((() EventLoop (timeout)
Parametertimeout
adalah pengaturan timeout, dalam milidetik.timeout
menunggu suatu peristiwa terjadi sebelum kembali jika ditetapkan menjadi 0. Jika lebih besar dari 0, mengatur peristiwa untuk menunggu waktu habis, dan mengembalikan peristiwa terbaru segera jika kurang dari 0.
timeout
palsu
nomor
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 untukEventLoop()
fungsi dalam kode menginisialisasi mekanisme untuk acara yang didengarkan, dan jika yang pertamaEventLoop()
call dimulai setelah event callback, itu akan melewatkan acara sebelumnya. sistem yang mendasari membungkus struktur antrian yang cache maksimum 500 callback acara.EventLoop()
fungsi tidak dipanggil pada waktunya untuk mengambil mereka keluar selama eksekusi program, kemudian callback acara di luar 500 cache akan hilang.EventLoop()
fungsi tidak mempengaruhi antrian cache dari sistem dasar WebSocket atau cache fungsi bersamaan sepertiexchange.Go()
Untuk cache ini, masih perlu menggunakan metode masing-masing untuk mengambil data.EventLoop()
fungsi untuk data yang telah diambil sebelumEventLoop()
Tujuan utama dariEventLoop()
fungsi adalah untuk memberi tahu lapisan strategi bahwa data jaringan baru telah diterima oleh sistem yang mendasari.EventLoop()
fungsi mengembalikan suatu peristiwa, hanya melintasi semua sumber data.exchange.Go()
mencoba untuk mendapatkan data.EventLoop()
Fungsi hanya mendukung perdagangan langsung.
Dengarkan acara di thread utama ketika dipanggil dari fungsi utamamain()
. Dalam strategi yang ditulis dalamJavaScript
bahasa,threading.Thread()
fungsi membuat thread, yang juga dapat dipanggil dalam fungsi eksekusi thread
{@fun/Global/Dial Dial}, {@fun/Trade/exchange.Go exchange.Go}, {@fun/Global/HttpQuery_Go HttpQuery_Go}
Peraturan__Serve
fungsi digunakan untuk membuat layanan HTTP, layanan TCP, dan layanan Websocket (berdasarkan protokol HTTP).
Mengembalikan string yang mencatat alamat IP dan port dari layanan yang dibuat.127.0.0.1:8088
, [::]:8089
.
string
__Serve (serveURI, pengelola) __Serve ((serveURI, handler,...args)
PeraturanserveURI
parameter digunakan untuk mengkonfigurasi protokol, alamat IP, port dan pengaturan lain dari layanan mengikat, sepertihttp://0.0.0.0:8088?gzip=true
, yaitu,http://:8088?gzip=true
.
serveURI
pengaturan parameter, sepertitcp://127.0.0.1:6666?tls=true
; Anda dapat menambahkan sertifikat dan kunci pribadi, sepertitls=true&cert_pem=xxxx&cert_key_pem=xxxx
.serveURI
pengaturan parameter, sepertihttp://127.0.0.1:6666?gzip=true
; Anda dapat mengatur pengaturan kompresi:gzip=true
Aku tidak tahu.
PeraturanserveURI
parameter digunakan untuk Https, sepertihttps://127.0.0.1:6666?tls=true&gzip=true
; Anda dapat menambahkancert_pem
dancert_key_pem
parameter untuk memuat sertifikat.melayaniURI
benar
string
Peraturanhandler
Parameter digunakan untuk lulus dalam fungsi pemrosesan routing (Http protokol), fungsi pemrosesan pesan (TCP protokol), dan fungsi pemrosesan Stream (Websocket).
Fungsi callback yang diteruskan oleh parameterhandler
dapat mendefinisikan beberapa parameter, parameter pertama adalah objek ctx (objek konteks).
pengelola
benar
fungsi
Parameter sebenarnya dari fungsi callback yang dilewati sebagai parameterhandler
Mungkin ada beberapa parameter.arg
, misalnya:
__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
melewati saat memanggil__Serve()
fungsi sesuai dengan parametera
, b
, c
dilewati dalam fungsi callback.
arg palsu string, number, bool, object, array, function, null value dan tipe lain yang didukung 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
layanan diimplementasikan berdasarkan protokol Http. Anda dapat mengatur cabang routing di jalur dan merancang kode implementasi untukWebsocket
Anda dapat melihat contoh kode di bagian ini.Fungsi callback yang diteruskan oleh parameterhandler
menerimactx
parameter.ctx
parameter adalah objek konteks yang digunakan untuk mendapatkan dan menulis data, dengan metode berikut:
HTTP/1.1
, tcp
.http://127.0.0.1:8088?num=123
, dan fungsi pemrosesan callback yang diteruskan oleh parameterhandler
kembali"123"
kapan?ctx.query("num")
disebut.User-Agent
dalam judul permintaan saat ini:ctx.header("User-Agent")
.GET
, POST
, dll.ctx
objek konteks ke protokol Websocket; mengembalikan nilai Boolean (benar) jika switch berhasil, dan nilai Boolean (palsu) jika gagal.read
metode tidak didukung dalam protokol HTTP biasa. Anda dapat menentukan parameter timeouttimeout_ms
dalam milidetik.JSON.stringify()
untuk mengenkode objek JSON ke dalam string dan kemudian menulisnya.WebSocket
protokol, Anda dapat menggunakan metode ini untuk melewati string yang dienkode ke klien.{@fun/Global/HttpQuery HttpQuery}, {@fun/Global/HttpQuery_Go HttpQuery_Go}
Fungsi ini mengimplementasikan fungsi kamus global yang dapat disimpan. Struktur data adalah tabel KV yang secara permanen disimpan di file database lokal docker.
Data nilai kunci yang disimpan secara permanen dik-v
Pasangan kunci-nilai.
string, nomor, bool, objek, array, nilai nol
_G() _G(k) _G(k, v)
Parameterk
adalah nama kunci dalam pasangan kunci-nilai yang disimpan, dan tidak sensitif huruf besar.
k
palsu
string, nilai nol
Parameterv
adalah nilai kunci dalam pasangan kunci-nilai yang disimpan, yang bisa menjadi data apa pun yang dapatJSON
Serial.
v
palsu
string, nomor, bool, objek, array, nilai nol
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 database terpisah untuk setiap perdagangan langsung, data yang disimpan oleh_G()
fungsi akan selalu ada jika strategi dimulai kembali atau docker berhenti berjalan._G()
Saat menggunakan_G()
fungsi untuk mempertahankan data yang disimpan, harus digunakan secara wajar sesuai dengan memori dan ruang hard disk perangkat keras, dan tidak boleh disalahgunakan.
Saat menelepon_G()
fungsi dalam perdagangan hidup dan tidak ada parameter yang dilewati,_G()
fungsi mengembalikanId
saat ini perdagangan langsung._G()
fungsi, parameterv
dilewatkan sebagai nol untuk menunjukkan penghapusank-v
Ketika memanggil_G()
fungsi, hanya parameterk
diteruskan dalam string, dan_G()
fungsi mengembalikan nilai kunci yang sesuai dengan parameter yang disimpank
. Ketika memanggil_G()
fungsi, hanya parameterk
diberikan dalam nilai nol, menunjukkan bahwa semua catatan darik-v
key-value pair dihapus.k-v
pasangan kunci-nilai telah disimpan terus menerus,_G()
fungsi dipanggil lagi, lulus dalam nama kunci yang telah disimpan terus-menerus sebagai parameterk
. Mengirim nilai kunci baru sebagai parameterv
akan memperbarui ituk-v
Pasangan kunci-nilai.
{@fun/Global/DBExec DBExec}
Mengkonversi millisecond timestamps atauDate
objek untuk string waktu.
String waktu. string
_D() _ D (Templat waktu) _D ((timestamp, fmt)
Stempel waktu milidetik atauDate
objek.
Stempel waktu
palsu
Nomor, objek
Format string,JavaScript
Format bahasa default:yyyy-MM-dd hh:mm:ss
; Python
Format bahasa default:%Y-%m-%d %H:%M:%S
; C++
Format bahasa default:%Y-%m-%d %H:%M:%S
Aku tidak tahu.
fmt
palsu
string
function main(){
var time = _D()
Log(time)
}
def main():
strTime = _D()
Log(strTime)
void main() {
auto strTime = _D();
Log(strTime);
}
Dapatkan dan cetak string waktu saat ini:
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 waktu adalah 1574993606000, menggunakan konversi kode:
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
berbeda untukJavaScript
, Python
, danC++
bahasa, seperti yang ditunjukkan dalam contoh berikut:
Mengembalikan string waktu saat ini tanpa melewati parameter._D()
Fungsi dalamPython
strategi, Anda perlu menyadari bahwa parameter yang dilewatkan adalah timestamps tingkat kedua (timestamps tingkat milidetik dalam strategi JavaScript dan C ++, di mana 1 detik sama dengan 1000 milidetik)._D()
fungsi untuk menganalisis string waktu dengan timestamp yang dapat dibaca dalam perdagangan langsung, Anda perlu memperhatikan zona waktu dan pengaturan waktu dari sistem operasi di mana program docker terletak._D()
Fungsi ini menganalisis timestamp ke dalam string waktu yang dapat dibaca tergantung pada waktu dari sistem docker.
{@fun/Global/UnixNano UnixNano}, {@fun/Global/Unix Unix}
Formatkan nomor tanda gerak.
Nomor koma mengambang yang diformat sesuai dengan pengaturan presisi. nomor
_N() _N(nomor) _N ((num, presisi)
Nomor tanda mengapung yang perlu diformat.
Nomor
benar
Nomor
Pengaturan presisi untuk pemformatan, parameterprecision
adalah bilangan bulat, dan parameterprecision
default ke 4.
Keakuratan
palsu
Nomor
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 menghapus nilai setelah3.1415
dua tempat desimal 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 mengubah semua N digit ke kiri dari titik desimal ke 0, Anda dapat menulisnya seperti ini:
Parameterprecision
bisa menjadi bilangan bulat positif, bilangan bulat negatif.
{@fun/Trade/exchange.SetPrecision exchange.SetPrecision}
Coba lagi fungsi untuk toleransi kesalahan antarmuka.
Nilai yang dikembalikan dari fungsi callback saat dijalankan. Semua tipe didukung oleh sistem kecualinilai logis palsudannilai nol.
_C (((pfn) _C ((pfn,...args)
Parameterpfn
adalah referensi fungsi, yang merupakanFungsi callbackAku tidak tahu.
pfn
benar
fungsi
Parameter untukfungsi callback, mungkin ada lebih dari satu parameterarg
. Jenis dan jumlah parameterarg
tergantung pada parameter dariFungsi callbackAku tidak tahu.
arg
palsu
string, number, bool, object, array, function, semua jenis didukung oleh sistem, seperti nilai nol
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 kesalahan 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 kesalahan:
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
Hal ini juga dapat digunakan untuk toleransi kesalahan fungsi kustom:
Peraturan_C()
fungsi akan terus memanggil fungsi yang ditentukan sampai kembali dengan sukses (fungsi yang dirujuk oleh parameterpfn
kembalinolataupalsuketika dipanggil akan mencoba memanggil lagipfn
Misalnya:_C(exchange.GetTicker)
. Interval uji ulang default adalah 3 detik, Anda dapat memanggil_CDelay()
fungsi untuk mengatur interval percobaan ulang._CDelay(1000)
berarti untuk mengubah interval percobaan ulang dari_C()
fungsi ke 1 detik.
Toleransi kesalahan dapat dilakukan untuk, namun tidak terbatas pada, fungsi berikut:
exchange.GetTicker()
exchange.GetDepth()
exchange.GetTrades()
exchange.GetRecords()
exchange.GetAccount()
exchange.GetOrders()
exchange.GetOrder()
exchange.GetPositions()
Semua dapat dipanggil oleh_C()
fungsi untuk toleransi kesalahan._C()
fungsi tidak terbatas pada fungsi yang tercantum di atas toleransi kesalahan, parameterpfn
adalah referensi fungsi daripada panggilan fungsi.
Perhatikan bahwa itu_C(exchange.GetTicker)
, tidak_C(exchange.GetTicker())
.Mengembalikan jumlah titik persimpangan arrayarr1
dan arrayarr2
.
Jumlah periode silang dari arrayarr1
dan arrayarr2
Aku tidak tahu.
Nomor
_Cross ((arr1, arr2)
Elemen adalah array tipenumber
Aku tidak tahu.
arr1
benar
Array
Elemen adalah array tipenumber
Aku tidak tahu.
arr2
benar
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 dapat disimulasikan untuk menguji fungsi _Cross ((Arr1, Arr2):
Jika nilai pengembalian_Cross()
fungsi adalah angka positif, ini menunjukkan periode penetrasi ke atas, jika ini adalah angka negatif, ini menunjukkan periode penetrasi ke bawah, 0 berarti sama dengan harga saat ini.Analisis dan instruksi penggunaan tentang fungsi bawaan _Cross.
FungsiJSONParse()
digunakan untuk menganalisisJSON
strings.
JSON
objek.
objek
JSONParse (s)
JSON
tali.
s
benar
string
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 string dengan nilai besar dapat dianalisis dengan benar, dan akan dianalisis nilai besar sebagai jenis string.JSONParse()
fungsi tidak didukung dalam sistem backtest.
Output log.
Catatan ((...msgs)
Parametermsg
adalah isi output, dan parametermsg
bisa dilewati lebih dari satu.
msg
palsu
string, number, bool, object, array, jenis apapun yang didukung oleh sistem seperti null.
function main() {
Log("msg1", "msg2", "msg3")
}
def main():
Log("msg1", "msg2", "msg3")
void main() {
Log("msg1", "msg2", "msg3");
}
Berbagaimsg
parameter dapat dilewati:
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@");
}
Ini mendukung pengaturan warna pesan output, jika kita menggunakan pengaturan warna dan push pada saat yang sama, kita perlu untuk mengatur warna pertama dan menggunakan@
karakter untuk mengatur 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 mendukung pencetakanbase64
gambar yang dikodekan, dimulai dengan`
dan berakhir dengan`
, misalnya:
import matplotlib.pyplot as plt
def main():
plt.plot([3,6,2,4,7,1])
Log(plt)
PeraturanLog()
Fungsi mendukung pencetakan langsungPython
Itu adalahmatplotlib.pyplot
objek. Selama objek berisisavefig
metode, dapat dicetak langsung dengan menggunakanLog
fungsi, misalnya:
function main() {
Log("[trans]中文|abc[/trans]")
}
def main():
Log("[trans]中文|abc[/trans]")
void main() {
Log("[trans]中文|abc[/trans]");
}
PeraturanLog()
Fungsi ini mendukung pertukaran bahasa.Log()
fungsi output teks yang akan beralih ke bahasa yang sesuai secara otomatis berdasarkan pengaturan bahasa pada halaman platform, misalnya:
PeraturanLog()
fungsi output pesan log di area log dari live trading atau backtesting sistem, dan log disimpan di database live trading ketika live trading sedang berjalan.Log()
fungsi output pesan log yang berakhir dengan@
Push ke alamat email, alamat WebHook, dll yang dikonfigurasi diTekan PengaturanPushing pesan tidak didukung olehAlat debug, sistem backtesting. Ada batas frekuensi untuk push pesan. Aturan pembatasan spesifik adalah sebagai berikut: dalam siklus 20 detik perdagangan langsung, hanya pesan push terakhir yang akan dipertahankan dan didorong, dan pesan lain akan disaring dan tidak didorong (output log push oleh fungsi Log akan dicetak dan ditampilkan secara normal di area log).
UntukWebHook
push, Anda dapat menggunakan program layanan 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 Pengaturan: http://XXX.XX.XXX.XX:9090/data?data=Hello_FMZ
Aku tidak tahu.
Setelah menjalankan tertulisGolang
program layanan, kita mulai menjalankan strategi live trading, berikut adalah strategi yang ditulis dalamJavaScript
bahasa, strategi berjalan dengan melaksanakanLog()
fungsi dan mendorong pesan:
function main() {
Log("msg", "@")
}
Sebuah program layanan yang ditulis dalamGolang
bahasa menerima dorongan dan program layanan mencetak pesan:
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}
Catat nilai P&L, cetak nilai P&L dan gambarkan kurva pengembalian berdasarkan nilai P&L.
LogProfit (keuntungan) LogProfit (keuntungan,... args)
Parameterprofit
adalah data pendapatan, yang diberikan oleh algoritma desain dan perhitungan dalam strategi.
keuntungan
benar
nomor
Parameter diperluas untuk output informasi kebetulan ke log pendapatan,arg
parameter dapat dilewati lebih dari satu.
arg
palsu
string, number, bool, object, array, jenis apapun yang didukung 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 berakhir dengan karakter&
, hanya membuat grafik pendapatan dan tidak mencetak log pendapatan.
{@fun/Log/LogProfitReset LogProfitReset}
Hapus semua log pendapatan, grafik pendapatan.
LogProfitReset (() LogProfitReset (tetap)
Peraturanremain
Parameter digunakan untuk menentukan jumlah entri log (nilai bilangan bulat) yang harus disimpan.
tetap
palsu
nomor
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}
Informasi output di bilah status sistem backtesting atau halaman perdagangan langsung.
LogStatus ((...msgs)
Parametermsg
adalah isi output, dan parametermsg
bisa dilewati lebih dari satu.
msg
palsu
string, number, bool, object, array, jenis apapun yang didukung 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");
}
Ini mendukung pengaturan warna konten 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 di bilah 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() + "`");
}
Ini mendukung untuk merancang kontrol tombol di bilah status (struktur tombol 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() + "`");
}
Atur fungsi deskripsi dari tombol status bar (struktur tombol 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, membangun fungsi interaksi tombol bilah status (struktur tombol 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 masukan juga didukung ketika membangun tombol bar status untuk interaksi, dan perintah interaksi ditangkap olehGetCommand()
fungsi akhirnya.input
item (struktur tombol lama) untuk struktur data kontrol tombol di bilah status, misalnya menambahkan"input": {"name": "number of open positions", "type": "number", "defValue": 1}
untuk{"type": "button", "cmd": "open", "name": "open position"}
akan menyebabkan popup dengan kontrol kotak input muncul ketika tombol diklik (nilai default dalam kotak input adalah 1, yang merupakan data yang ditetapkan olehdefValue
Anda dapat memasukkan data yang akan dikirim bersama dengan perintah tombol. Sebagai contoh, ketika kode tes berikut berjalan, setelah mengklik tombol "open positionGetCommand()
fungsi kemudian akan menangkap pesan: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);
}
}
Ini mendukung untuk kontrol tombol dikelompokkan (struktur tombol lama), secara fungsional konsisten dengantombol bar status yang mendukung entri dataPerintah interaktif pada akhirnya ditangkap olehGetCommand()
Perbedaannya adalah bahwa dengan"group"
pengaturan bidang, ketika tombol diklik untuk memicu interaksi, dialog yang muncul di halaman berisi satu setkelompokdari kontrol input yang diatur untuk memasukkan sekelompok data sekaligus.
Beberapa hal yang perlu diperhatikan tentang"group"
bidang dalam struktur kontrol tombol bilah status dan kontrol tombol kelompok:
type
properti dalam kelompok hanya mendukung empat jenis berikut, dandefValue
property adalah nilai default.
|
simbol untuk memisahkan setiap opsi di kotak dropdown saat ditetapkan.
"name": "tradePrice@orderType==1"
pengaturan, yang membuatperdaganganHargakontrol input hanya tersedia ketikaorderJeniskontrol drop-down dipilih sebagaiPerintah yang sedang menunggu.|
simbol untuk memisahkan isi deskripsi dalam bahasa Cina dan Inggris.name
, description
dalam kelompok danname
, description
dalam struktur tombol tidak memiliki definisi yang sama meskipun mereka memiliki nama bidang yang sama.
Definisi dariname
dalam kelompok juga berbeda dari definisiname
dalam input.Log("cmd:", cmd)
pernyataan dalam contoh uji berikut:cmd: open:{"orderType":1,"tradePrice":99,"orderAmount":"99","boolean":true}
, yaitu, apa yang dikembalikan olehGetCommand()
fungsi ketika terjadi interaksi:open:{"orderType":1,"tradePrice":99,"orderAmount":"99","boolean":true}
.type
properti kontrol tombol hanya mendukung:"button"
Aku tidak tahu.
Kontrol tombol yang mendukung input data, yaitu kontrol denganinput
set properti,type
properti dalam informasi konfigurasi dariinput
bidang mendukung beberapa jenis kontrol.
Perhatikan contoh-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);
}
}
Ketika tombol status bar kelompok kontrol (diimplementasikan dengan mengaturgroup
(diimplementasikan dengan mengaturinput
field) diklik untuk memicu interaksi (struktur tombol lama), kontrol kotak drop-down di kotak dialog yang muncul di halaman juga mendukung beberapa pilihan. Contoh berikut menunjukkan cara merancang kontrol kotak drop-down dengan beberapa pilihan pemilihan:
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 tombol terbaru untuk membangun tombol dalam tabel bilah status. Saat mengklik tombol untuk memicu interaksi, jendela pop-up multi-kontrol akan muncul. Untuk rincian lebih lanjut, silakan lihat:Panduan Pengguna - Kontrol Interaktif di 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() + "`");
}
Merger horizontal sel dalam tabel 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 vertikal menggabungkan sel-sel dalam tabel 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 paginasi tabel bilah 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 menampilkan tabel dalam halaman, beberapa tabel juga dapat ditampilkan dalam urutan 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() + "`");
}
Dukungan untuk mengatur mode gulung horizontal dan vertikal dari tabel bilah status.scroll
atribut untuk"auto"
, ketika jumlah baris vertikal dari tabel bar status melebihi 20 baris, isi akan di geser.scroll
atribut dapat digunakan untuk meringankan masalah keterlambatan menulis sejumlah besar data di bilah status selama perdagangan langsung.
Hasil informasi dariLogStatus()
fungsi ketika perdagangan langsung berjalan tidak disimpan ke basis data perdagangan langsung, tetapi hanya memperbarui konten bilah status perdagangan langsung saat ini.
PeraturanLogStatus()
Fungsi mendukung pencetakanbase64
gambar yang dikodekan, dimulai dengan`
dan berakhir dengan`
Misalnya:LogStatus("`data:image/png;base64,AAAA`")
Aku tidak tahu.
PeraturanLogStatus()
Fungsi mendukung melewatimatplotlib.pyplot
objek langsung kePython
, selama objek berisisavefig
metode, itu dapat dilewati sebagai parameter untukLogStatus()
fungsi, misalnya:
import matplotlib.pyplot as plt
def main():
plt.plot([3,6,2,4,7,1])
LogStatus(plt)
Ketika strategi berjalan perdagangan langsung, jika Anda pergi melalui sejarah di halaman perdagangan langsung, bilah status akan tidur dan berhenti memperbarui. hanya data bilah status akan diperbarui ketika log berada di halaman pertama.base64
gambar terenkode di bilah status, dan juga mendukung outputbase64
Gambar yang dienkode dalam tabel yang ditampilkan di bilah status. Karena data string gambar yang dienkode umumnya sangat panjang, contoh kode tidak ditampilkan.
{@fun/Global/GetCommand GetCommand}
Aktifkan atau matikan pencatatan informasi pesanan.
EnableLog (diaktifkan)
Jikaenable
Parameter diatur ke nilai palsu, misalnyafalse
, order log (yaitu log yang dihasilkan oleh fungsi sepertiexchange.Buy()
) tidak dicetak dan tidak ditulis ke database perdagangan langsung.
Memungkinkan
benar
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 gambar grafik.
Objek grafik. objek
Grafik (pilihan)
Peraturanoptions
parameter adalah konfigurasi grafik.Chart()
parameter fungsioptions
adalahJSON
dapat diserialisasikanHighStocks
parameter untukHighcharts.StockChart
. Sebuah tambahan__isStock
atribut ditambahkan di atas parameter asli, dan jika__isStock:false
Jika data yang ditampilkan di atas adalah data yang ditampilkan di atas, maka data tersebut akan ditampilkan sebagai grafik normal.__isStock
atribut ditetapkan ke nilai palsu misalnyafalse
, yaitu grafik yang digunakan adalahHighcharts
Jika__isStock
atribut ditetapkan ke nilai benar misalnyatrue
, yaitu grafik yang digunakan adalahHighstocks
grafik (secara default)__isStock
adalah benar misalnyatrue
) Anda dapat menanyakanPerpustakaan grafik HighStocksAku tidak tahu.
pilihan
benar
objek, array 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 gambar multi-chart:
extension.layout
atribut
Jika atribut ditetapkan dengan nilai extension.height
atribut
Atribut ini digunakan untuk mengatur tinggi grafik, baik sebagai nilai numerik, atau sebagai extension.col
atribut
Atribut ini digunakan untuk mengatur lebar grafik, lebar halaman dibagi menjadi 12 sel, set 8, yaitu, grafik menempati 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 gambar sederhana:
// 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 gambar kurva 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 grafik hibrida:
// 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);
Bagan tipepie
adalah grafik tanpa garis waktu, dan Anda perlu memperbarui konfigurasi grafik langsung saat memperbarui data.c.update(chartCfg)
setelah memperbarui data, sebagai berikut:
PeraturanChart()
fungsi mengembalikan objek grafik yang memiliki 4 metode:add()
, reset()
, update()
, del()
.
update()
metode:
Peraturanupdate()
Metode ini dapat memperbarui informasi konfigurasi grafik. Parameter dari metode ini adalah objek konfigurasi grafik (JSON).del()
metode:
Peraturandel()
Metode ini dapat menghapus seri data dari indeks yang ditentukan berdasarkan parameter seri yang dilewati.add()
metode:
Peraturanadd()
metode dapat menulis data ke grafik, dengan parameter berikut dalam urutan:series
: digunakan untuk mengatur indeks seri data, yang merupakan bilangan bulat.data
: digunakan untuk mengatur data tertentu yang akan ditulis, itu adalah array.index
(opsional): digunakan untuk mengatur indeks data, ini adalah bilangan bulat.-1
mengacu pada data terakhir dalam set data.
Misalnya, ketika menggambar garis, mengubah data pada titik terakhir garis:chart.add(0, [1574993606000, 13.5], -1)
, yaitu, mengubah data pada titik pertama penultimate grafikseries[0].data
Aku tidak tahu.
Peraturanindex
parameter tidak ditetapkan, yang berarti bahwa data ditambahkan ke titik terakhir dari seri data saat ini.reset()
metode:
Peraturanreset()
metode digunakan untuk mengosongkan data grafik.reset()
Metode dapat mengambil parameterremain
untuk menentukan jumlah entri untuk menyimpan.remain
Dioperasikan untuk menghapus semua data.{@fun/Log/KLineChart KLineChart}
Fungsi ini digunakan untuk menggambar kustom pada strategi runtime menggunakan metode menggambar mirip denganPine
language.
Objek grafik.KLineChart()
fungsi mengembalikan objek grafik dengan beberapa metode, di antaranya Anda perlu memperhatikanbegin()
danclose()
Operasi menggambar harus dimulai denganbegin()
panggilan fungsi dan berakhir denganclose()
panggilan fungsi saat melintasi data KLine untuk melakukan operasi gambar.
objek
KLineChart (opsi)
Peraturanoptions
Parameter adalah konfigurasi grafik.
pilihan
benar
objek, array 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 kontrol grafik diperlukan untuk menggambar di area gambar khusus strategi, gunakanKLineChart()
fungsi untuk membuat objek.KLineChart()
fungsi adalah struktur konfigurasi grafik, yang digunakan dalam kode referensi sederhana:{overlay: true}
. Struktur konfigurasi grafik ini hanya menetapkan konten gambar yang akan di output pada grafik utama.overlay
ditetapkan pada nilai false, misalnyafalse
Jika Anda perlu menentukan fungsi gambar untuk menggambar pada bagan utama, Anda juga dapat menentukan parameteroverlay
sebagai nilai benar dalam panggilan fungsi tertentu, misalnya: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 antarmuka gambar dariPine
bahasa yang didukung dalam operasi gambar adalah:barcolor
, yang mengatur warna garis K.
barcolor ((warna, offset, dapat diedit, show_last, judul, tampilan) parameter tampilan opsional:
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 garis K dengan warna yang ditentukan.
bgcolor ((warna, offset, dapat diedit, show_last, judul, tampilan, overlay) parameter tampilan opsional:
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
, memetakan serangkaian data pada grafik.
plot ((seri, judul, warna, lebar baris, gaya, trackprice, histbase, offset, join, editable, show_last, display) parameter gaya opsional:
stepline_diamond , stepline , cross , areabr , area , circles , columns , histogram , linebr , line parameter tampilan opsional: 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 antara dua plot atauhline
dengan warna yang disediakan.
mengisi (line1, line2, warna, judul, dapat diedit, mengisi celah, menampilkan) parameter tampilan opsional:
tidak ada , semua
SejakJavaScript
bahasa tidak dapat menentukan parameter masuk berdasarkan nama parameter fungsi formal, untuk memecahkan masalah ini, Anda dapat menggunakan{key: value}
struktur untuk menentukan parameter yang akan dilewatkan ke nama parameter formal tertentu.
Misalnya, kode referensi menggunakan{color: bar.Close > bar.Open ? 'rgba(255, 0, 0, 0, 0.2)' : 'rgba(255, 0, 0, 0, 0.2)'}
menentukancolor
parameter darifill
fungsi.
Jika Anda perlu menentukan beberapa parameter dengan nama parameter bentuk berturut-turut, Anda dapat menggunakan{key1: value1, key2: value2, key3: value3}
Aku tidak tahu.
Misalnya, 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'}
Aku tidak tahu.
Untuk nilai warna, Anda dapat mengaturnya 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 horizontal disajikan pada tingkat harga tetap tertentu.
hline ((harga, judul, warna, gaya baris, lebar baris, dapat diedit, tampilan) Parameter gaya garis bersifat opsional:
bergaris-garis , bertitik , padat parameter tampilan opsional: tidak ada , semua
c.plotarrow(bar.Close - bar.Open)
c.plotarrow(bar.Close - bar.Open)
// Not supported for now
plotarrow
, menggambar panah ke atas dan ke bawah pada grafik.
Plotarrow ((seri, judul, colorup, colorordown, offset, minheight, maxheight, editable, show_last, display) parameter tampilan opsional:
tidak ada , semua
c.plotshape(bar.Low, {style: 'diamond'})
c.plotshape(bar.Low, style = 'diamond')
// Not supported for now
plotshape
, menggambar bentuk visual pada grafik.
plotshape ((seri, judul, gaya, lokasi, warna, offset, teks, textcolor, dapat diedit, ukuran, show_last, display) parameter gaya opsional:
diamond size.autoadalah ukuran kecil. parameter tampilan opsional:, square , label_down , label_up , arrow_down , arrow_up , circle , flag , triangle_down , triangle_up , cross , xcross parameter lokasi bersifat opsional: bar atas , bar bawah , top , bottom , absolute parameter ukuran adalah opsional: 10px , 14px , 20px , 40px , 80px , membandingkan size.tiny, size.small, size.normal, size.large, size.huge dalam bahasa Pine. tidak ada , semua
c.plotchar(bar.Close, {char: 'X'})
c.plotchar(bar.Close, char = 'X')
// Not supported for now
plotchar
, menggambar bentuk visual pada grafik menggunakan karakter Unicode tertentu.
plotchar ((seri, judul, char, lokasi, warna, offset, teks, textcolor, editable, size, show_last, display) parameter lokasi bersifat opsional:
abovebar size.autoadalah ukuran kecil. parameter tampilan opsional:, belowbar , top , bottom , absolute parameter ukuran adalah opsional: 10px , 14px , 20px , 40px , 80px , membandingkan size.tiny, size.small, size.normal, size.large, size.huge 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
, menggambar grafik garis K pada grafik.
plotcandle ((buka, tinggi, rendah, dekat, judul, warna, wickcolor, editable, show_last, bordercolor, display) parameter tampilan opsional:
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 sinyal beli dan jual di sini.
sinyal ((arah, harga, qty, id) Parameter
long diteruskan untuk menunjukkan arah transaksi, Anda dapat memilih long , closelong , short , closeshort . bar.High
adalah posisi sumbu Y dari sinyal penanda. Parameter 1.5 yang dilewati menunjukkan jumlah transaksi sinyal. Parameter keempat dapat dilewati untuk menggantikan konten teks default yang ditarik, dan teks default dari penanda sinyal yang ditarik adalah arah transaksi, misalnyacloselong .
c.reset()
c.reset()
// Not supported for now
reset
, fungsi yang tidak tersedia pada bahasa Pine, digunakan untuk mengosongkan data grafik.
Reset (tetap) Peraturan
reset()
metode dapat mengambil satu parameter,remain
, untuk menentukan jumlah data yang harus disimpan.remain
berarti menghapus semua data.
Strategi gambar kustom hanya dapat menggunakan salah satu caraKLineChart()
fungsi atauChart()
Untuk beberapa pengaturan warna dan gaya yang digunakan dalamKLineChart()
panggilan fungsi, silakan lihatGunakan fungsi KLineChart untuk membuat desain strategi gambar lebih mudah.
{@fun/Log/Chart Chart}
Bersihkan lognya.
LogReset (tetap)
Peraturanremain
Parameter digunakan untuk mengatur jumlah entri log terbaru yang harus disimpan.
tetap
palsu
nomor
function main() {
// Keep the last 10 logs and clear the rest
LogReset(10)
}
def main():
LogReset(10)
void main() {
LogReset(10);
}
Log startup untuk setiap awal strategi perdagangan langsung dihitung sebagai satu, jadi jika tidak ada parameter yang diteruskan dan tidak ada output log pada awal strategi, tidak ada log yang akan ditampilkan sama sekali, menunggu log docker untuk dikembalikan (bukan pengecualian).
{@fun/Log Log}, {@fun/Log/LogVacuum LogVacuum}
Digunakan untuk merebut kembali ruang penyimpanan yang diduduki olehSQLiteketika menghapus data setelah memanggilLogReset()
Fungsi untuk menghapus log.
LogVacuum ((()
function main() {
LogReset()
LogVacuum()
}
def main():
LogReset()
LogVacuum()
void main() {
LogReset()
LogVacuum()
}
Alasannya adalah bahwaSQLite
tidak merebut kembali ruang yang diduduki saat menghapus data, dan perlu dijalankanVACUUM
Untuk membersihkan tabel dan membebaskan ruang. file move operasi terjadi ketika fungsi ini dipanggil, dan keterlambatan yang besar, sehingga disarankan untuk memanggil pada interval waktu yang tepat.
{@fun/Log/LogReset LogReset}
Ini digunakan untuk output informasi debugging di kolom 123456
, yangconsole.log
fungsi output debugging informasi pada halaman perdagangan hidup, dan pada saat yang sama, membuat file log dengan ekstensi.log
dan menulis informasi debugging di/logs/storage/123456/
dalam direktori docker yang termasuk perdagangan langsung, dengan awalan nama filestdout_
.
konsol.log ((...msgs)
Parametermsg
adalah isi output, dan parametermsg
bisa dilewati lebih dari satu.
msg
palsu
string, number, bool, object, array, null dan tipe lain yang didukung oleh sistem.
function main() {
console.log("test console.log")
}
# Not supported
// Not supported
JavaScript
bahasa mendukung fungsi ini.[object Object]
, jadi cobalah untuk output sebanyak mungkin informasi yang dapat dibaca.{@fun/Log/console.errorconsole.error}
Digunakan untuk output kesalahan di kolom 123456
, yangconsole.error
fungsi membuat file log dengan ekstensi.log
dalam/logs/storage/123456/
direktori dari docker di mana perdagangan hidup milik, dan menulis output kesalahan dengan awalanstderr_
.
konsol.kesalahan(...msgs)
Parametermsg
adalah isi output, dan parametermsg
bisa dilewati lebih dari satu.
msg
palsu
string, number, bool, object, array, null dan tipe lain yang didukung oleh sistem.
function main() {
console.error("test console.error")
}
# Not supported
// Not supported
JavaScript
bahasa mendukung fungsi ini.[object Object]
, jadi cobalah untuk output sebanyak mungkin informasi yang dapat dibaca.{@fun/Log/console.log konsol.log}
Dapatkan struktur {@struct/Ticker Ticker} dari spot atau kontrak yang sesuai dengan pasangan perdagangan saat ini, kode kontrak, yaitu data ticker.GetTicker ()
fungsi adalah anggota fungsi dari pertukaran objek {@var/EXCHANGE exchange}, penggunaanexchange
Fungsi anggota objek (metode) hanya terkait denganexchange
, dan tidak akan diulang dalam dokumen.
Peraturanexchange.GetTicker()
fungsi mengembalikan struktur {@struct/Ticker Ticker} ketika permintaan data berhasil, dan mengembalikan nilai nol ketika permintaan data gagal.
{@struct/Ticker Ticker}, nilai nol
pertukaran.GetTicker() pertukaran.GetTicker (simbol)
Parametersymbol
digunakan untuk menentukan pasangan perdagangan tertentu dan kode kontrak yang sesuai dengan data {@struct/Ticker Ticker} yang diminta. Jika parameter ini tidak dilewati, data pasar dari pasangan perdagangan yang saat ini ditetapkan dan kode kontrak akan diminta secara default.
Saat meneleponexchange.GetTicker(symbol)
fungsi,exchange
Jika Anda perlu meminta data pasar dengan mata uang denominasi sebagai USDT dan mata uang perdagangan sebagai BTC, parametersymbol
adalah:"BTC_USDT"
, dan formatnya adalah format pasangan perdagangan yang didefinisikan oleh platform FMZ.
Saat meneleponexchange.GetTicker(symbol)
fungsi,exchange
Jika Anda perlu meminta data pasar kontrak abadi standar U BTCsymbol
adalah:"BTC_USDT.swap"
, dan formatnya adalah kombinasi daripasangan perdagangandankode kontrakdidefinisikan oleh platform FMZ, dipisahkan oleh karakter exchange.GetTicker(symbol)
fungsi,exchange
Jika Anda perlu meminta data pasar dari kontrak opsi standar U BTCsymbol
adalah:"BTC_USDT.BTC-240108-40000-C"
(mengambil Binance Option BTC-240108-40000-C sebagai contoh), formatnya adalah kombinasi daripasangan perdagangandidefinisikan oleh platform FMZ dan kode kontrak opsi khusus yang didefinisikan oleh bursa, dipisahkan oleh karakter
lambang palsu string
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 obyek pertukaran berjangka (yaitu,exchange
atauexchanges[0]
), Anda perlu mengatur kode kontrak menggunakanexchange.SetContractType()
fungsi sebelum memanggil fungsi ticker, yang tidak akan diulang.
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 pasar untuk simbol tertentu (simbol spot).
PeraturanTicker
data yang dikembalikan olehexchange.GetTicker()
fungsi dalam sistem backtesting.High
danLow
adalah nilai simulasi, diambil dari satu jual dan membeli satu dari pasar pada saat itu.Ticker
data yang dikembalikan olehexchange.GetTicker()
Di manaHigh
danLow
nilai didasarkan pada data yang dikembalikan oleh pertukaran terkapasTick
antarmuka, yang mencakup harga tertinggi dan terendah dalam periode tertentu (biasanya periode 24 jam).
Bursa yang tidak mendukungexchange.GetTicker()
Fungsi:
Nama Fungsi | Pertukaran Spot yang tidak didukung | Pertukaran Futures Tanpa Dukungan |
---|---|---|
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} dari spot atau kontrak yang sesuai dengan pasangan perdagangan yang saat ini ditetapkan, kode kontrak, yaitu data buku pesanan.
Peraturanexchange.GetDepth()
fungsi mengembalikan struktur {@struct/Depth Depth} jika permintaan data berhasil, dan mengembalikan null jika permintaan data gagal.
{@struct/Depth Depth}, nilai nol
Pertukaran.GetDepth ((() pertukaran.GetDepth (simbol)
Parametersymbol
digunakan untuk menentukan pasangan perdagangan tertentu dan kode kontrak yang sesuai dengan data {@struct/Depth Depth} yang diminta. Jika parameter ini tidak dilewati, data buku pesanan dari pasangan perdagangan yang saat ini ditetapkan dan kode kontrak akan diminta secara default.exchange.GetDepth(symbol)
fungsi,exchange
Jika Anda perlu meminta untuk mendapatkan data buku pesanan dengan mata uang denominasi sebagai USDT dan mata uang transaksi sebagai BTC, parametersymbol
adalah:"BTC_USDT"
, dan formatnya adalah format pasangan perdagangan yang didefinisikan oleh platform FMZ.exchange.GetDepth(symbol)
fungsi,exchange
Jika Anda perlu meminta data buku pesanan kontrak abadi standar U BTCsymbol
adalah:"BTC_USDT.swap"
, dan formatnya adalah kombinasi daripasangan perdagangandankode kontrakdidefinisikan oleh platform FMZ, dipisahkan oleh karakter exchange.GetDepth(symbol)
fungsi,exchange
Jika Anda perlu meminta data buku pesanan dari kontrak opsi standar U BTCsymbol
adalah:"BTC_USDT.BTC-240108-40000-C"
(mengambil Binance Option BTC-240108-40000-C sebagai contoh), formatnya adalah kombinasi daripasangan perdagangandidefinisikan oleh platform FMZ dan kode kontrak opsi khusus yang didefinisikan oleh bursa, dipisahkan oleh karakter
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);
}
Tesexchange.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);
}
Ketika dikonfigurasiexchange
obyek adalah obyek bursa berjangka, menggunakansymbol
parameter untuk meminta data buku pesanan dari simbol tertentu (simbol futures).
Dalam sistem backtesting, data untuk setiap kelas dikembalikan olehexchange.GetDepth()
fungsi saat menggunakanSimulasi TickPada sistem backtesting, data yang dikembalikan olehexchange.GetDepth()
fungsi saat menggunakanBenar-benar Tickbacktesting adalah tingkat kedua yang mendalam snapshot.
{@fun/Market/exchange.GetTicker exchange.GetTicker}, {@fun/Market/exchange.GetTrades exchange.GetTrades}, {@fun/Market/exchange.GetRecords exchange.GetRecords}
Dapatkan array struktur {@struct/Trade Trade} dari spot atau kontrak yang sesuai dengan pasangan perdagangan yang saat ini ditetapkan, kode kontrak, yaitu data transaksi pasar.
Peraturanexchange.GetTrades()
fungsi mengembalikan array struktur {@struct/Trade Trade} jika permintaan data berhasil, dan mengembalikan nilai nol jika permintaan data gagal.
{@struct/Trade Trade} array, nilai nol
pertukaran.GetTrades ((() exchange.GetTrades (simbol)
Parametersymbol
digunakan untuk menentukan pasangan perdagangan tertentu dan kode kontrak yang sesuai dengan data array {@struct/Trade Trade} yang diminta. Jika parameter ini tidak dilewati, data catatan transaksi terbaru dari pasangan perdagangan yang saat ini ditetapkan dan kode kontrak akan diminta secara default.exchange.GetTrades(symbol)
fungsi,exchange
Jika Anda perlu meminta untuk mendapatkan data buku pesanan dengan mata uang denominasi sebagai USDT dan mata uang perdagangan sebagai BTC, parametersymbol
adalah:"BTC_USDT"
, dan formatnya adalah format pasangan perdagangan yang didefinisikan oleh platform FMZ.exchange.GetTrades(symbol)
fungsi,exchange
Jika Anda perlu meminta data buku pesanan kontrak abadi standar U BTCsymbol
adalah:"BTC_USDT.swap"
, dan formatnya adalah kombinasi daripasangan perdagangandankode kontrakdidefinisikan oleh platform FMZ, dipisahkan oleh karakter exchange.GetTrades(symbol)
fungsi,exchange
Jika Anda perlu meminta data buku pesanan dari kontrak opsi standar U BTCsymbol
adalah:"BTC_USDT.BTC-240108-40000-C"
(mengambil Binance Option BTC-240108-40000-C sebagai contoh), formatnya adalah kombinasi daripasangan perdagangandidefinisikan oleh platform FMZ dan kode kontrak opsi khusus yang didefinisikan oleh bursa, dipisahkan oleh karakter
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);
}
Ujilahexchange.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);
}
Ketika dikonfigurasiexchange
obyek adalah obyek bursa berjangka, menggunakansymbol
parameter untuk meminta data catatan transaksi pasar untuk simbol tertentu (simbol berjangka).
exchange.GetTrades()
fungsi untuk mendapatkan pasangan perdagangan saat ini, sejarah transaksi pasar (bukan mereka sendiri) yang sesuai dengan kontrak. Beberapa bursa tidak mendukung fungsi ini, dan data spesifik yang dikembalikan adalah berapa banyak dari rentang catatan transaksi tergantung pada bursa dan perlu ditangani sesuai dengan situasi tertentu.exchange.GetRecords ()
fungsi mengembalikan urutan data yang sama, yaitu, elemen terakhir array adalah data yang paling dekat dengan waktu saat ini.
Peraturanexchange.GetTrades()
fungsi mengembalikan array kosong saat menggunakanSimulasi Tickdata yang dikembalikan oleh sistem backtesting.exchange.GetTrades()
fungsi saat digunakanBenar-benar Tickbacktesting dalam sistem backtesting adalah data order flow snapshot, yaitu array struktur {@struct/Trade Trade}.
Bursa yang tidak mendukungexchange.GetTrades()
Fungsi:
Nama Fungsi | Pertukaran Spot yang tidak didukung | Pertukaran Futures Tanpa Dukungan |
---|---|---|
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} dari spot atau kontrak yang sesuai dengan pasangan perdagangan yang saat ini ditetapkan, kode kontrak, yaitu data K-line.
Peraturanexchange.GetRecords()
fungsi mengembalikan array struktur {@struct/Record Record} ketika permintaan data berhasil, dan mengembalikan nilai nol ketika permintaan data gagal.
Array, nilai nol
pertukaran.GetRecords ((() pertukaran.GetRecords (simbol) exchange.GetRecords (simbol, titik) exchange.GetRecords ((simbol, periode, batas) Pertukaran.GetRecords (periode) exchange.GetRecords ((periode, batas)
Parametersymbol
digunakan untuk menentukan pasangan perdagangan tertentu dan kode kontrak yang sesuai dengan data array {@struct/Record Record} yang diminta. Jika parameter ini tidak dilewati, data K-line dari pasangan perdagangan yang saat ini ditetapkan dan kode kontrak akan diminta secara default.exchange.GetRecords(symbol)
fungsi,exchange
Jika Anda perlu meminta untuk mendapatkan data dengan mata uang denominasi sebagai USDT dan mata uang transaksi sebagai BTC, parametersymbol
adalah:"BTC_USDT"
, dan formatnya adalah format pasangan perdagangan yang didefinisikan oleh platform FMZ.exchange.GetRecords(symbol)
fungsi,exchange
Jika Anda perlu meminta data buku pesanan kontrak abadi standar U BTCsymbol
adalah:"BTC_USDT.swap"
, dan formatnya adalah kombinasi daripasangan perdagangandankode kontrakdidefinisikan oleh platform FMZ, dipisahkan oleh karakter exchange.GetRecords(symbol)
fungsi,exchange
Jika Anda perlu meminta data buku pesanan dari kontrak opsi standar U BTCsymbol
adalah:"BTC_USDT.BTC-240108-40000-C"
(mengambil Binance Option BTC-240108-40000-C sebagai contoh), formatnya adalah kombinasi daripasangan perdagangandidefinisikan oleh platform FMZ dan kode kontrak opsi khusus yang didefinisikan oleh bursa, dipisahkan oleh karakter period
menentukan periode data garis K yang diminta, misalnya: {@var/PERIOD/PERIOD_M1 PERIOD_M1}, {@var/PERIOD/PERIOD_M5 PERIOD_M5}, {@var/PERIOD/PERIOD_M15 PERIOD_M15}, dll. Nilai parameterperiod
Jika parameter ini tidak dilewati, periode data K-line yang diminta secara default adalah periode K-line default dari konfigurasi real-time/backtest strategi saat ini.
periode
palsu
nomor
Parameterlimit
digunakan untuk menentukan panjang data K-line yang diminta. Jika parameter ini tidak dilewatkan, panjang permintaan default adalah jumlah maksimum bar K-line yang diminta pada saat antarmuka K-line pertukaran. Parameter ini dapat menyebabkan paging untuk menanyakan data K-line pertukaran, dan konsumsi waktu panggilan fungsi akan meningkat selama permintaan paging.
batas
palsu
nomor
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 periode 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 garis K 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);
}
Ketika dikonfigurasiexchange
obyek adalah obyek bursa berjangka, menggunakansymbol
, period
, danlimit
parameter untuk meminta data K-line dari produk tertentu (produk masa depan).
Periode K-line default dapat diatur di halaman backtest dan real trading.exchange.GetRecords()
fungsi, data K-line yang sesuai dengan periode parameter tersebut akan diperoleh. Jika tidak ada parameter yang ditentukan ketika fungsi dipanggil, data K-line yang sesuai akan dikembalikan sesuai dengan periode K-line yang ditetapkan dalam backtest dan parameter pasar nyata.
Nilai yang dikembalikan adalah array dariRecord
struktur, data K-line yang dikembalikan akan terkumpul dari waktu ke waktu, batas atas bar K-line terkumpul dipengaruhi olehexchange.SetMaxBarLen()
setting fungsi. Batas default adalah 5000 bar ketika tidak diatur. Ketika data K-line mencapai batas akumulasi bar K-line, akan diperbarui dengan menambahkan bar K-line dan menghapus bar K-line tertua (misalnya antrian masuk/keluar). Beberapa pertukaran tidak menyediakan antarmuka K-line, sehingga docker mengumpulkan data catatan transaksi pasar (Trade
array terstruktur) secara real time untuk menghasilkan K-line.
Jika antarmuka K-line pertukaran mendukung pertanyaan paging, beberapa permintaan API akan dibuat ketika memanggilexchange.SetMaxBarLen()
fungsi untuk mengatur panjang K-line yang lebih besar.
Ketikaexchange.GetRecords()
fungsi dipanggil pada awalnya, jumlah batang K-line yang diperoleh berbeda antara backtesting dan perdagangan nyata: - Sistem backtesting akan memperoleh sejumlah batang K-line sebelum dimulainya rentang waktu backtesting sebelumnya (default adalah 5000, pengaturan sistem backtesting dan jumlah data akan mempengaruhi jumlah akhir yang dikembalikan), sebagai data K-line awal. - Jumlah batang K-line yang diperoleh selama perdagangan sebenarnya didasarkan pada jumlah maksimum data yang dapat diperoleh dari antarmuka K-line dari bursa.
Peraturanperiod
parameter diatur menjadi 5, yang merupakan permintaan untuk mendapatkan data K-line dengan periode 5 detik.period
Parameter tidak habis dibagi 60 (yaitu, periode yang diwakili tidak habis dibagi menit).exchange.GetTrades()
untuk memperoleh data catatan transaksi dan mensintesis data K-line yang diperlukan.period
parameter dibagi 60, maka data garis K yang diperlukan disintesis menggunakan minimal data garis K 1 menit (jika memungkinkan, data garis K yang diperlukan disintesis menggunakan periode yang lebih besar).
Simulasi level backtesting dalam sistem backtesting membutuhkan pengaturan periode K-line yang mendasari (ketika sistem backtesting mensimulasikan level backtesting, data K-line yang sesuai digunakan untuk menghasilkan data Tick sesuai dengan periode K-line yang mendasari).
PeraturanC++
bahasa memiliki contoh kode berikut jika Anda perlu membangun data K-line 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 mendukungexchange.GetRecords()
Fungsi:
Nama Fungsi | Pertukaran Spot yang tidak didukung | Pertukaran Futures Tanpa Dukungan |
---|---|---|
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 periode K-line yang ditetapkan pada halaman situs web platform FMZ Quant Trading saat backtesting dan menjalankan strategi dalam perdagangan langsung, yaitu periode K-line default yang digunakan saat memanggilexchange.GetRecords()
fungsi tanpa melewati parameter.
Periode garis K dalam detik, nilai bulat dalam detik. Nomor
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 exchange.GetRecords}
Tetapkan panjang maksimum garis K.
pertukaran.SetMaxBarLen ((n)
Parametern
digunakan untuk menentukan panjang garis K maksimum.
n
benar
Nomor
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 runtime strategi cryptocurrency:
{@fun/Market/exchange.GetRecords exchange.GetRecords}
Dapatkan konten asli kembali oleh terakhirrest
permintaan untuk objek pertukaran saat ini ({@var/EXCHANGE exchange}, {@var/EXCHANGE/exchanges exchanges}).
Data respons untukrest
permintaan.
string
exchange.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 ini tidak didukung oleh strategi dalam trading.C++
language.
{@var/EXCHANGE pertukaran}
Dapatkan nilai tukar yang saat ini ditetapkan untuk objek pertukaran.
Nilai saat ini dari nilai tukar objek pertukaran. Nomor
exchange.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 nilai tukar,exchange.GetRate()
fungsi mengembalikan nilai tingkat default 1. Artinya, data yang terkait dengan mata uang yang ditampilkan saat ini (quoteCurrency) belum dikonversi.
Jika nilai nilai tukar telah ditetapkan menggunakanexchange.SetRate()
, misalnya,exchange.SetRate(7)
Kemudian semua informasi harga, seperti penawaran, kedalaman, dan harga pesanan yang diperoleh melaluiexchange
objek pertukaran akan dikonversi dengan mengalikan dengan nilai tukar yang ditetapkan7
Aku tidak tahu.
Jikaexchange
sesuai dengan pertukaran dengan USD sebagai mata uang denominasi, setelah panggilanexchange.SetRate(7)
, semua harga di pasar langsung akan dikonversi ke harga yang dekat dengan CNY dengan mengalikan7
Pada titik ini, nilai nilai tukar yang diperoleh dengan menggunakanexchange.GetRate()
adalah7
.
{@fun/Trade/exchange.SetRate exchange.SetRate}
Peraturanexchange.SetData()
Fungsi digunakan untuk mengatur data yang dimuat saat strategi berjalan.
Panjang string setelah parametervalue
Kode JSON.
Nomor
exchange.SetData ((kunci, nilai)
Nama pengumpulan data.
kunci
benar
string
Data yang akan dimuat olehexchange.SetData()
Struktur data adalah sama dengan format data yang diminta olehexchange.GetData()
fungsi saat meminta data eksternal, yaitu:"schema": ["time", "data"]
Aku tidak tahu.
nilai
benar
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);
}
}
Hal ini mengharuskan bahwa data untuk parametervalue
harus dalam format yang sama dengandata
Anda dapat melihat bahwa timestamp1579622400000
sesuai dengan waktu2020-01-22 00:00:00
, dan bahwa ketika program strategi dijalankan setelah waktu ini, memanggilexchange.GetData()
fungsi untuk mendapatkan data sebelum data timestamp berikutnya1579708800000
, yaitu, waktu2020-01-23 00:00:00
Apa yang kau dapatkan adalah[1579622400000, 123]
isi data tersebut, saat program terus berjalan, waktu berubah, dan sebagainya untuk mendapatkan item data secara item. dalam contoh berikut, pada saat runtime (backtesting atau live trading), momen saat ini mencapai atau melebihi timestamp1579795200000
, yangexchange.GetData()
fungsi dipanggil dan nilai balik adalah:{"Time":1579795200000,"Data":["abc", 123,{"price":123}]}
. "Time":1579795200000
sesuai dengan1579795200000
dalam data[1579795200000, ["abc", 123, {"price": 123}]]
. "Data":["abc", 123, {"price": 123}]
sesuai dengan data["abc", 123, {"price": 123}]]
dalam[1579795200000, ["abc", 123, {"price": 123}]]
.
Data yang dimuat dapat berupa indikator ekonomi, data industri, indikator yang relevan, dll, yang digunakan untuk penilaian kuantitatif strategi dari semua informasi yang dapat diukur.
{@fun/Market/exchange.GetData exchange.GetData}
Peraturanexchange.GetData()
fungsi digunakan untuk mendapatkan data dimuat olehexchange.SetData()
fungsi atau disediakan oleh tautan eksternal.
Catatan dalam pengumpulan data. objek
exchange.GetData (kunci) pertukaran.GetData (kunci, waktu habis)
Nama pengumpulan data. kunci benar string Digunakan untuk mengatur cache timeout dalam milidetik. Default ke satu menit cache timeout untuk perdagangan hidup. timeout palsu nomor
/*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 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);
}
}
Ini mendukung untuk meminta data melalui tautan eksternal, 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 catatan dalam tubuh data yang dimuat, yang ditetapkan pada["time", "data"]
yang sesuai dengan format data entri per entri dalamdata
atribut.
Apa yang disimpan didata
atribut adalah tubuh data, dengan setiap entri yang terdiri dari timestamp tingkat milidetik dan isi data (yang bisa menjadi data yang dapat dienkode JSON).
Program layanan untuk pengujian, 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 tanggapan program pada saat menerima permintaan:
{
"schema":["time","data"],
"data":[
[1579536000000, "abc"],
[1579622400000, 123],
[1579708800000, {"price": 123}],
[1579795200000, ["abc", 123, {"price": 123}]]
]
}
Kode strategi uji:
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"));
}
Metode panggilan untuk mendapatkan data dari tautan eksternal.
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 kueri yang dibuat di platformdata data, meminta bahwa format data jawaban adalah (harus memiliki waktu, bidang data yang dijelaskan dalam skema):
{
"data": [],
"schema": ["time", "data"]
}
Bidang exchange.GetData()
fungsi dipanggil, objek JSON dikembalikan, misalnya:{"Time":1579795200000, "Data":"..."}
.
Dapatkan data sekaligus untuk backtesting dan cache satu menit data untuk perdagangan langsung. dalam sistem backtesting, ketika meminta data menggunakan antarmuka akses, sistem backtesting secara otomatis menambahkanfrom
(dicap waktu dalam detik),to
(timestamped dalam detik) untuk permintaan, parameter sepertiperiod
(periode garis K yang mendasari, bertanda waktu dalam milidetik) digunakan untuk menentukan kerangka waktu di mana data akan diperoleh.
{@fun/Market/exchange.SetData exchange.SetData}
Peraturanexchange.GetMarkets()
fungsi digunakan untuk mendapatkan informasi pasar pertukaran.
Kamus yang berisi 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 ke obyek bursa berjangka:
/*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 obyek pertukaran berjangka untuk memanggilexchange.GetMarkets()
fungsi dalam sistem backtesting. Sebelum memanggil fungsi pasar manapun, GetMarkets hanya mengembalikan data pasar dari pasangan perdagangan default saat ini. Setelah memanggil fungsi pasar, ia mengembalikan data pasar dari semua varietas yang diminta. Anda dapat merujuk pada contoh uji berikut:
Peraturanexchange.GetMarkets()
fungsi mengembalikan kamus dengan kunci bernama nama varietas perdagangan, dan untuk spot fix yang diformat sebagai pasangan perdagangan, misalnya:
{
"BTC_USDT" : {...}, // The key value is the Market structure
"LTC_USDT" : {...},
...
}
Untuk bursa kontrak berjangka, karena mungkin ada beberapa kontrak untuk varietas yang sama, misalnyaBTC_USDT
perdagangan pasangan, ada kontrak abadi, kontrak triwulanan, dan sebagainya.exchange.GetMarkets()
fungsi mengembalikan kamus dengan nama kunci pasangan dikombinasikan dengan kode kontrak, misalnya:
{
"BTC_USDT.swap" : {...}, // The key value is the Market structure
"BTC_USDT.quarter" : {...},
"LTC_USDT.swap" : {...},
...
}
exchange.GetMarkets()
Fungsi mendukung perdagangan langsung, sistem backtesting.exchange.GetMarkets()
fungsi mengembalikan informasi pasar hanya untuk varietas yang diperdagangkan secara online di bursa.exchange.GetMarkets()
fungsi tidak mendukung kontrak opsi.Bursa yang tidak mendukungexchange.GetMarkets()
Fungsi:
Nama Fungsi | Pertukaran Spot yang tidak didukung | Pertukaran Futures Tanpa Dukungan |
---|---|---|
GetMarkets | Coincheck / Bithumb / BitFlyer | – |
{@struct/Pasar Pasar}
Peraturanexchange.GetTickers()
Fungsi ini digunakan untuk mendapatkan data ticker agregat pertukaran (saringan struktur {@struct/Ticker Ticker}).exchange
Mengembalikan data ticker untuk semua pasangan perdagangan ketika itu adalah objek pertukaran spot;exchange
Mengembalikan data ticker untuk semua kontrak ketika itu adalah obyek pertukaran berjangka.
Peraturanexchange.GetTickers()
fungsi mengembalikan array struktur {@struct/Ticker Ticker} ketika berhasil meminta data, dan null ketika gagal.
{@struct/Ticker Ticker} array, nilai nol
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 memperoleh data pasar 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 spot exchange objek dan memanggilexchange.GetTickers()
fungsi dalam sistem backtest. Sebelum memanggil fungsi pasar manapun, GetTickers hanya mengembalikan data ticker dari pasangan perdagangan default saat ini. Setelah memanggil fungsi pasar, ia mengembalikan data ticker dari semua varietas yang diminta. Anda dapat merujuk pada contoh uji berikut:
Bursa yang tidak mendukungexchange.GetTickers()
Fungsi:
Nama Fungsi | Pertukaran Spot yang tidak didukung | Pertukaran Futures Tanpa Dukungan |
---|---|---|
GetTickers | Zaif / WOO / Gemini / Coincheck / BitFlyer / Bibox | Futures_WOO / Futures_dYdX / Futures_Deribit / Futures_Bibox / Futures_Aevo |
{@struct/Ticker Ticker}, {@fun/Market/exchange.GetTicker exchange.GetTicker}
Peraturanexchange.Buy()
Fungsi ini digunakan untuk menempatkan pesanan beli.Buy()
fungsi adalah anggota fungsi dari exchange object {@var/EXCHANGE exchange}.Buy()
fungsi beroperasi pada rekening pertukaran yang terikat pada objek pertukaranexchange
Tujuan dari fungsi anggota (metode) dariexchange
objek hanya terkait denganexchange
, dan tidak akan diulang setelah dokumentasi.
Perintah yang berhasil mengembalikan ID pesanan, perintah yang gagal mengembalikan nilai nol.
AtributnyaId
struktur order {@struct/Order Order} dari platform FMZ terdiri dari kode produk pertukaran dan ID pesanan asli pertukaran, dipisahkan oleh koma bahasa Inggris.Id
format pasangan perdagangan spotETH_USDT
urutan pertukaran OKX adalah:ETH-USDT,1547130415509278720
Aku tidak tahu.
Saat meneleponexchange.Buy()
fungsi untuk menempatkan pesanan, nilai kembali pesananId
adalah konsisten denganId
atribut dari struktur order {@struct/Order Order}.
string, nilai nol
pertukaran.Membeli ((harga, jumlah) pertukaran.Beli ((harga, jumlah,... args)
Peraturanprice
Parameter digunakan untuk mengatur harga pesanan.
harga
benar
Nomor
Peraturanamount
Parameter digunakan untuk mengatur jumlah pesanan.
jumlah
benar
nomor
Parameter yang diperluas yang dapat menghasilkan informasi yang menyertainya ke log pesanan ini,arg
parameter dapat dilewati lebih dari satu.
arg
palsu
string, number, bool, object, array, null dan jenis lain yang didukung oleh sistem
function main() {
var id = exchange.Buy(100, 1);
Log("id:", id);
}
def main():
id = exchange.Buy(100, 1)
Log("id:", id)
void main() {
auto id = exchange.Buy(100, 1);
Log("id:", id);
}
Nomor urutan yang dikembalikan olehexchange.Buy()
dapat digunakan untuk menanyakan informasi pesanan dan membatalkan pesanan.
// The following is an error call
function main() {
exchange.SetContractType("quarter")
// Set the shorting direction
exchange.SetDirection("sell")
// If you place a buy order, an error will be reported, and shorting can only be sold
var id = exchange.Buy(50, 1)
// Set the long direction
exchange.SetDirection("buy")
// If you place a sell order, it will report an error, go long, only buy
var id2 = exchange.Sell(60, 1)
// Set direction to close long positions
exchange.SetDirection("closebuy")
// If you place a buy order, it will report an error, close long, only sell
var id3 = exchange.Buy(-1, 1)
// Set direction to close short positions
exchange.SetDirection("closesell")
// If you place a sell order, it will report an error, close short, only buy
var id4 = exchange.Sell(-1, 1)
}
# The following is an error call
def main():
exchange.SetContractType("quarter")
exchange.SetDirection("sell")
id = exchange.Buy(50, 1)
exchange.SetDirection("buy")
id2 = exchange.Sell(60, 1)
exchange.SetDirection("closebuy")
id3 = exchange.Buy(-1, 1)
exchange.SetDirection("closesell")
id4 = exchange.Sell(-1, 1)
// The following is an error call
void main() {
exchange.SetContractType("quarter");
exchange.SetDirection("sell");
auto id = exchange.Buy(50, 1);
exchange.SetDirection("buy");
auto id2 = exchange.Sell(60, 1);
exchange.SetDirection("closebuy");
auto id3 = exchange.Buy(-1, 1);
exchange.SetDirection("closesell");
auto id4 = exchange.Sell(-1, 1);
}
Ketika menempatkan pesanan untuk kontrak berjangka cryptocurrency, perhatian harus diambil untuk memastikan bahwa arah perdagangan ditetapkan dengan benar, karena ketidakcocokan antara arah perdagangan dan fungsi perdagangan akan menghasilkan kesalahan:
direction is sell, invalid order type Buy
direction is buy, invalid order type Sell
direction is closebuy, invalid order type Buy
direction is closesell, invalid order type Sell
// For example, the trading pair: ETH_BTC, place a buy order at the market price
function main() {
// Place a buy order at the market price and buy ETH coins with a value of 0.1 BTC (denominated currency)
exchange.Buy(-1, 0.1)
}
def main():
exchange.Buy(-1, 0.1)
void main() {
exchange.Buy(-1, 0.1);
}
Perintah pasar spot.
Saat menempatkan pesanan untuk kontrak berjangka, Anda harus memperhatikan apakah arah perdagangan ditetapkan dengan benar, karena kesalahan akan dilaporkan jika arah perdagangan dan fungsi perdagangan tidak cocok.
Parameterprice
diatur untuk-1
untuk menempatkan pesanan pasar, yang membutuhkan antarmuka penempatan pesanan bursa untuk mendukung pesanan pasar.amount
adalah jumlah uang dalam mata uang pesanan. Ketika menempatkan pesanan pasar untuk kontrak berjangka cryptocurrency, parameter jumlahamount
adalah jumlah kontrak. Ada beberapa bursa cryptocurrency yang tidak mendukung antarmuka pesanan pasar selama perdagangan langsung. Jumlah pesanan untuk pesanan beli pasar di beberapa bursa spot adalah jumlah koin perdagangan. Silakan lihatInstruksi Khusus untuk PertukaranId
dariexchange.Buy()
fungsi mungkin berbeda dari nilai kembali dari pesananId
dijelaskan dalam dokumen ini.
{@fun/Trade/exchange.Sell exchange.Sell}, {@fun/Futures/exchange.SetContractType exchange.SetContractType}, {@fun/Futures/exchange.SetDirection exchange.SetDirection}
Peraturanexchange.Sell()
fungsi digunakan untuk menempatkan pesanan jual.
Perintah yang berhasil mengembalikan order Id, perintah yang gagal mengembalikan nilai nol.Id
struktur order {@struct/Order Order} dari platform FMZ terdiri dari kode produk pertukaran dan ID pesanan asli pertukaran, dipisahkan oleh koma bahasa Inggris.Id
format pasangan perdagangan spotETH_USDT
urutan pertukaran OKX adalah:ETH-USDT,1547130415509278720
. Ketika memanggilexchange.Sell()
fungsi untuk menempatkan pesanan, nilai kembali pesananId
adalah konsisten denganId
atribut dari struktur order {@struct/Order Order}.
string, nilai nol
pertukaran.Menjual ((harga, jumlah) pertukaran.Menjual ((harga, jumlah,... args)
Peraturanprice
Parameter digunakan untuk mengatur harga pesanan.
harga
benar
Nomor
Peraturanamount
Parameter digunakan untuk mengatur jumlah pesanan.
jumlah
benar
nomor
Parameter yang diperluas yang dapat menghasilkan informasi yang menyertainya ke log pesanan ini,arg
parameter dapat dilewati lebih dari satu.
arg
palsu
string, number, bool, object, array, null dan jenis lain yang didukung oleh sistem
function main(){
var id = exchange.Sell(100, 1)
Log("id:", id)
}
def main():
id = exchange.Sell(100, 1)
Log("id:", id)
void main() {
auto id = exchange.Sell(100, 1);
Log("id:", id);
}
Nomor urutan yang dikembalikan olehexchange.Sell()
dapat digunakan untuk menanyakan informasi pesanan dan membatalkan pesanan.
// The following is an error call
function main() {
exchange.SetContractType("quarter")
// Set the shorting direction
exchange.SetDirection("sell")
// If you place a buy order, an error will be reported, and shorting can only be sold
var id = exchange.Buy(50, 1)
// Set the long direction
exchange.SetDirection("buy")
// If you place a sell order, it will report an error, go long, only buy
var id2 = exchange.Sell(60, 1)
// Set direction to close long positions
exchange.SetDirection("closebuy")
// If you place a buy order, it will report an error, close long, only sell
var id3 = exchange.Buy(-1, 1)
// Set direction to close short positions
exchange.SetDirection("closesell")
// If you place a sell order, it will report an error, close short, only buy
var id4 = exchange.Sell(-1, 1)
}
# The following is an error call
def main():
exchange.SetContractType("quarter")
exchange.SetDirection("sell")
id = exchange.Buy(50, 1)
exchange.SetDirection("buy")
id2 = exchange.Sell(60, 1)
exchange.SetDirection("closebuy")
id3 = exchange.Buy(-1, 1)
exchange.SetDirection("closesell")
id4 = exchange.Sell(-1, 1)
// The following is an error call
void main() {
exchange.SetContractType("quarter");
exchange.SetDirection("sell");
auto id = exchange.Buy(50, 1);
exchange.SetDirection("buy");
auto id2 = exchange.Sell(60, 1);
exchange.SetDirection("closebuy");
auto id3 = exchange.Buy(-1, 1);
exchange.SetDirection("closesell");
auto id4 = exchange.Sell(-1, 1);
}
Ketika menempatkan pesanan untuk kontrak berjangka cryptocurrency, perhatian harus diambil untuk memastikan bahwa arah perdagangan ditetapkan dengan benar, karena ketidakcocokan antara arah perdagangan dan fungsi perdagangan akan menghasilkan kesalahan:
direction is sell, invalid order type Buy
direction is buy, invalid order type Sell
direction is closebuy, invalid order type Buy
direction is closesell, invalid order type Sell
// For example, the trading pair: ETH_BTC, place a sell order at the market price
function main() {
// Note: place a market order to sell, sell 0.2 ETH
exchange.Sell(-1, 0.2)
}
def main():
exchange.Sell(-1, 0.2)
void main() {
exchange.Sell(-1, 0.2);
}
Perintah pasar spot.
Saat menempatkan pesanan untuk kontrak berjangka, Anda harus memperhatikan apakah arah perdagangan ditetapkan dengan benar, karena kesalahan akan dilaporkan jika arah perdagangan dan fungsi perdagangan tidak cocok.
Parameterprice
diatur untuk-1
untuk menempatkan pesanan pasar, yang membutuhkan antarmuka penempatan pesanan bursa untuk mendukung pesanan pasar.amount
adalah jumlah dalam mata uang perdagangan. Ketika menempatkan pesanan pasar untuk kontrak berjangka cryptocurrency, parameter jumlahamount
Ada beberapa pertukaran cryptocurrency yang tidak mendukung antarmuka pesanan pasar selama perdagangan langsung.
Jika Anda menggunakan versi lama dari docker, nilai kembali dari perintahId
dariexchange.Sell()
fungsi mungkin berbeda dari nilai kembali dari pesananId
dijelaskan dalam dokumen ini.
{@fun/Trade/exchange.Buy exchange.Buy}, {@fun/Futures/exchange.SetContractType exchange.SetContractType}, {@fun/Futures/exchange.SetDirection exchange.SetDirection}
Peraturanexchange.CreateOrder()
fungsi digunakan untuk menempatkan pesanan.
Jika pesanan berhasil ditempatkan, ID pesanan dikembalikan; jika pesanan gagal, nilai nol dikembalikan.Id
struktur order {@struct/Order Order} dari platform FMZ terdiri dari kode produk pertukaran dan ID pesanan asli pertukaran, dipisahkan oleh koma bahasa Inggris.Id
format pesanan dari pasangan perdagangan spotETH_USDT
dari bursa OKX adalah:ETH-USDT,1547130415509278720
. Ketika memanggilexchange.CreateOrder(symbol, side, price, amount)
fungsi untuk menempatkan pesanan, nilai yang dikembalikan dari pesananId
adalah konsisten denganId
properti dari struktur order {@struct/Order Order}.
string, nilai nol
exchange.CreateOrder ((simbol, sisi, harga, jumlah) exchange.CreateOrder ((simbol, sisi, harga, jumlah,... args)
Parametersymbol
digunakan untuk menentukan pasangan perdagangan tertentu dan kode kontrak pesanan.exchange.CreateOrder(symbol, side, price, amount)
fungsi untuk menempatkan pesanan,exchange
adalah objek pertukaran spot. Jika mata uang pesanan adalah USDT dan mata uang perdagangan adalah BTC, parametersymbol
adalah:"BTC_USDT"
, dalam format pasangan perdagangan yang didefinisikan oleh platform FMZ.exchange.CreateOrder(symbol, side, price, amount)
fungsi untuk menempatkan pesanan,exchange
adalah objek pertukaran berjangka. Jika pesanan adalah pesanan kontrak abadi standar BTCsymbol
adalah:"BTC_USDT.swap"
, dan formatnya adalah kombinasi daripasangan perdagangandankode kontrakdidefinisikan oleh platform FMZ, dipisahkan oleh karakter exchange.CreateOrder(symbol, side, price, amount)
fungsi untuk menempatkan pesanan,exchange
adalah objek pertukaran berjangka. Jika pesanan adalah pesanan kontrak opsi standar U BTCsymbol
adalah:"BTC_USDT.BTC-240108-40000-C"
(mengambil Binance Option BTC-240108-40000-C sebagai contoh), dan formatnya adalah kombinasi daripasangan perdagangandidefinisikan oleh platform FMZ dan kode kontrak opsi khusus yang didefinisikan oleh bursa, dipisahkan oleh karakter side
Parameter digunakan untuk menentukan arah perdagangan order.
Untuk obyek pertukaran spot, nilai opsional dariside
parameter adalah:buy
, sell
. buy
berarti membeli, dansell
berarti menjual.
Untuk obyek pertukaran berjangka, nilai opsional dariside
parameter adalah:buy
, closebuy
, sell
, closesell
. buy
berarti membuka posisi panjang,closebuy
berarti menutup posisi panjang,sell
berarti membuka posisi pendek, danclosesell
berarti menutup posisi pendek.
sisi
benar
string
Parameterprice
digunakan untuk menetapkan harga order. harga -1 menunjukkan bahwa order adalah order pasar.
harga
benar
nomor
Parameteramount
digunakan untuk menetapkan jumlah pesanan. Harap dicatat bahwa ketika pesanan adalah pesanan beli pasar, jumlah pesanan adalah jumlah pembelian; jumlah pesanan pesanan beli pasar beberapa bursa spot adalah jumlah koin perdagangan. Untuk rincian, silakan lihatInstruksi Khusus untuk Pertukarandalam arg
parameter dapat dilewati.
arg
palsu
Setiap jenis yang didukung oleh sistem, seperti string, nomor, bool, objek, array, nilai nol, dll.
function main() {
var id = exchange.CreateOrder("BTC_USDT", "buy", 60000, 0.01) // Spot exchange objects place orders for currency-to-currency transactions BTC_USDT trading pairs
// var id = exchange.CreateOrder("BTC_USDT.swap", "buy", 60000, 0.01) // Futures exchange objects place orders for BTC's U-standard perpetual contracts
Log("Order Id:", id)
}
def main():
id = exchange.CreateOrder("BTC_USDT", "buy", 60000, 0.01) # Spot exchange objects place orders for currency-to-currency transactions BTC_USDT trading pairs
# id = exchange.CreateOrder("BTC_USDT.swap", "buy", 60000, 0.01) # Futures exchange objects place orders for BTC's U-standard perpetual contracts
Log("Order Id:", id)
void main() {
auto id = exchange.CreateOrder("BTC_USDT", "buy", 60000, 0.01); // Spot exchange objects place orders for currency-to-currency transactions BTC_USDT trading pairs
// auto id = exchange.CreateOrder("BTC_USDT.swap", "buy", 60000, 0.01); // Futures exchange objects place orders for BTC's U-standard perpetual contracts
Log("Order Id:", id);
}
Objek pertukaran spot dan obyek pertukaran futures disebutexchange.CreateOrder()
fungsi untuk menempatkan pesanan.
{@fun/Trade/exchange.Buy exchange.Buy}, {@fun/Trade/exchange.Sell exchange.Sell}
Peraturanexchange.CancelOrder()
fungsi digunakan untuk membatalkan pesanan.
AtributnyaId
struktur order {@struct/Order Order} dari platform FMZ terdiri dari kode produk pertukaran dan ID pesanan asli pertukaran, dipisahkan oleh koma bahasa Inggris.Id
format pesanan dari pasangan perdagangan spotETH_USDT
dari bursa OKX adalah:ETH-USDT,1547130415509278720
Aku tidak tahu.
ParameterorderId
melewati saat memanggilexchange.CancelOrder()
fungsi untuk membatalkan pesanan adalah konsisten denganId
properti dari struktur order {@struct/Order Order}.
Peraturanexchange.CancelOrder()
fungsi mengembalikan nilai benar, misalnyatrue
berarti bahwa permintaan order pembatalan telah dikirim dengan sukses. Jika mengembalikan nilai palsu, sepertifalse
, berarti bahwa permintaan order pembatalan gagal dikirim. Nilai yang dikembalikan hanya mewakili keberhasilan atau kegagalan permintaan yang dikirim untuk menentukan apakah bursa membatalkan pesanan. Anda dapat meneleponexchange.GetOrders()
untuk menentukan apakah perintah dibatalkan.
bool
Pertukaran. Batalkan Pesenan ((PesenanId) Pertukaran. Batalkan Pesenan ((PesenanId,... args)
PeraturanorderId
Parameter digunakan untuk menentukan order yang akan dibatalkan.
Perintah
benar
nomor, string
Parameter diperpanjang, Anda dapat keluarkan informasi yang terlampir ke log penarikan ini,arg
parameter dapat dilewati lebih dari satu.
arg
palsu
string, number, bool, object, array, null dan jenis lain yang didukung oleh sistem
function main(){
var id = exchange.Sell(99999, 1)
exchange.CancelOrder(id)
}
def main():
id = exchange.Sell(99999, 1)
exchange.CancelOrder(id)
void main() {
auto id = exchange.Sell(99999, 1);
exchange.CancelOrder(id);
}
Batalkan pesanan.
function main() {
if (exchange.GetName().includes("Futures_")) {
Log("Set the contract as: perpetual contract, set the trade direction as: open long position.")
exchange.SetContractType("swap")
exchange.SetDirection("buy")
}
var ticker = exchange.GetTicker()
exchange.Buy(ticker.Last * 0.5, 0.1)
var orders = exchange.GetOrders()
for (var i = 0 ; i < orders.length ; i++) {
exchange.CancelOrder(orders[i].Id, "Cancelled orders:", orders[i])
Sleep(500)
}
}
def main():
if exchange.GetName().find("Futures_") != -1:
Log("Set the contract as: perpetual contract, set the trade direction as: open long position.")
exchange.SetContractType("swap")
exchange.SetDirection("buy")
ticker = exchange.GetTicker()
exchange.Buy(ticker["Last"] * 0.5, 0.1)
orders = exchange.GetOrders()
for i in range(len(orders)):
exchange.CancelOrder(orders[i]["Id"], "Cancelled orders:", orders[i])
Sleep(500)
void main() {
if (exchange.GetName().find("Futures_") != std::string::npos) {
Log("Set the contract as: perpetual contract, set the trade direction as: open long position.");
exchange.SetContractType("swap");
exchange.SetDirection("buy");
}
auto ticker = exchange.GetTicker();
exchange.Buy(ticker.Last * 0.5, 0.1);
auto orders = exchange.GetOrders();
for (int i = 0 ; i < orders.size() ; i++) {
exchange.CancelOrder(orders[i].Id, "Cancelled orders:", orders[i]);
Sleep(500);
}
}
Fungsi FMZ API yang dapat menghasilkan fungsi log output seperti:Log()
, exchange.Buy()
, exchange.CancelOrder()
dapat diikuti oleh beberapa parameter output yang menyertainya setelah parameter yang diperlukan.exchange.CancelOrder(orders[i].Id, orders[i])
, sehingga ketika membatalkan pesanan yang Id adalahorders[i].Id
, informasi orderorders[i]
.
Jika Anda menggunakan versi yang lebih tua dari docker, parameter orderId dari fungsi exchange.CancelOrder() mungkin berbeda dari orderId yang dijelaskan dalam dokumen saat ini.
{@fun/Trade/exchange.Buy exchange.Buy}, {@fun/Trade/exchange.Sell exchange.Sell}, {@fun/Trade/exchange.GetOrders exchange.GetOrders}
Peraturanexchange.GetOrder()
fungsi digunakan untuk mendapatkan informasi pesanan.
Menanyakan detail urutan sesuai dengan nomor urutan, dan mengembalikan struktur {@struct/Order Order} jika permintaan berhasil, atau mengembalikan null jika permintaan gagal. {@struct/Order Order}, nilai nol
tukar.GetOrder (OrderId)
PeraturanorderId
Parameter digunakan untuk menentukan urutan yang akan ditanyakan.
AtributnyaId
struktur order {@struct/Order Order} dari platform FMZ terdiri dari kode produk pertukaran dan ID pesanan asli pertukaran, dipisahkan oleh koma bahasa Inggris.Id
format pesanan dari pasangan perdagangan spotETH_USDT
dari bursa OKX adalah:ETH-USDT,1547130415509278720
Aku tidak tahu.
ParameterorderId
melewati saat memanggilexchange.GetOrder()
fungsi untuk menanyakan perintah adalah konsisten denganId
properti dari struktur order {@struct/Order Order}.
Perintah benar string
function main(){
var id = exchange.Sell(1000, 1)
// Parameter id is the order number, you need to fill in the number of the order you want to query
var order = exchange.GetOrder(id)
Log("Id:", order.Id, "Price:", order.Price, "Amount:", order.Amount, "DealAmount:",
order.DealAmount, "Status:", order.Status, "Type:", order.Type)
}
def main():
id = exchange.Sell(1000, 1)
order = exchange.GetOrder(id)
Log("Id:", order["Id"], "Price:", order["Price"], "Amount:", order["Amount"], "DealAmount:",
order["DealAmount"], "Status:", order["Status"], "Type:", order["Type"])
void main() {
auto id = exchange.Sell(1000, 1);
auto order = exchange.GetOrder(id);
Log("Id:", order.Id, "Price:", order.Price, "Amount:", order.Amount, "DealAmount:",
order.DealAmount, "Status:", order.Status, "Type:", order.Type);
}
Peraturanexchange.GetOrder()
Fungsi ini tidak didukung oleh beberapa pertukaran.AvgPrice
Atribut dalam struktur {@struct/Order Order} dari nilai pengembalian adalah harga rata-rata transaksi. Beberapa bursa tidak mendukung bidang ini, dan jika tidak, ditetapkan menjadi 0.
Jika Anda menggunakan versi lama dari docker,orderId
parameter dariexchange.GetOrder()
fungsi dapat berbeda dariorderId
dijelaskan dalam dokumentasi saat ini.
Bursa yang tidak mendukungexchange.GetOrder()
Fungsi:
Nama Fungsi | Pertukaran Spot yang tidak didukung | Pertukaran Futures Tanpa Dukungan |
---|---|---|
GetOrder | Zaif / Coincheck / Bitstamp | – |
{@struct/Order Order}, {@fun/Trade/exchange.GetOrders exchange.GetOrders}, {@fun/Trade/exchange.GetHistoryOrders exchange.GetHistoryOrders}
Peraturanexchange.GetOrders()
Fungsi digunakan untuk mendapatkan pesanan yang belum selesai.
Peraturanexchange.GetOrders()
fungsi mengembalikan array struktur {@struct/Order Order} jika permintaan data berhasil, dan mengembalikan nilai nol jika permintaan data gagal.
{@struct/Order Order} array, nilai nol
pertukaran.GetOrders ((() exchange.GetOrders (simbol)
Parametersymbol
digunakan untuk mengaturSimbol transaksiataurentang simbol transaksiuntuk diinterogasi.
Untuk obyek pertukaran spot, jikasymbol
parameter tidak dilewati, data pesanan yang belum selesai dari semua produk spot akan diminta.
Untuk obyek pertukaran futures, jikasymbol
parameter tidak diteruskan, default adalah untuk meminta data order yang belum selesai dari semua varietas dalam kisaran dimensi pasangan perdagangan saat ini dan kode kontrak.
lambang palsu string
/*backtest
start: 2024-05-21 00:00:00
end: 2024-09-05 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/
function main() {
var arrSymbol = ["ETH_USDT", "BTC_USDT", "LTC_USDT", "SOL_USDT"]
for (var symbol of arrSymbol) {
var t = exchange.GetTicker(symbol)
exchange.CreateOrder(symbol, "buy", t.Last / 2, 0.01)
}
var spotOrders = exchange.GetOrders()
var tbls = []
for (var orders of [spotOrders]) {
var tbl = {type: "table", title: "test GetOrders", cols: ["Symbol", "Id", "Price", "Amount", "DealAmount", "AvgPrice", "Status", "Type", "Offset", "ContractType"], rows: []}
for (var order of orders) {
tbl.rows.push([order.Symbol, order.Id, order.Price, order.Amount, order.DealAmount, order.AvgPrice, order.Status, order.Type, order.Offset, order.ContractType])
}
tbls.push(tbl)
}
LogStatus("`" + JSON.stringify(tbls) + "`")
// Print out the information once and then return to prevent the order from being executed during the subsequent backtest and affecting data observation
return
}
'''backtest
start: 2024-05-21 00:00:00
end: 2024-09-05 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
'''
import json
def main():
arrSymbol = ["ETH_USDT", "BTC_USDT", "LTC_USDT", "SOL_USDT"]
for symbol in arrSymbol:
t = exchange.GetTicker(symbol)
exchange.CreateOrder(symbol, "buy", t["Last"] / 2, 0.01)
spotOrders = exchange.GetOrders()
tbls = []
for orders in [spotOrders]:
tbl = {"type": "table", "title": "test GetOrders", "cols": ["Symbol", "Id", "Price", "Amount", "DealAmount", "AvgPrice", "Status", "Type", "Offset", "ContractType"], "rows": []}
for order in orders:
tbl["rows"].append([order.Symbol, order.Id, order.Price, order.Amount, order.DealAmount, order.AvgPrice, order.Status, order.Type, order.Offset, order.ContractType])
tbls.append(tbl)
LogStatus("`" + json.dumps(tbls) + "`")
return
/*backtest
start: 2024-05-21 00:00:00
end: 2024-09-05 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/
void main() {
auto arrSymbol = {"ETH_USDT", "BTC_USDT", "LTC_USDT", "SOL_USDT"};
for (const auto& symbol : arrSymbol) {
auto t = exchange.GetTicker(symbol);
exchange.CreateOrder(symbol, "buy", t.Last / 2, 0.01);
}
auto spotOrders = exchange.GetOrders();
json tbls = R"([])"_json;
std::vector<std::vector<Order>> arr = {spotOrders};
for (const auto& orders : arr) {
json tbl = R"({
"type": "table",
"title": "test GetOrders",
"cols": ["Symbol", "Id", "Price", "Amount", "DealAmount", "AvgPrice", "Status", "Type", "Offset", "ContractType"],
"rows": []
})"_json;
for (const auto& order : orders) {
json arrJson = R"([])"_json;
arrJson.push_back("Symbol");
arrJson.push_back("Id");
arrJson.push_back(order.Price);
arrJson.push_back(order.Amount);
arrJson.push_back(order.DealAmount);
arrJson.push_back(order.AvgPrice);
arrJson.push_back(order.Status);
arrJson.push_back(order.Type);
arrJson.push_back(order.Offset);
arrJson.push_back(order.ContractType);
tbl["rows"].push_back(arrJson);
}
tbls.push_back(tbl);
}
LogStatus(_D(), "\n", "`" + tbls.dump() + "`");
return;
}
Gunakan objek pertukaran spot untuk menempatkan pesanan beli untuk beberapa pasangan perdagangan yang berbeda pada setengah harga saat ini, dan kemudian menanyakan informasi pesanan yang belum selesai.
/*backtest
start: 2024-05-21 00:00:00
end: 2024-09-05 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
function main() {
var arrSymbol = ["BTC_USDT.swap", "BTC_USDT.quarter", "ETH_USDT.swap", "ETH_USDT.quarter"]
for (var symbol of arrSymbol) {
var t = exchange.GetTicker(symbol)
exchange.CreateOrder(symbol, "buy", t.Last / 2, 1)
exchange.CreateOrder(symbol, "sell", t.Last * 2, 1)
}
var defaultOrders = exchange.GetOrders()
var swapOrders = exchange.GetOrders("USDT.swap")
var futuresOrders = exchange.GetOrders("USDT.futures")
var btcUsdtSwapOrders = exchange.GetOrders("BTC_USDT.swap")
var tbls = []
var arr = [defaultOrders, swapOrders, futuresOrders, btcUsdtSwapOrders]
var tblDesc = ["defaultOrders", "swapOrders", "futuresOrders", "btcUsdtSwapOrders"]
for (var index in arr) {
var orders = arr[index]
var tbl = {type: "table", title: tblDesc[index], cols: ["Symbol", "Id", "Price", "Amount", "DealAmount", "AvgPrice", "Status", "Type", "Offset", "ContractType"], rows: []}
for (var order of orders) {
tbl.rows.push([order.Symbol, order.Id, order.Price, order.Amount, order.DealAmount, order.AvgPrice, order.Status, order.Type, order.Offset, order.ContractType])
}
tbls.push(tbl)
}
LogStatus("`" + JSON.stringify(tbls) + "`")
// Print out the information once and then return to prevent the order from being executed during the subsequent backtest and affecting data observation
return
}
'''backtest
start: 2024-05-21 00:00:00
end: 2024-09-05 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
'''
import json
def main():
arrSymbol = ["BTC_USDT.swap", "BTC_USDT.quarter", "ETH_USDT.swap", "ETH_USDT.quarter"]
for symbol in arrSymbol:
t = exchange.GetTicker(symbol)
exchange.CreateOrder(symbol, "buy", t["Last"] / 2, 1)
exchange.CreateOrder(symbol, "sell", t["Last"] * 2, 1)
defaultOrders = exchange.GetOrders()
swapOrders = exchange.GetOrders("USDT.swap")
futuresOrders = exchange.GetOrders("USDT.futures")
btcUsdtSwapOrders = exchange.GetOrders("BTC_USDT.swap")
tbls = []
arr = [defaultOrders, swapOrders, futuresOrders, btcUsdtSwapOrders]
tblDesc = ["defaultOrders", "swapOrders", "futuresOrders", "btcUsdtSwapOrders"]
for index in range(len(arr)):
orders = arr[index]
tbl = {"type": "table", "title": tblDesc[index], "cols": ["Symbol", "Id", "Price", "Amount", "DealAmount", "AvgPrice", "Status", "Type", "Offset", "ContractType"], "rows": []}
for order in orders:
tbl["rows"].append([order["Symbol"], order["Id"], order["Price"], order["Amount"], order["DealAmount"], order["AvgPrice"], order["Status"], order["Type"], order["Offset"], order["ContractType"]])
tbls.append(tbl)
LogStatus("`" + json.dumps(tbls) + "`")
return
/*backtest
start: 2024-05-21 00:00:00
end: 2024-09-05 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
void main() {
auto arrSymbol = {"BTC_USDT.swap", "BTC_USDT.quarter", "ETH_USDT.swap", "ETH_USDT.quarter"};
for (const auto& symbol : arrSymbol) {
auto t = exchange.GetTicker(symbol);
exchange.CreateOrder(symbol, "buy", t.Last / 2, 1);
exchange.CreateOrder(symbol, "sell", t.Last * 2, 1);
}
auto defaultOrders = exchange.GetOrders();
auto swapOrders = exchange.GetOrders("USDT.swap");
auto futuresOrders = exchange.GetOrders("USDT.futures");
auto btcUsdtSwapOrders = exchange.GetOrders("BTC_USDT.swap");
json tbls = R"([])"_json;
std::vector<std::vector<Order>> arr = {defaultOrders, swapOrders, futuresOrders, btcUsdtSwapOrders};
std::string tblDesc[] = {"defaultOrders", "swapOrders", "futuresOrders", "btcUsdtSwapOrders"};
for (int index = 0; index < arr.size(); index++) {
auto orders = arr[index];
json tbl = R"({
"type": "table",
"cols": ["Symbol", "Id", "Price", "Amount", "DealAmount", "AvgPrice", "Status", "Type", "Offset", "ContractType"],
"rows": []
})"_json;
tbl["title"] = tblDesc[index];
for (const auto& order : orders) {
json arrJson = R"([])"_json;
arrJson.push_back(order.Symbol);
arrJson.push_back(to_string(order.Id)); // The Id attribute type in the Order structure is TId, which is encoded using a C++ function to_string built into the FMZ platform.
arrJson.push_back(order.Price);
arrJson.push_back(order.Amount);
arrJson.push_back(order.DealAmount);
arrJson.push_back(order.AvgPrice);
arrJson.push_back(order.Status);
arrJson.push_back(order.Type);
arrJson.push_back(order.Offset);
arrJson.push_back(order.ContractType);
tbl["rows"].push_back(arrJson);
}
tbls.push_back(tbl);
}
LogStatus(_D(), "\n", "`" + tbls.dump() + "`");
return;
}
Menggunakan objek pertukaran berjangka untuk menempatkan pesanan untuk beberapa pasangan perdagangan yang berbeda dan kode kontrak. Tempatkan pesanan dengan harga yang jauh dari harga mitra, simpan pesanan dalam keadaan yang belum terpenuhi, dan kueri pesanan dengan berbagai cara.
function main() {
var orders = exchange.GetOrders("BTC_USDT") // Examples of spot products
// var orders = exchange.GetOrders("BTC_USDT.swap") // Examples of futures products
Log("orders:", orders)
}
def main():
orders = exchange.GetOrders("BTC_USDT") # Examples of spot products
# orders = exchange.GetOrders("BTC_USDT.swap") # Examples of futures products
Log("orders:", orders)
void main() {
auto orders = exchange.GetOrders("BTC_USDT"); // Examples of spot products
// auto orders = exchange.GetOrders("BTC_USDT.swap"); // Examples of futures products
Log("orders:", orders);
}
Saat meneleponexchange.GetOrders()
fungsi, lulus diSymbol
parameter untuk meminta data order untuk pasangan perdagangan tertentu dan kode kontrak.
DalamGetOrders
fungsi, skenario penggunaan parameter simbol diringkas sebagai berikut:
Klasifikasi Objek Exchange | simbol Parameter | Ruang lingkup kueri | Pernyataan |
---|---|---|---|
Tempat | Jangan lulus parameter simbol | Pertanyaan semua pasangan perdagangan spot | Untuk semua skenario panggilan, jika antarmuka pertukaran tidak mendukungnya, kesalahan akan dilaporkan dan nilai nol akan dikembalikan. |
Tempat | Tentukan jenis perdagangan, parameter simbol adalah: |
Menanyakan pasangan perdagangan BTC_USDT yang ditentukan | Untuk objek pertukaran spot, format parameter simbol adalah: |
Masa Depan | Jangan lulus parameter simbol | Mencari semua produk perdagangan dalam kisaran dimensi pasangan perdagangan saat ini dan kode kontrak | Jika pasangan perdagangan saat ini adalah BTC_USDT dan kode kontraknya adalah swap, semua kontrak abadi dengan margin USDT akan ditanyakan.GetOrders("USDT.swap") |
Masa Depan | Tentukan jenis perdagangan, parameter simbol adalah: |
Mencari kontrak abadi berbasis USDT untuk BTC tertentu | Untuk obyek pertukaran berjangka, format simbol parameter adalah: kombinasi daripasangan perdagangandankode kontrakdidefinisikan oleh platform FMZ, dipisahkan oleh karakter". . |
Masa Depan | Tentukan rentang produk perdagangan, parameter simbol adalah: |
Mencari semua kontrak abadi berbasis USDT | - |
Bursa berjangka yang mendukung opsi | Jangan lulus parameter simbol | Mencari semua kontrak opsi dalam kisaran dimensi pasangan perdagangan saat ini | Jika pasangan perdagangan saat ini adalah BTC_USDT, kontrak ditetapkan sebagai kontrak opsi, misalnya, kontrak opsi Binance: BTC-240108-40000-C |
Bursa berjangka yang mendukung opsi | Tentukan produk perdagangan tertentu | Mencari kontrak opsi yang ditentukan | Misalnya, untuk Binance Futures Exchange, parameter simbol adalah: BTC_USDT.BTC-240108-40000-C |
Bursa berjangka yang mendukung opsi | Tentukan rentang produk perdagangan, parameter simbol adalah: |
Mencari semua kontrak opsi berbasis USDT | - |
DalamGetOrders
fungsi, permintaan objek bursa berjangka
kisaran dimensi diringkas sebagai berikut:
simbol Parameter | Definisi Jangkauan Permintaan | Pernyataan |
---|---|---|
USDT.swap | Rentang kontrak abadi berbasis USDT. | Untuk |
dimensi yang tidak didukung oleh antarmuka API pertukaran, kesalahan akan dilaporkan dan nilai nol akan dikembalikan ketika Menelpon. USDT.futures. USDT berbasis rentang kontrak pengiriman. {\cH00FFFF}$USD.swap {\cH00FFFF}Rentang mata uang berbasis abadi kontrak. {\cH00FFFF}USD.futures {\cH00FFFF}Rentang pengiriman berdasarkan mata uang kontrak. {\cH00FFFF}$USDT.option {\cH00FFFF}$USDT-based options contract range {\cH00FFFF}$USDT.option {\cH00FFFF}$USDT.option {\cH00FFFF}$USDT.option {\cH00FFFF}$USDT.option {\cH00FFFF}$USDT.option {\cH00FFFF}$USDT-based options contract range {\cH00FFFF}$USDT.option {\cH00FFFF}$USDT.option {\cH00FFFFFF}$USDT.option {\cH00FFFF}$USDT.option {\cH00FFFFFF}$USDT-based options contract range {\cH00FFFFFF}$USDT.option range. USD.option Rentang kontrak opsi berbasis mata uang. USDT.futures_combo Rentang kombinasi CFD. Futures_Deribit Exchange USD.futures_ff Rangkaian kontrak pengiriman margin campuran. Futures_Kraken Exchange {\cH00FFFF}$USD.swap_pf {\cH00FFFF}Rangkaian kontrak abadi margin campuran. ♫ Futures_Kraken Exchange ♫
Ketika akun yang diwakili oleh objek pertukaranexchange
tidak memiliki perintah yang menunggu dalamrentang kueriatauInstrumen perdagangan tertentu(perintah aktif dalam keadaan tidak terpenuhi), memanggil fungsi ini mengembalikan array kosong, yaitu:[]
Aku tidak tahu.
Pertukaran berikut mengharuskan instrumen untuk lulus dalam parameter instrumen saat menanyakan pesanan yang saat ini belum selesai. Ketika memanggil fungsi GetOrders dengan pertukaran ini, jika parameter instrumen tidak diteruskan, hanya pesanan yang belum selesai dari instrumen saat ini yang diminta, bukan pesanan yang belum selesai dari semua instrumen (karena antarmuka pertukaran tidak mendukung ini).
Zaif, MEXC, LBank, Korbit, Coinw, BitMart, Bithumb, BitFlyer, BigONE.
Bursa yang tidak mendukungexchange.GetOrders()
Fungsi:
Nama Fungsi | Pertukaran Spot yang tidak didukung | Pertukaran Futures Tanpa Dukungan |
---|---|---|
GetOrders | – | Futures_Bibox |
{@struct/Order Order}, {@fun/Trade/exchange.GetOrder exchange.GetOrder}, {@fun/Trade/exchange.GetHistoryOrders exchange.GetHistoryOrders}
Peraturanexchange.GetHistoryOrders()
Fungsi ini digunakan untuk mendapatkan pasangan perdagangan saat ini, pesanan historis untuk kontrak; ini mendukung spesifikasi varietas perdagangan tertentu.
Peraturanexchange.GetHistoryOrders()
fungsi mengembalikan array struktur {@struct/Order Order} jika permintaan data berhasil, dan null jika permintaan gagal.
{@struct/Order Order} array, nilai nol
exchange.GetHistoryOrders ((() exchange.GetHistoryOrders (simbol) exchange.GetHistoryOrders (simbol, sejak) exchange.GetHistoryOrders ((simbol, sejak, batas) exchange.GetHistoryOrders (sejak) exchange.GetHistoryOrders ((sejak, batas)
Peraturansymbol
Parameter digunakan untuk menentukan simbol perdagangan.BTC_USDT
pasangan perdagangan, misalnya, ketikaexchange
adalah objek pertukaran spot, format parameter untuksymbol
adalahBTC_USDT
Jika itu adalah obyek pertukaran berjangka, mengambil kontrak abadi sebagai contoh, format parameter untuksymbol
adalah:BTC_USDT.swap
Aku tidak tahu.
Jika Anda menanyakan data pesanan kontrak opsi, atur parametersymbol
untuk"BTC_USDT.BTC-240108-40000-C"
(mengambil Binance Option BTC-240108-40000-C sebagai contoh).pasangan perdagangandidefinisikan oleh platform FMZ dan kode kontrak opsi khusus yang didefinisikan oleh bursa, dipisahkan oleh karakter
lambang
palsu
string
Peraturansince
Parameter digunakan untuk menentukan timestamp awal kueri dalam milidetik.
sejak
palsu
nomor
Peraturanlimit
Parameter digunakan untuk menentukan jumlah perintah untuk query.
batas
palsu
nomor
function main() {
var historyOrders = exchange.GetHistoryOrders()
Log(historyOrders)
}
def main():
historyOrders = exchange.GetHistoryOrders()
Log(historyOrders)
void main() {
auto historyOrders = exchange.GetHistoryOrders();
Log(historyOrders);
}
symbol
, since
, limit
parameter tidak ditentukan, kueri default adalah pasangan perdagangan saat ini, pesanan kontrak historis. Kueri pesanan historis dalam kisaran tertentu yang terdekat dengan waktu saat ini, kisaran kueri tergantung pada kisaran kueri tunggal antarmuka pertukaran.symbol
parameter ditentukan, query riwayat order untuk jenis perdagangan yang ditetapkan.since
parameter ditentukan, query ke arah waktu saat ini menggunakansince
Stempel waktu sebagai waktu awal.limit
parameter ditentukan, query dikembalikan setelah jumlah cukup entri.Bursa yang tidak mendukungexchange.GetHistoryOrders()
Fungsi:
Nama Fungsi | Pertukaran Spot yang tidak didukung | Pertukaran Futures Tanpa Dukungan |
---|---|---|
GetHistoryOrders | Zaif / Upbit / Coincheck / Bitstamp / Bithumb / BitFlyer / BigONE | Futures_dYdX / Futures_Bibox / Futures_ApolloX |
{@struct/Order Order}, {@fun/Trade/exchange.GetOrder exchange.GetOrder}, {@fun/Trade/exchange.GetOrders exchange.GetOrders}
exchange.SetPrecision()
fungsi digunakan untuk mengatur presisi dariexchange
objek pertukaranhargadanjumlah pesanan, setelah diatur, sistem akan mengabaikan data berlebih secara otomatis.
setPrecision ((hargaPrecision, jumlahPrecision)
PeraturanpricePrecision
parameter digunakan untuk mengontrol ketepatan data harga.
hargaPrecision
benar
Nomor
PeraturanamountPrecision
Parameter digunakan untuk mengontrol presisi jumlah data yang akan dipesan.
JumlahPenerangan
benar
nomor
function main(){
// Set the decimal precision of price to 2 bits, and the decimal precision of variety order amount to 3 bits
exchange.SetPrecision(2, 3)
}
def main():
exchange.SetPrecision(2, 3)
void main() {
exchange.SetPrecision(2, 3);
}
Sistem backtesting tidak mendukung fungsi ini, dan akurasi numerik dari sistem backtesting ditangani secara otomatis.
{@fun/Trade/exchange.Buy exchange.Buy}, {@fun/Trade/exchange.Sell exchange.Sell}
Atur nilai tukar saat ini dari objek pertukaran.
exchange.SetRate (tingkat)
Peraturanrate
parameter digunakan untuk menentukan nilai tukar konversi.
Tingkat
benar
Nomor
function main(){
Log(exchange.GetTicker())
// Set exchange rate conversion
exchange.SetRate(7)
Log(exchange.GetTicker())
// Set to 1, no conversion
exchange.SetRate(1)
}
def main():
Log(exchange.GetTicker())
exchange.SetRate(7)
Log(exchange.GetTicker())
exchange.SetRate(1)
void main() {
Log(exchange.GetTicker());
exchange.SetRate(7);
Log(exchange.GetTicker());
exchange.SetRate(1);
}
Jika nilai nilai tukar telah ditetapkan menggunakanexchange.SetRate()
Kemudian semua informasi harga seperti ticker, kedalaman, harga pesanan, dll untuk pertukaran yang diwakili oleh arusexchange
objek pertukaran akan dikonversi dengan mengalikannya dengan nilai tukar yang ditetapkan dari 7.exchange
adalah pertukaran dengan dolar AS sebagai mata uang denominasi.exchange.SetRate(7)
, semua harga di pasar langsung akan dikonversi ke harga yang dekat denganCNYNominal dengan mengalikan dengan 7.
{@fun/Market/exchange.GetRate exchange.GetRate}
Peraturanexchange.IO()
fungsi digunakan untuk panggilan antarmuka lain yang terkait dengan objek pertukaran.
Peraturanexchange.IO()
fungsi memanggil antarmuka lain yang terkait dengan objek pertukaran, mengembalikan data respons yang diminta pada panggilan yang berhasil dan mengembalikan nol pada panggilan yang gagal.
string, number, bool, object, array, null, dan jenis lain yang didukung oleh sistem
exchange.IO(k,... args)
Peraturank
Parameter digunakan untuk mengatur jenis panggilan, dengan nilai opsional"api"
, "currency"
, "base"
, "trade_margin"
, "trade_normal"
, "public_base"
, "mbase"
, selfTradePreventionMode
, simulate
, cross
, dual
, unified
dan sebagainya.
k
benar
string
Parameter diperluas, lulus sesuai dengan skenario panggilan tertentu,arg
Karena mekanisme polimorfik dariexchange.IO()
fungsi, pengaturan parameter yang berbeda sesuai dengan fungsi yang berbeda.exchange.IO()
Fungsi tidak pasti.
arg
benar
string, number, bool, object, array, null dan jenis lain yang didukung oleh sistem
function main() {
var arrOrders = [
{"instId":"BTC-USDT-SWAP","tdMode":"cross","side":"buy","ordType":"limit","px":"16000","sz":"1","posSide":"long"},
{"instId":"BTC-USDT-SWAP","tdMode":"cross","side":"buy","ordType":"limit","px":"16000","sz":"2","posSide":"long"}
]
// Call exchange.IO to access the exchange's bulk order interface directly
var ret = exchange.IO("api", "POST", "/api/v5/trade/batch-orders", "", JSON.stringify(arrOrders))
Log(ret)
}
import json
def main():
arrOrders = [
{"instId":"BTC-USDT-SWAP","tdMode":"cross","side":"buy","ordType":"limit","px":"16000","sz":"1","posSide":"long"},
{"instId":"BTC-USDT-SWAP","tdMode":"cross","side":"buy","ordType":"limit","px":"16000","sz":"2","posSide":"long"}
]
ret = exchange.IO("api", "POST", "/api/v5/trade/batch-orders", "", json.dumps(arrOrders))
Log(ret)
void main() {
json arrOrders = R"([
{"instId":"BTC-USDT-SWAP","tdMode":"cross","side":"buy","ordType":"limit","px":"16000","sz":"1","posSide":"long"},
{"instId":"BTC-USDT-SWAP","tdMode":"cross","side":"buy","ordType":"limit","px":"16000","sz":"2","posSide":"long"}
])"_json;
auto ret = exchange.IO("api", "POST", "/api/v5/trade/batch-orders", "", arrOrders.dump());
Log(ret);
}
Menggunakanexchange.IO("api", httpMethod, resource, params, raw)
bentuk panggilan dariexchange.IO()
fungsi, perlu untuk memahami antarmuka API dari pertukaran dan memeriksa dokumentasi yang relevan terlebih dahulu. ini akan memungkinkan Anda untuk memperluas fungsi yang tidak ditambahkan ke platform FMZ.POST
permintaan tidak memerlukan Anda untuk khawatir tentang enkripsi, penandatanganan, atau memverifikasi parameter, yang sudah ditangani oleh FMZ di bagian bawah, selama Anda mengisi parameter yang sesuai.OKX Exchangekontrak berjangka, dan menggunakan parameterraw
untuk melewati parameter urutan:
var amount = 1
var price = 10
var basecurrency = "ltc"
function main () {
// Note that both amount.toString() and price.toString() have a ' character on the left and right side
var message = "symbol=" + basecurrency + "&amount='" + amount.toString() + "'&price='" + price.toString() + "'&side=buy" + "&type=limit"
var id = exchange.IO("api", "POST", "/v1/order/new", message)
}
amount = 1
price = 10
basecurrency = "ltc"
def main():
message = "symbol=" + basecurrency + "&amount='" + str(amount) + "'&price='" + str(price) + "'&side=buy" + "&type=limit"
id = exchange.IO("api", "POST", "/v1/order/new", message)
void main() {
auto amount = 1.0;
auto price = 10.0;
auto basecurrency = "ltc";
string message = format("symbol=%s&amount=\"%.1f\"&price=\"%.1f\"&side=buy&type=limit", basecurrency, amount, price);
auto id = exchange.IO("api", "POST", "/v1/order/new", message);
}
Jika nilai kunci dalamparams
parameter (yaitu, parameter permintaan HTTP) adalah string, itu perlu ditulis dalam tanda kutip tunggal (yaitu, simbol ') di sekitar nilai parameter untuk membungkus nilai parameter.
function main() {
var ret = exchange.IO("api", "GET", "https://www.okx.com/api/v5/account/max-withdrawal", "ccy=BTC")
Log(ret)
}
def main():
ret = exchange.IO("api", "GET", "https://www.okx.com/api/v5/account/max-withdrawal", "ccy=BTC")
Log(ret)
void main() {
auto ret = exchange.IO("api", "GET", "https://www.okx.com/api/v5/account/max-withdrawal", "ccy=BTC");
Log(ret);
}
Hal ini mendukung melewati di parameter url lengkap yang dapat menghilangkan operasi beralih alamat dasar (menelponexchange.SetBase()
fungsi).
function main(){
var ret = exchange.IO("api", "GET", "/api/v5/trade/orders-pending", "instType=SPOT")
Log(ret)
}
def main():
ret = exchange.IO("api", "GET", "/api/v5/trade/orders-pending", "instType=SPOT")
Log(ret)
void main() {
auto ret = exchange.IO("api", "GET", "/api/v5/trade/orders-pending", "instType=SPOT");
Log(ret);
}
Contoh panggilan tanpa parameterraw
:
function main() {
// For example, if you set the current trading pair of the exchange object to BTC_USDT at the beginning of the live trading, print the current trading pair tickers
Log(exchange.GetTicker())
// Switch the trading pair to LTC_BTC
exchange.IO("currency", "LTC_BTC")
Log(exchange.GetTicker())
}
def main():
Log(exchange.GetTicker())
exchange.IO("currency", "LTC_BTC")
Log(exchange.GetTicker())
void main() {
Log(exchange.GetTicker());
exchange.IO("currency", "LTC_BTC");
Log(exchange.GetTicker());
}
Mengubah pasangan perdagangan pertukaran saat ini, sehingga akan mengubah pasangan perdagangan yang dikonfigurasi oleh kodepada penciptaan perdagangan langsungataupada backtest.
function main () {
// exchanges[0] is the first exchange object added when the live trading is created
exchanges[0].IO("base", "https://api.huobi.pro")
}
def main():
exchanges[0].IO("base", "https://api.huobi.pro")
void main() {
exchanges[0].IO("base", "https://api.huobi.pro");
}```
For example, the default base address when the exchange object is wrapped is ```https://api.huobipro.com```, and when you need to switch to ```https://api.huobi.pro```, use the following code to switch:
```javascript
function main() {
exchange.SetBase("https://api.bitfinex.com")
exchange.IO("mbase", "https://api-pub.bitfinex.com")
}
def main():
exchange.SetBase("https://api.bitfinex.com")
exchange.IO("mbase", "https://api-pub.bitfinex.com")
void main() {
exchange.SetBase("https://api.bitfinex.com");
exchange.IO("mbase", "https://api-pub.bitfinex.com");
}
Untuk pertukaran dengan alamat dasar yang berbeda untuk antarmuka ticker dan antarmuka perdagangan, misalnya, Bitfinex Futures memiliki dua alamat, satu untuk antarmuka ticker dan yang lainnya untuk antarmuka perdagangan.exchange.SetBase("xxx")
. Bitfinex berjangka beralih alamat dasar antarmuka publik menggunakanexchange.IO("mbase", "xxx")
.
I. Untuk pertukaran yang berpusat pada cryptocurrency panggilan antarmuka API lainnya yang tidak terkapsul secara seragam, dengan parameterk
diatur untuk"api"
:
exchange.IO("api", httpMethod, resource, params, raw)
POST
, GET
, dll.URL
.Peraturanexchange.IO("api", httpMethod, resource, params, raw)
panggilan fungsi akan mengakses antarmuka pertukaran dan mengembalikan null jika panggilan gagal dan terjadi kesalahan.
Hanya perdagangan nyata mendukung panggilanexchange.IO("api", httpMethod, resource, params, raw)
function.
II. Untuk beralih pasangan perdagangan, parameterk
diatur untuk"currency"
:
exchange.IO("currency", currency)
mata uang: Parameter adalah jenis string dengan format huruf besar yang seragam, menggunakan tanda bawah untuk memisahkanbaseCurrency
dariquoteCurrency
, sepertiBTC_USDT
.
ETH_BTC
hanya bisa beralih keLTC_BTC
, tidak untukLTC_USDT
.exchange.IO("currency", currency)
untuk menukar pasangan perdagangan.III. Digunakan untuk beralih ke mode akun leveraged objek pertukaran cryptocurrency spot:
k
diatur untuk"trade_margin"
untuk beralih ke mode akun leverage spot. menempatkan pesanan dan memperoleh aset akun akan mengakses pertukaranexchange.IO("trade_super_margin")
untuk beralih ke margin penuh untuk akun leveraged, danexchange.IO("trade_margin")
untuk beralih ke margin terisolasi untuk akun leveraged.k
diatur untuk"trade_normal"
untuk beralih kembali ke mode akun spot normal.Bursa spot yang mendukung beralih antara model akun leveraged:
Pertukaran | Catatan Khusus |
---|---|
OKX | Pasangan perdagangan dalam mode akun leveraged berbeda dari yang normal, beberapa pasangan perdagangan mungkin tidak memilikinya.exchange.IO("trade_super_margin") untuk beralih ke posisi penuh untuk akun leveraged dan menggunakanexchange.IO("trade_margin") untuk beralih ke posisi dengan posisi.trade_normal untuk beralih ke mode spot normal.exchange.IO("tdMode", "cross") untuk secara langsung menentukan mode leverage. |
Huobi | Pasangan perdagangan mode akun leveraged berbeda dari yang normal, beberapa pasangan perdagangan mungkin tidak memilikinya.trade_margin untuk beralih ke posisi akun leverage berdasarkan posisi, menggunakantrade_super_margin untuk beralih ke leverage account posisi penuh.trade_normal untuk beralih ke mode mata uang-mata uang normal. |
Binance | Modus akun leveraged dibagi menjadi posisi per posisi dan posisi penuh, penggunaantrade_margin untuk beralih ke posisi dengan posisi, menggunakantrade_super_margin untuk beralih ke posisi penuh, gunakantrade_normal untuk beralih ke mode mata uang-mata uang normal. |
Gerbang | Modus akun leveraged dibagi menjadi posisi per posisi dan posisi penuh, penggunaantrade_margin untuk beralih ke posisi dengan posisi, menggunakantrade_super_margin untuk beralih ke posisi penuh, gunakantrade_normal untuk beralih ke mode mata uang-mata uang normal. |
AscendEx | Penggunaanexchange.IO("trade_margin") untuk beralih ke mode akun leverage danexchange.IO("trade_normal") untuk beralih kembali ke mode akun normal. |
WOO | Penggunaanexchange.IO("trade_margin") untuk beralih ke mode akun leverage danexchange.IO("trade_normal") untuk beralih kembali ke mode akun normal. |
CoinEx | Penggunaanexchange.IO("trade_margin") untuk beralih ke mode akun leveraged danexchange.IO("trade_normal") untuk beralih kembali ke mode akun normal. |
IV. Fungsi switching lainnya:Lihatlahexchange.IO()
fungsi untukFungsi switching lainnyadalam Panduan Pengguna.
{@fun/NetSettings/exchange.SetBase exchange.SetBase}, {@fun/Account/exchange.SetCurrency exchange.SetCurrency}, {@var EXCHANGE_OP_IO_CONTROL}
Peraturanexchange.Log()
fungsi digunakan untuk output log penempatan order dan penarikan di area kolom log. Ketika dipanggil, tidak ada pesanan yang ditempatkan, hanya log transaksi yang output dan dicatat.
exchange.Log ((orderJenis, harga, jumlah) exchange.Log ((orderJenis, harga, jumlah,... args)
PeraturanorderType
parameter digunakan untuk mengatur jenis log output, nilai opsional adalah {@var/LOG_TYPE/LOG_TYPE_BUY LOG_TYPE_BUY}, {@var/LOG_TYPE/LOG_TYPE_SELL LOG_TYPE_SELL}, {@var/LOG_TYPE/LOG_TYPE_CANCEL LOG_TYPE_CANCEL}.
orderJenis
benar
nomor
Peraturanprice
Parameter digunakan untuk mengatur harga yang ditampilkan dalam log output.
harga
benar
nomor
Peraturanamount
Parameter digunakan untuk mengatur jumlah pesanan yang ditampilkan dalam log output.
jumlah
benar
nomor
Parameter diperluas yang dapat output informasi yang menyertai log ini,arg
parameter dapat dilewati lebih dari satu.
arg
palsu
string, number, bool, object, array, null dan jenis lain yang didukung oleh sistem
var id = 123
function main() {
// Order type buy, price 999, amount 0.1
exchange.Log(LOG_TYPE_BUY, 999, 0.1)
// Cancel the order
exchange.Log(LOG_TYPE_CANCEL, id)
}
id = 123
def main():
exchange.Log(LOG_TYPE_BUY, 999, 0.1)
exchange.Log(LOG_TYPE_CANCEL, id)
void main() {
auto id = 123;
exchange.Log(LOG_TYPE_BUY, 999, 0.1);
exchange.Log(LOG_TYPE_CANCEL, id);
}
Menggunakanexchange.Log(orderType, price, amount)
salah satu skenario yang paling umum adalah menggunakan {@fun/Trade/exchange.IOexchange.IO} fungsi untuk mengakses antarmuka pertukaran untuk membuat pesanan bersyarat, tetapi menggunakanexchange.IO()
fungsi tidak output informasi log transaksi dalam catatan log perdagangan hidup.exchange.Log()
fungsi dapat digunakan untuk melengkapi log output untuk merekam informasi penempatan pesanan, dan hal yang sama berlaku untuk operasi penarikan pesanan.
KetikaorderType
parameter adalahLOG_TYPE_CANCEL
, yangprice
Parameter adalah urutan Id order ditarik yang digunakan untuk mencetak log penarikan ketika order ditarik langsung menggunakanexchange.IO()
Fungsi.exchange.Log()
fungsi adalah fungsi anggota dari objek pertukaran {@var/EXCHANGE exchange}, berbeda dengan fungsi global {@fun/Log Log}.
{@fun/Log Log}, {@var/EXCHANGE exchange}, {@var/LOG_TYPE/LOG_TYPE_BUY LOG_TYPE_BUY}, {@var/LOG_TYPE/LOG_TYPE_SELL LOG_TYPE_SELL}, {@var/LOG_TYPE/LOG_TYPE_CANCEL LOG_TYPE_CANCEL}
Peraturanexchange.Encode()
Fungsi digunakan untuk perhitungan enkripsi tanda tangan.
Peraturanexchange.Encode()
fungsi mengembalikan pengkodean nilai hash yang dihitung.
string
exchange.Encode ((algo, inputFormat, outputFormat, data) exchange.Encode ((algo, inputFormat, outputFormat, data, keyFormat, key)
Parameteralgo
adalah algoritma yang digunakan untuk perhitungan pengkodean. Pengaturan yang didukung adalah: algo
juga mendukung: algo
juga mendukung: algo
dapat ditulis sebagai ed25519.seed
perhitungan.
sesuatu
benar
string
Digunakan untuk menentukan format data daridata
parameter.inputFormat
parameter dapat diatur ke salah satu dari: hex
dikodekan, base64
dikodekan, dan outputFormat
parameter mendukung pengaturan berikut: hex
dikodekan, base64
dikodekan, dan data
adalah data yang akan diproses.
data
benar
string
Digunakan untuk menentukan format data darikey
parameter.key
parameter dapat diatur ke salah satu dari: hex
dikodekan, base64
dikodekan, dan key
parameter digunakan untuk menentukan kunci yang digunakan dalam perhitungan tanda tangan, dan dapat digunakan sebagai string plaintext."{{accesskey}}"
, "{{secretkey}}"
untuk merujuk padaaccessKey
dansecretKey
dikonfigurasi dalam objek pertukaran {@var/EXCHANGE exchange}
kunci
palsu
string
function main() {
var APIKEY = "your Access Key(Bitmex API ID)"
var expires = parseInt(Date.now() / 1000) + 10
var signature = exchange.Encode("sha256", "string", "hex", "GET/realtime" + expires, "hex", "{{secretkey}}")
var client = Dial("wss://www.bitmex.com/realtime", 60)
var auth = JSON.stringify({args: [APIKEY, expires, signature], op: "authKeyExpires"})
var pos = 0
client.write(auth)
client.write('{"op": "subscribe", "args": "position"}')
while (true) {
bitmexData = client.read()
if(bitmexData.table == 'position' && pos != parseInt(bitmexData.data[0].currentQty)){
Log('position change', pos, parseInt(bitmexData.data[0].currentQty), '@')
pos = parseInt(bitmexData.data[0].currentQty)
}
}
}
import time
def main():
APIKEY = "your Access Key(Bitmex API ID)"
expires = int(time.time() + 10)
signature = exchange.Encode("sha256", "string", "hex", "GET/realtime" + expires, "hex", "{{secretkey}}")
client = Dial("wss://www.bitmex.com/realtime", 60)
auth = json.dumps({"args": [APIKEY, expires, signature], "op": "authKeyExpires"})
pos = 0
client.write(auth)
client.write('{"op": "subscribe", "args": "position"}')
while True:
bitmexData = json.loads(client.read())
if "table" in bitmexData and bitmexData["table"] == "position" and len(bitmexData["data"]) != 0 and pos != bitmexData["data"][0]["currentQty"]:
Log("position change", pos, bitmexData["data"][0]["currentQty"], "@")
pos = bitmexData["data"][0]["currentQty"]
void main() {
auto APIKEY = "your Access Key(Bitmex API ID)";
auto expires = Unix() + 10;
auto signature = exchange.Encode("sha256", "string", "hex", format("GET/realtime%d", expires), "hex", "{{secretkey}}");
auto client = Dial("wss://www.bitmex.com/realtime", 60);
json auth = R"({"args": [], "op": "authKeyExpires"})"_json;
auth["args"].push_back(APIKEY);
auth["args"].push_back(expires);
auth["args"].push_back(signature);
auto pos = 0;
client.write(auth.dump());
client.write("{\"op\": \"subscribe\", \"args\": \"position\"}");
while(true) {
auto bitmexData = json::parse(client.read());
if(bitmexData["table"] == "position" && bitmexData["data"][0].find("currentQty") != bitmexData["data"][0].end() && pos != bitmexData["data"][0]["currentQty"]) {
Log("test");
Log("position change", pos, bitmexData["data"][0]["currentQty"], "@");
pos = bitmexData["data"][0]["currentQty"];
}
}
}
Contoh push perubahan posisi BitMEX (protocol wss):
Hanya perdagangan nyata mendukung panggilanexchange.Encode()
Fungsi."{{accesskey}}"
, "{{secretkey}}"
Referensi hanya berlaku jikaexchange.Encode()
fungsi digunakan.
{@var/EXCHANGE exchange}, {@fun/Global/Encode Encode}
Fungsi pendukung asinkron multi-threaded dapat mengubah operasi semua fungsi yang didukung menjadi eksekusi serentak asinkron.
Peraturanexchange.Go()
fungsi mengembalikan objek bersamaan segera, dan Anda dapat menggunakanwait()
metode dari objek bersamaan untuk mendapatkan hasil permintaan bersamaan.
objek
pertukaran.Go (metode) pertukaran.Go ((metode,... args)
Peraturanmethod
parameter digunakan untuk menentukan nama fungsi bersamaan. Perhatikan bahwa parameter adalah string nama fungsi, bukan referensi fungsi.
metode
benar
string
Parameter untukFungsi yang dilakukan secara bersamaan, mungkin ada lebih dari satu parameterarg
. Jenis dan jumlah parameterarg
tergantung pada parameter darifungsi eksekusi bersamaanAku tidak tahu.
arg
palsu
string, number, bool, object, array, function, null, dan semua tipe lain yang didukung oleh sistem
function main(){
// The following four operations are concurrently executed asynchronously by multiple threads and do not take time and return immediately
var a = exchange.Go("GetTicker")
var b = exchange.Go("GetDepth")
var c = exchange.Go("Buy", 1000, 0.1)
var d = exchange.Go("GetRecords", PERIOD_H1)
// Call the wait method to wait for the return of the ticker results asynchronously
var ticker = a.wait()
// Returns the depth, or null if it fails
var depth = b.wait()
// return order number, limited to 1 second timeout, if timeout, returns undefined, the object can continue to call wait if the last wait timeout
var orderId = c.wait(1000)
if(typeof(orderId) == "undefined") {
// Timeout, reacquire
orderId = c.wait()
}
var records = d.wait()
}
def main():
a = exchange.Go("GetTicker")
b = exchange.Go("GetDepth")
c = exchange.Go("Buy", 1000, 0.1)
d = exchange.Go("GetRecords", PERIOD_H1)
ticker, ok = a.wait()
depth, ok = b.wait()
orderId, ok = c.wait(1000)
if ok == False:
orderId, ok = c.wait()
records, ok = d.wait()
void main() {
auto a = exchange.Go("GetTicker");
auto b = exchange.Go("GetDepth");
auto c = exchange.Go("Buy", 1000, 0.1);
auto d = exchange.Go("GetRecords", PERIOD_H1);
Ticker ticker;
Depth depth;
Records records;
TId orderId;
a.wait(ticker);
b.wait(depth);
if(!c.wait(orderId, 300)) {
c.wait(orderId);
}
d.wait(records);
}
Exchange.Go()
contoh penggunaan fungsi, untuk menentukanundefined
untuk digunakantypeof(xx) === "undefined"
, karenanull == undefined
adalah valid di JavaScript.
function main() {
var d = exchange.Go("GetRecords", PERIOD_H1)
// Waiting for K-line results
var records = d.wait()
// Here waits an asynchronous operation that has been waited and finished, it will return null, and log the error message
var ret = d.wait()
}
def main():
d = exchange.Go("GetRecords", PERIOD_H1)
records, ok = d.wait()
ret, ok = d.wait()
void main() {
auto d = exchange.Go("GetRecords", PERIOD_H1);
Records records;
d.wait(records);
Records ret;
d.wait(ret);
}
Menelponwait()
Metode pada objek paralel yang telah dirilis akan melaporkan kesalahan:
function main() {
while(true) {
var beginTS = new Date().getTime()
var arrRoutine = []
var arrTicker = []
var arrName = []
for(var i = 0; i < exchanges.length; i++) {
arrRoutine.push(exchanges[i].Go("GetTicker"))
arrName.push(exchanges[i].GetName())
}
for(var i = 0; i < arrRoutine.length; i++) {
arrTicker.push(arrRoutine[i].wait())
}
var endTS = new Date().getTime()
var tbl = {
type: "table",
title: "ticker",
cols: ["index", "name", "latest-deal-price"],
rows: []
}
for(var i = 0; i < arrTicker.length; i++) {
tbl.rows.push([i, arrName[i], arrTicker[i].Last])
}
LogStatus(_D(), "Total time taken to obtain tickers from multiple exchanges concurrently:", endTS - beginTS, "millisecond", "\n", "`" + JSON.stringify(tbl) + "`")
Sleep(500)
}
}
import time
import json
def main():
while True:
beginTS = time.time()
arrRoutine = []
arrTicker = []
arrName = []
for i in range(len(exchanges)):
arrRoutine.append(exchanges[i].Go("GetTicker"))
arrName.append(exchanges[i].GetName())
for i in range(len(exchanges)):
ticker, ok = arrRoutine[i].wait()
arrTicker.append(ticker)
endTS = time.time()
tbl = {
"type": "table",
"title": "ticker",
"cols": ["index", "name", "latest-deal-price"],
"rows": []
}
for i in range(len(arrTicker)):
tbl["rows"].append([i, arrName[i], arrTicker[i]["Last"]])
LogStatus(_D(), "Total time taken to obtain tickers from multiple exchanges concurrently:", endTS - beginTS, "second", "\n", "`" + json.dumps(tbl) + "`")
Sleep(500)
void main() {
while(true) {
int length = exchanges.size();
auto beginTS = UnixNano() / 1000000;
Ticker arrTicker[length] = {};
string arrName[length] = {};
// Note that to add several exchange objects, several exchanges[n].Go functions have to be executed here, this example is to add four exchange objects, the details can be modified
auto r0 = exchanges[0].Go("GetTicker");
auto r1 = exchanges[1].Go("GetTicker");
auto r2 = exchanges[2].Go("GetTicker");
auto r3 = exchanges[3].Go("GetTicker");
GoObj *arrRoutine[length] = {&r0, &r1, &r2, &r3};
for(int i = 0; i < length; i++) {
arrName[i] = exchanges[i].GetName();
}
for(int i = 0; i < length; i++) {
Ticker ticker;
arrRoutine[i]->wait(ticker);
arrTicker[i] = ticker;
}
auto endTS = UnixNano() / 1000000;
json tbl = R"({
"type": "table",
"title": "ticker",
"cols": ["index", "name", "latest-deal-price"],
"rows": []
})"_json;
for(int i = 0; i < length; i++) {
json arr = R"(["", "", ""])"_json;
arr[0] = format("%d", i);
arr[1] = arrName[i];
arr[2] = format("%f", arrTicker[i].Last);
tbl["rows"].push_back(arr);
}
LogStatus(_D(), "Total time taken to obtain tickers from multiple exchanges concurrently:", format("%d", endTS - beginTS), "millisecond", "\n", "`" + tbl.dump() + "`");
Sleep(500);
}
}
Akses bersamaan ke beberapa ticker pertukaran:
function main() {
/*
Testing with OKX futures order interface
POST /api/v5/trade/order
*/
var beginTS = new Date().getTime()
var param = {"instId":"BTC-USDT-SWAP","tdMode":"cross","side":"buy","ordType":"limit","px":"16000","sz":"1","posSide":"long"}
var ret1 = exchange.Go("IO", "api", "POST", "/api/v5/trade/order", "", JSON.stringify(param))
var ret2 = exchange.Go("IO", "api", "POST", "/api/v5/trade/order", "", JSON.stringify(param))
var ret3 = exchange.Go("IO", "api", "POST", "/api/v5/trade/order", "", JSON.stringify(param))
var id1 = ret1.wait()
var id2 = ret2.wait()
var id3 = ret3.wait()
var endTS = new Date().getTime()
Log("id1:", id1)
Log("id2:", id2)
Log("id3:", id3)
Log("Concurrent order placement time consumption:", endTS - beginTS, "millisecond")
}
import time
import json
def main():
beginTS = time.time()
param = {"instId":"BTC-USDT-SWAP","tdMode":"cross","side":"buy","ordType":"limit","px":"16000","sz":"1","posSide":"long"}
ret1 = exchange.Go("IO", "api", "POST", "/api/v5/trade/order", "", json.dumps(param))
ret2 = exchange.Go("IO", "api", "POST", "/api/v5/trade/order", "", json.dumps(param))
ret3 = exchange.Go("IO", "api", "POST", "/api/v5/trade/order", "", json.dumps(param))
id1, ok1 = ret1.wait()
id2, ok2 = ret2.wait()
id3, ok3 = ret3.wait()
endTS = time.time()
Log("id1:", id1)
Log("id2:", id2)
Log("id3:", id3)
Log("Concurrent order placement time consumption:", endTS - beginTS, "second")
void main() {
auto beginTS = UnixNano() / 1000000;
json param = R"({"instId":"BTC-USDT-SWAP","tdMode":"cross","side":"buy","ordType":"limit","px":"16000","sz":"1","posSide":"long"})"_json;
auto ret1 = exchange.Go("IO", "api", "POST", "/api/v5/trade/order", "", param.dump());
auto ret2 = exchange.Go("IO", "api", "POST", "/api/v5/trade/order", "", param.dump());
auto ret3 = exchange.Go("IO", "api", "POST", "/api/v5/trade/order", "", param.dump());
json id1 = R"({})"_json;
json id2 = R"({})"_json;
json id3 = R"({})"_json;
ret1.wait(id1);
ret2.wait(id2);
ret3.wait(id3);
auto endTS = UnixNano() / 1000000;
Log("id1:", id1);
Log("id2:", id2);
Log("id3:", id3);
Log("Concurrent order placement time consumption:", endTS - beginTS, "millisecond");
}
Serentakexchange.IO("api", ...)
Fungsi:
Fungsi ini hanya membuat tugas eksekusi multi-threaded saat berjalan dalam perdagangan nyata, backtesting tidak mendukung eksekusi tugas serentak multi-threaded (backtesting tersedia, tetapi masih dijalankan secara berurutan).
Setelahexchange.Go()
fungsi mengembalikan objek, nyawait()
fungsi dipanggil melalui objek itu untuk mendapatkan data yang dikembalikan oleh thread.wait()
fungsi harus dipanggil untuk mendapatkan data sebelum thread akan dirilis secara otomatis.wait()
jika fungsi ditentukan, thread tidak akan dirilis secara otomatis bahkan jika timeout terjadi. Hasil thread harus diperoleh sebelum dirilis secara otomatis (terlepas dari keberhasilan atau kegagalan panggilan antarmuka untuk akses bersamaan).wait()
fungsi terlepas dari apakah eksekusi berhasil atau gagal, dan sumber daya dari thread yang diminta olehexchange.Go()
fungsi harus dilepaskan secara otomatis oleh docker.
Peraturanwait()
Metode ini mendukung parameter timeout:
Tanpa parameter timeout, yaitu,wait()
, atau dengan parameter timeout 0, yaitu,wait(0)
.wait()
fungsi blok dan menunggu sampai thread bersamaan telah selesai berjalan, mengembalikan hasil dari thread paralelwait(-1)
.wait()
fungsi mengembalikan langsung, dengan nilai pengembalian yang berbeda untuk bahasa pemrograman yang berbeda, lihat subbagian ini untuk contoh panggilan.
Tetapkan parameter timeout tertentu,wait(300)
, danwait()
fungsi akan menunggu maksimal 300 milidetik sebelum kembali.
Jika hasil dari hasil akhirwait()
fungsi tidak diperoleh, sumber daya thread tidak akan dirilis secara otomatis, yang akan menyebabkan akumulasi thread yang diminta, dan lebih dari 2000 akan melaporkan kesalahan:"too many routine wait, max is 2000"
Aku tidak tahu.
Fungsi yang didukung:GetTicker
, GetDepth
, GetTrades
, GetRecords
, GetAccount
, GetOrders
, GetOrder
, CancelOrder
, Buy
, Sell
, GetPositions
, IO
. Semua fungsi ini dijalankan berdasarkan objek pertukaran {@var/EXCHANGE exchange} saat dipanggil secara bersamaan.
Perbedaan antara bahasa Python dan bahasa JavaScript adalah bahwawait()
fungsi dari objek bersamaan dalam bahasa Python mengembalikan dua parameter. parameter pertama adalah hasil yang dikembalikan oleh panggilan API asinkron, dan parameter kedua menunjukkan apakah panggilan asinkron selesai.
def main():
d = exchange.Go("GetRecords", PERIOD_D1)
# ok will return True definitely, unless the strategy is stopped
ret, ok = d.wait()
# If the wait times out, or if it waits for an instance that has already ended, ok returns False
ret, ok = d.wait(100)
{@fun/Global/Mail_Go Mail_Go}, {@fun/Global/HttpQuery_Go HttpQuery_Go}, {@fun/Global/EventLoop EventLoop}
Peraturanexchange.GetAccount()
fungsi digunakan untuk meminta informasi rekening pertukaran.GetAccount()
fungsi adalah fungsi anggota dari objek pertukaran {@var/EXCHANGE exchange}.exchange
objek hanya terkait denganexchange
, dan tidak akan diulang setelah dokumentasi.
Menanyakan informasi aset akun dan mengembalikan struktur {@struct/Account Account} jika kueri berhasil atau null jika gagal. {@struct/Account Account}, nilai nol
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"])
}
Atur pasangan perdagangan, kode kontrak, dan dapatkan informasi rekening.
Jika objek pertukaran diatur untuk pertukaran kontrak berjangka cryptocurrency, dan beralih ke kontrak denganUSDT
sebagai margin (lihat {@fun/Account/exchange.SetCurrency exchange.SetCurrency}, {@fun/Futures/exchange.SetContractType exchange.SetContractType} fungsi untuk cara beralih).USDT
sebagai margin, yang dicatat dalamBalance
, FrozenBalance
Atribut dari struktur {@struct/Account Account}
Jika objek pertukaran ditetapkan untuk pertukaran kontrak berjangka cryptocurrency, dan beralih ke kontrak berbasis mata uang, aset dalam mata uang sebagai margin dan dicatat dalamStocks
, FrozenStocks
Atribut dari struktur {@struct/Account Account}
Saat menggunakan akun Binance Futures, saat meneleponexchange.GetAccount()
fungsi untuk meminta informasi akun, data yang dikemas adalah jumlah semua aset yang dikonversi menjadiUSD. Ini ditampilkan diBalance
Jika Anda perlu menghitung jumlah konversi aset lain, Anda dapat menggunakan jumlah konversi USD dibagi dengan harga indeks (aset yang akan dikonversi) dan kemudian dibagi dengan suku bunga gadai (aset yang akan dikonversi) untuk menghitungnya.
{@struct/Account Account}, {@fun/Account/exchange.SetCurrency exchange.SetCurrency}, {@fun/Futures/exchange.SetContractType exchange.SetContractType}
Peraturanexchange.GetAssets
fungsi digunakan untuk meminta informasi aset rekening pertukaran.
Peraturanexchange.GetAssets()
fungsi mengembalikan array struktur {@struct/Asset Asset} jika permintaan data berhasil, atau null jika permintaan gagal.
{@struct/Asset Asset} array, nilai nol
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 informasi tentang aset dari rekening pertukaran,exchange.GetAssets()
mengembalikan array dengan elemen dari struktur Aset.
PeraturanGetAssets()
fungsi dari objek Futures Exchange mengembalikan aset margin di bawah pasangan perdagangan saat ini (berbasis mata uang, berbasis USDT, berbasis USDC, dll.).
{@struct/Asset Asset}
Peraturanexchange.GetName()
fungsi digunakan untuk mendapatkan nama pertukaran yang obyek pertukaran saat ini terikat.
Peraturanexchange.GetName()
fungsi mengembalikan nama bursa yang didefinisikan oleh platform FMZ Quant Trading.
string
exchange.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 umumnya digunakan untuk mengidentifikasi objek pertukaran, sepertiexchange
atauexchanges[1]
, exchanges[2]
nama bursa kontrak berjangka cryptocurrency memiliki awalan tetapFutures_
.
{@fun/Account/exchange.GetLabel exchange.GetLabel}
Peraturanexchange.GetLabel()
fungsi digunakan untuk mendapatkan label kustom yang ditetapkan ketika objek pertukaran dikonfigurasi.
Peraturanexchange.GetLabel()
fungsi mengembalikan label kustom yang ditetapkan ketika objek pertukaran dikonfigurasi.
string
pertukaran.GetLabel ((()
function main() {
Log("exchange label:", exchange.GetLabel())
}
def main():
Log("exchange label:", exchange.GetLabel())
void main() {
Log("exchange label:", exchange.GetLabel());
}
Bertukar objek sepertiexchange
atauexchanges[1]
, exchanges[2]
dalam kode strategi diidentifikasi dengan tag set.
{@var/EXCHANGE pertukaran}
Peraturanexchange.GetCurrency()
Fungsi digunakan untuk mendapatkan pasangan perdagangan yang saat ini ditetapkan.
Peraturanexchange.GetCurrency()
fungsi mengembalikan pasangan perdagangan yang ditetapkan oleh objek pertukaran {@var/EXCHANGE exchange} saat ini.
string
exchange.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 perdagangan adalah huruf besar secara seragam, menggunakan tanda bawah untuk memisahkanbaseCurrency
danquoteCurrency
, sepertiBTC_USDT
.
{@fun/Account/exchange.SetCurrency exchange.SetCurrency}
Peraturanexchange.SetCurrency()
Fungsi ini digunakan untuk beralih pasangan perdagangan saat ini dari objek pertukaran {@var/EXCHANGE exchange}.
exchange.SetCurrency (mata uang)
Peraturancurrency
Format pasangan perdagangan adalah huruf besar secara seragam, menggunakan tanda bawah untuk memisahkanbaseCurrency
dariquoteCurrency
, sepertiBTC_USDT
Aku tidak tahu.
mata uang
benar
string
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")
metode beralih, silakan lihat ke {@funexcahnge.IO}.BTC_USDT
dapat beralih keLTC_USDT
, tidak untukLTC_BTC
.BTC_USDT
, jumlahBTC
adalah 3, jumlahUSDT
saat ini, beralih keLTC_USDT
segera, jumlah mata uang perdagangan adalah 0 setelah beralih, yaitu jumlahLTC_USDT
dalam akun adalah 0. yaitu, jumlahLTC
dalam akun adalah 0, dan pasangan perdagangan yang beralih berbagi jumlahUSDT
, yaitu 10.000.{@fun/Account/exchange.GetCurrency exchange.GetCurrency}
Peraturanexchange.GetQuoteCurrency()
Fungsi ini digunakan untuk mendapatkan nama mata uang denominasi dari pasangan perdagangan saat ini, yaituquoteCurrency
.
Peraturanexchange.GetQuoteCurrency()
fungsi mengembalikan nama mata uang dari pasangan perdagangan saat ini.
string
exchange.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())
}
Misalnya: {@var/EXCHANGE exchange} exchange objectBTC_USDT
, yangexchange.GetQuoteCurrency()
fungsi kembaliUSDT
Jika pasangan perdagangan saat ini adalahETH_BTC
, yangexchange.GetQuoteCurrency()
fungsi kembaliBTC
.
{@fun/Account/exchange.GetCurrency exchange.GetCurrency}, {@fun/Account/exchange.SetCurrency exchange.SetCurrency}
Peraturanexchange.GetPositions()
fungsi digunakan untuk mendapatkan informasi posisi;GetPositions()
fungsi adalah anggota fungsi dari exchange object {@var/EXCHANGE exchange}.GetPositions()
fungsi mendapatkan informasi posisi akun pertukaran terikat pada objek pertukaranexchange
Tujuan dari fungsi anggota (metode) dariexchange
objek hanya terkait denganexchange
dan tidak akan diulang di sini.
Peraturanexchange.GetPositions()
fungsi mengembalikan array struktur {@struct/Position Position} jika permintaan data berhasil, dan mengembalikan nilai nol jika permintaan data gagal.
{@struct/Position Position} array, nilai nol
Pertukaran.GetPositions ((() tukar.GetPositions (simbol)
Parametersymbol
digunakan untuk mengatursimbol perdaganganataukisaran simbol perdaganganuntuk diinterogasi.
Jikasymbol
parameter tidak diteruskan, default adalah untuk meminta data posisi dari semua simbol dalam kisaran dimensi pasangan perdagangan saat ini dan kode kontrak.
lambang palsu string
/*backtest
start: 2024-05-21 00:00:00
end: 2024-09-05 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"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 obyek pertukaran berjangka untuk menempatkan pesanan pasar untuk beberapa pasangan perdagangan yang berbeda dan kode kontrak.
Kontrak berjangka cryptocurrency berbeda dari spot cryptocurrency, yang hanya memiliki konsep posisi yang logis.Pasangan perdagangan, kode kontrakSilakan lihat fungsi {@fun/Account/exchange.SetCurrency exchange.SetCurrency}, {@fun/Futures/exchange.SetContractType exchange.SetContractType}
DalamGetPositions
fungsi, skenario penggunaan parameter simbol diringkas sebagai berikut:
Klasifikasi Objek Exchange | simbol Parameter | Ruang lingkup kueri | Pernyataan |
---|---|---|---|
Masa Depan | Jangan lulus parameter simbol | Mencari semua produk perdagangan dalam kisaran dimensi pasangan perdagangan saat ini dan kode kontrak | Jika pasangan perdagangan saat ini adalah BTC_USDT dan kode kontrak adalah swap, semua kontrak abadi berbasis USDT akan ditanyakan.GetPositions("USDT.swap") |
Masa Depan | Tentukan produk perdagangan, parameter simbol adalah: |
Mencari kontrak abadi berbasis USDT dari BTC tertentu | Untuk obyek bursa berjangka, format simbol parameter adalah:pasangan perdagangandankode kontrakdidefinisikan oleh platform FMZ, dipisahkan oleh karakter". . |
Masa Depan | Tentukan rentang produk perdagangan, parameter simbol adalah: |
Mencari semua kontrak abadi berbasis USDT | - |
Bursa berjangka yang mendukung opsi | Jangan lulus parameter simbol | Mencari semua kontrak opsi dalam kisaran dimensi pasangan perdagangan saat ini | Jika pasangan perdagangan saat ini adalah BTC_USDT, kontrak ditetapkan sebagai kontrak opsi, misalnya, kontrak opsi Binance: BTC-240108-40000-C |
Bursa berjangka yang mendukung opsi | Tentukan produk perdagangan tertentu | Mencari kontrak opsi yang ditentukan | Misalnya, untuk Binance Futures Exchange, parameter simbol adalah: BTC_USDT.BTC-240108-40000-C |
Bursa berjangka yang mendukung opsi | Tentukan rentang produk perdagangan, parameter simbol adalah: |
Mencari semua kontrak opsi berbasis USDT | - |
DalamGetPositions
fungsi, obyek pertukaran berjangka
rentang dimensi kueri diringkas sebagai berikut:
simbol Parameter | Definisi Lingkup Permintaan | Pernyataan |
---|---|---|
USDT.swap | Rentang kontrak abadi berbasis USDT. | Untuk |
dimensi yang tidak didukung oleh antarmuka API pertukaran, kesalahan akan dilaporkan dan nilai nol akan dikembalikan ketika Menelpon.
USDT.futures. USDT berbasis rentang kontrak pengiriman.
{\cH00FFFF}$USD.swap {\cH00FFFF}Skop perpetual berbasis mata uang kontrak.
{\cH00FFFF}USD.futures. {\cH00FFFF}Skop pengiriman berdasarkan mata uang kontrak.
{\cH00FFFF}$USDT.option {\cH00FFFF}$USDT-based options contract range {\cH00FFFF}$USDT.option {\cH00FFFF}$USDT.option {\cH00FFFF}$USDT.option {\cH00FFFF}$USDT.option {\cH00FFFF}$USDT.option {\cH00FFFF}$USDT-based options contract range {\cH00FFFF}$USDT.option {\cH00FFFF}$USDT.option {\cH00FFFFFF}$USDT.option {\cH00FFFF}$USDT.option {\cH00FFFFFF}$USDT-based options contract range {\cH00FFFFFF}$USDT.option range.
USD.option Rentang kontrak opsi berbasis mata uang
USDT.futures_combo Rentang kombinasi CFD. Futures_Deribit Exchange
{\cH00FFFF}$.futures_ff. {\cH00FFFF}Skop kontrak pengiriman margin campuran. Futures_Kraken Exchange
{\cH00FFFF}USD.swap_pf {\cH00FFFF}Rentang kontrak jangka panjang margin campuran. Futures_Kraken Exchange
Kompatibel denganexchange.GetPosition()
panggilan,GetPosition
sama persis denganGetPositions
.
Ketika akun yang diwakili oleh objek pertukaranexchange
tidak memiliki posisi direntang kueriatauInstrumen perdagangan tertentu, yangexchange.GetPositions()
fungsi mengembalikan array kosong, misalnya:[]
.
{@struct/Position Position}, {@fun/Account/exchange.SetCurrency exchange.SetCurrency}, {@fun/Futures/exchange.SetContractType exchange.SetContractType}
Peraturanexchange.SetMarginLevel()
Fungsi ini digunakan untuk menetapkan nilai leverage dari pasangan perdagangan atau kontrak yang ditentukan olehsymbol
Kompatibel dengan hanya melewati dalam parametermarginLevel
untuk menetapkan nilai leverage dari pasangan perdagangan atau kontrak saat ini dari objek pertukaran {@var/EXCHANGE exchange}.
exchange.SetMarginLevel ((simbol, marginLevel) Pertukaran.Set MarginLevel ((marginLevel)
Peraturansymbol
parameter digunakan untuk menentukan pasangan perdagangan atau kontrak yang mana nilai leverage perlu disesuaikan.symbol
parameter dariSetMarginLevel()
fungsi konsisten dengan format darisymbol
parameter dariGetTicker()
fungsi.
lambang
palsu
string
PeraturanmarginLevel
parameter digunakan untuk mengatur nilai leverage, yang biasanya bilangan bulat untuk bursa dan juga mendukung pengaturan nilai leverage titik terapung untuk beberapa bursa.
marginLevel
benar
nomor
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 mendukung cryptocurrency kontrak berjangka pertukaran objek saja. sistem backtesting mendukung memanggilexchange.SetMarginLevel()
fungsi untuk mengatur nilai leverage.
Untuk kontrak berjangka cryptocurrency, mekanisme leverage tidak seragam karena pertukaran kontrak berjangka cryptocurrency.exchange.SetMarginLevel()
fungsi tidak menghasilkan permintaan jaringan, tetapi hanya menetapkan variabel leverage dalam sistem FMZ yang mendasari (digunakan untuk melewati parameter dalam antarmuka penempatan pesanan). Nilai leverage dari beberapa kontrak berjangka pertukaran adalah pengaturan dari bursa, yang perlu ditetapkan di halaman situs web bursa atau menggunakan antarmuka API. Dalam hal ini memanggilexchange.SetMarginLevel()
fungsi akan menghasilkan permintaan jaringan dan mungkin gagal mengatur leverage. Ada banyak alasan untuk ini, misalnya: ada posisi saat ini atau pesanan yang menunggu, yang membuat tidak mungkin untuk menetapkan nilai leverage baru untuk pasangan perdagangan atau kontrak ini.
Bursa yang tidak mendukungexchange.SetMarginLevel()
Fungsi:
Nama Fungsi | Pertukaran Spot yang tidak didukung | Pertukaran Futures Tanpa Dukungan |
---|---|---|
SetMarginLevel | – | Futures_dYdX / Futures_Deribit |
{@var/EXCHANGE pertukaran}
Peraturanexchange.SetDirection()
Fungsi ini digunakan untuk mengatur arah pesanan dari fungsi {@fun/Trade/exchange.Buy exchange.Buy}, fungsi {@fun/Trade/exchange.Sell exchange.Sell} ketika menempatkan pesanan untuk kontrak berjangka.
Pertukaran.SetDirection ((arah)
Peraturandirection
parameter digunakan untuk mengatur arah kontrak berjangka ketika pesanan ditempatkan."buy"
, "closesell"
, "sell"
, "closebuy"
Aku tidak tahu.
arah
benar
string
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 korespondensi antara arah transaksi kontrak berjangka dan fungsi penempatan order:
Fungsi penempatan pesanan | Arah yang ditetapkan oleh parameter fungsi SetDirection | Pengamatan |
---|---|---|
exchange.Buy | Membeli dan membuka posisi panjang | |
exchange.Buy | Membeli dan menutup posisi pendek | |
exchange.Sell | Jual dan buka posisi pendek | |
exchange.Sell | Jual dan tutup posisi panjang |
{@fun/Trade/exchange.Buy exchange.Buy}, {@fun/Trade/exchange.Sell exchange.Sell}
Peraturanexchange.SetContractType()
Fungsi ini digunakan untuk mengatur kode kontrak saat ini dari objek pertukaran {@var/EXCHANGE exchange}.
Peraturanexchange.SetContractType()
fungsi mengembalikan struktur yang berisi kode kontrak pertukaran yang sesuai dengan kode kontrak saat ini.quarter
, dan struktur nilai pengembalian fungsi ini adalah:{"InstrumentID": "BTCUSD_230630", "instrument": "BTCUSD_230630"}
Aku tidak tahu.
objek
exchange.SetContractType ((simbol)
Peraturansymbol
parameter digunakan untuk mengatur kode kontrak, nilai opsional adalah:"this_week"
, "next_week"
, "quarter"
, "next_quarter"
, "swap"
, dll.
Kontrak berjangka cryptocurrencykontrak pengirimankode, jika tidak ditentukan, umumnya memiliki:
this_week
: kontrak minggu ini.next_week
: kontrak minggu depan.quarter
: kontrak triwulanan.next_quarter
: kontrak kuartal berikutnya.Kontrak permanenkode dalam kontrak berjangka cryptocurrency, jika tidak ditentukan, umumnya memiliki:swap
: kontrak abadi.lambang benar string
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 saat ini sebagai kontrak minggu saat ini:
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());
}
Ketika membuat kontrak denganUSDT
sebagai margin, Anda perlu beralih pasangan perdagangan dalam kode (Anda juga dapat mengatur pasangan perdagangan langsung saat menambahkan 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 kembali dariexchange.SetContractType()
Fungsi:
Dalam strategi kontrak berjangka cryptocurrency, ambil contoh beralih keBTC_USDT
Pasangan perdagangan: Ketika beralih pasangan perdagangan menggunakanexchange.SetCurrency("BTC_USDT")
atauexchange.IO("currency", "BTC_USDT")
fungsi, setelah beralih, Anda perlu menggunakanexchange.SetContractType()
Sistem ini berfungsi untuk mengatur ulang kontrak untuk menentukan kontrak saat ini yang akan dioperasikan di bawah pasangan perdagangan baru.kontrak standar mata uangatauKontrak standar USDTMisalnya, jika pasangan perdagangan diatur untukBTC_USDT
, gunakanexchange.SetContractType("swap")
fungsi untuk mengatur kode kontrak untukswap
Pada titik ini, itu diatur untukBTC
untukStandar USDTkontrak abadi. Jika pasangan perdaganganBTC_USD
, gunakanexchange.SetContractType("swap")
fungsi untuk mengatur kode kontrak untukswap
Pada titik ini, itu diatur untukBTC
Itu adalahstandar mata uangkontrak abadi.
Rincian dari pertukaran kontrak berjangka cryptocurrency yang didukung, dengan nama kontrak untuk setiap pertukaran sebagai berikut:
Futures_OKCoin (OKX)
Setel untuk kontrak abadi:exchange.SetContractType("swap")
Set untuk kontrak minggu ini:exchange.SetContractType("this_week")
Setel untuk kontrak minggu depan:exchange.SetContractType("next_week")
Setel kontrak bulanan:exchange.SetContractType("month")
Setel untuk kontrak bulan depan:exchange.SetContractType("next_month")
Diatur ke kontrak triwulanan:exchange.SetContractType("quarter")
Setel untuk kontrak kuartal berikutnya:exchange.SetContractType("next_quarter")
OKX memiliki kontrak perdagangan pra-pasar: tanggal pengiriman kontrak adalah waktu tetap.HMSTR-USDT-250207
. Atur pasangan perdagangan keHMSTR_USDT
di platform FMZ, dan kemudian menggunakanexchange.SetContractType("HMSTR-USDT-250207")
untuk mengatur kontrak.
Untuk fungsi yang mendukungsymbol
parameter, seperti:exchange.GetTicker()
, exchange.CreateOrder()
, dll. Anda dapat menentukansymbol
parameter sebagai:HMSTR_USDT.HMSTR-USDT-250207
untuk memperoleh data pasar dari kontrak ini atau melakukan pesanan.
Futures_HuobiDM (Futures Huobi)
Set untuk kontrak minggu ini:exchange.SetContractType("this_week")
Aku tidak tahu.
Setel untuk kontrak minggu depan:exchange.SetContractType("next_week")
Aku tidak tahu.
Diatur ke kontrak triwulanan:exchange.SetContractType("quarter")
Aku tidak tahu.
Setel untuk kontrak kuartal berikutnya:exchange.SetContractType("next_quarter")
Aku tidak tahu.
Setel untuk kontrak abadi:exchange.SetContractType("swap")
Aku tidak tahu.
Ini mendukung kontrak denganUSDT
sebagai margin, ambilBTC
kontrak sebagai contoh: penggunaanexchange.IO("currency", "BTC_USDT")
untuk beralih ke kontrak yang menggunakanUSDT
sebagai margin.
Atau atur pasangan perdagangan saat ini keBTC_USDT
langsung saat mengkonfigurasi parameter perdagangan langsung dan menambahkan objek pertukaran.exchange.SetContractType()
fungsi lagi untuk mengatur kontrak.
Futures_BitMEX (BitMEX)
Setel untuk kontrak abadi:exchange.SetContractType("swap")
Aku tidak tahu.
Kontrak pengiriman bursa Futures_BitMEX adalah kontrak bulanan dengan kode kontrak berikut (dari Januari hingga Desember):
"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"
Menetapkan kontrak pengiriman:exchange.SetContractType("December")
Misalnya, ketika pasangan perdagangan diatur untukXBT_USDT
, yangexchange.SetContractType("December")
fungsi dipanggil untuk menetapkan kontrak untuk pengiriman Desember dalam USDT berdasarkan BTC (mengandung kode kontrak yang sebenarnya dariXBTUSDTZ23
).
Futures_BitMEX Ringkasan Informasi Kontrak
Kode kontrak yang didefinisikan oleh Futures_BitMEX | Pasangan perdagangan yang sesuai di FMZ | Kode kontrak yang sesuai di FMZ | Pernyataan |
---|---|---|---|
DOGEUSD | DOGE_USD | swap | Denied USD, XBT diselesaikan. |
DOGEUSDT | DOGE_USDT | swap | USDT, USDT diselesaikan. |
XBTETH | XBT_ETH | swap | ETH di atas, XBT di atas. |
XBTEUR | XBT_EUR | swap | Dimensional EUR, XBT diselesaikan. |
USDTUSDC | USDT_USDC | swap | USDC, XBT diselesaikan. |
ETHUSD_ETH | ETH_USD_ETH | swap | Nominasikan dalam USD, ETH diselesaikan. |
XBTH24 | XBT_USD | Maret | Tanggal kedaluwarsa: 24 Maret, kode bulan adalah: H; denominasi USD, XBT diselesaikan. |
ETHUSDZ23 | ETH_USD | Desember | Tanggal kedaluwarsa: 23 Desember, kode bulan adalah: Z; denominasi USD, diselesaikan dalam XBT. |
XBTUSDTZ23 | XBT_USDT | Desember | Tanggal kedaluwarsa: 23 Desember, kode bulan adalah: Z ; denominasi USDT, diselesaikan dalam USDT. |
ADAZ23 | ADA_XBT | Desember | Tanggal kedaluwarsa: 23 Desember, kode bulan adalah: Z ; penagihan XBT, XBT diselesaikan. |
P_XBTETFX23 | USDT_XXX | P_XBTETFX23 | Kesudahan: 11/23/23; dinyatakan sebagai persentase dan diselesaikan dalam USDT. |
Futures_GateIO
Set untuk kontrak minggu ini:exchange.SetContractType("this_week")
Aku tidak tahu.
Setel untuk kontrak minggu depan:exchange.SetContractType("next_week")
Aku tidak tahu.
Diatur ke kontrak triwulanan:exchange.SetContractType("quarter")
Aku tidak tahu.
Setel untuk kontrak kuartal berikutnya:exchange.SetContractType("next_quarter")
Aku tidak tahu.
Setel untuk kontrak abadi:exchange.SetContractType("swap")
Aku tidak tahu.
Ini mendukung kontrak denganUSDT
sebagai margin, ambilBTC
kontrak sebagai contoh: penggunaanexchange.IO("currency", "BTC_USDT")
untuk beralih ke kontrak yang menggunakanUSDT
sebagai margin.
Atau atur pasangan perdagangan saat ini keBTC_USDT
langsung saat mengkonfigurasi parameter perdagangan langsung dan menambahkan objek pertukaran.exchange.SetContractType()
fungsi lagi untuk mengatur kontrak.
Futures_Deribit
Setel untuk kontrak abadi:exchange.SetContractType("swap")
Aku tidak tahu.
Ini mendukung DeribitUSDC
kontrak.
Kontrak pengiriman adalah:"this_week"
, "next_week"
, "month"
, "quarter"
, "next_quarter"
, "third_quarter"
, "fourth_quarter"
Aku tidak tahu.
CFD (future_combo):"this_week,swap"
, "next_week,swap"
, "next_quarter,this_week"
, "third_quarter,this_week"
, "month,next_week"
, ada banyak kombinasi.
Untuk kontrak opsi, Anda harus memasukkan kode kontrak opsi tertentu yang ditentukan oleh bursa, lihat situs web Deribit untuk rincian.
Futures_KuCoin
Misalnya, jika pasangan perdagangan diatur untukBTC_USD
dan kode kontrak ditetapkan, itu adalah kontrak berbasis mata uang:
Setel kontrak abadi:exchange.SetContractType("swap")
Aku tidak tahu.
Diatur ke kontrak triwulanan:exchange.SetContractType("quarter")
Aku tidak tahu.
Setel untuk kontrak kuartal berikutnya:exchange.SetContractType("next_quarter")
.
USDT sebagai kontrak margin:
Misalnya, jika pasangan perdagangan diatur untukBTC_USDT
, dan kemudian mengatur kode kontrak, itu adalah kontrak dengan USDT sebagai margin.
Setel kontrak abadi:exchange.SetContractType("swap")
.
Futures_Binance
Binance Futures Exchange default untuk kontrak abadi dari pasangan perdagangan saat ini, kode kontrak:swap
Aku tidak tahu.
Setel untuk kontrak abadi:exchange.SetContractType("swap")
, kontrak abadi Binance memiliki kontrak yang menggunakanUSDT
sebagai margin.USDT
standar kontrak abadi dariBTC
dapat digunakan sebagai kontrak margin, dan pasangan perdagangan diatur untukBTC_USDT
Binance juga mendukung kontrak abadi yang menggunakan koin sebagai margin, misalnya,BTC
Binance standar kontrak abadi, dengan pasangan perdagangan diatur untukBTC_USD
Aku tidak tahu.
Diatur ke kontrak triwulanan:exchange.SetContractType("quarter")
, kontrak pengiriman memiliki kontrak standar mata uang (yaitu, menggunakan mata uang sebagai margin), misalnya,BTC
Pada kontrak kuartalan, pasangan perdagangan diatur untuk:BTC_USD
dan kemudian mengatur kontrakexchange.SetContractType("quarter")
, itu diatur untukBTC
kontrak kuartal dengan kontrak standar mata uang.
Setel untuk kontrak kuartal berikutnya:exchange.SetContractType("next_quarter")
, misalnya,BTC
dari kontrak tahunan standar mata uang, pasangan perdagangan ditetapkan untuk:BTC_USD
, dan kemudian mengatur kontrakexchange.SetContractType("next_quarter")
Aku tidak tahu.
Binance mendukung sebagianUSDT
sebagai kontrak pengiriman margin, mengambilBTC
sebagai contoh, mengatur pasangan perdagangan untukBTC_USDT
, lalu atur kode kontrak.
Dukungan untuk kontrak Binance Options:
Format kode kontrak opsi didasarkan pada kode kontrak opsi yang didefinisikan oleh bursa:BTC-241227-15000-C
, XRP-240112-0.5-C
, BTC-241227-15000-P
Ambil kode kontrak opsi Binance.BTC-241227-15000-P
sebagai contoh: BTC adalah kode mata uang opsi, 241227 adalah tanggal pelaksanaan, 15000 adalah harga pelaksanaan, P mewakili opsi jual, dan C mewakili opsi pembelian.
Untuk rincian jenis opsi, apakah itu opsi Eropa atau opsi Amerika, silakan lihat informasi yang relevan dari kontrak opsi bursa.
Bursa dapat membatasi penjual opsi dan mengharuskan mereka untuk mengajukan kualifikasi secara terpisah.
Futures_Bibox
Kode kontrak untuk kontrak abadi Bibox:swap
Aku tidak tahu.
Setel untuk kontrak abadi:exchange.SetContractType("swap")
.
Futures_Bybit
Standar adalah kontrak abadi untuk pasangan perdagangan saat ini, kode kontrak:swap
Aku tidak tahu.
Kode kontrak minggu ini:this_week
Aku tidak tahu.
Kode kontrak minggu depan:next_week
Aku tidak tahu.
Kode kontrak minggu ketiga:third_week
Aku tidak tahu.
Kode kontrak bulanan:month
Aku tidak tahu.
Kode kontrak bulan depan:next_month
Aku tidak tahu.
Kode kontrak kuartal:quarter
Aku tidak tahu.
Kode kontrak kuartal berikutnya:next_quarter
Aku tidak tahu.
Kode kontrak kuartal ketiga:third_quarter
.
Futures_Kraken
Standar adalah kontrak abadi dari pasangan perdagangan saat ini, kode kontrak:swap
.
swap
: kontrak abadi.month
: kontrak bulan saat ini.quarter
: kontrak triwulanan.next_quarter
: kontrak kuartal berikutnya.swap_pf
: Kontrak abadi dengan margin campuran.quarter_ff
: Kontrak kuartal dengan margin campuran.month_ff
: Kontrak bulan saat ini dengan margin campuran.next_quarter_ff
: Margin campuran kontrak kuartal berikutnya.
Futures_Bitfinex
Default adalah kontrak abadi untuk pasangan perdagangan saat ini, kode kontrak:swap
.
Futures_Bitget
Default adalah kontrak abadi untuk pasangan perdagangan saat ini, kode kontrak:swap
Aku tidak tahu.
Pasangan perdagangan diatur untukBTC_USD
untuk kontrak standar mata uang, dan pasangan perdagangan diatur untukBTC_USDT
untuk kontrak yang diselesaikan olehUSDT
Kontrak demo dapat diatur dengan pasangan perdagangan sebagaiSBTC_USD
, BTC_SUSDT
.
Futures_dYdX
Kode kontrak untuk kontrak abadi dYdX:swap
Aku tidak tahu.
Setel untuk kontrak abadi:exchange.SetContractType("swap")
, dYdX hanya memiliki kontrak standar USDT.
Futures_MEXC
Kode kontrak untuk kontrak abadi MEXC:swap
Aku tidak tahu.
Setel untuk kontrak abadi:exchange.SetContractType("swap")
. Atur pasangan perdagangan keBTC_USD
, yang merupakan kontrak standar mata uang, dan mengatur pasangan perdagangan untukBTC_USDT
, yang merupakanUSDT
- Kontrak diselesaikan.
Futures_Crypto
Token di rekening dicrypto.comnilai tukar dapat dikonversi menjadi kredit dalam USD untuk digunakan sebagai margin untuk perdagangan kontrak.
Set untuk kontrak abadi:exchange.SetContractType("swap")
. Contoh memanggilexchange.SetContractType("swap")
fungsi untuk mengatur kontrak abadi untuk BTC ketika pasangan perdagangan diatur untukBTC_USD
Aku tidak tahu.
Peraturancrypto.comkontrak pengiriman pertukaran adalah kontrak bulanan dengan kode kontrak berikut (dari Januari hingga Desember):
"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"
Tetapkan kontrak pengiriman:exchange.SetContractType("October")
Misalnya, ketika pasangan perdagangan diatur untukBTC_USD
, memanggil fungsiexchange.SetContractType("October")
untuk menetapkan kontrak pengiriman Oktober untuk BTC.
Kode kontrak yang sesuai saat ini adalah:BTCUSD-231027
.
Futures_WOO
Futures_WOO dukungan pertukaranUSDT
berdasarkan kontrak dengan kode kontrak abadiswap
Misalnya, ketika pasangan perdagangan diatur untukBTC_USDT
, fungsiexchange.SetContractType("swap")
disebut untuk mengatur kontrak saat ini untuk menjadi kontrak abadi berbasis USDT untuk BTC.
{@fun/Futures/exchange.GetContractType exchange.GetContractType}, {@fun/Account/exchange.SetCurrency exchange.SetCurrency}
Peraturanexchange.GetContractType()
Fungsi ini digunakan untuk mendapatkan kode kontrak untuk pengaturan saat ini dari objek pertukaran {@var/EXCHANGE exchange}.
Peraturanexchange.GetContractType()
fungsi mengembalikan kode kontrak yang didefinisikan oleh platform FMZ, misalnya:this_week
, swap
, dll.
string
exchange.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 exchange.SetContractType}
Peraturanexchange.GetFundings()
Fungsi ini digunakan untuk mendapatkan data tingkat pendanaan untuk periode saat ini.
Peraturanexchange.GetFundings()
fungsi mengembalikan array struktur {@struct/Funding Funding} ketika permintaan data berhasil, dan mengembalikan nilai nol ketika permintaan data gagal.
{@struct/Funding Funding} array, nilai nol
pertukaran.GetFundings ((() exchange.GetFundings (simbol)
Parametersymbol
digunakan untuk mengaturSimbol transaksiataurentang simbol transaksiuntuk ditanyakan.symbol
Jika parameter tidak dilewati, data tingkat pendanaan saat ini dari semua instrumen akan diminta secara default dalam kisaran dimensi pasangan perdagangan saat ini dan kode kontrak.
lambang palsu string
/*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 obyek pertukaran berjangka untuk memanggilexchange.GetFundings()
fungsi dalam sistem backtesting. Sebelum memanggil fungsi pasar, GetFundings hanya mengembalikan data Pendanaan dari pasangan perdagangan default saat ini. Setelah memanggil fungsi pasar, ia mengembalikan data Pendanaan dari semua varietas yang diminta. Anda dapat merujuk pada contoh uji berikut:
Untuk bursa berjangka yang tidak mendukung batch query dari data tingkat pendanaan, jikasymbol
parameter ditentukan sebagai rentang kueri, misalnya:USDT.swap
atausymbol
parameter tidak diteruskan, antarmuka akan melaporkan kesalahan.GetFundings()
fungsi menggunakan jenis ini obyek pertukaran berjangka, Anda harus menentukansymbol
parameter sebagai jenis kontrak abadi tertentu untuk menanyakan data tingkat pendanaan saat ini dari jenis tersebut.
Peraturanexchange.GetFundings()
fungsi mendukung sistem perdagangan dan backtesting yang nyata.
Bursa yang tidak mendukung akuisisi batch data tingkat pendanaan: Futures_Bitget, Futures_OKX, Futures_MEXC, Futures_Deribit, Futures_Crypto.symbol
parameter dengan kode simbol khusus, misalnya:ETH_USDT.swap
.
Bursa yang tidak mendukungexchange.GetFundings()
Fungsi:
Nama Fungsi | Pertukaran Spot yang tidak didukung | Pertukaran Futures Tanpa Dukungan |
---|---|---|
GetFundings | – | Futures_DigiFinex |
{@struct/Pembiayaan Pendanaan}
Peraturanexchange.SetBase()
fungsi digunakan untuk mengatur alamat dasar dari antarmuka API pertukaran yang dikonfigurasi dalam objek pertukaran {@var/EXCHANGE exchange}.
exchange.SetBase (s)
Peraturans
Parameter digunakan untuk menentukan alamat dasar antarmuka API pertukaran.
s
benar
string
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());
}
Mengganti alamat basis API pertukaran tidak didukung dalam sistem backtesting, karena sistem backtesting adalah lingkungan simulasi sandbox dan tidak benar-benar mengakses antarmuka API pertukaran.
{@fun/Trade/exchange.IO exchange.IO}
Peraturanexchange.GetBase()
Fungsi digunakan untuk mendapatkan alamat basis antarmuka API pertukaran saat ini.
Alamat basis antarmuka API pertukaran saat ini. string
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 mengatur konfigurasi proxy dari objek pertukaran {@var/EXCHANGE exchange}.
Pertukaran.SetProxy ((proxy)
Peraturanproxy
parameter digunakan untuk menentukan konfigurasi proxy.
Proxy
benar
string
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());
}
Mengkonfigurasi 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();
}
Selainspesifikasi globaldari alamat IP permintaan dari objek pertukaran {@var/EXCHANGE exchange}, ada juga dukungan untuk menentukan alamat IP berdasarkan {@var/EXCHANGE exchange}:
Jika pengaturan proxy gagal,exchange.SetProxy()
fungsi akan mengembalikan null ketika dipanggil.exchange.SetProxy()
fungsi menetapkan proxy untukrest
Satu proxy dapat diatur untuk setiap objek pertukaran {@var/EXCHANGE exchange}, dan akses ke antarmuka pertukaran yang terikat pada objek pertukaran {@var/EXCHANGE exchange} setelah pengaturan proxy akan diakses melalui proxy.
Dukungan untuk pengaturansocks5
proxy, mengambil objek pertukaran pertama ditambahkan {@var/EXCHANGE exchange} yaitu: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 sandi.exchange.SetProxy("")
.Mendukung pengaturan alamat IP permintaan dari objek pertukaran {@var/EXCHANGE exchange},global tertentu.
{@var/EXCHANGE pertukaran}
Peraturanexchange.SetTimeout()
fungsi digunakan untuk mengatur timeout darirest
permintaan untuk objek pertukaran {@var/EXCHANGE exchange}.
Pertukaran.SetTimeout ((timeout)
Peraturantimeout
Parameter digunakan untuk menentukan jumlah milidetik untuk pengaturan timeout.
timeout
benar
nomor
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 detik.rest
hanya protokol, digunakan untuk mengatur timeout padarest
permintaan, itu berlaku dengan mengatur sekali saja.exchange.SetTimeout(3000)
, menetapkanrest
meminta waktu untukexchange
Menghubungi fungsi dengan permintaan jaringan sepertiexchange.GetTicker()
yang tidak menerima jawaban selama lebih dari 3 detik akan time out, dan panggilan fungsi yang melakukan time out akan mengembalikan nilai nol.SetTimeout()
bukan fungsi global, itu adalah metode dari objek pertukaran {@var/EXCHANGE exchange}
{@var/EXCHANGE pertukaran}
FMZ Quant Trading Platform benar-benar mendukung fungsi multi-threaded dariJavaScript
strategi bahasa dari bawah sistem, dan menerapkan tujuan berikut:
Objek | Panduan | Pengamatan |
---|---|---|
Pembuatan thread | Objek global multi-threaded | Fungsi anggota:Thread , getThread , mainThread , dll. |
Benang | Objek thread | Fungsi anggota:peekMessage , postMessage , join , dll. |
ThreadLock | Objek penguncian benang | Fungsi anggota:acquire , release . Mereka dapat diteruskan ke lingkungan thread sebagai parameter dari fungsi eksekusi thread. |
ThreadEvent | Objek acara | Fungsi anggota:set , clear , wait , isSet . Mereka dapat diteruskan ke lingkungan thread sebagai parameter dari fungsi eksekusi thread. |
ThreadKondisi | Objek kondisi | Fungsi anggota:notify , notifyAll , wait , acquire , release . Mereka dapat diteruskan ke lingkungan thread sebagai parameter dari fungsi eksekusi thread. |
ThreadDict | Objek kamus | Fungsi anggota:get , set . Mereka dapat diteruskan ke lingkungan thread sebagai parameter dari fungsi eksekusi thread. |
Peraturanthreading
object adalah alat manajemen multithreading global yang menyediakan fungsi seperti membuat thread paralel, kunci thread, dan objek kondisi.threading
Obyek ini hanya didukung olehJavaScript
strategi bahasa.
PeraturanThread()
fungsi digunakan untuk membuat thread bersamaan.
PeraturanThread()
fungsi mengembalikan aThread
objek, yang digunakan untuk mengelola thread yang dibuat secara bersamaan, komunikasi thread, dll.
Thread
objek
Thread ((func,...args) Thread ((...item)
Parameterfunc
adalah fungsi untuk eksekusi bersamaan (diperkenalkan dengan referensi), dan mendukung pemasangan fungsi anonim.func
dapat menerima beberapa parameter, yang akan diteruskan melalui...args
Oleh karena itu, daftar parameter darifunc
harus konsisten dengan...args
.
fungsi
benar
fungsi
Parameterarg
adalah parameter aktual yang diteruskan kefunc
(yaitu fungsi pelaksanaan thread bersamaan) ketika callback dijalankan; mungkin ada beberapa parameterarg
, dan daftar parameter darifunc
harus konsisten dengan...args
.
arg
palsu
string, number, bool, object, array, function, null value dan tipe lain yang didukung oleh sistem
Parameteritem
adalah array yang berisi referensi fungsi dan parameter mereka yang akan dijalankan secara bersamaan.item
parameter dapat diteruskan dalam ketika memanggilThread
function.
item benar 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 thread bersamaan untuk fungsi kustom dan fungsi anonim.
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 membuat thread bersamaan dan menjalankan beberapa 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)
}
Ini mendukung lulus dalam string fungsi dan dapat mengimpor perpustakaan eksternal secara dinamis untuk komputasi simultan.
Fungsi benangfunc
melewati ke dalamThread()
fungsi untuk eksekusi bersamaan berjalan di lingkungan yang terisolasi, sehingga variabel di luar thread tidak dapat dirujuk secara langsung, dan kompilasi akan gagal ketika dirujuk. Pada saat yang sama, referensi ke fungsi penutupan lainnya tidak didukung di dalam thread. Semua API yang disediakan oleh platform dapat dipanggil di dalam thread, tetapi fungsi yang didefinisikan pengguna lainnya tidak dapat dipanggil.
Ini mendukung sistem backtesting dan lingkungan perdagangan langsung. Semua fungsi terkait thread bersamaan hanya didukung sebagai kompatibilitas kode dalam sistem backtesting dan tidak akan benar-benar dieksekusi oleh thread bersamaan, jadi mereka tidak akan diulang 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 ini 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 sesuai dengan menentukan parameter.
ThreadId benar Nomor
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 thread yang ditentukan melaluithreadId
.
Ini mendukung sistem backtesting dan lingkungan perdagangan langsung.
Jika thread yang ingin Anda dapatkan telah dieksekusi dan dilepaskan, Anda tidak dapat 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 dari benang utama, yaitu benang di manamain()
fungsi dalam strategi yang terletak.
PeraturanmainThread()
fungsi mengembalikan objek thread dari thread utama.
Thread
objek
mainThread ((()
function main() {
Log("The threadId of the main thread:", threading.mainThread().id())
}
DapatkanThread
objek dari benang utama dan outputthreadId
dari 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 dari benang utama juga dapat diperoleh dalam benang paralel.
Ini mendukung sistem backtesting dan lingkungan 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/threading/Dict Dict}, {@fun/Threads/threading/threading/pending pending}, {@fun/Threads/threading/eventLoop Loop}
PeraturancurrentThread()
fungsi digunakan untuk mendapatkan objek thread dari thread saat ini.
PeraturancurrentThread()
fungsi mengembalikan objek thread dari thread saat ini.
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 dari benang arus dan outputthreadId
dari benang saat ini.
Ini mendukung sistem backtesting dan lingkungan perdagangan langsung.
{@fun/Threads/threading/Thread Thread}, {@fun/Threads/threading/mainThread mainThread}, {@fun/Threads/threading/Thread Thread}, {@fun/Threads/threading/Lock Lock}, {@fun/Threads/threading/Condition Condition}, {@fun/Threads/threading/event Event}, {@fun/Threads/threading/threading/Dict Dict}, {@fun/Threads/threading/threading/eventLoop pending}, {@fun/Threads/threading/eventLoop eventLoop}
PeraturanLock()
fungsi digunakan untuk membuat obyek thread lock.
PeraturanLock()
fungsi mengembalikan objek thread lock.
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 thread bersamaan mengakses sumber daya yang sama.
Ini mendukung sistem backtesting dan lingkungan 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 variabel kondisi, yang digunakan untuk mencapai sinkronisasi dan komunikasi antara thread dalam lingkungan serentak multi-threaded.Condition()
, sebuah thread dapat menunggu ketika kondisi tertentu tidak terpenuhi sampai thread lain memberitahunya bahwa kondisi telah terpenuhi.
PeraturanCondition()
fungsi mengembalikan aThreadCondition
object.
ThreadCondition
objek
Kondisi
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 thread bersamaan mengakses sumber daya yang sama.
Sistem backtesting tidak menerapkan fungsi ini, hanya mendefinisikannya.
{@fun/Threads/getThread getThread}, {@fun/Threads/threading/mainThread mainThread}, {@fun/Threads/threading/currentThread currentThread}, {@fun/Threads/threading/Lock Lock}, {@fun/Threads/threading/Thread Thread}, {@fun/Threads/threading/event}, {@fun/Threads/threads/threading/Dict Dict}, {@fun/Threads/threading/pending pending}, {@fun/Threads/threading/eventLoop}
PeraturanEvent()
fungsi digunakan untuk membuatacara threadobjek, yang digunakan untuk sinkronisasi antara thread, memungkinkan satu thread untuk menunggu pemberitahuan atau sinyal dari thread 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 thread bersamaan mengakses sumber daya yang sama.
Ini mendukung sistem backtesting dan lingkungan 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/Thread Thread}, {@fun/Threads/threading/Dict Dict}, {@fun/Threads/threading/pending pending}, {@fun/Threads/threading/eventLoop eventop}
PeraturanDict()
fungsi digunakan untuk membuat objek kamus untuk lulus ke thread bersamaan.
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()
}
Melalui objek normal ke fungsi pelaksanaan thread bersamaan untuk menguji apakah memodifikasi nilai kunci objek akan menyebabkan perubahan nilai kunci objek di thread 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 dibuat olehDict()
fungsi ke fungsi eksekusi thread bersamaan, dan menguji apakah memodifikasi nilai kunci objek akan menyebabkan nilai kunci objek dalam thread lain berubah.
Ketika sebuah objek umum diteruskan ke fungsi thread bersamaan, itu diteruskan sebagai salinan mendalam.
Ini mendukung sistem backtesting dan lingkungan 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/threading/pending pending}, {@fun/Threads/threading/eventLoop}
Peraturanpending
Fungsi ini digunakan untuk mendapatkan jumlah thread bersamaan yang berjalan dalam program strategi saat ini.
Peraturanpending()
fungsi mengembalikan jumlah thread bersamaan yang sedang dijalankan oleh program strategi saat ini.
nomor
sedang menunggu ((()
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 thread yang berjalan bersamaan dan panggilpending()
fungsi pada titik waktu yang berbeda.
Ketika strategimain()
fungsi mulai berjalan, memanggil fungsipending()
langsung akan mengembalikan 1, karena benang utama di mana strategimain()
fungsi yang terletak juga thread yang sedang menunggu.
Ini mendukung sistem backtesting dan lingkungan 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 dapat dibuat atau dikembalikan olehthreading.Thread()
, threading.getThread()
, threading.mainThread()
, danthreading.currentThread()
.
PeraturanpeekMessage()
fungsi digunakan untuk mendapatkan pesan dari thread.
PeraturanpeekMessage()
fungsi mengembalikan pesan yang diterima oleh thread yang terkait dengan objek thread saat ini.
string, number, bool, object, array, null value dan jenis lain yang didukung oleh sistem
PeekMessage (() peekMessage (timeout)
Parametertimeout
adalah pengaturan timeout. Ini akan memblokir dan menunggu jumlah milidetik yang ditetapkan oleh parameter dan mengembalikan data. Jika tidak ada data dan timeout melebihi batas, nilai nol akan dikembalikan. Jikatimeout
ditetapkan menjadi 0 atautimeout
parameter tidak dilewati, itu berarti bahwa proses akan memblokir dan menunggu sampai data diterima dari saluran.timeout
Jika nilai yang ditetapkan adalah -1, berarti bahwa proses tidak akan memblokir dan mengembalikan data segera.
timeout palsu Nomor
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()
}
Kirim pesan ke thread utama dari thread paralel.
Saat menulis program, kita perlu memperhatikan 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 mengirim pesan ke thread.
postMessage ((msg)
Parametermsg
adalah pesan yang akan dikirim.
msg benar Setiap jenis yang didukung oleh sistem, seperti string, nomor, bool, objek, array, nilai nol, dll.
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()
}
Kirim pesan dalam thread bersamaan dan gunakaneventLoop()
untuk menerima pemberitahuan pesan.
Ketika fungsi eksekusi threadpostMessage()
fungsi untuk mengirim sinyal atau data, sebuah peristiwa pesan juga dihasilkan.eventLoop()
fungsi untuk menerima pemberitahuan pesan.
{@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/Thread/name name}, {@fun/Threads/Thread/eventLoop eventLoop}
Peraturanjoin()
fungsi digunakan untuk menunggu thread untuk keluar dan merebut kembali sumber daya sistem.
PeraturanThreadRet
objekberisi data tentang hasil pelaksanaan.
ThreadRet
objek
Bergabunglah. bergabung (timeout)
Peraturantimeout
parameter digunakan untuk mengatur timeout dalam milidetik untuk menunggu thread untuk selesai.timeout
parameter diatur ke 0 atautimeout
parameter tidak diatur,join()
fungsi akan memblokir dan menunggu sampai thread selesai menjalankan.timeout
Parameter diatur menjadi -1,join()
Fungsi akan segera kembali.
timeout palsu Nomor
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}
}
Ujilahjoin()
fungsi untuk timeout dan output nilai kembali.
Peraturanjoin()
fungsi waktu 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 mengakhiri thread dan melepaskan sumber daya perangkat keras yang digunakan oleh thread yang dibuat.
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)
}
}
Mengakhiri eksekusi thread secara paksa Setelah mengakhiri thread secara paksa, tidak akan ada output dari thread ini di log.
Untuk benang yang diakhiri dengan paksa olehterminate()
fungsi, kita tidak bisa lagi menggunakanjoin()
fungsi untuk menunggu mereka untuk mengakhiri.
{@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 variabel yang tercatat dalam lingkungan thread. data yang valid ketika thread belum menjalankanjoin()
fungsi (menunggu keberhasilan keluar) dan belum melaksanakanterminate()
fungsi (mengakhiri benang secara paksa).
PeraturangetData()
fungsi mengembalikan nilai kunci yang sesuai dengankey
parameter dalam pasangan nilai kunci yang disimpan dalam konteks thread saat ini.
string, number, bool, object, array, null value dan jenis lain yang didukung oleh sistem
getData ((() getData (kunci)
Peraturankey
parameter adalah nama kunci dari pasangan kunci-nilai yang disimpan.
kunci benar string
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()
}
Catat nilai kuncicount
dalam lingkungan thread bersamaan, dan kemudian membaca nilai kunci daricount
di 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 variabel dalam konteks thread.
setData ((kunci, nilai)
Peraturankey
Parameter digunakan untuk menentukan nama kunci dari pasangan kunci-nilai yang disimpan.
kunci
benar
string
Peraturanvalue
Parameter digunakan untuk menentukan nilai kunci dari pasangan kunci-nilai yang disimpan.
nilai benar Setiap jenis yang didukung oleh sistem, seperti string, nomor, bool, objek, array, nilai nol, dll.
function main() {
var t1 = threading.Thread(function() {
threading.currentThread().setData("data", 100)
})
Sleep(1000)
Log(`t1.getData("data"):`, t1.getData("data"))
t1.join()
}
Atur pasangan kunci-nilai di thread paralel dan baca pasangan kunci-nilai di thread utama.
Data yang valid ketika thread belum dijalankanjoin()
fungsi (menunggu keberhasilan keluar) dan belum melaksanakanterminate()
fungsi (mengakhiri thread secara paksa). Nilai parametervalue
harus menjadi variabel yang dapat 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 name}, {@fun/Threads/Thread/eventLoop eventLoop}
Peraturanid()
fungsi digunakan untuk mengembalikanthreadId
dari instansi objek multithreaded saat ini.
Nilai pengembalianid()
fungsi adalahthreadId
.
nomor
id()
function main() {
var t1 = threading.Thread(function() {
threading.currentThread().setData("data", 100)
})
Log(`t1.id():`, t1.id())
t1.join()
}
Buat thread yang berjalan bersamaan dan outputthreadId
dari thread paralel ini di 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/name name}, {@fun/Threads/Threads/Thread/eventLoop eventLoop}
Peraturanname()
fungsi digunakan untuk mengembalikan nama contoh objek multithreaded saat ini.
Peraturanname()
fungsi mengembalikan nama thread bersamaan.
string
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 paralel dan keluarkan nama thread paralel di 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 mendengarkan untuk acara yang diterima oleh thread.
PeraturaneventLoop()
fungsi mengembalikan informasi peristiwa yang diterima oleh thread saat ini. LihatStruktur Informasi Acara.
objek, nilai nol
eventLoop (() eventLoop (timeout)
Parametertimeout
adalah pengaturan timeout dalam milidetik Jika parametertimeout
jika set menjadi 0, akan menunggu suatu peristiwa terjadi sebelum kembali. jika lebih besar dari 0, akan mengatur event waiting timeout. jika kurang dari 0, akan mengembalikan event terbaru segera.
timeout palsu Nomor
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()
}
Mengeksekusi tiga thread secara bersamaan dan keluarkan informasi peristiwa yang diterima.
Mekanisme pemrosesaneventLoop()
fungsi 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 thread, digunakan untuk pemrosesan sinkronisasi multi-thread.
Peraturanacquire()
Fungsi digunakan untuk meminta kunci benang (lock).
mendapatkan ((()
Silakan lihatthreading.Lock()
bagian untuk contoh.
Peraturanacquire()
Fungsi ini digunakan untuk meminta kunci thread.acquire()
fungsi dari objek thread lock, ia mencoba untuk memperoleh kunci. Jika kunci saat ini tidak dipegang oleh thread lain, thread yang memanggil berhasil memperoleh kunci dan melanjutkan eksekusi. Jika kunci sudah dipegang oleh thread lain, thread yang memanggilacquire()
akan diblokir sampai kunci dilepaskan.
{@fun/Threads/threading/Lock Lock}, {@fun/Threads/ThreadLock/release release}
Peraturanrelease()
fungsi digunakan untuk melepaskan kunci benang (membuka).
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()
}
Pengujian skenario kebuntuan
Perlu dicatat bahwa penggunaan kunci benang yang tidak tepat dapat menyebabkan kebuntuan.
{@fun/Threads/threading/Lock Lock}, {@fun/Threads/ThreadLock/acquire acquire}
Objek acara, digunakan untuk pemberitahuan dan sinyal acara multi-threaded.
Peraturanset()
fungsi digunakan untuk memberi tahu peristiwa (set sinyal).
Set (()
Silakan lihatthreading.Event()
bagian untuk contoh.
Jika sinyal telah diatur menggunakanset()
Kita harus membersihkan sinyal dan mengaturnya lagi.
{@fun/Threads/ThreadEvent/clear clear}, {@fun/Threads/ThreadEvent/wait wait}, {@fun/Threads/ThreadEvent/isSet isSet}
Peraturanclear()
Fungsi digunakan untuk membersihkan sinyal.
jelas.
Silakan lihatthreading.Event()
bagian untuk contoh.
{@fun/Threads/ThreadEvent/set set}, {@fun/ThreadEvent/wait wait}, {@fun/Threads/ThreadEvent/isSet isSet}
Peraturanwait()
fungsi digunakan untuk mengatur acara (sinyal) menunggu, dan akan memblokir sebelum acara (sinyal) ditetapkan; mendukung pengaturan parameter timeout.
Peraturanwait()
fungsi mengembalikan apakah timeout telah terjadi. Jika demikian, mengembalikan nilai benar.
bool
Tunggu. Tunggu (timeout)
Peraturantimeout
Parameter digunakan untuk mengatur waktu tunggu dalam milidetik.
timeout palsu Nomor
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 kembali dariwait()
function.
{@fun/Threads/ThreadEvent/set set}, {@fun/Threads/ThreadEvent/clear clear}, {@fun/Threads/ThreadEvent/isSet isSet}
PeraturanisSet()
fungsi digunakan untuk menentukan apakah suatu peristiwa (sinyal) telah ditetapkan.
PeraturanisSet()
fungsi mengembalikan apakah acara (sinyal) telah ditetapkan; jika acara (sinyal) telah ditetapkan, mengembalikan nilai benar.
bool
isSet()
Silakan lihatthreading.Event()
bagian untuk contoh.
{@fun/Threads/ThreadEvent/set set}, {@fun/Threads/ThreadEvent/clear clear}, {@fun/Threads/ThreadEvent/wait wait}
Objek kondisi, digunakan untuk sinkronisasi multi-thread.
Peraturannotify()
fungsi digunakan untuk membangunkan thread menunggu (jika ada).wait()
metode akan terbangun.
Berikan pemberitahuan
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 membangkitkan thread di antrian menunggu.
Ketikanotify()
fungsi membangunkan benang, benang akan mendapatkan kembali 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 thread yang menunggu.
Kabarkan Semua
Silakan lihatThreadCondition.notify()
bagian untuk contoh.
PeraturannotifyAll()
fungsi membangkitkan semua waiting threads satu per satu, dan threads terbangun mendapatkan kembali kunci thread.
{@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 kondisi tertentu yang dirancang.
Tunggu.
Silakan lihatThreadCondition.notify()
bagian untuk contoh.
Peraturanwait()
Fungsi melepaskan kunci benang dan mendapatkan kembali kunci benang ketika terbangun.
{@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 (lock).
mendapatkan ((()
Silakan lihatThreadCondition.notify()
bagian untuk contoh.
Sebelum digunakanwait()
, Anda perlu meminta thread lock (lock) dari objek kondisi saat ini.
{@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).
Pembebasan (((
Silakan lihatThreadCondition.notify()
bagian untuk contoh.
Setelah digunakanwait()
, kita perlu untuk melepaskan thread lock (membuka) dari kondisi saat ini objek.
{@fun/Threads/ThreadCondition/notify notify}, {@fun/Threads/ThreadCondition/notifyAll notifyAll}, {@fun/Threads/ThreadCondition/wait wait}, {@fun/Threads/ThreadCondition/acquire acquire}
Objek kamus, digunakan untuk berbagi data.
Peraturanget()
fungsi digunakan untuk mendapatkan nilai kunci yang tercatat dalam objek kamus.
Peraturanget()
fungsi mengembalikan nilai kunci yang ditentukan olehkey
parameter.
string, number, bool, object, array, null value dan jenis lain yang didukung oleh sistem
Dapatkan kunci
Peraturankey
Parameter digunakan untuk menentukan nama kunci yang sesuai dengan kunci yang akan diperoleh.
kunci benar string
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 acara untuk memberi tahu thread untuk membaca dan memodifikasi data.
{@fun/Threads/ThreadDict/set set}
Peraturanset()
fungsi digunakan untuk mengatur pasangan kunci-nilai.
set (kunci, nilai)
Parameterkey
digunakan untuk mengatur nama kunci yang akan dimodifikasi.
kunci
benar
string
Parametervalue
digunakan untuk mengatur nilai kunci yang akan dimodifikasi.
nilai benar string, number, bool, object, array, null value dan jenis lain yang didukung oleh sistem
Silakan lihatThreadDict.get()
bagian untuk contoh.
{@fun/Threads/ThreadDict/get get}
Dalam Platform Perdagangan Kuantum FMZ, terutama menerapkan berbagai fungsi, panggilan terkait dengan blockchain melaluiexchange.IO()
Dokumen berikut menggambarkanexchange.IO()
metode panggilan dariexchange.IO("abi", ...)
fungsi digunakan untuk mendaftarkan ABI.
exchange.IO(k, alamat, abiContent)
Peraturank
parameter digunakan untuk mengatur fungsi dariexchange.IO()
fungsi, diatur untuk"abi"
berarti bahwa fungsi ini digunakan untuk mendaftarABI
Aku tidak tahu.
k
benar
string
Peraturanaddress
Parameter digunakan untuk menentukan alamat kontrak pintar.
alamat
benar
string
PeraturanabiContent
parameter digunakan untuk menentukanABI
dari kontrak pintar.
abiContent
benar
string
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)
}
Metode panggilan kontrak pintar tidak perlu didaftarkan jika metode ERC20 standar.
DapatkanABI
isi kontrak dapat diperoleh dengan URL berikut, mengambilresult
hanya bidang, misalnya:
https://api.etherscan.io/api?module=contract&action=getabi&address=0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45
Metode panggilan dariexchange.IO("api", "eth", ...)
fungsi digunakan untuk memanggil metode Ethereum RPC.
Peraturanexchange.IO("api", "eth", ...)
fungsi mengembalikan nilai yang dikembalikan dari metode RPC yang disebut.
string, number, bool, object, array, null dan semua tipe lain yang didukung oleh sistem
exchange.IO(k, blockChain, rpcMethod)exchange.IO(k, blockChain, rpcMethod,...args)
Peraturank
parameter digunakan untuk mengatur fungsi dariexchange.IO()
fungsi, diatur untuk"api"
menunjukkan bahwa fungsi digunakan untuk memperluas permintaan panggilan.
k
benar
string
PeraturanblockChain
parameter digunakan untuk mengatur fungsi dariexchange.IO()
fungsi, diatur untuk"eth"
menunjukkan bahwa fungsi ini digunakan untuk panggilan metode RPC di Jaringan Ethereum.
blockChain
benar
string
PeraturanrpcMethod
Parameter digunakan untuk mengatur metode RPC yang akan dipanggil olehexchange.IO()
fungsi.
rpcMethod
benar
string
Peraturanarg
parameter digunakan untuk menentukan parameter metode RPC yang akan dipanggil.arg
Jenis dan jumlaharg
parameter tergantung pada metode RPC yang ditentukan olehrpcMethod
Parameter.
arg
palsu
string, number, bool, object, array, function, null, dan semua tipe lain yang didukung 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 saldo ETH di 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 transfer ETH, Anda dapat mengatur{gasPrice: 11, gasLimit: 111, nonce: 111}
parameter, yang ditetapkan pada parameter terakhir dariexchange.IO()
Anda dapat melewatkannonce
dan menggunakan sistem default, atau meninggalkangasLimit/gasPrice/nonce
Unduh dan gunakan nilai default 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)
}
PertanyaangasPrice
:
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)
}
Pertanyaaneth_estimateGas
:
Parameter kedua dariexchange.IO()
fungsi dengan"eth"
dapat langsung memanggil metode RPC yang tersedia untuk server node Ethereum.
{@fun BigDecimal}, {@fun BigInt}
Peraturanexchange.IO("encode", ...)
fungsi dipanggil untuk pengkodean data.
Peraturanexchange.IO("encode", ...)
fungsi mengembalikan data yang dikodekan.
string
exchange.IO(k, dataFormat,...args)exchange.IO(k, alamat, dataFormat)exchange.IO(k, alamat, dataFormat,...args)
Peraturank
parameter digunakan untuk mengatur fungsi dariexchange.IO()
fungsi, diatur untuk"encode"
berarti fungsi digunakan untuk pengkodean data.
k
benar
string
Peraturanaddress
parameter digunakan untuk mengatur alamat kontrak pintar.exchange.IO("encode", ...)
fungsi, melewati dalamaddress
parameter menunjukkan pengkodean metode panggilan pada kontrak pintar.exchange.IO("encode", ...)
fungsi, jikaaddress
parameter tidak dilewati, fungsi ini digunakan untuk mengkode urutan jenis yang ditentukan dan secara fungsional setara denganabi.encode
dalamSolidity
Aku tidak tahu.
alamat
palsu
string
PeraturandataFormat
Parameter digunakan untuk menentukan metode, jenis, dan urutan data yang dikodekan.
dataFormat
benar
string
Peraturanarg
parameter digunakan untuk menentukan nilai data spesifik yang sesuai dengandataFormat
Mungkin ada lebih dari satu parameterarg
parameter, dan jenis dan jumlaharg
parameter tergantung padadataFormat
pengaturan parameter.
arg
palsu
string, number, tuple, array, dan semua jenis lain yang didukung 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)
}
Misalnya, memanggil metode pengkodeanunwrapWETH9
:
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
*/
}
Ini setara dengan contoh pengkodean dariabi.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)
}
Ini mendukung pengkodean tuple atau urutan tipe yang berisi tuple.
Urutan jenis ini terdiri dari:tuple
, bytes
, jadi ketika meneleponexchange.IO()
untuk pengkodean, Anda perlu terus melewati dua parameter:
{
a: 30,
b: 20,
c: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"
}
Parameter yang diberikan juga harus konsisten dengan struktur dan jenistuple
, sebagaimana didefinisikan dalamtypes
Parameter dari formulir: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)
}
Ini mendukung untuk pengkodean berurutan array atau jenis yang mengandung array:
Peraturanexchange.IO()
fungsi merangkumencode
metode, yang dapat mengembalikan kode panggilan fungsi kehex
Untuk penggunaan khusus, Anda dapat merujuk ke platform yang tersedia untuk umum
Peraturanexchange.IO("encodePacked", ...)
fungsi dipanggil dengan cara yang digunakan untukencodePacked
encoding.
Peraturanexchange.IO("encodePacked", ...)
fungsi mengembalikanencodePacked
data terenkripsi.
string
exchange.IO(k, dataFormat,...args)
Peraturank
parameter digunakan untuk mengatur fungsi dariexchange.IO()
fungsi, diatur untuk"encodePacked"
berarti bahwa fungsi digunakan untuk dataencodePacked
mengkodekan.
k
benar
string
PeraturandataFormat
parameter digunakan untuk menentukan jenis dan urutanencodePacked
data terenkripsi.
dataFormat
benar
string
Peraturanarg
parameter digunakan untuk menentukan nilai data spesifik yang sesuai dengandataFormat
Mungkin ada lebih dari satu parameterarg
parameter, dan jenis dan jumlaharg
parameter tergantung padadataFormat
pengaturan parameter.
arg
benar
string, number, tuple, array, dan semua jenis lain yang didukung 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)
}
Saat digunakanUniswap V3
, Anda perlu untuk lulus dalam parameter seperti jalur pertukaran, Anda perlu menggunakanencodePacked
operasi pengkodean:
Peraturanexchange.IO("decode", ...)
fungsi dipanggil dengan cara yang digunakan untuk dekoding.
Peraturanexchange.IO("decode", ...)
fungsi mengembalikan data yang didekode. Mengembalikan string ketika hanya ada satu data yang ditentukan olehdataFormat
Mengembalikan array ketika ada lebih dari satu data yang ditentukan olehdataFormat
Parameter.
array、string
exchange.IO(k, data)
Peraturank
parameter digunakan untuk mengatur fungsi dariexchange.IO()
fungsi, dan mengaturnya ke"decode"
berarti bahwa fungsi digunakan untuk dekoding data.
k
benar
string
PeraturandataFormat
Parameter digunakan untuk menentukan jenis dan urutan data yang didekode.
dataFormat
benar
string
Peraturandata
Parameter digunakan untuk mengatur data yang akan didekode.
data
benar
string
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)
}
Operasi terbalik dariexchange.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
proses parameter, karenaexactOutput
panggilan metode yang perlu dikodekan kemudian membutuhkanpath
sebagai parameter. Kemudianencode
yangexactOutput
metode kontrak rute, yang hanya memiliki satu parameter jenistuple
. Nama metodeexactOutput
dikodekan sebagai:0x09b81346
, dan menggunakanexchange.IO("decode", ...)
metode untuk mendekode hasildecodeRaw
, konsisten dengan variabeldataTuple
.
Untuk pengolahan data,exchange.IO()
fungsi mendukung tidak hanya pengkodean, tetapi juga dekodean.
Peraturanexchange.IO("key", ...)
fungsi dipanggil dengan cara untuk beralih kunci pribadi.
exchange.IO(k, kunci)
Parameterk
digunakan untuk mengatur fungsi dariexchange.IO()
fungsi, diatur untuk"key"
berarti fungsi digunakan untuk beralih kunci pribadi.
k
benar
string
Peraturankey
Parameter digunakan untuk mengatur kunci pribadi.
kunci
benar
string
function main() {
exchange.IO("key", "Private Key") // "Private Key" represents the private key string, which needs to be filled in specifically
}
Peraturanexchange.IO()
fungsi mendukung beralih kunci pribadi dan dapat memanipulasi beberapa alamat dompet.
Peraturanexchange.IO("api", ...)
fungsi dipanggil dengan cara yang digunakan untuk memanggil metode kontrak pintar.
Peraturanexchange.IO("api", ...)
fungsi mengembalikan nilai yang dikembalikan dari metode yang disebut kontrak pintar.
string, number, bool, object, array, null dan semua tipe lain yang didukung oleh sistem
exchange.IO(k, alamat, metode)exchange.IO(k, alamat, metode,... args)exchange.IO(k, alamat, metode, nilai,... args)
Peraturank
parameter digunakan untuk mengatur fungsi dariexchange.IO()
fungsi, diatur untuk"api"
menunjukkan bahwa fungsi digunakan untuk memperluas permintaan panggilan.
k
benar
string
Peraturanaddress
Parameter digunakan untuk menentukan alamat kontrak pintar.
alamat
benar
string
Peraturanmethod
Parameter digunakan untuk menentukan metode kontrak pintar yang akan dipanggil.
metode
benar
string
Peraturanvalue
parameter digunakan untuk mengatur jumlah ETH yang akan dikirim.stateMutability
Atribut metode kontrak pintar yang akan dieksekusi adalahpayable
, kemudianvalue
Parameter harus dilewati."stateMutability": "payable"
Atribut dapat dilihat dari ABI.exchange.IO()
fungsi akan menentukan parameter yang diperlukan berdasarkanstateMutability
Atribut dalam ABI yang telah terdaftar.stateMutability
atribut adalahnonpayable
, kemudianvalue
Parameter tidak perlu dilewati.
nilai
palsu
nomor, string
Peraturanarg
parameter digunakan untuk menentukan parameter metode kontrak pintar yang akan dipanggil.arg
parameter, dan jenis dan jumlaharg
parameter tergantung pada metode kontrak pintar yang akan dipanggil.
arg
palsu
string, number, bool, dan semua jenis lain yang didukung 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
metode adalahconstant
metode ERC20 yang tidak menimbulkan konsumsi gas dan dapat menanyakan data presisi token.decimals
Nilai pengembalian: data presisi 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
metode adalahconstant
metode ERC20 yang tidak menghasilkan konsumsi gas dan dapat menanyakan jumlah yang sah dari token untuk alamat kontrak tertentu.allowance
metode mengambil 2 parameter, yang pertama adalah alamat dompet dan yang kedua adalah alamat otorisasi.
owner
: alamat dompet, contohnya diganti dengan string spender
: alamat kontrak yang sah, contohnya digantikan oleh string 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
metode ini adalah non-constant
metodeUniswap V3
yang menghasilkan konsumsi gas dan digunakan untuk menebus token dengan berbagai cara.
Peraturanmulticall
metode mungkin memiliki berbagai cara untuk melewati parameter, Anda dapat memeriksa ABI yang berisi metode secara khusus, Anda perlu mendaftarkan ABI sebelum memanggil metode.
Untuk contoh spesifik darimulticall
metode panggilan, Anda dapat merujuk ke platform yang tersedia untuk umum
Beberapa detail dijelaskan di sini menggunakan pseudo-kode:
exchange.IO("api", ContractV3SwapRouterV2, "multicall(uint256,bytes[])", value, deadline, data)
ContractV3SwapRouterV2
: alamat router v2 dari Uniswap V3.value
: jumlah ETH yang akan ditransfer, ditetapkan menjadi 0 jika tokenIn token dari operasi pertukaran bukan ETH.deadline
: deadline
adalah parameter darimulticall
metode, yang dapat diatur untuk (new Date().getTime() / 1000) + 3600, menunjukkan bahwa itu berlaku selama satu jam.data
: data
adalah parameter darimulticall
metode, data dari operasi pengemasan yang akan dilakukan.
Mirip denganexchange.IO("api", "eth", "send", "toAddress", toAmount)
, yanggasLimit/gasPrice/nonce
pengaturan panggilan metode dapat ditentukan saat memanggilmulticall
metode.
Sekali lagi, kita menggunakan pseudo-kode untuk menggambarkan:
exchange.IO("api", ContractV3SwapRouterV2, "multicall(uint256,bytes[])", value, deadline, data, {gasPrice: 123456, gasLimit: 21000})
Parameter{gasPrice: 11, gasLimit: 111, nonce: 111}
dapat diatur sesuai dengan kebutuhan khusus, yang diatur ke parameter terakhir dariexchange.IO()
fungsi.
Anda bisa melewatkannonce
dan menggunakan sistem default nilai, atau meninggalkangasLimit/gasPrice/nonce
Unduh dan gunakan nilai default sistem untuk semua.
Peraturanexchange.IO("address")
fungsi dipanggil sedemikian rupa untuk mendapatkan alamat dompet yang dikonfigurasi oleh objek pertukaran {@var/EXCHANGE exchange}.
Peraturanexchange.IO("address")
fungsi mengembalikan alamat dompet yang dikonfigurasi.
string
exchange.IO(k)
Peraturank
parameter digunakan untuk mengatur fungsi dariexchange.IO()
fungsi, diatur untuk"address"
berarti bahwa fungsi ini digunakan untuk mendapatkan alamat dompet yang dikonfigurasi.
k
benar
string
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 mengatur alamat node RPC.
exchange.IO(k, alamat)
Peraturank
parameter digunakan untuk mengatur fungsi dariexchange.IO()
fungsi, diatur untuk"base"
berarti fungsi digunakan untuk beralih node RPC.
k
benar
string
Peraturanaddress
Parameter digunakan untuk mengatur alamat node RPC.
alamat
benar
string
function main() {
var chainRpc = "https://bsc-dataseed.binance.org"
e.IO("base", chainRpc) // Switching to BSC chain
}
PeraturanTA.MACD()
fungsi digunakan untuk menghitungIndikator MACD perbandingan dan kesamaan yang dihaluskan secara eksponensial.
Nilai pengembalianTA.MACD()
fungsi adalah array dua dimensi dengan struktur:[DIF, DEA, MACD]
Aku tidak tahu.
Array
TA.MACD ((inReal) TA.MACD ((inReal, optInFastPeriod, optInSlowPeriod, optInSignalPeriod)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
benar
{@struct/Record Record} array struktur, array numerik
PeraturanoptInFastPeriod
Parameter digunakan untuk mengatur periode cepat.
optInFastPeriod
palsu
Nomor
PeraturanoptInSlowPeriod
Parameter digunakan untuk mengatur periode lambat.
optInSlowPeriod
palsu
Nomor
PeraturanoptInSignalPeriod
parameter digunakan untuk mengatur periode sinyal.
OpInSignalPeriode
palsu
Nomor
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, dioptimalkan untuk algoritma indikator umum.JavaScript
, Python
, C++
panggilan strategi bahasa,Kode perpustakaan TA sumber terbukaAku tidak tahu.
Nilai default darioptInFastPeriod
, optInSlowPeriod
, danoptInSignalPeriod
parameter dariTA.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{\cH00FFFF}, {@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 menghitungIndikator stokastik.
Nilai pengembalianTA.KDJ()
fungsi adalah array dua dimensi dengan struktur:[K, D, J]
Aku tidak tahu.
Array
TA.KDJ ((inReal) TA.KDJ ((inReal, periode, kPeriode, dPeriode)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
benar
{@struct/Record Record} array struktur, array numerik
Peraturanperiod
parameter digunakan untuk mengatur periode 1.
periode
palsu
Nomor
PeraturankPeriod
parameter digunakan untuk mengatur periode 2.
kPeriode
palsu
Nomor
PeraturandPeriod
parameter digunakan untuk mengatur periode 3.
dPeriode
palsu
Nomor
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 default untukperiod
, kPeriod
, dandPeriod
parameter dariTA.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{\cH00FFFF}, {@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 menghitungIndikator kekuatan.
Nilai pengembalianTA.RSI()
fungsi adalah: array satu dimensi.
Array
TA.RSI ((inReal) TA.RSI ((inReal, optInTimePeriod)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
benar
{@struct/Record Record} array struktur, array numerik
PeraturanoptInTimePeriod
parameter digunakan untuk mengatur periode.
optInTimePeriode
palsu
Nomor
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 default darioptInTimePeriod
parameter dariTA.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{\cH00FFFF}, {@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 menghitungRata-rata Indikator Volatilitas Benar.
Nilai pengembalianTA.ATR()
fungsi adalah: array satu dimensi.
Array
TA.ATR ((inPriceHLC) TA.ATR ((inPriceHLC, optInTimePeriod)
PeraturaninPriceHLC
parameter digunakan untuk menentukan data garis K.
inPriceHLC
benar
Array struktur {@struct/Record Record}
PeraturanoptInTimePeriod
parameter digunakan untuk mengatur periode.
optInTimePeriode
palsu
Nomor
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 default darioptInTimePeriod
parameter dariTA.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{\cH00FFFF}, {@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 menghitungIndikator pasang energi.
Nilai pengembalianTA.OBV()
fungsi adalah: array satu dimensi.
Array
TA.OBV ((inReal) TA.OBV ((inReal, inPriceV)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
benar
{@struct/Record Record} array struktur, array numerik
PeraturaninPriceV
Parameter digunakan untuk menentukan data jumlah transaksi.
inPriceV
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{\cH00FFFF}, {@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 menghitungIndikator MACD.
Nilai pengembalianTA.MA()
fungsi adalah: array satu dimensi.
Array
TA.MA(inReal)TA.MA(inReal, optInTimePeriod)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
benar
{@struct/Record Record} array struktur, array numerik
PeraturanoptInTimePeriod
parameter digunakan untuk mengatur periode.
optInTimePeriode
palsu
Nomor
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 default darioptInTimePeriod
parameter dariTA.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 menghitungindikator rata-rata eksponensial.
Nilai pengembalianTA.EMA()
fungsi adalah: array satu dimensi.
Array
TA.EMA ((inReal) TA.EMA ((inReal, optInTimePeriod)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
benar
{@struct/Record Record} array struktur, array numerik
PeraturanoptInTimePeriod
parameter digunakan untuk mengatur periode.
optInTimePeriode
palsu
Nomor
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 default darioptInTimePeriod
parameter dariTA.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}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA.Lowest TA.Lowest}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA/TA
PeraturanTA.BOLL()
fungsi digunakan untuk menghitungIndikator Bollinger Band.
Nilai pengembalianTA.BOLL()
fungsi adalah array dua dimensi dengan struktur:[upLine, midLine, downLine]
Aku tidak tahu.
Array
TA.BOLL ((inReal) TA.BOLL ((inReal, periode, pengganda)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
benar
{@struct/Record Record} array struktur, array numerik
Peraturanperiod
parameter digunakan untuk mengatur periode.
periode
palsu
Nomor
Peraturanmultiplier
Parameter digunakan untuk mengatur pengganda.
perkalian
palsu
Nomor
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 default untukperiod
danmultiplier
parameter dariTA.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{\cH00FFFF}, {@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 menghitungIndikator Buaya.
Nilai pengembalianTA.Alligator()
fungsi adalah array dua dimensi dengan struktur:[jawLine, teethLine, lipsLine]
Aku tidak tahu.
Array
TA. Alligator ((inReal) TA.Aligator ((inReal, rahangLength, gigiLength, bibirLength
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
benar
{@struct/Record Record} array struktur, array numerik
PeraturanjawLength
Parameter digunakan untuk mengatur periode rahang.
rahangpanjang
palsu
Nomor
PeraturanteethLength
Parameter digunakan untuk mengatur periode gigi.
gigiLength
palsu
Nomor
PeraturanlipsLength
parameter digunakan untuk mengatur periode bibir atas.
Lengan bibir
palsu
Nomor
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 default darijawLength
, teethLength
, danlipsLength
parameter dariTA.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{\cH00FFFF}, {@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 menghitungIndikator Aliran Uang Chaikin.
Nilai pengembalianTA.CMF()
fungsi adalah: array satu dimensi.
Array
TA.CMF ((inReal) TA.CMF ((inReal, inPriceV)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
benar
{@struct/Record Record} array struktur, array numerik
PeraturaninPriceV
Parameter digunakan untuk menentukan data volume.
inPriceV
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{\cH00FFFF}, {@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 menghitungharga tertinggi periode.
PeraturanTA.Highest()
fungsi mengembalikan nilai maksimum dari atribut dalam periode tertentu terakhir, tidak termasuk Bar saat ini.
nomor
TA.Tinggi (dalam Real) TA.Tinggi ((inReal, periode, attr)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
benar
{@struct/Record Record} array struktur, array numerik
Peraturanperiod
parameter digunakan untuk mengatur periode.
periode
palsu
Nomor
Peraturanattr
parameter digunakan untuk mengatur atribut, opsional:Open
, Close
, Low
, High
, Volume
, OpenInterest
Aku tidak tahu.
attr
palsu
string
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);
}
Misalnya, jikaTA.Highest(records, 30, "High")
fungsi dipanggil, jika parameter periodeperiod
diatur untuk0
, itu berarti menghitung semuaBars
dari data K-line yang dikirimkan olehinReal
parameter; jika parameter atributattr
tidak ditentukan, data K-line yang dikirimkan 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{\cH00FFFF}, {@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 menghitungperiode harga terendah.
PeraturanTA.Lowest()
fungsi mengembalikan nilai minimum dari atribut pada periode tertentu terakhir, tidak termasuk Bar saat ini.
nomor
TA.Lowest ((inReal) TA.Terendah ((inReal, periode, attr)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
benar
{@struct/Record Record} array struktur, array numerik
Peraturanperiod
parameter digunakan untuk mengatur periode.
periode
palsu
Nomor
Peraturanattr
parameter digunakan untuk mengatur atribut, opsional:Open
, Close
, Low
, High
, Volume
, OpenInterest
Aku tidak tahu.
attr
palsu
string
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);
}
Misalnya, jikaTA.Lowest(records, 30, "Low")
fungsi dipanggil, jika parameter periodeperiod
diatur untuk0
, itu berarti menghitung semuaBars
dari data K-line yang dikirimkan olehinReal
parameter; jika parameter atributattr
tidak ditentukan, data K-line yang dikirimkan olehinReal
parameter dianggap sebagai array biasa.
PenggunaanTA.Highest()
danTA.Lowest()
fungsi dalamC++
strategi perlu dicatat bahwaHighest()
danLowest()
fungsi masing-masing hanya memiliki 2 parameter.
Dan parameter pertama yang diteruskan bukan data garis Kr
diperoleh ketika fungsiauto r = exchange.GetRecords()
telah dipanggil.
Kau harus menghubungir
metode dan lulus dalam data atribut tertentu.r.Close()
data harga penutupan.Close
, High
, Low
, Open
, Volume
seperti dalamr.Close()
metode panggilan.
Contoh tes dariC++
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{\cH00FFFF}, {@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.Highest TA.Highest}, {@fun/TA/TA.Highest TA.Highest}, {@fun/TA/TA.Highest TA.Highest}, {@fun/TA/TA.Highest TA.Highest}, {@fun/TA/TA.Highest TA.Highest}, {@fun/TA/TA.Highest TA.Highest}
PeraturanTA.SMA()
fungsi digunakan untuk menghitungindikator rata-rata bergerak sederhana.
Nilai pengembalianTA.SMA()
fungsi adalah: array satu dimensi.
Array
TA.SMA ((inReal) TA.SMA ((inReal, optInTimePeriod)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
benar
{@struct/Record Record} array struktur, array numerik
PeraturanoptInTimePeriod
parameter digunakan untuk mengatur periode.
optInTimePeriode
palsu
Nomor
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 default darioptInTimePeriod
parameter dariTA.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{\cH00FFFF}, {@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 menghitungDua gagak (K-line chart - Dua gagak).
Nilai pengembaliantalib.CDL2CROWS()
fungsi adalah array satu dimensi.
Array
talib.CDL2CROWS ((inPriceOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
benar
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:CDL2CROWS(Records[Open,High,Low,Close]) = Array(outInteger)
Untuk panggilan diPython
bahasa, parameter lulus berbeda dan perlu didasarkan pada deskripsi di atas:Records[Open,High,Low,Close]
.
Contoh pembagian variabelrecords
(yaitu parameterinPriceOHLC
, ketik {@struct/Record Record} susunan struktur) ke dalam:Open
daftar: ditulis dalam Python sebagairecords.Open
.
High
daftar: ditulis sebagairecords.High
dalam Python.Low
daftar: ditulis dalam Python sebagairecords.Low
.
Close
daftar: ditulis dalam Python sebagairecords.Close
.
Digunakan dalam kode strategi Python:
talib.CDL2CROWS(records.Open, records.High, records.Low, records.Close)
Yang lainnya.talib
indikator dijelaskan dengan cara yang sama dan mereka tidak akan diulang.
Peraturantalib.CDL3BLACKCROWS()
Fungsi digunakan untuk menghitungTiga Black Crows (K-line chart - Tiga Black Crows).
Nilai pengembaliantalib.CDL3BLACKCROWS()
fungsi adalah: array satu dimensi.
Array
talib.CDL3BLACKCROWS ((inPriceOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
benar
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:CDL3BLACKCROWS(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDL3INSIDE()
Fungsi digunakan untuk menghitungTiga di dalam atas/bawah (K-line chart: Tiga di dalam atas/bawah).
Nilai pengembaliantalib.CDL3INSIDE()
fungsi adalah: array satu dimensi.
Array
talib.CDL3INSIDE ((inPriceOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
benar
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:CDL3INSIDE(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDL3LINESTRIKE()
fungsi digunakan untuk menghitungTiga-Line Strike (K-line chart: Tiga-Line Strike).
Nilai pengembaliantalib.CDL3LINESTRIKE()
fungsi adalah: array satu dimensi.
Array
Talib.CDL3LINESTRIKE ((inPriceOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
benar
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:CDL3LINESTRIKE(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDL3OUTSIDE()
Fungsi digunakan untuk menghitungTiga di luar atas/bawah (K-line chart: Tiga di luar atas/bawah).
Nilai pengembaliantalib.CDL3OUTSIDE()
fungsi adalah: array satu dimensi.
Array
talib.CDL3OUTSIDE ((inPriceOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
benar
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:CDL3OUTSIDE(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDL3STARSINSOUTH()
Fungsi digunakan untuk menghitungTiga Bintang di Selatan (K-line chart: Three Stars In The South).
Nilai pengembaliantalib.CDL3STARSINSOUTH()
fungsi adalah: array satu dimensi.
Array
Talib.CDL3STARSINSOUTH ((inPriceOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
benar
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:CDL3STARSINSOUTH(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDL3WHITESOLDIERS()
Fungsi digunakan untuk menghitungTiga Prajurit Putih yang Melangkah (Bagian K: Tiga Prajurit Putih yang Melangkah).
Nilai pengembaliantalib.CDL3WHITESOLDIERS()
fungsi adalah: array satu dimensi.
Array
talib.CDL3WHITESOLDIERS ((inPriceOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
benar
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:CDL3WHITESOLDIERS(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLABANDONEDBABY()
Fungsi digunakan untuk menghitungBayi yang ditinggalkan (K-line chart: Bayi yang ditinggalkan).
Nilai pengembaliantalib.CDLABANDONEDBABY()
fungsi adalah: array satu dimensi.
Array
talib.CDLABANDONEDBABY ((inPriceOHLC) talib.CDLABANDONEDBABY ((inPriceOHLC, optInPenetration)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
benar
Array struktur {@struct/Record Record}
PeraturanoptInPenetration
parameter digunakan untuk mengatur Penetrasi, nilai default adalah 0,3.
optInPenetration
palsu
nomor
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:CDLABANDONEDBABY(Records[Open,High,Low,Close],Penetration = 0.3) = Array(outInteger)
Peraturantalib.CDLADVANCEBLOCK()
fungsi digunakan untuk menghitungBlok Advance (K-line chart: Advance).
Nilai pengembaliantalib.CDLADVANCEBLOCK()
fungsi adalah array satu dimensi.
Array
talib.CDLADVANCEBLOCK ((inPriceOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
benar
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:CDLADVANCEBLOCK(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLBELTHOLD()
fungsi digunakan untuk menghitungPegang sabuk (grafik garis K: Pegang sabuk).
Nilai pengembaliantalib.CDLBELTHOLD()
fungsi adalah: array satu dimensi.
Array
talib.CDLBELTHOLD ((inPriceOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
benar
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:CDLBELTHOLD(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLBREAKAWAY()
fungsi digunakan untuk menghitungBreakaway (K-line chart: Breakaway).
Nilai pengembaliantalib.CDLBREAKAWAY()
fungsi adalah: array satu dimensi.
Array
Talib.CDLBREAKAWAY ((inPriceOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
benar
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:CDLBREAKAWAY(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLCLOSINGMARUBOZU()
Fungsi digunakan untuk menghitungMenutup Marubozu (K-line chart: menutup bertelanjang kepala dan bertelanjang kaki).
Nilai pengembaliantalib.CDLCLOSINGMARUBOZU()
fungsi adalah: array satu dimensi.
Array
talib.CDLCLOSINGMARUBOZU ((inPriceOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
benar
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:CDLCLOSINGMARUBOZU(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLCONCEALBABYSWALL()
fungsi digunakan untuk menghitungMenyimpan Baby Swallow (K-line chart: Menyimpan Baby Swallow pattern).
Nilai pengembaliantalib.CDLCONCEALBABYSWALL()
fungsi adalah: array satu dimensi.
Array
talib.CDLCONCEALBABYSWALL ((inPriceOHLC) (dalam bahasa Inggris)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
benar
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:CDLCONCEALBABYSWALL(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLCOUNTERATTACK()
Fungsi digunakan untuk menghitungCounterattack (K-line chart: Counterattack).
Nilai pengembaliantalib.CDLCOUNTERATTACK()
fungsi adalah array satu dimensi.
Array
Talib.CDLCOUNTERATTACK (dalam Harga OHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
benar
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:CDLCOUNTERATTACK(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLDARKCLOUDCOVER()
Fungsi digunakan untuk menghitungTutupan Awan Gelap (grafik garis K: Tutupan Awan Gelap).
Nilai pengembaliantalib.CDLDARKCLOUDCOVER()
fungsi adalah array satu dimensi.
Array
talib.CDLDARKCLOUDCOVER ((inPriceOHLC) talib.CDLDARKCLOUDCOVER ((inPriceOHLC, optInPenetration)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
benar
Array struktur {@struct/Record Record}
PeraturanoptInPenetration
parameter digunakan untuk mengatur Penetrasi, nilai default adalah 0,5.
optInPenetration
palsu
nomor
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:CDLDARKCLOUDCOVER(Records[Open,High,Low,Close],Penetration = 0.5) = Array(outInteger)
Peraturantalib.CDLDOJI()
Fungsi digunakan untuk menghitungDoji (K-line chart: Doji).
Nilai pengembaliantalib.CDLDOJI()
fungsi adalah: array satu dimensi.
Array
Talib.CDLDOJI ((inPriceOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
benar
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:CDLDOJI(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLDOJISTAR()
fungsi digunakan untuk menghitungDoji Star (K-line chart: Doji Star).
Nilai pengembaliantalib.CDLDOJISTAR()
fungsi adalah: array satu dimensi.
Array
Talib.CDLDOJISTAR ((inPriceOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
benar
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:CDLDOJISTAR(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLDRAGONFLYDOJI()
Fungsi digunakan untuk menghitungDragonfly Doji (K-line chart: Dragonfly Doji).
Nilai pengembaliantalib.CDLDRAGONFLYDOJI()
fungsi adalah: array satu dimensi.
Array
Talib.CDLDRAGONFLYDOJI (dalam Harga OHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
benar
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:CDLDRAGONFLYDOJI(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLENGULFING()
fungsi digunakan untuk menghitungPattern engulfing (K-line chart: engulfing).
Nilai pengembaliantalib.CDLENGULFING()
fungsi adalah array satu dimensi.
Array
Talib.CDLENGULFING ((inPriceOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
benar
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:CDLENGULFING(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLEVENINGDOJISTAR()
fungsi digunakan untuk menghitungMalam Doji Star (K-line chart: Malam Doji Star).
Nilai pengembaliantalib.CDLEVENINGDOJISTAR()
fungsi adalah: array satu dimensi.
Array
Talib.CDLEVENINGDOJISTAR ((dalam HargaOHLC) Talib.CDLEVENINGDOJISTAR ((inPriceOHLC, optInPenetration)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
benar
Array struktur {@struct/Record Record}
PeraturanoptInPenetration
parameter digunakan untuk mengatur Penetrasi, nilai default adalah 0,3.
optInPenetration
palsu
nomor
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:CDLEVENINGDOJISTAR(Records[Open,High,Low,Close],Penetration = 0.3) = Array(outInteger)
Peraturantalib.CDLEVENINGSTAR()
fungsi digunakan untuk menghitungBintang Malam (K-line chart: Bintang Malam).
Nilai pengembaliantalib.CDLEVENINGSTAR()
fungsi adalah: array satu dimensi.
Array
talib.CDLEVENINGSTAR ((inPriceOHLC) Talib.CDLEVENINGSTAR ((inPriceOHLC, optInPenetration)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
benar
Array struktur {@struct/Record Record}
PeraturanoptInPenetration
parameter digunakan untuk mengatur Penetrasi, nilai default adalah 0,3.
optInPenetration
palsu
nomor
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:CDLEVENINGSTAR(Records[Open,High,Low,Close],Penetration = 0.3) = Array(outInteger)
Peraturantalib.CDLGAPSIDESIDEWHITE()
Fungsi digunakan untuk menghitungGaris-garis putih berdekatan (K-line chart: Garis-garis putih berdekatan).
Nilai pengembaliantalib.CDLGAPSIDESIDEWHITE()
fungsi adalah: array satu dimensi.
Array
Talib.CDLGAPSIDESIDEWHITE ((dalam HargaOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
benar
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:CDLGAPSIDESIDEWHITE(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLGRAVESTONEDOJI()
fungsi digunakan untuk menghitungGravestone Doji (K-line chart: Gravestone Doji).
Nilai pengembaliantalib.CDLGRAVESTONEDOJI()
fungsi adalah: array satu dimensi.
Array
Talib.CDLGRAVESTONEDOJI (dalam Harga OHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
benar
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:CDLGRAVESTONEDOJI(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLHAMMER()
Fungsi digunakan untuk menghitungHammer (K-line chart: Hammer).
Nilai pengembaliantalib.CDLHAMMER()
fungsi adalah: array satu dimensi.
Array
talib.CDLHAMMER ((inPriceOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
benar
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:CDLHAMMER(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLHANGINGMAN()
Fungsi digunakan untuk menghitungHanging Man (K-line chart: Hanging Man).
Nilai pengembaliantalib.CDLHANGINGMAN()
fungsi adalah array satu dimensi.
Array
talib.CDLHANGINGMAN ((inPriceOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
benar
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:CDLHANGINGMAN(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLHARAMI()
fungsi digunakan untuk menghitungHarami Pattern (K-line chart: garis negatif dan positif).
Nilai pengembaliantalib.CDLHARAMI()
fungsi adalah array satu dimensi.
Array
talib.CDLHARAMI ((inPriceOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
benar
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:CDLHARAMI(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLHARAMICROSS()
fungsi digunakan untuk menghitungHarami Cross Pattern (K-line chart: lintas garis negatif dan positif).
Nilai pengembaliantalib.CDLHARAMICROSS()
fungsi adalah: array satu dimensi.
Array
talib.CDLHARAMICROSS ((inPriceOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
benar
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:CDLHARAMICROSS(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLHIGHWAVE()
fungsi digunakan untuk menghitungLilin Gelombang Tinggi (K-line chart: Long Leg Cross).
Nilai pengembaliantalib.CDLHIGHWAVE()
fungsi adalah array satu dimensi.
Array
talib.CDLHIGHWAVE ((inPriceOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
benar
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:CDLHIGHWAVE(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLHIKKAKE()
fungsi digunakan untuk menghitungPola Hikkake (K-line chart: trap).
Nilai pengembaliantalib.CDLHIKKAKE()
fungsi adalah array satu dimensi.
Array
Talib.CDLHIKKAKE ((inPriceOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
benar
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:CDLHIKKAKE(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLHIKKAKEMOD()
fungsi digunakan untuk menghitungPola Hikkake yang dimodifikasi (K-line chart: Modified Trap).
Nilai pengembaliantalib.CDLHIKKAKEMOD()
fungsi adalah: array satu dimensi.
Array
talib.CDLHIKKAKEMOD ((inPriceOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
benar
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:CDLHIKKAKEMOD(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLHOMINGPIGEON()
fungsi digunakan untuk menghitungMerpati Homing (K-line chart: Merpati).
Nilai pengembaliantalib.CDLHOMINGPIGEON()
fungsi adalah: array satu dimensi.
Array
talib.CDLHOMINGPIGEON ((inPriceOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
benar
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:CDLHOMINGPIGEON(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLIDENTICAL3CROWS()
Fungsi digunakan untuk menghitungTiga gagak identik (K-line chart: sama tiga gagak).
Nilai pengembaliantalib.CDLIDENTICAL3CROWS()
fungsi adalah: array satu dimensi.
Array
talib.CDLIDENTICAL3CROWS ((inPriceOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
benar
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:CDLIDENTICAL3CROWS(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLINNECK()
fungsi digunakan untuk menghitungPola di leher (K-line chart: neckline).
Nilai pengembaliantalib.CDLINNECK()
fungsi adalah: array satu dimensi.
Array
Talib.CDLINNECK ((inPriceOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
benar
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:CDLINNECK(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLINVERTEDHAMMER()
fungsi digunakan untuk menghitungHammer terbalik (K-line chart: Hammer terbalik).
Nilai pengembaliantalib.CDLINVERTEDHAMMER()
fungsi adalah: array satu dimensi.
Array
talib.CDLINVERTEDHAMMER ((inPriceOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
benar
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:CDLINVERTEDHAMMER(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLKICKING()
Fungsi digunakan untuk menghitungMenendang (K-line chart: menendang).
Nilai pengembaliantalib.CDLKICKING()
fungsi adalah array satu dimensi.
Array
Talib.CDLKICKING ((inPriceOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
benar
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:CDLKICKING(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLKICKINGBYLENGTH()
fungsi digunakan untuk menghitungtendangan - banteng/beruang ditentukan oleh Marubozu yang lebih panjang (grafik garis K: tendangan banteng/beruang tendangan).
Nilai pengembaliantalib.CDLKICKINGBYLENGTH()
fungsi adalah: array satu dimensi.
Array
Talib.CDLKICKINGBYLENGTH ((dalam HargaOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
benar
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:CDLKICKINGBYLENGTH(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLLADDERBOTTOM()
fungsi digunakan untuk menghitungBagian bawah tangga (grafik garis K: Bagian bawah tangga).
Nilai pengembaliantalib.CDLLADDERBOTTOM()
fungsi adalah: array satu dimensi.
Array
Talib.CDLLADDERBOTTOM ((inPriceOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
benar
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:CDLLADDERBOTTOM(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLLONGLEGGEDDOJI()
fungsi digunakan untuk menghitungDoji Berkaki Panjang (K-line chart: Long Legged Doji).
Nilai pengembaliantalib.CDLLONGLEGGEDDOJI()
fungsi adalah: array satu dimensi.
Array
Talib.CDLLONGLEGGEDDOJI (dalam Harga OHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
benar
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:CDLLONGLEGGEDDOJI(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLLONGLINE()
fungsi digunakan untuk menghitungLong Line Candle (K-line chart: Long Line).
Nilai pengembaliantalib.CDLLONGLINE()
fungsi adalah: array satu dimensi.
Array
talib.CDLLONGLINE ((inPriceOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
benar
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:CDLLONGLINE(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLMARUBOZU()
fungsi digunakan untuk menghitungMarubozu (K-line chart: kepala telanjang dan kaki telanjang).
Nilai pengembaliantalib.CDLMARUBOZU()
fungsi adalah array satu dimensi.
Array
talib.CDLMARUBOZU ((inPriceOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
benar
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:CDLMARUBOZU(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLMATCHINGLOW()
Fungsi digunakan untuk menghitungMatching Low (K-line chart: Matching Low).
Nilai pengembaliantalib.CDLMATCHINGLOW()
fungsi adalah: array satu dimensi.
Array
talib.CDLMATCHINGLOW ((inPriceOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
benar
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:CDLMATCHINGLOW(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLMATHOLD()
Fungsi digunakan untuk menghitungMat Hold (K-line chart: Mat Hold).
Nilai pengembaliantalib.CDLMATHOLD()
fungsi adalah: array satu dimensi.
Array
Talib.CDLMATHOLD ((inPriceOHLC) talib.CDLMATHOLD ((inPriceOHLC, optInPenetration)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
benar
Array struktur {@struct/Record Record}
PeraturanoptInPenetration
Parameter ini opsional dan digunakan untuk menentukan persentase dari lebar garis tren naik/turun, nilai default adalah 0,5.
optInPenetration
palsu
nomor
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:CDLMATHOLD(Records[Open,High,Low,Close],Penetration = 0.5) = Array(outInteger)
Peraturantalib.CDLMORNINGDOJISTAR()
fungsi digunakan untuk menghitungMorning Doji Star (K-line chart: Morning Doji Star).
Nilai pengembaliantalib.CDLMORNINGDOJISTAR()
fungsi adalah: array satu dimensi.
Array
talib.CDLMORNINGDOJISTAR ((dalam HargaOHLC) Talib.CDLMORNINGDOJISTAR ((inPriceOHLC, optInPenetration)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
benar
Array struktur {@struct/Record Record}
PeraturanoptInPenetration
parameter digunakan untuk menentukan tingkat tumpang tindih antara harga pembukaan validasi dan bagian padat, nilai default adalah 0,3.
optInPenetration
palsu
nomor
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:CDLMORNINGDOJISTAR(Records[Open,High,Low,Close],Penetration = 0.3) = Array(outInteger)
Peraturantalib.CDLMORNINGSTAR()
Fungsi digunakan untuk menghitungMorning Star (K-line chart: Bintang Pagi).
Nilai pengembaliantalib.CDLMORNINGSTAR()
fungsi adalah: array satu dimensi.
Array
talib.CDLMORNINGSTAR ((inPriceOHLC) talib.CDLMORNINGSTAR ((inPriceOHLC, optInPenetration)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
benar
Array struktur {@struct/Record Record}
PeraturanoptInPenetration
parameter adalah ambang persentase float harga yang diperlukan untuk konfirmasi tren dan mengambil nilai dalam kisaran [0,1], dengan nilai default 0,3.
optInPenetration
palsu
nomor
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:CDLMORNINGSTAR(Records[Open,High,Low,Close],Penetration=0.3) = Array(outInteger)
Peraturantalib.CDLONNECK()
fungsi digunakan untuk menghitungPola di leher (K-line chart: Pola di leher).
Nilai pengembaliantalib.CDLONNECK()
fungsi adalah array satu dimensi.
Array
Talib.CDLONNECK ((inPriceOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
benar
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:CDLONNECK(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLPIERCING()
fungsi digunakan untuk menghitungPattern Penembusan (K-line chart: Pattern Penembusan).
Nilai pengembaliantalib.CDLPIERCING()
fungsi adalah array satu dimensi.
Array
talib.CDLPIERCING ((inPriceOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
benar
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:CDLPIERCING(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLRICKSHAWMAN()
Fungsi digunakan untuk menghitungRickshaw Man (K-line chart: Rickshaw Man).
Nilai pengembaliantalib.CDLRICKSHAWMAN()
fungsi adalah: array satu dimensi.
Array
talib.CDLRICKSHAWMAN ((inPriceOHLC)
PeraturaninPriceOHLC
Parameter digunakan untuk menentukan data garis K.
inPriceOHLC
benar
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:CDLRICKSHAWMAN(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLRISEFALL3METHODS()
Fungsi digunakan untuk menghitungTiga Metode Naik/Jatuh (K-line chart: Tiga Metode Naik/Jatuh).
Nilai pengembaliantalib.CDLRISEFALL3METHODS()
fungsi adalah: array satu dimensi.
Array
Talib.CDLRISEFALL3METHODS ((dalam HargaOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
benar
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:CDLRISEFALL3METHODS(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLSEPARATINGLINES()
Fungsi digunakan untuk menghitungGaris pemisah (grafik garis K: Garis pemisah).
Nilai pengembaliantalib.CDLSEPARATINGLINES()
fungsi adalah array satu dimensi.
Array
Talib.CDL SEPARATINGLINES (dalam Harga OHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
benar
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:CDLSEPARATINGLINES(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLSHOOTINGSTAR()
fungsi digunakan untuk menghitungShooting Star (K-line chart: Shooting Star).
Nilai pengembaliantalib.CDLSHOOTINGSTAR()
fungsi adalah array satu dimensi.
Array
talib.CDLSHOOTINGSTAR ((inPriceOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
benar
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:CDLSHOOTINGSTAR(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLSHORTLINE()
fungsi digunakan untuk menghitungShort Line Candle (K-line chart: Short Line).
Nilai pengembaliantalib.CDLSHORTLINE()
fungsi adalah: array satu dimensi.
Array
talib.CDLSSORTLINE ((inPriceOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
benar
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:CDLSHORTLINE(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLSPINNINGTOP()
Fungsi digunakan untuk menghitungSpinning Top (K-line chart: Spinning Top).
Nilai pengembaliantalib.CDLSPINNINGTOP()
fungsi adalah: array satu dimensi.
Array
talib.CDLSPINNINGTOP ((inPriceOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
benar
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:CDLSPINNINGTOP(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLSTALLEDPATTERN()
Fungsi digunakan untuk menghitungPattern yang terhambat (K-line chart: Pattern yang terhambat).
Nilai pengembaliantalib.CDLSTALLEDPATTERN()
fungsi adalah: array satu dimensi.
Array
talib.CDLSTALLEDPATTERN ((inPriceOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
benar
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:CDLSTALLEDPATTERN(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLSTICKSANDWICH()
fungsi digunakan untuk menghitungStick Sandwich (K-line chart: Stick Sandwich).
Nilai pengembaliantalib.CDLSTICKSANDWICH()
fungsi adalah array satu dimensi.
Array
Talib.CDLSTICKSSANDWICH (dalam Harga OHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
benar
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:CDLSTICKSANDWICH(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLTAKURI()
Fungsi digunakan untuk menghitungTakuri (doji lalat naga dengan garis bayangan bawah yang sangat panjang) (K-line chart: Takuri).
Nilai pengembaliantalib.CDLTAKURI()
fungsi adalah array satu dimensi.
Array
talib.CDLTAKURI ((inPriceOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
benar
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:CDLTAKURI(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLTASUKIGAP()
fungsi digunakan untuk menghitungTasuki Gap (K-line chart: Tasuki Gap).
Nilai pengembaliantalib.CDLTASUKIGAP()
fungsi adalah array satu dimensi.
Array
talib.CDLTASUKIGAP ((inPriceOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
benar
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:CDLTASUKIGAP(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLTHRUSTING()
fungsi digunakan untuk menghitungPola Mendorong (K-line chart: Pola Mendorong).
Nilai pengembaliantalib.CDLTHRUSTING()
fungsi adalah: array satu dimensi.
Array
talib.CDLTHRUSTING ((inPriceOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
benar
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:CDLTHRUSTING(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLTRISTAR()
fungsi digunakan untuk menghitungPola Tristar (K-line chart: Pola Tristar).
Nilai pengembaliantalib.CDLTRISTAR()
fungsi adalah: array satu dimensi.
Array
Talib.CDLTRISTAR ((inPriceOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
benar
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:CDLTRISTAR(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLUNIQUE3RIVER()
fungsi digunakan untuk menghitungUnique 3 River (K-line chart: Unique 3 River).
Nilai pengembaliantalib.CDLUNIQUE3RIVER()
fungsi adalah: array satu dimensi.
Array
Talib.CDLUNIQUE3RIVER ((inPriceOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
benar
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:CDLUNIQUE3RIVER(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLUPSIDEGAP2CROWS()
Fungsi digunakan untuk menghitungUpside Gap Two Crows (K-line chart: Upside Gap Two Crows).
Nilai pengembaliantalib.CDLUPSIDEGAP2CROWS()
fungsi adalah: array satu dimensi.
Array
talib.CDLUPSIDEGAP2CROWS ((inPriceOHLC) (dalam bahasa Inggris)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
benar
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:CDLUPSIDEGAP2CROWS(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.CDLXSIDEGAP3METHODS()
Fungsi digunakan untuk menghitungUpside/Downside Gap Tiga Metode (K-line chart: Upside/Downside Gap Tiga Metode).
Nilai pengembaliantalib.CDLXSIDEGAP3METHODS()
fungsi adalah: array satu dimensi.
Array
Talib.CDLXSIDEGAP3METHODS (dalam Harga OHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
benar
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:CDLXSIDEGAP3METHODS(Records[Open,High,Low,Close]) = Array(outInteger)
Peraturantalib.AD()
fungsi digunakan untuk menghitungChaikin A/D Line (indikator stokastik garis).
Nilai pengembaliantalib.AD()
fungsi adalah: array satu dimensi.
Array
talib.AD(inPriceHLCV)
PeraturaninPriceHLCV
parameter digunakan untuk menentukan data garis K.
inPriceHLCV
benar
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:AD(Records[High,Low,Close,Volume]) = Array(outReal)
Peraturantalib.ADOSC()
fungsi digunakan untuk menghitungChaikin A/D Oscillator (Oscillator Chaikin).
Nilai pengembaliantalib.ADOSC()
fungsi adalah array satu dimensi.
Array
talib.ADOSC ((inPriceHLCV) talib.ADOSC ((inPriceHLCV, optInFastPeriod, optInSlowPeriod)
PeraturaninPriceHLCV
parameter digunakan untuk menentukan data garis K.
inPriceHLCV
benar
Array struktur {@struct/Record Record}
PeraturanoptInFastPeriod
Parameter digunakan untuk mengatur periode cepat.
optInFastPeriod
palsu
Nomor
PeraturanoptInSlowPeriod
Parameter digunakan untuk mengatur periode lambat.
optInSlowPeriod
palsu
Nomor
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:ADOSC(Records[High,Low,Close,Volume],Fast Period = 3,Slow Period = 10) = Array(outReal)
Peraturantalib.OBV()
Fungsi digunakan untuk menghitungPada Volume Saldo (Lapasan Energi).
Nilai pengembaliantalib.OBV()
fungsi adalah array satu dimensi.
Array
talib.OBV ((inReal) Talib.OBV ((inReal, inPriceV)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
benar
{@struct/Record Record} array struktur, array numerik
PeraturaninPriceV
parameter digunakan untuk menentukan data garis K.
inPriceV
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:OBV(Records[Close],Records[Volume]) = Array(outReal)
Peraturantalib.ACOS()
Fungsi digunakan untuk menghitungVektor Trigonometri ACos (fungsi kosinus terbalik).
Nilai pengembaliantalib.ACOS()
fungsi adalah array satu dimensi.
Array
talib.ACOS ((inReal)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
benar
{@struct/Record Record} array struktur, array numerik
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:ACOS(Records[Close]) = Array(outReal)
Peraturantalib.ASIN()
fungsi digunakan untuk menghitungVektor Trigonometri ASin (fungsi sinus terbalik).
Nilai pengembaliantalib.ASIN()
fungsi adalah array satu dimensi.
Array
talib.ASIN ((inReal)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
benar
{@struct/Record Record} array struktur, array numerik
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:ASIN(Records[Close]) = Array(outReal)
Peraturantalib.ATAN()
fungsi digunakan untuk menghitungVektor Trigonometri ATan (fungsi tangen terbalik).
Nilai pengembaliantalib.ATAN()
fungsi adalah: array satu dimensi.
Array
talib.ATAN ((inReal)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
benar
{@struct/Record Record} array struktur, array numerik
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:ATAN(Records[Close]) = Array(outReal)
Peraturantalib.CEIL()
Fungsi digunakan untuk menghitungVektor Langit-langit (fungsi pembulatan).
Nilai pengembaliantalib.CEIL()
fungsi adalah array satu dimensi.
Array
Talib.CEIL ((inReal)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
benar
{@struct/Record Record} array struktur, array numerik
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:CEIL(Records[Close]) = Array(outReal)
Peraturantalib.COS()
fungsi digunakan untuk menghitungVektor Trigonometri Cos (fungsi kosinus).
Nilai pengembaliantalib.COS()
fungsi adalah: array satu dimensi.
Array
talib.COS ((inReal)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
benar
{@struct/Record Record} array struktur, array numerik
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:COS(Records[Close]) = Array(outReal)
Peraturantalib.COSH()
Fungsi digunakan untuk menghitungVektor Trigonometric Cosh (nilai kosinus hiperbolik).
Nilai pengembaliantalib.COSH()
fungsi adalah array satu dimensi.
Array
talib.COSH ((inReal)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
benar
{@struct/Record Record} array struktur, array numerik
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:COSH(Records[Close]) = Array(outReal)
Peraturantalib.EXP()
fungsi digunakan untuk menghitungVektor Aritmatika Exp (fungsi eksponensial).
Nilai pengembaliantalib.EXP()
fungsi adalah: array satu dimensi.
Array
talib.EXP ((inReal)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
benar
{@struct/Record Record} array struktur, array numerik
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:EXP(Records[Close]) = Array(outReal)
Peraturantalib.FLOOR()
fungsi digunakan untuk menghitungLantai vektor (dibulatkan ke bawah).
Nilai pengembaliantalib.FLOOR()
fungsi adalah array satu dimensi.
Array
talib.FLOOR ((inReal)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
benar
{@struct/Record Record} array struktur, array numerik
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:FLOOR(Records[Close]) = Array(outReal)
Peraturantalib.LN()
fungsi digunakan untuk menghitungVektor Log Natural (logaritma alami).
Nilai pengembaliantalib.LN()
fungsi adalah array satu dimensi.
Array
talib.LN ((inReal)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
benar
{@struct/Record Record} array struktur, array numerik
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:LN(Records[Close]) = Array(outReal)
Peraturantalib.LOG10()
Fungsi digunakan untuk menghitungVektor Log10 (fungsi logaritma).
Nilai pengembaliantalib.LOG10()
fungsi adalah array satu dimensi.
Array
talib.LOG10 ((inReal)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
benar
{@struct/Record Record} array struktur, array numerik
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:LOG10(Records[Close]) = Array(outReal)
Peraturantalib.SIN()
Fungsi digunakan untuk menghitungVektor Trigonometri Sin (nilai sinus).
Nilai pengembaliantalib.SIN()
fungsi adalah array satu dimensi.
Array
talib.SIN ((inReal)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
benar
{@struct/Record Record} array struktur, array numerik
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:SIN(Records[Close]) = Array(outReal)
Peraturantalib.SINH()
fungsi digunakan untuk menghitungVektor Trigonometric Sinh (fungsi sinus hiperbolik).
Nilai pengembaliantalib.SINH()
fungsi adalah: array satu dimensi.
Array
talib.SINH ((inReal)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
benar
{@struct/Record Record} array struktur, array numerik
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:SINH(Records[Close]) = Array(outReal)
Peraturantalib.SQRT()
fungsi digunakan untuk menghitungVektor Akar kuadrat (akar kuadrat).
Nilai pengembaliantalib.SQRT()
fungsi adalah: array satu dimensi.
Array
talib.SQRT ((inReal)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
benar
{@struct/Record Record} array struktur, array numerik
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:SQRT(Records[Close]) = Array(outReal)
Peraturantalib.TAN()
fungsi digunakan untuk menghitungVektor Trigonometri Tan (tangen).
Nilai pengembaliantalib.TAN()
fungsi adalah array satu dimensi.
Array
talib.TAN ((inReal)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
benar
{@struct/Record Record} array struktur, array numerik
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:TAN(Records[Close]) = Array(outReal)
Peraturantalib.TANH()
fungsi digunakan untuk menghitungVektor Trigonometri Tanh (fungsi tangen hiperbolik).
Nilai pengembaliantalib.TANH()
fungsi adalah: array satu dimensi.
Array
talib.TANH ((inReal)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
benar
{@struct/Record Record} array struktur, array numerik
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:TANH(Records[Close]) = Array(outReal)
Peraturantalib.MAX()
fungsi digunakan untuk menghitung nilai tertinggi (maksimum) untukperiode tertentu.
Nilai pengembaliantalib.MAX()
fungsi adalah: array satu dimensi.
Array
talib.MAX ((inReal) talib.MAX ((inReal, optInTimePeriod)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
benar
{@struct/Record Record} array struktur, array numerik
PeraturanoptInTimePeriod
parameter digunakan untuk mengatur periode, nilai default adalah 30.
optInTimePeriode
palsu
Nomor
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:MAX(Records[Close],Time Period = 30) = Array(outReal)
Peraturantalib.MAXINDEX()
Fungsi digunakan untuk menghitungIndeks nilai tertinggi dalam periode yang ditentukan (indeks maksimum).
Nilai pengembaliantalib.MAXINDEX()
fungsi adalah: array satu dimensi.
Array
Talib.MAXINDEX ((inReal) talib.MAXINDEX ((inReal, optInTimePeriod)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
benar
{@struct/Record Record} array struktur, array numerik
PeraturanoptInTimePeriod
parameter digunakan untuk mengatur periode, nilai default adalah 30.
optInTimePeriode
palsu
Nomor
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:MAXINDEX(Records[Close],Time Period = 30) = Array(outInteger)
Peraturantalib.MIN()
Fungsi ini digunakan untuk menghitung nilai terendah (nilai minimum) ** untuk periode yang ditentukan.
Nilai pengembaliantalib.MIN()
fungsi adalah: array satu dimensi.
Array
talib.MIN ((inReal) talib.MIN ((inReal, optInTimePeriod)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
benar
{@struct/Record Record} array struktur, array numerik
PeraturanoptInTimePeriod
parameter digunakan untuk mengatur periode, nilai default adalah 30.
optInTimePeriode
palsu
Nomor
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:MIN(Records[Close],Time Period = 30) = Array(outReal)
Peraturantalib.MININDEX()
Fungsi digunakan untuk menghitungIndeks nilai terendah (indeks nilai minimum)untuk periode yang ditentukan.
Nilai pengembaliantalib.MININDEX()
fungsi adalah: array satu dimensi.
Array
talib.MININDEX ((inReal) talib.MININDEX ((inReal, optInTimePeriod)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
benar
{@struct/Record Record} array struktur, array numerik
PeraturanoptInTimePeriod
parameter digunakan untuk mengatur periode, nilai default adalah 30.
optInTimePeriode
palsu
Nomor
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:MININDEX(Records[Close],Time Period = 30) = Array(outInteger)
Peraturantalib.MINMAX()
Fungsi digunakan untuk menghitungnilai terendah dan tertinggi (minimal dan maksimum) untuk periode yang ditentukan.
Nilai pengembaliantalib.MINMAX()
fungsi adalah array dua dimensi. elemen pertama dari 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
benar
{@struct/Record Record} array struktur, array numerik
PeraturanoptInTimePeriod
parameter digunakan untuk mengatur periode, nilai default adalah 30.
optInTimePeriode
palsu
Nomor
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:MINMAX(Records[Close],Time Period = 30) = [Array(outMin),Array(outMax)]
Peraturantalib.MINMAXINDEX()
Fungsi digunakan untuk menghitungIndeks nilai terendah dan tertinggi (indeks minimum dan maksimum) dalam periode yang ditentukan.
Nilai pengembaliantalib.MINMAXINDEX()
fungsi adalah: array dua dimensi. elemen pertama dari array dua dimensi ini adalah array terindeks minimum, dan elemen kedua adalah array terindeks maksimum.
Array
talib.MINMAXINDEX ((inReal) talib.MINMAXINDEX ((inReal, optInTimePeriod)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
benar
{@struct/Record Record} array struktur, array numerik
PeraturanoptInTimePeriod
parameter digunakan untuk mengatur periode, nilai default adalah 30.
optInTimePeriode
palsu
Nomor
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:MINMAXINDEX(Records[Close],Time Period = 30) = [Array(outMinIdx),Array(outMaxIdx)]
Peraturantalib.SUM()
Fungsi digunakan untuk menghitungRingkasan.
Nilai pengembaliantalib.SUM()
fungsi adalah: array satu dimensi.
Array
talib.SUM ((inReal) talib.SUM ((inReal, optInTimePeriod)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
benar
{@struct/Record Record} array struktur, array numerik
PeraturanoptInTimePeriod
parameter digunakan untuk mengatur periode, nilai default adalah 30.
optInTimePeriode
palsu
Nomor
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:SUM(Records[Close],Time Period = 30) = Array(outReal)
Peraturantalib.HT_DCPERIOD()
fungsi digunakan untuk menghitungTransformasi Hilbert - Periode Siklus Dominan (Transformasi Hilbert, Periode Dominan).
Nilai pengembaliantalib.HT_DCPERIOD()
fungsi adalah: array satu dimensi.
Array
talib.HT_DCPERIOD ((inReal)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
benar
{@struct/Record Record} array struktur, array numerik
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:HT_DCPERIOD(Records[Close]) = Array(outReal)
Peraturantalib.HT_DCPHASE()
fungsi digunakan untuk menghitungTransformasi Hilbert - Fase Siklus Dominan (Transformasi Hilbert, Fase Siklus Dominan).
Nilai pengembaliantalib.HT_DCPHASE()
fungsi adalah: array satu dimensi.
Array
Talib.HT_DCPHASE ((inReal)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
benar
{@struct/Record Record} array struktur, array numerik
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:HT_DCPHASE(Records[Close]) = Array(outReal)
Peraturantalib.HT_PHASOR()
fungsi digunakan untuk menghitungTransformasi Hilbert - Komponen Phasor (Transformasi Hilbert, Komponen Phase).
Nilai pengembaliantalib.HT_PHASOR()
fungsi adalah array dua dimensi.
Array
Talib.HT_PHASOR ((inReal)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
benar
{@struct/Record Record} array struktur, array numerik
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:HT_PHASOR(Records[Close]) = [Array(outInPhase),Array(outQuadrature)]
Peraturantalib.HT_SINE()
fungsi digunakan untuk menghitungTransformasi Hilbert - Sinus Wave (Transformasi Hilbert, Sinus Wave).
Nilai pengembaliantalib.HT_SINE()
fungsi adalah: array dua dimensi.
Array
Talib.HT_SINE ((inReal)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
benar
{@struct/Record Record} array struktur, array numerik
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:HT_SINE(Records[Close]) = [Array(outSine),Array(outLeadSine)]
Peraturantalib.HT_TRENDMODE()
fungsi digunakan untuk menghitungTransformasi Hilbert - Trend dan Mode Siklus.
Nilai pengembaliantalib.HT_TRENDMODE()
fungsi adalah: array satu dimensi.
Array
Talib.HT_TRENDMODE ((inReal)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
benar
{@struct/Record Record} array struktur, array numerik
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:HT_TRENDMODE(Records[Close]) = Array(outInteger)
Peraturantalib.ATR()
fungsi digunakan untuk menghitungRentang Rata-rata Benar.
Nilai pengembaliantalib.ATR()
fungsi adalah array satu dimensi.
Array
Talib.ATR ((inPriceHLC) talib.ATR ((inPriceHLC, optInTimePeriod)
PeraturaninPriceHLC
parameter digunakan untuk menentukan data garis K.
inPriceHLC
benar
Array struktur {@struct/Record Record}
PeraturanoptInTimePeriod
parameter digunakan untuk mengatur periode, nilai default adalah 14.
optInTimePeriode
palsu
Nomor
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:ATR(Records[High,Low,Close],Time Period = 14) = Array(outReal)
Peraturantalib.NATR()
fungsi digunakan untuk menghitungJangkauan Benar Rata-rata yang Normal.
Nilai pengembaliantalib.NATR()
fungsi adalah array satu dimensi.
Array
talib.NATR ((inPriceHLC) talib.NATR ((inPriceHLC, optInTimePeriod)
PeraturaninPriceHLC
parameter digunakan untuk menentukan data garis K.
inPriceHLC
benar
Array struktur {@struct/Record Record}
PeraturanoptInTimePeriod
parameter digunakan untuk mengatur periode, nilai default adalah 14.
optInTimePeriode
palsu
Nomor
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:NATR(Records[High,Low,Close],Time Period = 14) = Array(outReal)
Peraturantalib.TRANGE()
fungsi digunakan untuk menghitungJangkauan Nyata.
Nilai pengembaliantalib.TRANGE()
fungsi adalah: array satu dimensi.
Array
Talib.TRANGE ((inPriceHLC)
PeraturaninPriceHLC
parameter digunakan untuk menentukan data garis K.
inPriceHLC
benar
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:TRANGE(Records[High,Low,Close]) = Array(outReal)
Peraturantalib.BBANDS()
Fungsi digunakan untuk menghitungBollinger Bands.
Nilai pengembaliantalib.BBANDS()
fungsi adalah: array dua dimensi. array berisi tiga elemen yaitu: 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
benar
{@struct/Record Record} array struktur, array numerik
PeraturanoptInTimePeriod
parameter digunakan untuk mengatur periode, nilai default adalah 5.
optInTimePeriode
palsu
Nomor
PeraturanoptInNbDevUp
parameter digunakan untuk mengatur pengganda upline, nilai default adalah 2.
PilihInNbDevUp
palsu
nomor
PeraturanoptInNbDevDn
Parameter digunakan untuk mengatur pengganda baris bawah, nilai default adalah 2.
OpInNbDevDn
palsu
nomor
PeraturanoptInMAType
parameter digunakan untuk mengatur jenis rata-rata, nilai default adalah 0.
pilihanInMAType
palsu
nomor
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 ini dijelaskan 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 menghitungRata-rata Bergerak Eksponensial Ganda.
Nilai pengembaliantalib.DEMA()
fungsi adalah array satu dimensi.
Array
talib.DEMA ((inReal) talib.DEMA ((inReal, optInTimePeriod)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
benar
{@struct/Record Record} array struktur, array numerik
PeraturanoptInTimePeriod
parameter digunakan untuk mengatur periode, nilai default adalah 30.
optInTimePeriode
palsu
Nomor
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:DEMA(Records[Close],Time Period = 30) = Array(outReal)
Peraturantalib.EMA()
fungsi digunakan untuk menghitungRata-rata Bergerak Eksponensial.
Nilai pengembaliantalib.EMA()
fungsi adalah array satu dimensi.
Array
Talib.EMA ((inReal) talib.EMA ((inReal, optInTimePeriod)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
benar
{@struct/Record Record} array struktur, array numerik
PeraturanoptInTimePeriod
parameter digunakan untuk mengatur periode, nilai default adalah 30.
optInTimePeriode
palsu
Nomor
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:EMA(Records[Close],Time Period = 30) = Array(outReal)
Peraturantalib.HT_TRENDLINE()
fungsi digunakan untuk menghitungTransformasi Hilbert - Instan Trendline (Transformasi Hilbert, Instan Trend).
Nilai pengembaliantalib.HT_TRENDLINE()
fungsi adalah: array satu dimensi.
Array
Talib.HT_TRENDLINE ((inReal)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
benar
{@struct/Record Record} array struktur, array numerik
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:HT_TRENDLINE(Records[Close]) = Array(outReal)
Peraturantalib.KAMA()
fungsi digunakan untuk menghitungKaufman Adaptive Moving Average.
Nilai pengembaliantalib.KAMA()
fungsi adalah: array satu dimensi.
Array
Talib.KAMA ((inReal) talib.KAMA ((inReal, optInTimePeriod)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
benar
{@struct/Record Record} array struktur, array numerik
PeraturanoptInTimePeriod
parameter digunakan untuk mengatur periode, nilai default adalah 30.
optInTimePeriode
palsu
Nomor
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:KAMA(Records[Close],Time Period = 30) = Array(outReal)
Peraturantalib.MA()
fungsi digunakan untuk menghitungRata-rata bergerak.
Nilai pengembaliantalib.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
benar
{@struct/Record Record} array struktur, array numerik
PeraturanoptInTimePeriod
parameter digunakan untuk mengatur periode, nilai default adalah 30.
optInTimePeriode
palsu
Nomor
PeraturanoptInMAType
parameter digunakan untuk mengatur jenis rata-rata, nilai default adalah 0.
pilihanInMAType
palsu
nomor
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:MA(Records[Close],Time Period = 30,MA Type = 0) = Array(outReal)
Peraturantalib.MAMA()
fungsi digunakan untuk menghitungMESA Adaptive Moving Average.
Nilai pengembaliantalib.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
benar
{@struct/Record Record} array struktur, array numerik
PeraturanoptInFastLimit
Parameter digunakan untuk mengatur Batas Cepat, nilai default adalah 0,5.
PilihInFastLimit
palsu
nomor
PeraturanoptInSlowLimit
parameter digunakan untuk mengatur batas lambat, nilai default adalah 0,05.
OptionInSlowLimit
palsu
nomor
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 ini dijelaskan 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 menghitungTitik tengah dari periode (titik tengah).
Nilai pengembaliantalib.MIDPOINT()
fungsi adalah array satu dimensi.
Array
talib.MIDPOINT ((inReal) talib.MIDPOINT ((inReal, optInTimePeriod)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
benar
{@struct/Record Record} array struktur, array numerik
PeraturanoptInTimePeriod
parameter digunakan untuk mengatur periode, nilai default adalah 14.
optInTimePeriode
palsu
Nomor
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:MIDPOINT(Records[Close],Time Period = 14) = Array(outReal)
Peraturantalib.MIDPRICE()
fungsi digunakan untuk menghitungHarga titik tengah selama periode (harga titik tengah).
Nilai pengembaliantalib.MIDPRICE()
fungsi adalah array satu dimensi.
Array
talib.MIDPRICE ((inPriceHL) talib.MIDPRICE ((inPriceHL, optInTimePeriod)
PeraturaninPriceHL
parameter digunakan untuk menentukan data garis K.
inPriceHL
benar
Array struktur {@struct/Record Record}
PeraturanoptInTimePeriod
parameter digunakan untuk mengatur periode, nilai default adalah 14.
optInTimePeriode
palsu
Nomor
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:MIDPRICE(Records[High,Low],Time Period = 14) = Array(outReal)
Peraturantalib.SAR()
fungsi digunakan untuk menghitungSAR parabola.
Nilai pengembaliantalib.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
benar
Array struktur {@struct/Record Record}
PeraturanoptInAcceleration
parameter digunakan untuk mengatur Faktor Percepatan, nilai default adalah 0,02.
OpInAcceleration
palsu
nomor
PeraturanoptInMaximum
parameter digunakan untuk mengatur AF Maximum, nilai default adalah 0,2.
OptiMaksimum
palsu
nomor
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:SAR(Records[High,Low],Acceleration Factor = 0.02,AF Maximum = 0.2) = Array(outReal)
Peraturantalib.SAREXT()
fungsi digunakan untuk menghitungParabolik SAR - diperpanjang (penyempur parabolik yang ditingkatkan).
Nilai pengembaliantalib.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
benar
Array struktur {@struct/Record Record}
PeraturanoptInStartValue
parameter digunakan untuk mengatur Start Value, nilai default adalah 0.
pilihanInStartValue
palsu
nomor
PeraturanoptInOffsetOnReverse
Parameter digunakan untuk mengatur Offset pada Reverse, nilai default adalah 0.
PilihInOffsetOnReverse
palsu
nomor
PeraturanoptInAccelerationInitLong
parameter digunakan untuk mengatur AF Init Long, nilai default adalah 0,02.
Pilih dalam akselerasi dalam waktu yang lama
palsu
nomor
PeraturanoptInAccelerationLong
parameter digunakan untuk mengatur AF panjang, nilai default adalah 0,02.
OptionInAccelerationLang
palsu
nomor
PeraturanoptInAccelerationMaxLong
parameter digunakan untuk mengatur AF Max Long, nilai default adalah 0,2.
OptionInAccelerationMaxLong
palsu
nomor
PeraturanoptInAccelerationInitShort
parameter digunakan untuk mengatur AF Init Short, nilai default adalah 0,02.
OptionInAccelerationInitSingkat
palsu
nomor
PeraturanoptInAccelerationShort
parameter digunakan untuk mengatur AF Short, nilai default adalah 0,02.
OptionInAccelerationSingkat
palsu
nomor
PeraturanoptInAccelerationMaxShort
parameter digunakan untuk mengatur AF Max Short, nilai default adalah 0,2.
OptionInAccelerationMaxShort
palsu
nomor
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 ini dijelaskan 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 menghitungRata-rata Bergerak Sederhana.
Nilai pengembaliantalib.SMA()
fungsi adalah: array satu dimensi.
Array
talib.SMA ((inReal) talib.SMA ((inReal, optInTimePeriod)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
benar
{@struct/Record Record} array struktur, array numerik
PeraturanoptInTimePeriod
parameter digunakan untuk mengatur periode, nilai default adalah 30.
optInTimePeriode
palsu
Nomor
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:SMA(Records[Close],Time Period = 30) = Array(outReal)
Peraturantalib.T3()
fungsi digunakan untuk menghitungTriple Exponential Moving Average (T3) (rata-rata bergerak eksponensial tiga kali).
Nilai pengembaliantalib.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
benar
{@struct/Record Record} array struktur, array numerik
PeraturanoptInTimePeriod
parameter digunakan untuk mengatur periode, nilai default adalah 5.
optInTimePeriode
palsu
Nomor
PeraturanoptInVFactor
parameter digunakan untuk mengatur Volume Factor, nilai default adalah 0,7.
optInVFactor
palsu
nomor
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:T3(Records[Close],Time Period = 5,Volume Factor = 0.7) = Array(outReal)
Peraturantalib.TEMA()
Fungsi digunakan untuk menghitungTriple Exponential Moving Average.
Nilai pengembaliantalib.TEMA()
fungsi adalah array satu dimensi.
Array
talib.TEMA ((inReal) talib.TEMA ((inReal, optInTimePeriod)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
benar
{@struct/Record Record} array struktur, array numerik
PeraturanoptInTimePeriod
parameter digunakan untuk mengatur periode, nilai default adalah 30.
optInTimePeriode
palsu
Nomor
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:TEMA(Records[Close],Time Period = 30) = Array(outReal)
Peraturantalib.TRIMA()
fungsi digunakan untuk menghitungRata-rata Gerak Segitiga (rata-rata gerak tiga eksponensial).
Nilai pengembaliantalib.TRIMA()
fungsi adalah array satu dimensi.
Array
talib.TRIMA ((inReal) talib.TRIMA ((inReal, optInTimePeriod)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
benar
{@struct/Record Record} array struktur, array numerik
PeraturanoptInTimePeriod
parameter digunakan untuk mengatur periode, nilai default adalah 30.
optInTimePeriode
palsu
Nomor
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:TRIMA(Records[Close],Time Period = 30) = Array(outReal)
Peraturantalib.WMA()
fungsi digunakan untuk menghitungRata-rata bergerak tertimbang (WMA).
Nilai pengembaliantalib.WMA()
fungsi adalah array satu dimensi.
Array
talib.WMA ((inReal) talib.WMA ((inReal, optInTimePeriod)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
benar
{@struct/Record Record} array struktur, array numerik
PeraturanoptInTimePeriod
parameter digunakan untuk mengatur periode, nilai default adalah 30.
optInTimePeriode
palsu
Nomor
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:WMA(Records[Close],Time Period = 30) = Array(outReal)
Peraturantalib.LINEARREG()
Fungsi digunakan untuk menghitungRegresi linier.
Nilai pengembaliantalib.LINEARREG()
fungsi adalah array satu dimensi.
Array
talib.LINEARREG ((inReal) talib.LINEARREG ((inReal, optInTimePeriod)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
benar
{@struct/Record Record} array struktur, array numerik
PeraturanoptInTimePeriod
parameter digunakan untuk mengatur periode, nilai default adalah 14.
optInTimePeriode
palsu
Nomor
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:LINEARREG(Records[Close],Time Period = 14) = Array(outReal)
Peraturantalib.LINEARREG_ANGLE()
fungsi digunakan untuk menghitungSudut Regresi Linear.
Nilai pengembaliantalib.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
benar
{@struct/Record Record} array struktur, array numerik
PeraturanoptInTimePeriod
parameter digunakan untuk mengatur periode, nilai default adalah 14.
optInTimePeriode
palsu
Nomor
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:LINEARREG_ANGLE(Records[Close],Time Period = 14) = Array(outReal)
Peraturantalib.LINEARREG_INTERCEPT()
fungsi digunakan untuk menghitungLinear Regression Intercept.
Nilai pengembaliantalib.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
benar
{@struct/Record Record} array struktur, array numerik
PeraturanoptInTimePeriod
parameter digunakan untuk mengatur periode, nilai default adalah 14.
optInTimePeriode
palsu
Nomor
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:LINEARREG_INTERCEPT(Records[Close],Time Period = 14) = Array(outReal)
Peraturantalib.LINEARREG_SLOPE()
fungsi digunakan untuk menghitungKemiringan Regresi Linear.
Nilai pengembaliantalib.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
benar
{@struct/Record Record} array struktur, array numerik
PeraturanoptInTimePeriod
parameter digunakan untuk mengatur periode, nilai default adalah 14.
optInTimePeriode
palsu
Nomor
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:LINEARREG_SLOPE(Records[Close],Time Period = 14) = Array(outReal)
Peraturantalib.STDDEV()
Fungsi digunakan untuk menghitungPenyimpangan Standar.
Nilai pengembaliantalib.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
benar
{@struct/Record Record} array struktur, array numerik
PeraturanoptInTimePeriod
parameter digunakan untuk mengatur periode, nilai default adalah 5.
optInTimePeriode
palsu
Nomor
PeraturanoptInNbDev
parameter digunakan untuk mengatur Deviasi, nilai default adalah 1.
OpInNbDev
palsu
nomor
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:STDDEV(Records[Close],Time Period = 5,Deviations = 1) = Array(outReal)
Peraturantalib.TSF()
Fungsi digunakan untuk menghitungRamalan Seri Waktu.
Nilai pengembaliantalib.TSF()
fungsi adalah array satu dimensi.
Array
talib.TSF ((inReal) talib.TSF ((inReal, optInTimePeriod)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
benar
{@struct/Record Record} array struktur, array numerik
PeraturanoptInTimePeriod
parameter digunakan untuk mengatur periode, nilai default adalah 14.
optInTimePeriode
palsu
Nomor
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:TSF(Records[Close],Time Period = 14) = Array(outReal)
Peraturantalib.VAR()
Fungsi digunakan untuk menghitungVariansi.
Nilai pengembaliantalib.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
benar
{@struct/Record Record} array struktur, array numerik
PeraturanoptInTimePeriod
parameter digunakan untuk mengatur periode, nilai default adalah 5.
optInTimePeriode
palsu
Nomor
PeraturanoptInNbDev
parameter digunakan untuk mengatur Deviasi, nilai default adalah 1.
OpInNbDev
palsu
nomor
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:VAR(Records[Close],Time Period = 5,Deviations = 1) = Array(outReal)
Peraturantalib.ADX()
fungsi digunakan untuk menghitungIndeks Gerakan Arah Rata-rata.
Nilai pengembaliantalib.ADX()
fungsi adalah array satu dimensi.
Array
Talib.ADX ((inPriceHLC) talib.ADX ((inPriceHLC, optInTimePeriod)
PeraturaninPriceHLC
parameter digunakan untuk menentukan data garis K.
inPriceHLC
benar
Array struktur {@struct/Record Record}
PeraturanoptInTimePeriod
parameter digunakan untuk mengatur periode, nilai default adalah 14.
optInTimePeriode
palsu
Nomor
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:ADX(Records[High,Low,Close],Time Period = 14) = Array(outReal)
Peraturantalib.ADXR()
fungsi digunakan untuk menghitungRata-rata Indeks Gerakan Arah Peringkat (indeks penilaian).
Nilai pengembaliantalib.ADXR()
fungsi adalah array satu dimensi.
Array
Talib.ADXR ((inPriceHLC) talib.ADXR ((inPriceHLC, optInTimePeriod)
PeraturaninPriceHLC
parameter digunakan untuk menentukan data garis K.
inPriceHLC
benar
Array struktur {@struct/Record Record}
PeraturanoptInTimePeriod
parameter digunakan untuk mengatur periode, nilai default adalah 14.
optInTimePeriode
palsu
Nomor
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:ADXR(Records[High,Low,Close],Time Period = 14) = Array(outReal)
Peraturantalib.APO()
fungsi digunakan untuk menghitungOsilator Harga Absolute.
Nilai pengembaliantalib.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
benar
{@struct/Record Record} array struktur, array numerik
PeraturanoptInFastPeriod
parameter digunakan untuk mengatur periode cepat, nilai default adalah 12.
optInFastPeriod
palsu
nomor
PeraturanoptInSlowPeriod
parameter digunakan untuk mengatur periode lambat, nilai default adalah 26.
optInSlowPeriod
palsu
nomor
PeraturanoptInMAType
parameter digunakan untuk mengatur jenis rata-rata, nilai default adalah 0.
pilihanInMAType
palsu
nomor
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:APO(Records[Close],Fast Period = 12,Slow Period = 26,MA Type = 0) = Array(outReal)
Peraturantalib.AROON()
fungsi digunakan untuk menghitungAroon (Indikator Aroon).
Nilai pengembaliantalib.AROON()
fungsi adalah array dua dimensi.
Array
talib.AROON ((inPriceHL) talib.AROON ((inPriceHL, optInTimePeriod)
PeraturaninPriceHL
parameter digunakan untuk menentukan data garis K.
inPriceHL
benar
Array struktur {@struct/Record Record}
PeraturanoptInTimePeriod
parameter digunakan untuk mengatur periode, nilai default adalah 14.
optInTimePeriode
palsu
Nomor
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:AROON(Records[High,Low],Time Period = 14) = [Array(outAroonDown),Array(outAroonUp)]
Peraturantalib.AROONOSC()
fungsi digunakan untuk menghitungAroon Oscillator.
Nilai pengembaliantalib.AROONOSC()
fungsi adalah: array satu dimensi.
Array
talib.AROONOSC ((inPriceHL) talib.AROONOSC ((inPriceHL, optInTimePeriod)
PeraturaninPriceHL
parameter digunakan untuk menentukan data garis K.
inPriceHL
benar
Array struktur {@struct/Record Record}
PeraturanoptInTimePeriod
parameter digunakan untuk mengatur periode, nilai default adalah 14.
optInTimePeriode
palsu
Nomor
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:AROONOSC(Records[High,Low],Time Period = 14) = Array(outReal)
Peraturantalib.BOP()
fungsi digunakan untuk menghitungKeseimbangan Kekuatan.
Nilai pengembaliantalib.BOP()
fungsi adalah array satu dimensi.
Array
Talib.BOP ((inPriceOHLC)
PeraturaninPriceOHLC
parameter digunakan untuk menentukan data garis K.
inPriceOHLC
benar
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:BOP(Records[Open,High,Low,Close]) = Array(outReal)
Peraturantalib.CCI()
fungsi digunakan untuk menghitungIndeks Saluran Komoditas (indikator homeopati).
Nilai pengembaliantalib.CCI()
fungsi adalah array satu dimensi.
Array
talib.CCI ((inPriceHLC) talib.CCI ((inPriceHLC, optInTimePeriod)
PeraturaninPriceHLC
parameter digunakan untuk menentukan data garis K.
inPriceHLC
benar
Array struktur {@struct/Record Record}
PeraturanoptInTimePeriod
parameter digunakan untuk mengatur periode, nilai default adalah 14.
optInTimePeriode
palsu
Nomor
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:CCI(Records[High,Low,Close],Time Period = 14) = Array(outReal)
Peraturantalib.CMO()
fungsi digunakan untuk menghitungChande Momentum Oscillator (CMO).
Nilai pengembaliantalib.CMO()
fungsi adalah: array satu dimensi.
Array
talib.CMO ((inReal) talib.CMO ((inReal, optInTimePeriod)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
benar
{@struct/Record Record} array struktur, array numerik
PeraturanoptInTimePeriod
parameter digunakan untuk mengatur periode, nilai default adalah 14.
optInTimePeriode
palsu
Nomor
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:CMO(Records[Close],Time Period = 14) = Array(outReal)
Peraturantalib.DX()
fungsi digunakan untuk menghitungIndeks Gerakan Arah.
Nilai pengembaliantalib.DX()
fungsi adalah: array satu dimensi.
Array
Talib.DX ((inPriceHLC) talib.DX ((inPriceHLC, optInTimePeriod)
PeraturaninPriceHLC
parameter digunakan untuk menentukan data garis K.
inPriceHLC
benar
Array struktur {@struct/Record Record}
PeraturanoptInTimePeriod
parameter digunakan untuk mengatur periode, nilai default adalah 14.
optInTimePeriode
palsu
Nomor
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:DX(Records[High,Low,Close],Time Period = 14) = Array(outReal)
Peraturantalib.MACD()
Fungsi digunakan untuk menghitungRata-rata bergerak konvergensi/divergensi (rata-rata bergerak yang dihaluskan secara eksponensial).
Nilai pengembaliantalib.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
benar
{@struct/Record Record} array struktur, array numerik
PeraturanoptInFastPeriod
parameter digunakan untuk mengatur periode cepat, nilai default adalah 12.
optInFastPeriod
palsu
nomor
PeraturanoptInSlowPeriod
parameter digunakan untuk mengatur periode lambat, nilai default adalah 26.
optInSlowPeriod
palsu
nomor
PeraturanoptInSignalPeriod
parameter digunakan untuk mengatur periode sinyal, nilai default adalah 9.
OpInSignalPeriode
palsu
nomor
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 ini dijelaskan 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 menghitungMACD dengan jenis MA yang dapat dikontrol.
Nilai pengembaliantalib.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
benar
{@struct/Record Record} array struktur, array numerik
PeraturanoptInFastPeriod
parameter digunakan untuk mengatur periode cepat, nilai default adalah 12.
optInFastPeriod
palsu
nomor
PeraturanoptInFastMAType
parameter digunakan untuk mengatur jenis rata-rata cepat, nilai default adalah 0.
pilihanInFastMAType
palsu
nomor
PeraturanoptInSlowPeriod
parameter digunakan untuk mengatur periode lambat, nilai default adalah 26.
optInSlowPeriod
palsu
nomor
PeraturanoptInSlowMAType
parameter digunakan untuk mengatur jenis rata-rata lambat, nilai default adalah 0.
pilihanInSlowMAType
palsu
nomor
PeraturanoptInSignalPeriod
parameter digunakan untuk mengatur periode sinyal, nilai default adalah 9.
OpInSignalPeriode
palsu
nomor
PeraturanoptInSignalMAType
parameter digunakan untuk mengatur jenis sinyal rata-rata, nilai default adalah 0.
pilihanInSignalMAType
palsu
nomor
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 ini dijelaskan 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 menghitungKonvergensi/Divergensi Rata-rata yang Bergerak 12/26.
Nilai pengembaliantalib.MACDFIX()
fungsi adalah array dua dimensi.
Array
talib.MACDFIX ((inReal) talib.MACDFIX ((inReal, optInSignalPeriod)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
benar
{@struct/Record Record} array struktur, array numerik
PeraturanoptInSignalPeriod
parameter digunakan untuk mengatur periode sinyal, nilai default adalah 9.
OpInSignalPeriode
palsu
nomor
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:MACDFIX(Records[Close],Signal Period = 9) = [Array(outMACD),Array(outMACDSignal),Array(outMACDHist)]
Peraturantalib.MFI()
fungsi digunakan untuk menghitungIndeks Aliran Uang.
Nilai pengembaliantalib.MFI()
fungsi adalah array satu dimensi.
Array
talib.MFI ((inPriceHLCV) talib.MFI ((inPriceHLCV, optInTimePeriod)
PeraturaninPriceHLCV
parameter digunakan untuk menentukan data garis K.
inPriceHLCV
benar
Array struktur {@struct/Record Record}
PeraturanoptInTimePeriod
parameter digunakan untuk mengatur periode, nilai default adalah 14.
optInTimePeriode
palsu
Nomor
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:MFI(Records[High,Low,Close,Volume],Time Period = 14) = Array(outReal)
Peraturantalib.MINUS_DI()
fungsi digunakan untuk menghitungIndikator arah minus (indikator negatif).
Nilai pengembaliantalib.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
benar
Array struktur {@struct/Record Record}
PeraturanoptInTimePeriod
parameter digunakan untuk mengatur periode, nilai default adalah 14.
optInTimePeriode
palsu
Nomor
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:MINUS_DI(Records[High,Low,Close],Time Period = 14) = Array(outReal)
Peraturantalib.MINUS_DM()
fungsi digunakan untuk menghitungMinus Gerakan arah (gerakan negatif).
Nilai pengembaliantalib.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
benar
Array struktur {@struct/Record Record}
PeraturanoptInTimePeriod
parameter digunakan untuk mengatur periode, nilai default adalah 14.
optInTimePeriode
palsu
Nomor
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:MINUS_DM(Records[High,Low],Time Period = 14) = Array(outReal)
Peraturantalib.MOM()
Fungsi digunakan untuk menghitungMomentum.
Nilai pengembaliantalib.MOM()
fungsi adalah array satu dimensi.
Array
Talib.MOM ((inReal) talib.MOM ((inReal, optInTimePeriod)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
benar
{@struct/Record Record} array struktur, array numerik
PeraturanoptInTimePeriod
parameter digunakan untuk mengatur periode, nilai default adalah 10.
optInTimePeriode
palsu
Nomor
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:MOM(Records[Close],Time Period = 10) = Array(outReal)
Peraturantalib.PLUS_DI()
fungsi digunakan untuk menghitungPlus Indikator Arah.
Nilai pengembaliantalib.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
benar
Array struktur {@struct/Record Record}
PeraturanoptInTimePeriod
parameter digunakan untuk mengatur periode, nilai default adalah 14.
optInTimePeriode
palsu
Nomor
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:PLUS_DI(Records[High,Low,Close],Time Period = 14) = Array(outReal)
Peraturantalib.PLUS_DM()
Fungsi digunakan untuk menghitungPlus Gerakan arah.
Nilai pengembaliantalib.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
benar
Array struktur {@struct/Record Record}
PeraturanoptInTimePeriod
parameter digunakan untuk mengatur periode, nilai default adalah 14.
optInTimePeriode
palsu
Nomor
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:PLUS_DM(Records[High,Low],Time Period = 14) = Array(outReal)
Peraturantalib.PPO()
fungsi digunakan untuk menghitungOsilator Harga Persentase.
Nilai pengembaliantalib.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
benar
{@struct/Record Record} array struktur, array numerik
PeraturanoptInFastPeriod
parameter digunakan untuk mengatur periode cepat, nilai default adalah 12.
optInFastPeriod
palsu
nomor
PeraturanoptInSlowPeriod
parameter digunakan untuk mengatur periode lambat, nilai default adalah 26.
optInSlowPeriod
palsu
nomor
PeraturanoptInMAType
parameter digunakan untuk mengatur jenis rata-rata, nilai default adalah 0.
pilihanInMAType
palsu
nomor
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:PPO(Records[Close],Fast Period = 12,Slow Period = 26,MA Type = 0) = Array(outReal)
Peraturantalib.ROC()
Fungsi digunakan untuk menghitungTingkat perubahan: ((harga/prevPrice) -1) * 100 (indikator tingkat perubahan).
Nilai pengembaliantalib.ROC()
fungsi adalah array satu dimensi.
Array
Talib.ROC ((inReal) talib.ROC ((inReal, optInTimePeriod)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
benar
{@struct/Record Record} array struktur, array numerik
PeraturanoptInTimePeriod
parameter digunakan untuk mengatur periode, nilai default adalah 10.
optInTimePeriode
palsu
Nomor
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:ROC(Records[Close],Time Period = 10) = Array(outReal)
Peraturantalib.ROCP()
Fungsi digunakan untuk menghitungTingkat perubahan Persentase: (harga-prevPrice) /prevPrice (tingkat perubahan harga).
Nilai pengembaliantalib.ROCP()
fungsi adalah: array satu dimensi.
Array
talib.ROCP ((inReal) talib.ROCP ((inReal, optInTimePeriod)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
benar
{@struct/Record Record} array struktur, array numerik
PeraturanoptInTimePeriod
parameter digunakan untuk mengatur periode, nilai default adalah 10.
optInTimePeriode
palsu
Nomor
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:ROCP(Records[Close],Time Period = 10) = Array(outReal)
Peraturantalib.ROCR()
fungsi digunakan untuk menghitungRasio tingkat perubahan: (harga/prevPrice) (rasio perubahan harga).
Nilai pengembaliantalib.ROCR()
fungsi adalah array satu dimensi.
Array
talib.ROCR ((inReal) talib.ROCR ((inReal, optInTimePeriod)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
benar
{@struct/Record Record} array struktur, array numerik
PeraturanoptInTimePeriod
parameter digunakan untuk mengatur periode, nilai default adalah 10.
optInTimePeriode
palsu
Nomor
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:ROCR(Records[Close],Time Period = 10) = Array(outReal)
Peraturantalib.ROCR100()
Fungsi digunakan untuk menghitungTingkat rasio perubahan skala 100: (harga/prevPrice) * 100 (ratio perubahan harga).
Nilai pengembaliantalib.ROCR100()
fungsi adalah: array satu dimensi.
Array
talib.ROCR100 ((inReal) Talib.ROCR100 ((inReal, optInTimePeriod)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
benar
{@struct/Record Record} array struktur, array numerik
PeraturanoptInTimePeriod
parameter digunakan untuk mengatur periode, nilai default adalah 10.
optInTimePeriode
palsu
Nomor
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:ROCR100(Records[Close],Time Period = 10) = Array(outReal)
Peraturantalib.RSI()
fungsi digunakan untuk menghitungIndeks Kekuatan Relatif.
Nilai pengembaliantalib.RSI()
fungsi adalah array satu dimensi.
Array
talib.RSI ((inReal) talib.RSI ((inReal, optInTimePeriod)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
benar
{@struct/Record Record} array struktur, array numerik
PeraturanoptInTimePeriod
parameter digunakan untuk mengatur periode, nilai default adalah 14.
optInTimePeriode
palsu
Nomor
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:RSI(Records[Close],Time Period = 14) = Array(outReal)
Peraturantalib.STOCH()
fungsi digunakan untuk menghitungStochastic (indikator STOCH).
Nilai pengembaliantalib.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
benar
Array struktur {@struct/Record Record}
PeraturanoptInFastK_Period
parameter digunakan untuk mengatur periode Fast-K, nilai default adalah 5.
pilihanInFastK_Periode
palsu
nomor
PeraturanoptInSlowK_Period
parameter digunakan untuk mengatur periode Slow-K, nilai default adalah 3.
pilihanInSlowK_Periode
palsu
nomor
PeraturanoptInSlowK_MAType
parameter digunakan untuk mengatur jenis rata-rata Slow-K, nilai default adalah 0.
pilihanInSlowK_MAType
palsu
nomor
PeraturanoptInSlowD_Period
parameter digunakan untuk mengatur periode Slow-D, nilai default adalah 3.
pilihanInSlowD_Periode
palsu
nomor
PeraturanoptInSlowD_MAType
parameter digunakan untuk mengatur jenis rata-rata Slow-D, nilai default adalah 0.
pilihanInSlowD_MAType
palsu
nomor
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 ini dijelaskan 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 menghitungStochastic Fast (indikator STOCH cepat).
Nilai pengembaliantalib.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
benar
Array struktur {@struct/Record Record}
PeraturanoptInFastK_Period
parameter digunakan untuk mengatur periode Fast-K, nilai default adalah 5.
pilihanInFastK_Periode
palsu
nomor
PeraturanoptInFastD_Period
parameter digunakan untuk mengatur periode Fast-D, nilai default adalah 3.
pilihanInFastD_Periode
palsu
nomor
PeraturanoptInFastD_MAType
Parameter digunakan untuk mengatur jenis rata-rata Fast-D, nilai default adalah 0.
pilihanInFastD_MAType
palsu
nomor
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 ini dijelaskan 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 menghitungIndeks Kekuatan Relatif Stochastic.
Nilai pengembaliantalib.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
benar
{@struct/Record Record} array struktur, array numerik
PeraturanoptInTimePeriod
parameter digunakan untuk mengatur periode, nilai default adalah 14.
optInTimePeriode
palsu
Nomor
PeraturanoptInFastK_Period
parameter digunakan untuk mengatur periode Fast-K, nilai default adalah 5.
pilihanInFastK_Periode
palsu
nomor
PeraturanoptInFastD_Period
parameter digunakan untuk mengatur periode Fast-D, nilai default adalah 3.
pilihanInFastD_Periode
palsu
nomor
PeraturanoptInFastD_MAType
Parameter digunakan untuk mengatur jenis rata-rata Fast-D, nilai default adalah 0.
pilihanInFastD_MAType
palsu
nomor
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 ini dijelaskan 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 menghitungRate-of-Change (ROC) 1 hari dari EMA Triple Smooth.
Nilai pengembaliantalib.TRIX()
fungsi adalah: array satu dimensi.
Array
Talib.TRIX ((inReal) talib.TRIX ((inReal, optInTimePeriod)
PeraturaninReal
parameter digunakan untuk menentukan data garis K.
InReal
benar
{@struct/Record Record} array struktur, array numerik
PeraturanoptInTimePeriod
parameter digunakan untuk mengatur periode, nilai default adalah 30.
optInTimePeriode
palsu
Nomor
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:TRIX(Records[Close],Time Period = 30) = Array(outReal)
Peraturantalib.ULTOSC()
fungsi digunakan untuk menghitungUltimate Oscillator.
Nilai pengembaliantalib.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
benar
Array struktur {@struct/Record Record}
PeraturanoptInTimePeriod1
parameter digunakan untuk mengatur periode pertama, nilai default adalah 7.
optInTimePeriod1
palsu
nomor
PeraturanoptInTimePeriod2
parameter digunakan untuk mengatur periode kedua, nilai default adalah 14.
optInTimePeriod2
palsu
nomor
PeraturanoptInTimePeriod3
parameter digunakan untuk mengatur periode ketiga, nilai default adalah 28.
optInTimePeriod3
palsu
nomor
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 ini dijelaskan 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 menghitungWilliams
Nilai pengembaliantalib.WILLR()
fungsi adalah: array satu dimensi.
Array
talib.WILLR ((inPriceHLC) talib.WILLR ((inPriceHLC, optInTimePeriod)
PeraturaninPriceHLC
parameter digunakan untuk menentukan data garis K.
inPriceHLC
benar
Array struktur {@struct/Record Record}
PeraturanoptInTimePeriod
parameter digunakan untuk mengatur periode, nilai default adalah 14.
optInTimePeriode
palsu
Nomor
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:AVGPRICE(Records[Open,High,Low,Close]) = Array(outReal)
Peraturantalib.MEDPRICE()
fungsi digunakan untuk menghitungHarga rata-rata.
Nilai pengembaliantalib.MEDPRICE()
fungsi adalah array satu dimensi.
Array
talib.MEDPRICE ((inPriceHL)
PeraturaninPriceHL
parameter digunakan untuk menentukan data garis K.
inPriceHL
benar
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:MEDPRICE(Records[High,Low]) = Array(outReal)
Peraturantalib.TYPPRICE()
Fungsi digunakan untuk menghitungHarga Tipikal.
Nilai pengembaliantalib.TYPPRICE()
fungsi adalah array satu dimensi.
Array
Talib.TYPPRICE ((inPriceHLC)
PeraturaninPriceHLC
parameter digunakan untuk menentukan data garis K.
inPriceHLC
benar
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:TYPPRICE(Records[High,Low,Close]) = Array(outReal)
Peraturantalib.WCLPRICE()
fungsi digunakan untuk menghitungHarga Penutupan Tertimbang.
Nilai pengembaliantalib.WCLPRICE()
fungsi adalah array satu dimensi.
Array
talib.WCLPRICE ((inPriceHLC)
PeraturaninPriceHLC
parameter digunakan untuk menentukan data garis K.
inPriceHLC
benar
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 ini dijelaskan dalam dokumentasi perpustakaan talib sebagai:WCLPRICE(Records[High,Low,Close]) = Array(outReal)