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}
Log Perdagangan