Dapatkan struktur {@struct/Ticker Ticker} tempat atau kontrak yang sepadan dengan pasangan dagangan yang ditetapkan semasa, kod kontrak, iaitu data ticker.GetTicker ()
fungsi adalah fungsi ahli objek pertukaran {@var/EXCHANGE pertukaran}, penggunaanexchange
fungsi anggota objek (metod) hanya berkaitan denganexchange
, dan ia tidak akan diulangi dalam dokumen.
Peraturanexchange.GetTicker()
fungsi mengembalikan struktur {@struct/Ticker Ticker} apabila permintaan data berjaya, dan mengembalikan nilai null apabila permintaan data gagal.
{@struct/Ticker Ticker}, nilai sifar
pertukaran.GetTicker() pertukaran.GetTicker ((simbol)
Parametersymbol
digunakan untuk menentukan pasangan dagangan dan kod kontrak tertentu yang sepadan dengan data {@struct/Ticker Ticker} yang diminta. Jika parameter ini tidak diteruskan, data pasaran pasangan dagangan dan kod kontrak yang ditetapkan pada masa ini akan diminta secara lalai.
Apabila memanggilexchange.GetTicker(symbol)
fungsi,exchange
adalah objek pertukaran segera. Jika anda perlu meminta data pasaran dengan mata wang denominasi sebagai USDT dan mata wang perdagangan sebagai BTC, parametersymbol
ialah:"BTC_USDT"
, dan formatnya adalah format pasangan dagangan yang ditakrifkan oleh platform FMZ.
Apabila memanggilexchange.GetTicker(symbol)
fungsi,exchange
adalah objek pertukaran niaga hadapan. Jika anda perlu meminta data pasaran kontrak kekal standard U BTCsymbol
ialah:"BTC_USDT.swap"
, dan formatnya adalah gabunganPasangan dagangandanKod kontrakyang ditakrifkan oleh platform FMZ, dipisahkan oleh watak exchange.GetTicker(symbol)
fungsi,exchange
adalah objek pertukaran niaga hadapan. Jika anda perlu meminta data pasaran kontrak pilihan standard U BTCsymbol
ialah:"BTC_USDT.BTC-240108-40000-C"
(mengambil Binance Option BTC-240108-40000-C sebagai contoh), format adalah gabunganPasangan daganganyang ditakrifkan oleh platform FMZ dan kod kontrak opsyen khusus yang ditakrifkan oleh bursa, dipisahkan oleh watak
simbol palsu senar
function main(){
// If it is a futures exchange object, set the contract code first, e.g. set it as a perpetual contract
// exchange.SetContractType("swap")
var ticker = exchange.GetTicker()
/*
The exchange interface may not be accessible due to network reasons (even if the docker program's device can open the exchange website, the API interface may not be accessible).
At this point, the ticker is null, and it will cause an error when accessing ticker.High, so when testing this code, make sure that the exchange interface can be accessed.
*/
Log("Symbol:", ticker.Symbol, "High:", ticker.High, "Low:", ticker.Low, "Sell:", ticker.Sell, "Buy:", ticker.Buy, "Last:", ticker.Last, "Open:", ticker.Open, "Volume:", ticker.Volume)
}
def main():
ticker = exchange.GetTicker()
Log("Symbol:", ticker["Symbol"], "High:", ticker["High"], "Low:", ticker["Low"], "Sell:", ticker["Sell"], "Buy:", ticker["Buy"], "Last:", ticker["Last"], "Open:", ticker.Open, "Volume:", ticker["Volume"])
void main() {
auto ticker = exchange.GetTicker();
Log("Symbol:", ticker.Symbol, "High:", ticker.High, "Low:", ticker.Low, "Sell:", ticker.Sell, "Buy:", ticker.Buy, "Last:", ticker.Last, "Open:", ticker.Open, "Volume:", ticker.Volume);
}
Untuk objek pertukaran niaga hadapan (iaitu,exchange
atauexchanges[0]
), anda perlu menetapkan kod kontrak menggunakanexchange.SetContractType()
fungsi sebelum memanggil fungsi ticker, yang tidak akan diulangi.
function main() {
var ticker = exchange.GetTicker("BTC_USDT")
Log(ticker)
}
def main():
ticker = exchange.GetTicker("BTC_USDT")
Log(ticker)
void main() {
auto ticker = exchange.GetTicker("BTC_USDT");
Log(ticker);
}
Gunakansymbol
parameter untuk meminta data pasaran untuk simbol tertentu (simbol spot).
PeraturanTicker
data yang dikembalikan olehexchange.GetTicker()
fungsi dalam sistem backtesting.High
danLow
adalah nilai simulasi, diambil daripada satu jual dan membeli satu pasaran pada masa itu.Ticker
data yang dikembalikan olehexchange.GetTicker()
di mana mereka tidak mempunyai fungsi dalam pasaran sebenar.High
danLow
nilai adalah berdasarkan data yang dikembalikan oleh pertukaran terkapasTick
antara muka, yang merangkumi harga tertinggi dan terendah dalam tempoh tertentu (biasanya tempoh 24 jam).
Bursa yang tidak menyokongexchange.GetTicker()
fungsi:
Nama Fungsi | Pertukaran Spot yang tidak disokong | Pertukaran niaga hadapan tanpa sokongan |
---|---|---|
GetTicker | – | Futures_Aevo |
{@fun/Market/exchange.GetDepth exchange.GetDepth}, {@fun/Market/exchange.GetTrades exchange.GetTrades}, {@fun/Market/exchange.GetRecords exchange.GetRecords}, {@fun/Market/exchange.GetTickers exchange.GetTickers}
Dapatkan struktur {@struct/Depth Depth} tempat atau kontrak yang sepadan dengan pasangan dagangan yang ditetapkan pada masa ini, kod kontrak, iaitu data buku pesanan.
Peraturanexchange.GetDepth()
fungsi mengembalikan struktur {@struct/Depth Depth} jika permintaan data berjaya, dan ia mengembalikan null jika permintaan data gagal.
{@struct/Depth Depth}, nilai sifar
pertukaran.GetDepth() pertukaran.GetDepth ((simbol)
Parametersymbol
digunakan untuk menentukan pasangan dagangan tertentu dan kod kontrak yang sepadan dengan data {@struct/Depth Depth} yang diminta. Jika parameter ini tidak diteruskan, data buku pesanan pasangan dagangan yang ditetapkan dan kod kontrak akan diminta secara lalai.exchange.GetDepth(symbol)
fungsi,exchange
adalah objek pertukaran spot. Jika anda perlu meminta untuk mendapatkan data buku pesanan dengan mata wang yang diisytiharkan sebagai USDT dan mata wang transaksi sebagai BTC, parametersymbol
ialah:"BTC_USDT"
, dan format adalah format pasangan dagangan yang ditakrifkan oleh platform FMZ.exchange.GetDepth(symbol)
fungsi,exchange
adalah objek pertukaran niaga hadapan. Jika anda perlu meminta data buku pesanan kontrak kekal standard U BTCsymbol
ialah:"BTC_USDT.swap"
, dan formatnya adalah gabunganPasangan dagangandanKod kontrakditakrifkan oleh platform FMZ, dipisahkan oleh watak exchange.GetDepth(symbol)
fungsi,exchange
adalah objek pertukaran niaga hadapan. Jika anda perlu meminta data buku pesanan kontrak pilihan standard U BTCsymbol
ialah:"BTC_USDT.BTC-240108-40000-C"
(mengambil Binance Option BTC-240108-40000-C sebagai contoh), format adalah gabunganPasangan daganganyang ditakrifkan oleh platform FMZ dan kod kontrak opsyen khusus yang ditakrifkan oleh bursa, dipisahkan oleh watak
function main(){
var depth = exchange.GetDepth()
/*
The exchange interface may not be accessible due to network reasons (even if the docker program's device can open the exchange website, the API interface may not be accessible).
At this point, the depth is null, which will cause an error when accessing depth.Asks[1].Price, so make sure you can access the exchange interface when testing the code.
*/
var price = depth.Asks[1].Price
Log("Sell 2 price is:", price)
}
def main():
depth = exchange.GetDepth()
price = depth["Asks"][1]["Price"]
Log("Sell 2 price is:", price)
void main() {
auto depth = exchange.GetDepth();
auto price = depth.Asks[1].Price;
Log("Sell 2 price is:", price);
}
Ujianexchange.GetDepth()
fungsi:
function main() {
// BTC U-based perpetual contract
var depth = exchange.GetDepth("BTC_USDT.swap")
Log(depth)
}
def main():
depth = exchange.GetDepth("BTC_USDT.swap")
Log(depth)
void main() {
auto depth = exchange.GetDepth("BTC_USDT.swap");
Log(depth);
}
Apabila konfigurasiexchange
objek adalah objek pertukaran niaga hadapan, menggunakansymbol
parameter untuk meminta data buku pesanan simbol tertentu (simbol masa hadapan).
Dalam sistem backtesting, data untuk setiap gred dikembalikan olehexchange.GetDepth()
fungsi apabila menggunakanMeniru Tickdalam sistem backtesting, data yang dikembalikan olehexchange.GetDepth()
fungsi apabila menggunakanTick sebenarUjian balik adalah gambar mendalam peringkat kedua.
{@fun/Market/exchange.GetTicker exchange.GetTicker}, {@fun/Market/exchange.GetTrades exchange.GetTrades}, {@fun/Market/exchange.GetRecords exchange.GetRecords}
Dapatkan array struktur {@struct/Trade Trade} tempat atau kontrak yang sepadan dengan pasangan dagangan yang ditetapkan pada masa ini, kod kontrak, iaitu data urus niaga pasaran.
Peraturanexchange.GetTrades()
fungsi mengembalikan pelbagai struktur {@struct/Trade Trade} jika permintaan data berjaya, dan ia mengembalikan nilai sifar jika permintaan data gagal.
{@struct/Trade Trade} array, nilai sifar
pertukaran.GetTrades() pertukaran.GetTrades ((simbol)
Parametersymbol
digunakan untuk menentukan pasangan dagangan dan kod kontrak tertentu yang sepadan dengan data array {@struct/Trade Trade} yang diminta. Jika parameter ini tidak diteruskan, data rekod transaksi terkini pasangan dagangan dan kod kontrak yang ditetapkan pada masa ini akan diminta secara lalai.exchange.GetTrades(symbol)
fungsi,exchange
Jika anda perlu meminta untuk mendapatkan data buku pesanan dengan mata wang yang diisytiharkan sebagai USDT dan mata wang dagangan sebagai BTC, parametersymbol
ialah:"BTC_USDT"
, dan format adalah format pasangan dagangan yang ditakrifkan oleh platform FMZ.exchange.GetTrades(symbol)
fungsi,exchange
adalah objek pertukaran niaga hadapan. Jika anda perlu meminta data buku pesanan kontrak kekal standard U BTCsymbol
ialah:"BTC_USDT.swap"
, dan formatnya adalah gabunganPasangan dagangandanKod kontrakditakrifkan oleh platform FMZ, dipisahkan oleh watak exchange.GetTrades(symbol)
fungsi,exchange
adalah objek pertukaran niaga hadapan. Jika anda perlu meminta data buku pesanan kontrak pilihan standard U BTCsymbol
ialah:"BTC_USDT.BTC-240108-40000-C"
(mengambil Binance Option BTC-240108-40000-C sebagai contoh), format adalah gabunganPasangan daganganyang ditakrifkan oleh platform FMZ dan kod kontrak opsyen khusus yang ditakrifkan oleh bursa, dipisahkan oleh watak
function main(){
var trades = exchange.GetTrades()
/*
The exchange interface may not be accessible due to network reasons (even if the docker program's device can open the exchange website, the API interface may not be accessible).
At this point, trade is null. When accessing trade[0].Id, it will cause an error. Therefore, when testing this code, ensure that you can access the exchange interface.
*/
Log("id:", trades[0].Id, "time:", trades[0].Time, "Price:", trades[0].Price, "Amount:", trades[0].Amount, "type:", trades[0].Type)
}
def main():
trades = exchange.GetTrades()
Log("id:", trades[0]["Id"], "time:", trades[0]["Time"], "Price:", trades[0]["Price"], "Amount:", trades[0]["Amount"], "type:", trades[0]["Type"])
void main() {
auto trades = exchange.GetTrades();
Log("id:", trades[0].Id, "time:", trades[0].Time, "Price:", trades[0].Price, "Amount:", trades[0].Amount, "type:", trades[0].Type);
}
Ujiexchange.GetTrades()
fungsi:
function main() {
// BTC's U-based perpetual contract
var trades = exchange.GetTrades("BTC_USDT.swap")
Log(trades)
}
def main():
trades = exchange.GetTrades("BTC_USDT.swap")
Log(trades)
void main() {
auto trades = exchange.GetTrades("BTC_USDT.swap");
Log(trades);
}
Apabila konfigurasiexchange
objek adalah objek pertukaran niaga hadapan, menggunakansymbol
parameter untuk meminta data rekod transaksi pasaran untuk simbol tertentu (simbol niaga hadapan).
exchange.GetTrades()
fungsi untuk mendapatkan pasangan dagangan semasa, sejarah transaksi pasaran (bukan mereka sendiri) yang sepadan dengan kontrak. Sesetengah pertukaran tidak menyokong fungsi ini, dan data tertentu yang dikembalikan adalah berapa banyak daripada julat rekod transaksi bergantung pada pertukaran dan perlu ditangani mengikut keadaan tertentu.exchange.GetRecords ()
fungsi mengembalikan urutan data yang sama, iaitu, elemen terakhir array adalah data yang paling dekat dengan masa semasa.
Perkhidmatanexchange.GetTrades()
fungsi mengembalikan array kosong apabila menggunakanMeniru Tickdata yang dikembalikan oleh sistemexchange.GetTrades()
fungsi apabila digunakanTick sebenarbacktesting dalam sistem backtesting adalah data snapshot aliran pesanan, iaitu array struktur {@struct/Trade Trade}.
Bursa yang tidak menyokongexchange.GetTrades()
fungsi:
Nama Fungsi | Pertukaran Spot yang tidak disokong | Pertukaran niaga hadapan tanpa sokongan |
---|---|---|
GetTrades | – | Futures_BitMart / Futures_Bibox |
{@fun/Market/exchange.GetTicker exchange.GetTicker}, {@fun/Market/exchange.GetDepth exchange.GetDepth}, {@fun/Market/exchange.GetRecords exchange.GetRecords}
Dapatkan array struktur {@struct/Record Record} tempat atau kontrak yang sepadan dengan pasangan dagangan yang ditetapkan pada masa ini, kod kontrak, iaitu data K-line.
Peraturanexchange.GetRecords()
fungsi mengembalikan pelbagai struktur {@struct/Record Record} apabila permintaan data berjaya, dan ia mengembalikan nilai sifar apabila permintaan data gagal.
{@struct/Record Record} array, nilai sifar
pertukaran.GetRecords() pertukaran.GetRecords ((simbol) pertukaran.GetRecords ((simbol, titik) pertukaran.GetRecords ((simbol, tempoh, had) pertukaran.GetRecords ((periode) pertukaran.GetRecords ((periode, had)
Parametersymbol
digunakan untuk menentukan pasangan dagangan dan kod kontrak tertentu yang sepadan dengan data array {@struct/Record Record} yang diminta. Jika parameter ini tidak diteruskan, data K-line pasangan dagangan dan kod kontrak yang ditetapkan pada masa ini akan diminta secara lalai.exchange.GetRecords(symbol)
fungsi,exchange
adalah objek pertukaran segera. Jika anda perlu meminta untuk mendapatkan data dengan mata wang yang diisytiharkan sebagai USDT dan mata wang transaksi sebagai BTC, parametersymbol
ialah:"BTC_USDT"
, dan format adalah format pasangan dagangan yang ditakrifkan oleh platform FMZ.exchange.GetRecords(symbol)
fungsi,exchange
adalah objek pertukaran niaga hadapan. Jika anda perlu meminta data buku pesanan kontrak kekal standard U BTCsymbol
ialah:"BTC_USDT.swap"
, dan formatnya adalah gabunganPasangan dagangandanKod kontrakditakrifkan oleh platform FMZ, dipisahkan oleh watak exchange.GetRecords(symbol)
fungsi,exchange
adalah objek pertukaran niaga hadapan. Jika anda perlu meminta data buku pesanan kontrak pilihan standard U BTCsymbol
ialah:"BTC_USDT.BTC-240108-40000-C"
(mengambil Binance Option BTC-240108-40000-C sebagai contoh), format adalah gabunganPasangan daganganyang ditakrifkan oleh platform FMZ dan kod kontrak opsyen khusus yang ditakrifkan oleh bursa, dipisahkan oleh watak period
menentukan tempoh data garis K yang diminta, contohnya: {@var/PERIOD/PERIOD_M1 PERIOD_M1}, {@var/PERIOD/PERIOD_M5 PERIOD_M5}, {@var/PERIOD/PERIOD_M15 PERIOD_M15}, dan lain-lain. Nilai parameterperiod
boleh dilalui bukan sahaja tempoh standard yang ditakrifkan, tetapi juga nilai bulat dalam saat. Jika parameter ini tidak dilalui, tempoh data K-garis yang diminta secara lalai adalah tempoh K-garis lalai konfigurasi masa nyata / backtest strategi semasa.
tempoh
palsu
nombor
Parameterlimit
digunakan untuk menentukan panjang data K-line yang diminta. Jika parameter ini tidak dilewatkan, panjang permintaan lalai adalah bilangan bar K-line maksimum yang diminta pada satu masa antara muka pertukaran K-line. Parameter ini boleh menyebabkan paging untuk menyoal data pertukaran K-line, dan penggunaan masa panggilan fungsi akan meningkat semasa pertanyaan paging.
had
palsu
nombor
function main() {
// Print K-line data with a K-line period of 120 seconds (2 minutes)
Log(exchange.GetRecords(60 * 2))
// Print K-line data with a K-line period of 5 minutes
Log(exchange.GetRecords(PERIOD_M5))
}
def main():
Log(exchange.GetRecords(60 * 2))
Log(exchange.GetRecords(PERIOD_M5))
void main() {
Log(exchange.GetRecords(60 * 2)[0]);
Log(exchange.GetRecords(PERIOD_M5)[0]);
}
Dapatkan data K-line untuk tempoh khusus.
function main() {
var records = exchange.GetRecords(PERIOD_H1)
/*
The exchange interface may not be accessible due to network reasons (even if the docker program's device can open the exchange website, the API interface may not be accessible).
At this point, records is null. When accessing records[0].Time, it will cause an error. Therefore, when testing this code, ensure that you can access the exchange interface.
*/
Log("The first k-line data is Time:", records[0].Time, "Open:", records[0].Open, "High:", records[0].High)
Log("The second k-line data is Time:", records[1].Time ,"Close:", records[1].Close)
Log("Current K-line (latest)", records[records.length-1], "Previous K-line", records[records.length-2])
}
def main():
records = exchange.GetRecords(PERIOD_H1)
Log("The first k-line data is Time:", records[0]["Time"], "Open:", records[0]["Open"], "High:", records[0]["High"])
Log("The second k-line data Time:", records[1]["Time"], "Close:", records[1]["Close"])
Log("Current K-line (latest)", records[-1], "Previous K-line", records[-2])
void main() {
auto records = exchange.GetRecords(PERIOD_H1);
Log("The first k-line data is Time:", records[0].Time, "Open:", records[0].Open, "High:", records[0].High);
Log("The second k-line data Time:", records[1].Time, "Close:", records[1].Close);
Log("Current K-line (latest)", records[records.size() - 1], "Previous K-line", records[records.size() - 2]);
}
Data bar K-line output:
function main() {
var records = exchange.GetRecords("BTC_USDT.swap", 60, 100)
Log(records)
}
def main():
records = exchange.GetRecords("BTC_USDT.swap", 60, 100)
Log(records)
void main() {
auto records = exchange.GetRecords("BTC_USDT.swap", 60, 100);
Log(records);
}
Apabila konfigurasiexchange
objek adalah objek pertukaran niaga hadapan, menggunakansymbol
, period
, danlimit
parameter untuk meminta data K-line produk tertentu (produk masa depan).
Tempoh K-garis lalai boleh ditetapkan di halaman backtest dan perdagangan sebenar.exchange.GetRecords()
Jika tiada parameter ditentukan apabila fungsi dipanggil, data K-line yang sepadan akan dikembalikan mengikut tempoh K-line yang ditetapkan dalam backtest dan parameter pasaran sebenar.
Nilai pulangan adalah pelbagaiRecord
struktur, data K-garis yang dikembalikan akan terkumpul dari masa ke masa, had atas bar K-garis terkumpul dipengaruhi olehexchange.SetMaxBarLen()
Peraturan fungsi. had lalai adalah 5000 bar apabila ia tidak ditetapkan. Apabila data K-line mencapai had pengumpulan bar K-line, ia akan dikemas kini dengan menambah bar K-line dan memadam bar K-line terdahulu (contohnya antrian masuk/keluar).Trade
array terstruktur) dalam masa nyata untuk menjana K-garis.
Jika antara muka K-line pertukaran menyokong pertanyaan paging, pelbagai permintaan API akan dibuat apabila memanggilexchange.SetMaxBarLen()
fungsi untuk menetapkan panjang garis K yang lebih besar.
Apabilaexchange.GetRecords()
fungsi dipanggil pada mulanya, bilangan bar K-garis yang diperoleh berbeza antara backtesting dan perdagangan sebenar: - Sistem backtesting akan memperoleh sejumlah bar K-garis sebelum permulaan julat masa backtesting terlebih dahulu (patuhan adalah 5000, tetapan sistem backtesting dan jumlah data akan mempengaruhi nombor akhir yang dikembalikan), sebagai data K-garis awal. - Bilangan bar K-garis yang diperoleh semasa perdagangan sebenar adalah berdasarkan jumlah maksimum data yang boleh diperoleh dari antara muka K-garis bursa.
Perkhidmatanperiod
parameter ditetapkan kepada 5, yang merupakan permintaan untuk mendapatkan data K-garis dengan tempoh 5 saat.period
Parameter tidak boleh dibahagikan dengan 60 (iaitu, tempoh yang diwakili tidak boleh dibahagikan dengan minit).exchange.GetTrades()
untuk mendapatkan data rekod transaksi dan meringkas data K-line yang diperlukan.period
parameter boleh dibahagikan dengan 60, maka data garis K yang diperlukan disintesis menggunakan data garis K sekurang-kurangnya 1 minit (jika mungkin, data garis K yang diperlukan disintesis menggunakan tempoh yang lebih besar).
Pengujian balik tahap simulasi dalam sistem pengujian balik memerlukan tetapan tempoh K-garis asas (apabila sistem pengujian balik mensimulasikan pengujian balik tahap, data K-garis yang sesuai digunakan untuk menjana data Tick mengikut tempoh K-garis asas yang ditetapkan). Perlu diperhatikan bahawa tempoh data K-garis yang diperoleh dalam strategi tidak boleh lebih kecil daripada tempoh K-garis asas. Kerana dalam pengujian balik tahap simulasi, data K-garis setiap tempoh dalam sistem pengujian balik disintesis dari data K-garis tempoh K-garis asas.
PerkhidmatanC++
bahasa mempunyai contoh kod berikut jika anda perlu membina data K-garis anda sendiri:
#include <sstream>
void main() {
Records r;
r.Valid = true;
for (auto i = 0; i < 10; i++) {
Record ele;
ele.Time = i * 100000;
ele.High = i * 10000;
ele.Low = i * 1000;
ele.Close = i * 100;
ele.Open = i * 10;
ele.Volume = i * 1;
r.push_back(ele);
}
// Output display: Records[10]
Log(r);
auto ma = TA.MA(r,10);
// Output display: [nan,nan,nan,nan,nan,nan,nan,nan,nan,450]
Log(ma);
}
Bursa yang tidak menyokongexchange.GetRecords()
fungsi:
Nama Fungsi | Pertukaran Spot yang tidak disokong | Pertukaran niaga hadapan tanpa sokongan |
---|---|---|
GetRecords | Zaif / Coincheck / BitFlyer | Futures_Aevo |
{@fun/Market/exchange.GetTicker exchange.GetTicker}, {@fun/Market/exchange.GetDepth exchange.GetDepth}, {@fun/Market/exchange.GetTrades exchange.GetTrades}, {@fun/Market/exchange.SetMaxBarLen exchange.SetMaxBarLen}
Dapatkan tempoh K-garis ditetapkan pada halaman laman web platform FMZ Quant Trading apabila backtesting dan menjalankan strategi dalam perdagangan langsung, iaitu tempoh K-garis lalai yang digunakan apabila memanggilexchange.GetRecords()
berfungsi tanpa lulus parameter.
Tempoh garis K dalam saat, nilai bulat dalam saat. nombor
pertukaran.GetPeriod()
function main() {
// For example, the K-line period set on the website page of the FMZ Quant Trading platform during backtesting and live trading is 1 hour.
var period = exchange.GetPeriod()
Log("K-line period:", period / (60 * 60), "hours")
}
def main():
period = exchange.GetPeriod()
Log("K-line period:", period / (60 * 60), "hours")
void main() {
auto period = exchange.GetPeriod();
Log("K-line period:", period / (60 * 60.0), "hours");
}
{@fun/Market/exchange.GetRecords pertukaran.GetRecords}
Tetapkan panjang maksimum K-garis.
pertukaran.SetMaxBarLen ((n)
Parametern
digunakan untuk menentukan panjang garis K maksimum.
n
betul
nombor
function main() {
exchange.SetMaxBarLen(50)
var records = exchange.GetRecords()
Log(records.length, records)
}
def main():
exchange.SetMaxBarLen(50)
r = exchange.GetRecords()
Log(len(r), r)
void main() {
exchange.SetMaxBarLen(50);
auto r = exchange.GetRecords();
Log(r.size(), r[0]);
}
Peraturanexchange.SetMaxBarLen()
fungsi mempengaruhi dua aspek untuk strategi cryptocurrency runtime:
{@fun/Market/exchange.GetRecords pertukaran.GetRecords}
Dapatkan kandungan asal dikembalikan oleh yang terakhirrest
permintaan untuk objek pertukaran semasa ({@var/EXCHANGE exchange}, {@var/EXCHANGE/exchanges exchanges}).
Data tindak balas untukrest
permintaan.
senar
pertukaran.GetRawJSON()
function main(){
exchange.GetAccount();
var obj = JSON.parse(exchange.GetRawJSON());
Log(obj);
}
import json
def main():
exchange.GetAccount()
obj = json.loads(exchange.GetRawJSON())
Log(obj)
void main() {
auto obj = exchange.GetAccount();
// C++ does not support the GetRawJSON function
Log(obj);
}
Peraturanexchange.GetRawJSON()
fungsi hanya disokong untuk perdagangan sebenar. fungsi ini tidak disokong oleh strategi dalamC++
language.
{@var/EXCHANGE pertukaran}
Dapatkan kadar pertukaran yang kini ditetapkan untuk objek pertukaran.
Nilai semasa kadar pertukaran objek pertukaran. nombor
pertukaran.GetRate()
function main(){
Log(exchange.GetTicker())
// Set up exchange rate conversion
exchange.SetRate(7)
Log(exchange.GetTicker())
Log("Current exchange rate:", exchange.GetRate())
}
def main():
Log(exchange.GetTicker())
exchange.SetRate(7)
Log(exchange.GetTicker())
Log("Current exchange rate:", exchange.GetRate())
void main() {
Log(exchange.GetTicker());
exchange.SetRate(7);
Log(exchange.GetTicker());
Log("Current exchange rate:", exchange.GetRate());
}
Jikaexchange.SetRate()
tidak dipanggil untuk menetapkan kadar penukaran,exchange.GetRate()
fungsi mengembalikan nilai kadar lalai 1. iaitu, data yang berkaitan dengan mata wang yang dipaparkan pada masa ini (quoteCurrency) tidak ditukar.
Jika nilai kadar pertukaran telah ditetapkan menggunakanexchange.SetRate()
, contohnya,exchange.SetRate(7)
Kemudian semua maklumat harga, seperti sebut harga, kedalaman, dan harga pesanan yang diperoleh melaluiexchange
objek pertukaran akan ditukar dengan mengalikan dengan kadar pertukaran yang ditetapkan7
.
Jikaexchange
sama dengan pertukaran dengan USD sebagai mata wang denominasi, selepas memanggilexchange.SetRate(7)
, semua harga di pasaran langsung akan ditukar kepada harga yang dekat dengan CNY dengan mengalikan7
Pada ketika ini, nilai kadar pertukaran yang diperoleh menggunakanexchange.GetRate()
adalah7
.
{@fun/Trade/exchange.SetRate exchange.SetRate}
Peraturanexchange.SetData()
fungsi digunakan untuk menetapkan data dimuatkan apabila strategi berjalan.
Panjang rentetan selepas parametervalue
Pengekodan JSON.
nombor
pertukaran.SetData ((kunci, nilai)
Nama pengumpulan data.
kunci
betul
senar
Data yang akan dimuatkan olehexchange.SetData()
Struktur data adalah sama dengan format data yang diminta olehexchange.GetData()
fungsi apabila meminta data luaran, iaitu:"schema": ["time", "data"]
.
nilai
betul
Array
/*backtest
start: 2020-01-21 00:00:00
end: 2020-02-12 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Bitfinex","currency":"BTC_USD"}]
*/
function main() {
var data = [
[1579536000000, "abc"],
[1579622400000, 123],
[1579708800000, {"price": 123}],
[1579795200000, ["abc", 123, {"price": 123}]]
]
exchange.SetData("test", data)
while(true) {
Log(exchange.GetData("test"))
Sleep(1000)
}
}
'''backtest
start: 2020-01-21 00:00:00
end: 2020-02-12 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Bitfinex","currency":"BTC_USD"}]
'''
def main():
data = [
[1579536000000, "abc"],
[1579622400000, 123],
[1579708800000, {"price": 123}],
[1579795200000, ["abc", 123, {"price": 123}]]
]
exchange.SetData("test", data)
while True:
Log(exchange.GetData("test"))
Sleep(1000)
/*backtest
start: 2020-01-21 00:00:00
end: 2020-02-12 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Bitfinex","currency":"BTC_USD"}]
*/
void main() {
json data = R"([
[1579536000000, "abc"],
[1579622400000, 123],
[1579708800000, {"price": 123}],
[1579795200000, ["abc", 123, {"price": 123}]]
])"_json;
exchange.SetData("test", data);
while(true) {
Log(exchange.GetData("test"));
Sleep(1000);
}
}
Ia memerlukan bahawa data untuk parametervalue
mempunyai format yang sama dengandata
Anda boleh melihat bahawa stempel masa1579622400000
sepadan dengan masa2020-01-22 00:00:00
, dan bahawa apabila program strategi dijalankan selepas masa ini, memanggilexchange.GetData()
fungsi untuk mendapatkan data sebelum data timestamp seterusnya1579708800000
, iaitu, masa2020-01-23 00:00:00
Apa yang anda dapat adalah[1579622400000, 123]
kandungan data itu, sebagai program terus berjalan, perubahan masa, dan sebagainya untuk mendapatkan item data oleh item. dalam contoh berikut, pada masa berjalan (backtesting atau perdagangan langsung), masa semasa mencapai atau melebihi timestamp1579795200000
, yangexchange.GetData()
fungsi dipanggil dan nilai pulangan adalah:{"Time":1579795200000,"Data":["abc", 123,{"price":123}]}
. "Time":1579795200000
sama dengan1579795200000
dalam data[1579795200000, ["abc", 123, {"price": 123}]]
. "Data":["abc", 123, {"price": 123}]
sepadan dengan data["abc", 123, {"price": 123}]]
dalam[1579795200000, ["abc", 123, {"price": 123}]]
.
Data yang dimuatkan boleh menjadi mana-mana penunjuk ekonomi, data industri, penunjuk yang relevan, dan lain-lain, yang digunakan untuk penilaian kuantitatif strategi semua maklumat yang boleh diukur.
{@fun/Market/exchange.GetData exchange.GetData}
Peraturanexchange.GetData()
fungsi digunakan untuk mendapatkan data dimuatkan olehexchange.SetData()
fungsi atau disediakan oleh pautan luaran.
Rekod dalam pengumpulan data. objek
pertukaran.GetData ((kunci) pertukaran.GetData (kunci, masa lapang)
Nama pengumpulan data. kunci betul senar Digunakan untuk menetapkan cache timeout dalam milidetik. masa lapang palsu nombor
/*backtest
start: 2020-01-21 00:00:00
end: 2020-02-12 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Bitfinex","currency":"BTC_USD"}]
*/
function main() {
exchange.SetData("test", [[1579536000000, _D(1579536000000)], [1579622400000, _D(1579622400000)], [1579708800000, _D(1579708800000)]])
while(true) {
Log(exchange.GetData("test"))
Sleep(1000 * 60 * 60 * 24)
}
}
'''backtest
start: 2020-01-21 00:00:00
end: 2020-02-12 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Bitfinex","currency":"BTC_USD"}]
'''
def main():
exchange.SetData("test", [[1579536000000, _D(1579536000000/1000)], [1579622400000, _D(1579622400000/1000)], [1579708800000, _D(1579708800000/1000)]])
while True:
Log(exchange.GetData("test"))
Sleep(1000 * 60 * 60 * 24)
/*backtest
start: 2020-01-21 00:00:00
end: 2020-02-12 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Bitfinex","currency":"BTC_USD"}]
*/
void main() {
json arr = R"([[1579536000000, ""], [1579622400000, ""], [1579708800000, ""]])"_json;
arr[0][1] = _D(1579536000000);
arr[1][1] = _D(1579622400000);
arr[2][1] = _D(1579708800000);
exchange.SetData("test", arr);
while(true) {
Log(exchange.GetData("test"));
Sleep(1000 * 60 * 60 * 24);
}
}
Panggilan untuk mendapatkan data yang ditulis secara langsung.
/*backtest
start: 2020-01-21 00:00:00
end: 2020-02-12 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Bitfinex","currency":"BTC_USD"}]
*/
function main() {
while(true) {
Log(exchange.GetData("http://xxx.xx.x.xx:9090/data"))
Sleep(1000)
}
}
'''backtest
start: 2020-01-21 00:00:00
end: 2020-02-12 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Bitfinex","currency":"BTC_USD"}]
'''
def main():
while True:
Log(exchange.GetData("http://xxx.xx.x.xx:9090/data"))
Sleep(1000)
/*backtest
start: 2020-01-21 00:00:00
end: 2020-02-12 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Bitfinex","currency":"BTC_USD"}]
*/
void main() {
while(true) {
Log(exchange.GetData("http://xxx.xx.x.xx:9090/data"));
Sleep(1000);
}
}
Ia menyokong untuk meminta data melalui pautan luaran, format data yang diminta untuk:
{
"schema":["time","data"],
"data":[
[1579536000000, "abc"],
[1579622400000, 123],
[1579708800000, {"price": 123}],
[1579795200000, ["abc", 123, {"price": 123}]]
]
}
Di mana?schema
adalah format data untuk setiap rekod dalam badan data yang dimuatkan, yang ditetapkan kepada["time", "data"]
yang sepadan dengan format data entri-oleh-masuk dalamdata
atribut.
Apa yang disimpan dalamdata
atribut adalah badan data, dengan setiap entri yang terdiri daripada timestamp tahap milidetik dan kandungan data (yang boleh menjadi mana-mana data yang boleh dikodkan JSON).
Program perkhidmatan untuk ujian, ditulis dalam Go:
package main
import (
"fmt"
"net/http"
"encoding/json"
)
func Handle (w http.ResponseWriter, r *http.Request) {
defer func() {
fmt.Println("req:", *r)
ret := map[string]interface{}{
"schema": []string{"time","data"},
"data": []interface{}{
[]interface{}{1579536000000, "abc"},
[]interface{}{1579622400000, 123},
[]interface{}{1579708800000, map[string]interface{}{"price":123}},
[]interface{}{1579795200000, []interface{}{"abc", 123, map[string]interface{}{"price":123}}},
},
}
b, _ := json.Marshal(ret)
w.Write(b)
}()
}
func main () {
fmt.Println("listen http://localhost:9090")
http.HandleFunc("/data", Handle)
http.ListenAndServe(":9090", nil)
}
Data tindak balas program apabila menerima permintaan:
{
"schema":["time","data"],
"data":[
[1579536000000, "abc"],
[1579622400000, 123],
[1579708800000, {"price": 123}],
[1579795200000, ["abc", 123, {"price": 123}]]
]
}
Kod strategi ujian:
function main() {
Log(exchange.GetData("http://xxx.xx.x.xx:9090/data"))
Log(exchange.GetData("https://www.fmz.com/upload/asset/32bf73a69fc12d36e76.json"))
}
def main():
Log(exchange.GetData("http://xxx.xx.x.xx:9090/data"))
Log(exchange.GetData("https://www.fmz.com/upload/asset/32bf73a69fc12d36e76.json"))
void main() {
Log(exchange.GetData("http://xxx.xx.x.xx:9090/data"));
Log(exchange.GetData("https://www.fmz.com/upload/asset/32bf73a69fc12d36e76.json"));
}
Kaedah panggilan untuk mendapatkan data pautan luaran.
function main() {
Log(exchange.GetData("https://www.datadata.com/api/v1/query/xxx/data")) // The xxx part of the link is the code of the query data, here xxx is an example.
}
def main():
Log(exchange.GetData("https://www.datadata.com/api/v1/query/xxx/data"))
void main() {
Log(exchange.GetData("https://www.datadata.com/api/v1/query/xxx/data"));
}
Minta data untuk pertanyaan yang dibuat di platformdata data, meminta bahawa format data jawapan adalah (harus mempunyai masa, medan data yang diterangkan dalam skim):
{
"data": [],
"schema": ["time", "data"]
}
medan exchange.GetData()
fungsi dipanggil, objek JSON dikembalikan, contohnya:{"Time":1579795200000, "Data":"..."}
.
Dapatkan data sekaligus untuk backtesting dan cache satu minit data untuk perdagangan langsung.from
(berstempel masa dalam saat),to
(timestamped dalam saat) kepada permintaan, parameter sepertiperiod
(periode garis K yang mendasari, bertanda masa dalam mili saat) digunakan untuk menentukan jangka masa di mana data akan diperoleh.
{@fun/Market/exchange.SetData exchange.SetData}
Peraturanexchange.GetMarkets()
fungsi digunakan untuk mendapatkan maklumat pasaran pertukaran.
Kamus yang mengandungi struktur {@struct/Market Market}. objek
pertukaran.GetMarkets()
function main() {
var markets = exchange.GetMarkets()
var currency = exchange.GetCurrency()
// Get the current contract code can also use exchange.GetContractType() function
var ct = "swap"
var key = currency + "." + ct
Log(key, ":", markets[key])
}
def main():
markets = exchange.GetMarkets()
currency = exchange.GetCurrency()
ct = "swap"
key = currency + "." + ct
Log(key, ":", markets[key])
void main() {
auto markets = exchange.GetMarkets();
auto currency = exchange.GetCurrency();
auto ct = "swap";
auto key = currency + "." + ct;
Log(key, ":", markets[key]);
}
Contoh panggilan kepada objek pertukaran niaga hadapan:
/*backtest
start: 2023-05-10 00:00:00
end: 2023-05-20 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
function main() {
var arrSymbol = ["SOL_USDT.swap", "BTC_USDT.quarter", "ETH_USDT.swap", "ETH_USDT.quarter"]
var tbl1 = {
type: "table",
title: "markets1",
cols: ["key", "Symbol", "BaseAsset", "QuoteAsset", "TickSize", "AmountSize", "PricePrecision", "AmountPrecision", "MinQty", "MaxQty", "MinNotional", "MaxNotional", "CtVal"],
rows: []
}
var markets1 = exchange.GetMarkets()
for (var key in markets1) {
var market = markets1[key]
tbl1.rows.push([key, market.Symbol, market.BaseAsset, market.QuoteAsset, market.TickSize, market.AmountSize, market.PricePrecision, market.AmountPrecision, market.MinQty, market.MaxQty, market.MinNotional, market.MaxNotional, market.CtVal])
}
for (var symbol of arrSymbol) {
exchange.GetTicker(symbol)
}
var tbl2 = {
type: "table",
title: "markets2",
cols: ["key", "Symbol", "BaseAsset", "QuoteAsset", "TickSize", "AmountSize", "PricePrecision", "AmountPrecision", "MinQty", "MaxQty", "MinNotional", "MaxNotional", "CtVal"],
rows: []
}
var markets2 = exchange.GetMarkets()
for (var key in markets2) {
var market = markets2[key]
tbl2.rows.push([key, market.Symbol, market.BaseAsset, market.QuoteAsset, market.TickSize, market.AmountSize, market.PricePrecision, market.AmountPrecision, market.MinQty, market.MaxQty, market.MinNotional, market.MaxNotional, market.CtVal])
}
LogStatus("`" + JSON.stringify([tbl1, tbl2]) + "`")
}
'''backtest
start: 2023-05-10 00:00:00
end: 2023-05-20 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
'''
import json
def main():
arrSymbol = ["SOL_USDT.swap", "BTC_USDT.quarter", "ETH_USDT.swap", "ETH_USDT.quarter"]
tbl1 = {
"type": "table",
"title": "markets1",
"cols": ["key", "Symbol", "BaseAsset", "QuoteAsset", "TickSize", "AmountSize", "PricePrecision", "AmountPrecision", "MinQty", "MaxQty", "MinNotional", "MaxNotional", "CtVal"],
"rows": []
}
markets1 = exchange.GetMarkets()
for key in markets1:
market = markets1[key]
tbl1["rows"].append([key, market["Symbol"], market["BaseAsset"], market["QuoteAsset"], market["TickSize"], market["AmountSize"], market["PricePrecision"], market["AmountPrecision"], market["MinQty"], market["MaxQty"], market["MinNotional"], market["MaxNotional"], market["CtVal"]])
for symbol in arrSymbol:
exchange.GetTicker(symbol)
tbl2 = {
"type": "table",
"title": "markets2",
"cols": ["key", "Symbol", "BaseAsset", "QuoteAsset", "TickSize", "AmountSize", "PricePrecision", "AmountPrecision", "MinQty", "MaxQty", "MinNotional", "MaxNotional", "CtVal"],
"rows": []
}
markets2 = exchange.GetMarkets()
for key in markets2:
market = markets2[key]
tbl2["rows"].append([key, market["Symbol"], market["BaseAsset"], market["QuoteAsset"], market["TickSize"], market["AmountSize"], market["PricePrecision"], market["AmountPrecision"], market["MinQty"], market["MaxQty"], market["MinNotional"], market["MaxNotional"], market["CtVal"]])
LogStatus("`" + json.dumps([tbl1, tbl2]) + "`")
/*backtest
start: 2023-05-10 00:00:00
end: 2023-05-20 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
void main() {
auto arrSymbol = {"SOL_USDT.swap", "BTC_USDT.quarter", "ETH_USDT.swap", "ETH_USDT.quarter"};
json tbl1 = R"({
"type": "table",
"title": "markets1",
"cols": ["key", "Symbol", "BaseAsset", "QuoteAsset", "TickSize", "AmountSize", "PricePrecision", "AmountPrecision", "MinQty", "MaxQty", "MinNotional", "MaxNotional", "CtVal"],
"rows": []
})"_json;
auto markets1 = exchange.GetMarkets();
for (auto& [key, market] : markets1.items()) {
json arrJson = {key, market["Symbol"], market["BaseAsset"], market["QuoteAsset"], market["TickSize"], market["AmountSize"], market["PricePrecision"], market["AmountPrecision"], market["MinQty"], market["MaxQty"], market["MinNotional"], market["MaxNotional"], market["CtVal"]};
tbl1["rows"].push_back(arrJson);
}
for (const auto& symbol : arrSymbol) {
exchange.GetTicker(symbol);
}
json tbl2 = R"({
"type": "table",
"title": "markets2",
"cols": ["key", "Symbol", "BaseAsset", "QuoteAsset", "TickSize", "AmountSize", "PricePrecision", "AmountPrecision", "MinQty", "MaxQty", "MinNotional", "MaxNotional", "CtVal"],
"rows": []
})"_json;
auto markets2 = exchange.GetMarkets();
for (auto& [key, market] : markets2.items()) {
json arrJson = {key, market["Symbol"], market["BaseAsset"], market["QuoteAsset"], market["TickSize"], market["AmountSize"], market["PricePrecision"], market["AmountPrecision"], market["MinQty"], market["MaxQty"], market["MinNotional"], market["MaxNotional"], market["CtVal"]};
tbl2["rows"].push_back(arrJson);
}
json tbls = R"([])"_json;
tbls.push_back(tbl1);
tbls.push_back(tbl2);
LogStatus("`" + tbls.dump() + "`");
}
Gunakan objek pertukaran niaga hadapan untuk memanggilexchange.GetMarkets()
fungsi dalam sistem backtesting. Sebelum memanggil mana-mana fungsi pasaran, GetMarkets hanya mengembalikan data pasaran pasangan dagangan lalai semasa. Selepas memanggil fungsi pasaran, ia mengembalikan data pasaran semua jenis yang diminta. Anda boleh merujuk kepada contoh ujian berikut:
Peraturanexchange.GetMarkets()
fungsi mengembalikan kamus dengan kunci yang dinamakan nama jenis perdagangan, dan untuk pembaikan spot yang diformat sebagai pasangan perdagangan, contohnya:
{
"BTC_USDT" : {...}, // The key value is the Market structure
"LTC_USDT" : {...},
...
}
Untuk pertukaran kontrak niaga hadapan, kerana mungkin terdapat beberapa kontrak untuk satu jenis, contohnyaBTC_USDT
Pasangan perdagangan, terdapat kontrak kekal, kontrak suku tahunan, dan sebagainya.exchange.GetMarkets()
fungsi mengembalikan kamus dengan nama kunci pasangan digabungkan dengan kod kontrak, contohnya:
{
"BTC_USDT.swap" : {...}, // The key value is the Market structure
"BTC_USDT.quarter" : {...},
"LTC_USDT.swap" : {...},
...
}
exchange.GetMarkets()
Fungsi menyokong perdagangan langsung, sistem backtesting.exchange.GetMarkets()
fungsi mengembalikan maklumat pasaran hanya untuk varieti yang didagangkan dalam talian di bursa.exchange.GetMarkets()
fungsi tidak menyokong kontrak opsyen.Bursa yang tidak menyokongexchange.GetMarkets()
fungsi:
Nama Fungsi | Pertukaran Spot yang tidak disokong | Pertukaran niaga hadapan tanpa sokongan |
---|---|---|
GetMarkets | Coincheck / Bithumb / BitFlyer | – |
{@struct/Pasar Pasaran}
Peraturanexchange.GetTickers()
fungsi digunakan untuk mendapatkan data ticker pertukaran agregat (saringan struktur {@struct/Ticker Ticker}).exchange
Mengembalikan data ticker untuk semua pasangan dagangan apabila ia adalah objek pertukaran spot;exchange
mengembalikan data ticker untuk semua kontrak apabila ia adalah objek pertukaran niaga hadapan.
Peraturanexchange.GetTickers()
fungsi mengembalikan pelbagai struktur {@struct/Ticker Ticker} apabila berjaya meminta data, dan null apabila gagal.
{@struct/Ticker Ticker} array, nilai sifar
pertukaran.GetTickers()
function main() {
var tickers = exchange.GetTickers()
if (tickers && tickers.length > 0) {
Log("Number of tradable items on the exchange:", tickers.length)
}
}
def main():
tickers = exchange.GetTickers()
if tickers and len(tickers) > 0:
Log("Number of tradable items on the exchange:", len(tickers))
void main() {
auto tickers = exchange.GetTickers();
if (tickers.Valid && tickers.size() > 0) {
Log("Number of tradable items on the exchange:", tickers.size());
}
}
Panggilexchange.GetTickers()
fungsi untuk mendapatkan data pasaran agregat.
/*backtest
start: 2024-05-21 00:00:00
end: 2024-09-05 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/
function main() {
var arrSymbol = ["ADA_USDT", "LTC_USDT", "ETH_USDT", "SOL_USDT"]
// Before requesting other trading pair market data, call Get Tickers
var tickers1 = exchange.GetTickers()
var tbl1 = {type: "table", title: "tickers1", cols: ["Symbol", "High", "Open", "Low", "Last", "Buy", "Sell", "Time", "Volume"], rows: []}
for (var ticker of tickers1) {
tbl1.rows.push([ticker.Symbol, ticker.High, ticker.Open, ticker.Low, ticker.Last, ticker.Buy, ticker.Sell, ticker.Time, ticker.Volume])
}
// Request market data for other trading pairs
for (var symbol of arrSymbol) {
exchange.GetTicker(symbol)
}
// Call GetTickers again
var tickers2 = exchange.GetTickers()
var tbl2 = {type: "table", title: "tickers2", cols: ["Symbol", "High", "Open", "Low", "Last", "Buy", "Sell", "Time", "Volume"], rows: []}
for (var ticker of tickers2) {
tbl2.rows.push([ticker.Symbol, ticker.High, ticker.Open, ticker.Low, ticker.Last, ticker.Buy, ticker.Sell, ticker.Time, ticker.Volume])
}
LogStatus("`" + JSON.stringify([tbl1, tbl2]) + "`")
}
'''backtest
start: 2024-05-21 00:00:00
end: 2024-09-05 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
'''
import json
def main():
arrSymbol = ["ADA_USDT", "LTC_USDT", "ETH_USDT", "SOL_USDT"]
tickers1 = exchange.GetTickers()
tbl1 = {"type": "table", "title": "tickers1", "cols": ["Symbol", "High", "Open", "Low", "Last", "Buy", "Sell", "Time", "Volume"], "rows": []}
for ticker in tickers1:
tbl1["rows"].append([ticker["Symbol"], ticker["High"], ticker["Open"], ticker["Low"], ticker["Last"], ticker["Buy"], ticker["Sell"], ticker["Time"], ticker["Volume"]])
for symbol in arrSymbol:
exchange.GetTicker(symbol)
tickers2 = exchange.GetTickers()
tbl2 = {"type": "table", "title": "tickers2", "cols": ["Symbol", "High", "Open", "Low", "Last", "Buy", "Sell", "Time", "Volume"], "rows": []}
for ticker in tickers2:
tbl2["rows"].append([ticker["Symbol"], ticker["High"], ticker["Open"], ticker["Low"], ticker["Last"], ticker["Buy"], ticker["Sell"], ticker["Time"], ticker["Volume"]])
LogStatus("`" + json.dumps([tbl1, tbl2]) + "`")
/*backtest
start: 2024-05-21 00:00:00
end: 2024-09-05 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/
json tickerToJson(const Ticker& ticker) {
json arrJson;
arrJson.push_back(ticker.Symbol);
arrJson.push_back(ticker.High);
arrJson.push_back(ticker.Open);
arrJson.push_back(ticker.Low);
arrJson.push_back(ticker.Last);
arrJson.push_back(ticker.Buy);
arrJson.push_back(ticker.Sell);
arrJson.push_back(ticker.Time);
arrJson.push_back(ticker.Volume);
return arrJson;
}
void main() {
std::string arrSymbol[] = {"ADA_USDT", "LTC_USDT", "ETH_USDT", "SOL_USDT"};
auto tickers1 = exchange.GetTickers();
json tbl1 = R"({
"type": "table",
"cols": ["Symbol", "High", "Open", "Low", "Last", "Buy", "Sell", "Time", "Volume"],
"rows": []
})"_json;
tbl1["title"] = "tickers1";
for (const auto& ticker : tickers1) {
json arrJson = tickerToJson(ticker);
tbl1["rows"].push_back(arrJson);
}
for (const std::string& symbol : arrSymbol) {
exchange.GetTicker(symbol);
}
auto tickers2 = exchange.GetTickers();
json tbl2 = R"({
"type": "table",
"cols": ["Symbol", "High", "Open", "Low", "Last", "Buy", "Sell", "Time", "Volume"],
"rows": []
})"_json;
tbl2["title"] = "tickers2";
for (const auto& ticker : tickers2) {
json arrJson = tickerToJson(ticker);
tbl2["rows"].push_back(arrJson);
}
json tbls = R"([])"_json;
tbls.push_back(tbl1);
tbls.push_back(tbl2);
LogStatus("`" + tbls.dump() + "`");
}
Gunakan objek pertukaran spot dan memanggilexchange.GetTickers()
fungsi dalam sistem backtest. Sebelum memanggil mana-mana fungsi pasaran, GetTickers hanya mengembalikan data ticker pasangan dagangan lalai semasa. Selepas memanggil fungsi pasaran, ia mengembalikan data ticker semua jenis yang diminta. Anda boleh merujuk kepada contoh ujian berikut:
Bursa yang tidak menyokongexchange.GetTickers()
fungsi:
Nama Fungsi | Pertukaran Spot yang tidak disokong | Pertukaran niaga hadapan tanpa sokongan |
---|---|---|
GetTickers | Zaif / WOO / Gemini / Coincheck / BitFlyer / Bibox | Futures_WOO / Futures_dYdX / Futures_Deribit / Futures_Bibox / Futures_Aevo |
{@struct/Ticker Ticker}, {@fun/Market/exchange.GetTicker pertukaran.GetTicker}
Log Perdagangan