Struktur rekod transaksi pasaran.
ID rekod urus niaga pasaran, atau jika antara muka pertukaran tidak menyediakan ID maka gunakan cap masa untuk mengisi. Id senar Stempel masa milidetik. Masa nombor Harga transaksi. Harga nombor Jumlah transaksi. Jumlah nombor Jenis pesanan, merujuk kepada {@var/ORDER_TYPE/ORDER_TYPE_BUY ORDER_TYPE_BUY}, {@var/ORDER_TYPE/ORDER_TYPE_SELL ORDER_TYPE_SELL}. Jenis nombor
Fungsi exchange.GetTrades( mengembalikan pelbagai Perdagangan atau pelbagai kosong.
{@fun/Market/exchange.GetTrades pertukaran.GetTrades}
Struktur pasaran.
Data asal dikembalikan oleh antara muka pertukaran, tiada atribut seperti itu tersedia untuk backtesting.
Maklumat
objek
PerkhidmatanSymbol
medan adalah kod jenis dagangan yang ditakrifkan oleh platform FMZ.
Symbol
Nilai medan (sebagai contoh) adalah:BTC_USDT
, yang menunjukkan pasangan dagangan spot BTC_USDT.Symbol
Nilai medan (sebagai contoh) adalahBTC_USDT.swap
, yang mewakili kontrak perpetual hak milik USDT untuk BTC.Symbol
Nilai medan adalah (contohnya):BTC_USDT.BTC-240108-40000-C
, yang mewakili kontrak pilihan beli BTC dalam USDT dengan tarikh pelaksanaan 8 Januari 2024 dan harga pelaksanaan 40,000.Simbol senar Harga tertinggi, atau jika antara muka pertukaran tidak menyediakan harga tertinggi 24 jam, maka gunakan harga satu jual untuk mengisi. Tinggi nombor Harga terendah, atau jika antara muka pertukaran tidak menyediakan harga terendah 24 jam, maka gunakan harga beli satu untuk mengisi. Rendah nombor Masa sekarang menjual satu harga. Jual nombor Momen sekarang adalah satu harga. Beli nombor Harga transaksi terkini. Terakhir nombor Harga terbuka tempoh, jika antara muka pertukaran tidak menyediakan harga terbuka tempoh bergolak 24 jam, maka harga semasa digunakan untuk mengisi. Terbuka nombor Jumlah urus niaga baru-baru ini, pada prinsipnya, jumlah urus niaga spot adalah dalam mata wang asas, dan jumlah urus niaga kontrak adalah dalam jumlah kontrak. Jika antara muka pertukaran tidak menyediakan data tersebut, ia akan dipenuhi dengan data yang tersedia dalam antara muka pertukaran, sebagai contoh, jumlah urus niaga mungkin dalam quoteCurrency. Jumlah nombor Stempel masa tahap milidetik. Masa nombor Kedudukan, kebanyakan antara muka pertukaran tidak menyediakan data ini dan nilainya adalah 0 apabila data ini tidak disokong. OpenInterest nombor
Fungsi exchange.GetTicker( mengembalikan struktur Ticker.
Untuk kontrak opsyen,exchange.GetTicker()
panggilan fungsi terdedah kepada kesilapan. Kerana kecairan pasaran kontrak opsyen biasanya miskin, sering tidak ada pesanan menunggu untuk pembelian pertama atau jualan pertama. Pada masa ini apabila lapisan bawah FMZ mengesan bahawaTicker
medan strukturBuy
atauSell
adalah 0, mesej ralat akan diaktifkan.
{@fun/Market/exchange.GetTicker exchange.GetTicker}, {@fun/Market/exchange.GetTickers exchange.GetTickers}
Struktur K-Line Bar, struktur OHLC standard, digunakan untuk melukis K-garis dan penunjuk untuk pengiraan dan analisis.
Stempel masa tahap milidetik, untuk struktur Rekod yang nilai atribut Time adalah stempel masa permulaan tempoh Bar K-line ini. Masa nombor Harga pembukaan. Terbuka nombor Harga tertinggi. Tinggi nombor Harga terendah. Rendah nombor Harga penutupan. Tutup nombor Jumlah kedudukan, kebanyakan antara muka pertukaran tidak menyediakan data ini, nilainya adalah 0 apabila data ini tidak disokong. OpenInterest nombor Jumlah urus niaga. Pada prinsipnya, jumlah urus niaga spot adalah dalam mata wang asas dan jumlah urus niaga kontrak adalah dalam jumlah kontrak. Jika antara muka pertukaran tidak menyediakan data tersebut, ia akan dipenuhi dengan data yang sedia ada dari antara muka pertukaran, sebagai contoh, jumlah urus niaga dalam quoteCurrency. Jumlah nombor
Fungsi exchange.GetRecords() mengembalikan array Rekod atau array kosong. Setiap struktur Rekod mewakili bar K-line, iaitu bar K-line.
{@fun/Market/exchange.GetRecords pertukaran.GetRecords}
Struktur perintah.
The data asal tindak balas antara muka pertukaran, tiada atribut seperti itu tersedia untuk backtesting.
Maklumat
objek
PerkhidmatanSymbol
medan adalah kod produk dagangan yang ditakrifkan oleh platform FMZ dan formatnya adalah selaras denganSymbol
medan struktur {@struct/Ticker Ticker}.
Symbol
Nilai medan adalah (contohnya):BTC_USDT
, yang menunjukkan pasangan dagangan spot BTC_USDT.Symbol
Nilai medan adalah (contohnya):BTC_USDT.swap
, yang mewakili kontrak perpetual BTC standard USDT.Simbol
senar
Order Id, atribut ini terdiri daripada kod produk pertukaran dan ID pesanan asal pertukaran, dipisahkan oleh koma bahasa Inggeris.Id
format pasangan dagangan spotETH_USDT
urutan pertukaran OKX adalah:ETH-USDT,1547130415509278720
.
Id
senar
Harga pesanan, ambil perhatian bahawa atribut ini boleh menjadi 0 atau -1 untuk pesanan pasaran.
Harga
nombor
Jumlah pesanan yang diletakkan, ambil perhatian bahawa atribut pesanan pasaran ini boleh menjadi jumlah dan bukan mata wang.
Jumlah
nombor
Bilangan transaksi, mungkin dipenuhi dengan 0 jika antara muka pertukaran tidak menyediakan data ini.
Perdagangan Jumlah
nombor
Harga urus niaga purata, ambil perhatian bahawa beberapa bursa tidak menyediakan data ini. Atribut ini ditetapkan kepada 0 jika ia tidak tersedia dan tidak boleh dikira.
Purata Harga
nombor
Status pesanan, merujuk kepada {@var/ORDER_STATE/ORDER_STATE_PENDING ORDER_STATE_PENDING}, {@var/ORDER_STATE/ORDER_STATE_CLOSED ORDER_STATE_CLOSED}, {@var/ORDER_STATE/ORDER_STATE_CANCELED ORDER_STATE_CANCELED}, {@var/ORDER_STATE/ORDER_STATE_UNKNOWN OR_STATE_UNKNOWN}.
Status
nombor
Jenis pesanan, merujuk kepada {@var/ORDER_TYPE/ORDER_TYPE_BUY ORDER_TYPE_BUY}, {@var/ORDER_TYPE/ORDER_TYPE_SELL ORDER_TYPE_SELL}.
Jenis
nombor
Untuk arah pembukaan dan penutupan pesanan kontrak, lihat {@var/ORDER_OFFSET/ORDER_OFFSET_OPEN ORDER_OFFSET_OPEN}, {@var/ORDER_OFFSET/ORDER_OFFSET_CLOSE ORDER_OFFSET_CLOSE}.
Pengimbangan
nombor
Atribut ini dalam pesanan spot adalah""
Dalam pesanan kontrak, atribut ini adalah kod kontrak tertentu.
Jenis Kontrak
senar
PeraturanOrder
struktur pesanan boleh dikembalikan olehexchange.GetOrder()
danexchange.GetOrders()
fungsi.exchange.GetOrders()
fungsi mengembalikan pelbagaiOrder
struktur atau array kosong. Jika tidak ada perintah yang belum selesai, ia mengembalikan[]
, yang merupakan array kosong.Status
harta bendaOrder
struktur perintah boleh dibandingkan secara langsung dengan pemalar sepertiORDER_STATE_PENDING
untuk menentukan sama ada mereka sama dan dengan itu menentukan status pesanan.
Untuk mod kedudukan satu hala, apabila mustahil untuk menentukan sama ada pesanan adalah perintah penutupan (pengurangan),Offset
medan ditetapkan ke arah pembukaan secara lalai, iaitu,ORDER_OFFSET_OPEN
.
{@fun/Trade/exchange.GetOrder exchange.GetOrder}, {@fun/Trade/exchange.GetOrders exchange.GetOrders}, {@fun/Trade/exchange.GetHistoryOrders exchange.GetHistoryOrders}
Struktur pesanan dalam kedalaman pasaran.
Harga. Harga nombor Jumlah. Jumlah nombor
Fungsi GetDepth (() mengembalikan struktur data di mana nilai atribut Penawaran, Tanya adalah array OrderBook.
{@fun/Market/exchange.GetDepth exchange.GetDepth}, {@struct/Depth Depth}
Struktur kedalaman pasaran.
Array pesanan jual, iaitu Array OrderBook, disusun mengikut harga dari yang terendah ke yang tertinggi, dan struktur OrderBook pertama dalam array mempunyai Harga terendah. Bertanya Array Barisan pesanan beli, iaitu barisan OrderBook, diurutkan mengikut harga dari tertinggi ke terendah, dan struktur OrderBook pertama dalam barisan mempunyai Harga tertinggi. Tawaran Array Stempel masa tahap milidetik. Masa nombor
Fungsi exchange.GetDepth( mengembalikan struktur Depth.
{@fun/Market/exchange.GetDepth exchange.GetDepth}, {@struct/OrderBook OrderBook}
Struktur maklumat akaun.
Data asal dikembalikan oleh antara muka pertukaran, tiada atribut seperti itu tersedia untuk backtesting.
Maklumat
objek
Bilangan mata wang yang tersedia, dalam spot, jika pasangan dagangan adalah BTC_USDT, Saldo merujuk kepada jumlah USDT yang tersedia pada masa ini. Dalam kontrak standard U, Saldo merujuk kepada jumlah margin yang tersedia (USDT, quoteCurrency).
Saldo
nombor
Nilai aset beku apabila pesanan tidak dipenuhi.
FrozenBalanse
nombor
Bilangan mata wang dagangan yang tersedia, secara spot, jika pasangan dagangan adalah BTC_USDT, Saham merujuk kepada bilangan BTC yang tersedia pada masa ini. Saham merujuk kepada jumlah margin yang tersedia (mata wang, mata wang asas) dalam kontrak berasaskan mata wang.
Stok
nombor
Nilai aset beku apabila pesanan tidak dipenuhi.
Bekalan beku
nombor
Hanya objek pertukaran niaga hadapan menyokong bidang ini.Equity
medan adalah jumlah ekuiti margin akaun niaga hadapan di bawah tetapan kontrak semasa. Jika antara muka pertukaran tidak memberikan data yang relevan, medan ini adalah 0.
Ekuiti
nombor
Lapangan ini hanya disokong oleh objek pertukaran niaga hadapan.UPnL
medan adalah jumlahKeuntungan dan kerugian yang tidak direalisasikandaripada semua kedudukan yang dibuka oleh margin akaun niaga hadapan di bawah tetapan kontrak semasa.
UPnL nombor
Fungsi exchange.GetAccount() mengembalikan struktur Akaun. Data dalam struktur yang dikembalikan bergantung kepada pasangan dagangan yang ditetapkan pada masa ini, kod kontrak.
{@fun/Account/exchange.GetAccount pertukaran.GetAccount}
Struktur maklumat aset mata wang tertentu.
Nama yang ditakrifkan oleh bursa untuk aset cryptocurrency, yang mungkin berbeza dari bursa ke bursa untuk cryptocurrency yang sama, contohnyaBTC
boleh dipanggilXBT
di beberapa pertukaran.
Mata wang
senar
Saldo aset mata wang yang tersedia.
Jumlah
nombor
Jumlah aset beku dalam mata wang.
Beku Jumlah
nombor
PeraturanFrozenAmount
dari aset mata wang boleh termasuk aset yang terkunci untuk pesanan yang tidak dipenuhi, dan bahagian margin yang terkunci untuk kedudukan niaga hadapan.
{@fun/Account/exchange.GetAssets pertukaran.GetAssets}
Struktur maklumat kedudukan kontrak.
Data asal dikembalikan oleh antara muka pertukaran, tiada atribut seperti itu tersedia untuk backtesting.
Maklumat
objek
PerkhidmatanSymbol
medan adalah kod produk dagangan yang ditakrifkan oleh platform FMZ dan formatnya adalah selaras denganSymbol
medan struktur {@struct/Ticker Ticker}.
Symbol
Nilai medan adalah (contohnya):BTC_USDT
, yang menunjukkan pasangan dagangan spot BTC_USDT.Symbol
Nilai medan adalah (contohnya):BTC_USDT.swap
, yang mewakili kontrak perpetual BTC standard USDT.Simbol senar Saiz bar kedudukan, diisi dengan pengiraan jika antara muka pertukaran tidak memberikan data ini, ia mungkin tidak tepat. MarginLevel nombor Ukuran kedudukan, yang biasanya bilangan bulat positif (bilangan nombor kontrak). Jumlah nombor Jumlah pembekuan kedudukan, bilangan kedudukan yang dibekukan sementara apabila pesanan yang ditutup tidak dipenuhi. Beku Jumlah nombor Harga purata kedudukan, yang pada prinsipnya adalah harga purata kedudukan secara keseluruhan (tidak mengambil bahagian dalam penyelesaian). Harga nombor Keuntungan/kerugian bergolak kedudukan pada dasarnya adalah keuntungan/kerugian kedudukan yang tidak direalisasikan, jika data tidak disediakan oleh antara muka pertukaran, ia akan diisi dengan data keuntungan/kerugian antara muka pertukaran yang lain. Keuntungan nombor Jenis kedudukan, merujuk kepada {@var/POSITION_DIRECTION/PD_LONG PD_LONG}, {@var/POSITION_DIRECTION/PD_SHORT PD_SHORT}. Jenis nombor Kod kontrak, lihat penerangan fungsi {@fun/Futures/exchange.SetContractType exchange.SetContractType} untuk butiran. Jenis Kontrak senar Margin yang diduduki oleh kedudukan, diisi dengan 0 jika antara muka pertukaran tidak memberikan data ini. Margin nombor
Fungsi exchange.GetPositions( mengembalikan pelbagai Positions atau pelbagai kosong. Untuk niaga hadapan mata wang kripto, adalah penting untuk diperhatikan bahawa array struktur Kedudukan dikembalikan oleh fungsi exchange.GetPositions(). Untuk atribut FrozenAmount, Profit, dan Margin dalam struktur data kedudukan, kerana data yang disediakan oleh pertukaran tidak seragam, antara muka GetPositions(, definisi data yang dikembalikan oleh objek pertukaran mungkin berbeza. Sebagai contoh, beberapa bursa tidak mempunyai data pembekuan kedudukan dalam data kedudukan, jadi FrozenAmount adalah 0.
{@fun/Futures/exchange.GetPositions exchange.GetPositions}
Struktur maklumat pasaran mengenai varieti yang didagangkan.
Mengambil nilai seperti"btcusdt"
, yangSymbol
bidang ini mencatat nama asal varieti yang didagangkan di bursa.Symbol
medan struktur {@struct/Ticker Ticker}.
Simbol
senar
Mengambil nilai seperti"BTC"
, yangBaseAsset
medan mencatat nama mata wang yang didagangkan (iaitu: baseCurrency), yang secara seragam huruf besar.
Aset asas
senar
Mengambil nilai seperti"USDT"
, yangQuoteAsset
medan mencatat nama mata wang yang diisytiharkan (iaitu: quoteCurrency), yang adalah huruf besar secara seragam.
Kuota Aset
senar
Mengambil nilai seperti0.01
, yangTickSize
medan mencatat nilai perubahan terkecil dalam harga item yang didagangkan di bursa.
TickSize
nombor
Mengambil nilai seperti0.01
, yangAmountSize
medan mencatat nilai perubahan minimum dalam jumlah pesanan yang diletakkan di bursa untuk perdagangan itu.
JumlahUkuran
nombor
Mengambil nilai seperti2
, yangPricePrecision
medan ini merekodkan ketepatan harga item yang didagangkan di bursa, menunjukkan bahawa harga adalah tepat kepada 2 decimal.
PricePrecision
nombor
Mengambil nilai seperti3
, yangAmountPrecision
medan ini merekodkan ketepatan pesanan yang diletakkan di bursa untuk jenis yang didagangkan, menunjukkan bahawa pesanan adalah tepat kepada tiga decimal.
JumlahKetepatan
nombor
Mengambil nilai seperti0.001
, yangMinQty
medan mencatat saiz pesanan minimum di bursa untuk perdagangan itu.
MinQty
nombor
Mengambil nilai seperti1000
, yangMaxQty
medan mencatat jumlah pesanan maksimum yang boleh diletakkan di bursa untuk jenis perdagangan itu.
MaxQty
nombor
Mengambil nilai seperti5
, yangMinNotional
medan mencatat jumlah minimum pesanan yang diletakkan di bursa untuk jenis perdagangan itu.
MinNotional
nombor
Mengambil nilai seperti9999999
, yangMaxNotional
medan mencatat jumlah maksimum pesanan yang diletakkan di bursa untuk jenis perdagangan itu.
Max Notional
nombor
LapanganCtVal
mencatat nilai kontrak produk dagangan di bursa, dalam mata wang yang dicatatkan dalamCtValCcy
contohnya:CtVal
ialah 0.01,CtValCcy
adalah"BTC"
, yang bermaksud bahawa kontrak bernilai 0.01 BTC.
CtVal
nombor
LapanganCtValCcy
mencatatkan unit nilai kontrak. Unit nilai kontrak boleh:BTC
, USD
, ETH
, dan lain-lain
CtValCcy
nombor
LapanganInfo
mencatat data mentah untuk spesies yang dikembalikan oleh antara muka maklumat pasaran bursa.
Maklumat
objek
Fungsi exchange.GetMarkets( mengembalikan kamus yang mengandungi iniMarket
struktur.
Oleh kerana tahap sokongan yang berbeza untuk data maklumat pasaran oleh setiap pertukaran, medan yang tidak disokong oleh pertukaran akan diabaikan. nilai medan di atas diambil dari data mentah antara muka pertukaran, anda juga boleh menyemak kandunganInfo
field.
{@fun/Market/exchange.GetMarkets pertukaran.GetMarkets}
Struktur maklumat kadar pembiayaan produk perdagangan. Hanya kontrak kekal cryptocurrency yang menyokong kadar pembiayaan.
Data mentah dikembalikan apabila antara muka dana pertukaran niaga hadapan cryptocurrency dipanggil.
Maklumat
objek
PerkhidmatanSymbol
medan adalah kod produk dagangan yang ditakrifkan oleh platform FMZ.
Simbol
senar
Jangkaan kadar pembiayaan, dalam milidetik.28800000
bermaksud selang 8 jam.
Jangkaan
nombor
Stempel masa permulaan tempoh kadar pembiayaan seterusnya (masa penyelesaian tempoh ini), dalam mili saat.
Masa
nombor
Kadar pembiayaan yang akan digunakan untuk penyelesaian tempoh ini.
Kadar
nombor
Kadar pembiayaan kontrak kekal bursa niaga hadapan yang berbeza mempunyai kaedah dan mekanisme pengiraan yang berbeza, dan kitaran penyelesaian adalah 1 jam, 4 jam, 8 jam, dan satu hari.
Kadar pembiayaan semasa kontrak kekal di bursa niaga hadapan mempunyai nilai tetap dan nilai bergerak yang dikira dalam masa nyata.
PerkhidmatanRate
medan adalah nilai kadar pembiayaan tanpa%
. Jika anda mahu menukarnya kepada nilai dengan%
, anda boleh mengalikan dengan 100 dan menambah%
di penghujung.
{@fun/Futures/exchange.GetFundings exchange.GetFundings}
Struktur JSON ini digunakan untuk mengkonfigurasi parameter fungsi HttpQuery dan fungsi HttpQuery_Go untuk menghantar permintaan Http.
Kaedah permintaan, contohnya:GET
, POST
, dan lain-lain
kaedah
senar
Badan permintaan. Sebagai contoh, dalam permintaan POST, badan boleh mengandungi data borang, JSON, teks, dll.
badan
senar
Pengekodan set aksara. Sebagai contoh, tentukan pengekodan data teks dalam badan sebagai:"UTF-8"
.
Charset
senar
Kuki adalah sekeping data kecil yang digunakan untuk menyimpan dan bertukar maklumat keadaan antara klien (biasanya penyemak imbas) dan pelayan.
kek
senar
Digunakan untuk mensimulasikan cap jari penyemak imbas.
profil
senar
Apabila ditetapkan kepada benar, panggilan fungsi HttpQuery mengembalikan mesej tindak balas lengkap. Apabila ditetapkan kepada salah, hanya data dalam mesej tindak balas Body yang dikembalikan.
debug
bool
Maklumat tajuk permintaan wujud dalam bentuk pasangan kunci-nilai (struktur JSON) dan digunakan untuk menghantar pelbagai maklumat, seperti jenis kandungan, maklumat pengesahan, kawalan cache, dll.
tajuk
JSON
Tetapan masa henti. Tetapan 1000 bermaksud masa henti 1 saat.
masa lapang
nombor
Contoh penggunaan:
function main() {
var options = {
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
}
var ret = HttpQuery("http://127.0.0.1:8080", options)
Log(ret)
}
Mesej http yang dihantar apabila kod di atas dijalankan:
POST / HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Cookie: session_id=12345; lang=en
Host: 127.0.0.1:8080
Test-Http-Query: 123
Transfer-Encoding: chunked
User-Agent: Mozilla/5.0 (Macintosh; ...
Accept-Encoding: gzip, deflate, br
e
a=10&b=20&c=30
0
{@fun/Global/HttpQuery HttpQuery}, {@fun/Global/HttpQuery_Go HttpQuery_Go}
Struktur JSON ini adalah struktur data yang dikembalikan oleh fungsi HttpQuery dalam mod debug apabila medan debug dalamoptions
Parameter struktur adalah benar.
Kod status http Kod Status nombor Minta maklumat tajuk. Judul JSON Maklumat mengenai kuki. Kuki Array Maklumat laluan penuh permintaan. Tarikan JSON Panjang mesej Panjang nombor Kandungan mesej. Badan senar
Contoh struktur data JSON yang dikembalikan adalah:
{
"StatusCode": 302,
"Header": {
"Content-Type": ["text/html"],
// ...
},
"Cookies": [{
// ...
}],
"Trace": {},
"Length": 154,
"Body": "..."
}
{@fun/Global/HttpQuery HttpQuery}, {@fun/Global/HttpQuery_Go HttpQuery_Go}
Struktur JSON ini digunakan untuk mengkonfigurasi kandungan jadual yang dipaparkan dalam bar status strategi.
Digunakan untuk menetapkan jenis UI dan kawalan yang akan dianalisis dan dipaparkan.table
.
jenis
senar
Digunakan untuk menetapkan tajuk jadual bar status.
tajuk
senar
Digunakan untuk menetapkan tajuk lajur jadual bar status. Elemen pertama array adalah tajuk lajur pertama, dan sebagainya.
benih
Array
Digunakan untuk menetapkan data baris jadual bar status. Elemen pertama array baris (rantai dua dimensi) juga struktur array. Panjang struktur array ini harus konsisten dengan bilangan lajur jadual (elemen dalam struktur array sepadan dengan nama lajur jadual satu demi satu), iaitu baris pertama data dalam jadual.
barisan
Array
function main() {
var tbl = {
type: "table",
title: "title",
cols: ["Column 1", "Column 2", "Column 3"],
rows: [
["Row 1 Column 1", "Row 1 Column 2", "Row 1 Column 3"],
["Row 2 Column 1", "Row 2 Column 2", "Row 2 Column 3"],
["Row 3 Column 1", "Row 3 Column 2", "Row 3 Column 3"],
]
}
LogStatus("`" + JSON.stringify(tbl) + "`")
}
{@fun/Log/LogStatus LogStatus}
Struktur JSON ini digunakan untuk mengkonfigurasi kawalan butang dalam bar status. Struktur kawalan butang JSON boleh disematkan dalam struktur JSON jadual bar status. Struktur ini adalah struktur versi lama, dan platform masih serasi. Disyorkan untuk menggunakan versi terbaru struktur JSON butang. Contoh membina kawalan butang bar status (selepas butang itu dicetuskan dan diklik, kotak pop-up mengandungi kawalan input tunggal, yang dibina melalui medan input):
{
"type": "button",
"cmd": "open",
"name": "opening a position",
"input": {
"name": "number of opening positions",
"type": "number",
"defValue": 1
}
}
Kawalan dalam kotak pop-up dicetuskan dengan mengklik butang bar status kawalan ditetapkan melaluiinput
ataugroup
.
Untuk kawalan butang, tetapan tetap adalah:button
.
jenis
senar
Tetapan jenis butang
kelas
senar
Teks pada butang kawalan, iaitu, nama butang.
nama
senar
Kandungan arahan interaktif yang dihantar ke strategi apabila kawalan butang mencetuskan operasi klik.
cmd
senar
Penerangan kawalan butang. Penerangan dipaparkan apabila tetikus diletakkan pada butang dalam bar status.
Penerangan
senar
Tetapkan butang untuk dilumpuhkan (betul) / diaktifkan (salah).
cacat
bool
Apabila membina butang bar status untuk interaksi, input data juga disokong.GetCommand()
Tambah fungsi.input
Item kepada struktur data JSON kawalan butang dalam bar status untuk mengkonfigurasi kawalan input dalam kotak pop-up yang dipaparkan apabila butang itu dicetuskan.
Sebagai contoh, untuk menetapkan nilaiinput
medan:
{
"name": "Number of opening positions",
"type": "number",
"defValue": 1,
"description": "test",
}
Penerangan setiap medan dalam struktur JSON di atas:
"number"
: kawalan input berangka."string"
: kawalan input rentetan."selected"
: kawalan kotak turun."boolean"
- Pindah kawalan."input": {"name": "Opening quantity", "type": "selected", "defValue": "A|B|C"}
, penerangan teks pilihan kotak turun ditetapkan kepada A, B, C.Untuk medan yang diperluaskan oleh kawalan jenis kotak turun:
{text: "description", value: "value"}
Gunakan medan defValue untuk menetapkan pilihan lalai, yang boleh menjadi pelbagai pilihan.input
JSON
Peraturaninput
medan mengkonfigurasi kawalan dalam kotak pop-up yang muncul selepas butang bar status dicetuskan dengan mengklik.group
daninput
adalah bahawa ia mengkonfigurasi sekumpulan kawalan.group
mempunyai struktur data yang sama denganinput
Sila rujuk penerangan yang berkaitaninput
field.
kumpulan Array
Satu contohclass
nilai struktur JSON butang dalam bar status:
function main() {
var table = {
type: "table",
title: "Status bar button style",
cols: ["Default", "Original", "Success", "Information", "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": "Information"},
{"type":"button", "class": "btn btn-xs btn-warning", "name": "Warning"},
{"type":"button", "class": "btn btn-xs btn-danger", "name": "Danger"}
]
]
}
LogStatus("`" + JSON.stringify(table) + "`")
}
Contoh penggunaangroup
medan denganinput
medan:
function main() {
// The drop-down box control in the page triggered by the testBtn1 button uses the options field to set options and the defValue field to set the default options. This is different from other examples in this chapter that directly use defValue to set options.
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,
it also supports the use of ```{text: "description", value: "value"}``` structure. Use the defValue field to set the default option. The default option can be multiple selection (multiple selection is achieved through an array structure). Multiple selection requires setting the additional field multiple to true.
*/
var testBtn2 = {
type: "button",
name: "testBtn2",
cmd: "cmdTestBtn2",
input: {
name: "testBtn2MultiComboBox",
type: "selected",
description: "Implementing multiple selection in drop-down box",
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: "Drop-down box 1", type: "selected", defValue: 1, options: ["A", "B"]},
{name: "comboBox2", label: "labelComboBox2", description: "Drop-down box 2", type: "selected", defValue: "A|B"},
{name: "comboBox3", label: "labelComboBox3", description: "Drop-down box 3", type: "selected", defValue: [0, 2], multiple: true, options: ["A", "B", "C"]},
{
name: "comboBox4",
label: "labelComboBox4",
description: "Drop-down 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)
}
}
{@fun/Log/LogStatus LogStatus}
Struktur JSON ini digunakan untuk mengkonfigurasi kawalan butang di bar status. Struktur kawalan butang JSON boleh disematkan dalam struktur JSON jadual bar status. Versi terbaru struktur butang JSON. Contoh membina kawalan butang bar status (selepas butang itu dicetuskan dan diklik, kotak pop-up mengandungi beberapa kawalan input, yang dibina melalui medan kumpulan):
{
"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": "order price",
"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,
}
}],
}
Kawalan dalam kotak pop-up dicetuskan dengan mengklik butang bar status kawalan ditetapkan melaluiinput
ataugroup
.
Untuk kawalan butang, tetapan tetap adalah:button
.
jenis
senar
Teks pada butang kawalan, iaitu, nama butang.
nama
senar
Kandungan arahan interaktif yang dihantar ke strategi apabila kawalan butang mencetuskan operasi klik.
cmd
senar
Apabila membina butang bar status untuk interaksi, input data juga disokong.GetCommand()
Tambah fungsi.input
Item kepada struktur data JSON kawalan butang dalam bar status untuk mengkonfigurasi kawalan input dalam kotak pop-up yang dipaparkan apabila butang itu dicetuskan.
Berbanding dengan versi lama struktur input, versi baru mempunyai beberapa medan baru dan perubahan:
{
"type": "selected",
"name": "test",
"label": "topic",
"description": "desc",
"default": 1,
"filter": "a>1",
"group": "group1",
"settings": { ... }, // Component configuration
}
Penerangan dan penjelasan setiap medan dalam struktur JSON di atas:
jenis
Jenis kawalan (bidang diperlukan), menyokong tetapan berikut:"number"
kotak input berangka,"string"
kotak input rentetan,"selected"
kotak turun,"boolean"
menukar kawalan.
nama Jika struktur JSON semasa adalah nilai medan medan input, apabila medan label tidak ditetapkan, nama adalah tajuk kawalan dalam kotak pop-up yang muncul selepas butang bar status diklik. Jika struktur JSON semasa adalah elemen dalam nilai medan (struktur array) medan kumpulan, nama tidak digunakan sebagai tajuk kawalan. medan nama digunakan untuk menunjukkan nama medan kandungan input kawalan. contohnya petikan medan kumpulan digunakan sebagai ilustrasi:
var testBtn3 = {
type: "button",
name: "testBtn3",
cmd: "cmdTestBtn3",
group: [
{name: "comboBox1", label: "labelComboBox1", description: "Drop-down box 1", type: "selected", defValue: 1, options: ["A", "B"]},
{name: "comboBox2", label: "labelComboBox2", description: "Drop-down box 2", type: "selected", defValue: "A|B"},
{name: "comboBox3", label: "labelComboBox3", description: "Drop-down box 3", type: "selected", defValue: [0, 2], multiple: true, options: ["A", "B", "C"]},
{
name: "comboBox4",
label: "labelComboBox4",
description: "Drop-down 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"}]
}
]
}
Menurut cuplikan ini, jika butang bar status mencetuskan interaksi, kotak pop-up akan muncul dengan 4 kawalan, yang semuanya adalah kawalan kotak drop-down.cmdTestBtn3:{"comboBox1":1,"comboBox2":0,"comboBox3":[0,2],"comboBox4":["A","C"]}
.
Nilai nama dalam struktur JSON digunakan sebagai nama medan maklumat interaktif yang dikembalikan, contohnya: comboBox1, comboBox2, dll.
label Digunakan untuk menetapkan tajuk kawalan.
Penerangan Penerangan kawalan. Jika struktur JSON semasa adalah elemen dalam nilai medan (struktur array) medan kumpulan, dan medan label tidak ditetapkan, penerangan adalah tajuk kawalan dalam kotak pop-up yang muncul selepas butang bar status diklik.
lalai Nilai lalai kawalan.
penapis Pemilih, digunakan untuk menyembunyikan kawalan. Tidak menetapkan medan ini bermaksud tidak menapis (menampilkan kawalan); apabila medan ini ditetapkan, tidak menapis (menampilkan kawalan) berlaku apabila ungkapan itu benar. Apabila ungkapan itu salah, penapis berlaku (tidak menunjukkan kawalan)
kumpulan Digunakan untuk mengawal pengumpulan kawalan, yang boleh dilipat.
tetapan Konfigurasi komponen, kawalan mempunyai pelbagai pilihan UI, gunakan pilihan ini untuk membuat tetapan tertentu.
settings:{
multiple:true,
customizable:true,
options:[{name:'xxx|yyy',value:0}]
}
tetapan:
setting.required: sama ada ia diperlukan.
setings.disabled: sama ada untuk melumpuhkan.
setings.min: Sah apabila type=number, menunjukkan nilai minimum atau panjang minimum rentetan.
setings.max: Sah apabila type=number, menunjukkan nilai maksimum atau panjang maksimum rentetan.
setings.step: Sah apabila type=number dan render=slider, menunjukkan panjang langkah.
setings.multiple: Sah apabila type= dipilih, menunjukkan bahawa pelbagai pilihan disokong.
setings.customizable: Ia sah apabila type= dipilih, menunjukkan bahawa penyesuaian disokong; pengguna boleh mengedit dan menambah pilihan baru secara langsung dalam kawalan kotak drop-down. Jika pilihan yang baru diedit dipilih, nama pilihan digunakan dan bukannya nilai yang diwakili oleh pilihan apabila interaksi dicetuskan.
setings.options: Sah apabila type= dipilih, menunjukkan format data pilihan pilihan: [
input
JSON
Peraturaninput
medan mengkonfigurasi kawalan dalam kotak pop-up yang muncul selepas butang bar status dicetuskan dengan mengklik.group
daninput
adalah bahawa ia mengkonfigurasi sekumpulan kawalan.group
mempunyai struktur data yang sama denganinput
Sila rujuk penerangan di atasinput
field.
kumpulan Array
Sokongan tetapan dua bahasa:
{
type:'selected',
name:'test',
label:'选项|options',
description:'描述|description',
default:0, // Here, the default value is set to 0, which means the value in the option {name:'xxx|yyy',value:0}
filter:'a>1&&a<10',
group:'分组|group',
settings:{
multiple:true,
customizable:true,
options:[{name:'xxx|yyy',value:0}]
}
}
{@fun/Log/LogStatus LogStatus}
JSON ini digunakan untuk menetapkan maklumat konfigurasi carta fungsi lukisan tersuaiChart()
. Perpustakaan carta yang digunakan adalah Highcharts. Hanya beberapa medan konfigurasi asas disenaraikan di sini.
Lapangan pelanjutan platform. Tetapkan ke benar untuk menggunakan carta Highstocks; tetapkan ke salah untuk menggunakan carta Highcharts.
__isStock senar
{
layout: 'single', // Not participating in grouping, displayed separately, default is group 'group'
height: 300, // Specify height
}
Pelancongan JSON Judul carta tajuk senar Konfigurasi paksi X. xAxis JSON Konfigurasi paksi Y. yAxis JSON Siri data carta. siri JSON
Contoh lukisan mudah:
// This chart is an object in JavaScript language. 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. If you are interested, you can change it to false and run it.
__isStock: true,
// Zoom tool
tooltip: {xDateFormat: '%Y-%m-%d %H:%M:%S, %A'},
// title
title : { text : 'Price difference analysis chart'},
// Select 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
},
// The horizontal axis of the coordinate axis is: x-axis, and the current setting type is: time
xAxis: { type: 'datetime'},
// The vertical axis of the coordinate axis is: the y-axis, the default value is adjusted according to the data size
yAxis : {
// title
title: {text: 'Price difference'},
// Whether to enable the right vertical axis
opposite: false
},
// Data series, this property saves each data series (line, K-line chart, label, etc.)
series : [
// The index is 0, and the data array stores the data of the index series.
{name : "line1", id : "line 1,buy1Price", data : []},
// The index is 1, dashStyle:'shortdash' is set, that is, a dashed line is set
{name : "line2", id : "line 2,lastPrice", dashStyle : 'shortdash', data : []}
]
}
function main(){
// Call the Chart function to initialize the chart
var ObjChart = Chart(chart)
// Clear
ObjChart.reset()
while(true){
// Get the timestamp of this poll, which is a millisecond timestamp. Used to determine the position of the X-axis written to the chart
var nowTime = new Date().getTime()
// Get market data
var ticker = _C(exchange.GetTicker)
// Get the buy price from the return value of the market data
var buy1Price = ticker.Buy
// Get the last transaction price. In order to prevent the two lines from overlapping, we add 1.
var lastPrice = ticker.Last + 1
// Use the timestamp as the X value and the buy price as the Y value to pass into the data sequence of index 0
ObjChart.add(0, [nowTime, buy1Price])
// Same as above
ObjChart.add(1, [nowTime, lastPrice])
Sleep(2000)
}
}
{@fun/Log/Chart Chart}
JSON ini digunakan untuk menetapkan maklumat konfigurasi carta fungsi lukisan tersuaiKLineChart
. Hanya beberapa medan konfigurasi asas disenaraikan di sini.
Sama ada untuk menarik pada carta utama. penyambungan bool Konfigurasi paksi X. xAxis JSON Konfigurasi paksi Y. yAxis JSON Konfigurasi carta candlestick. lilin JSON
Sila rujukArtikel khas mengenai lukisan carta menggunakan fungsi KLineChart.
{@fun/Log/KLineChart KLineChart}
JSON digunakan untuk menetapkan data yang akan dimuatkan olehexchange.SetData()
JSON data adalah struktur array, di mana setiap elemen juga array, iaitu[time, data]
.
Stempel masa data, menandakan masa data ini.
masa
nombor
data adalah sekeping data yang sepadan dengan masa tertentu dalam data dimuatkan olehexchange.SetData()
Apabila strategi dijalankan,exchange.GetData()
fungsi mendapat data dengan timestamp yang sepadan mengikut masa semasa.
data rentetan, nombor, bool, objek, array, dll.
Contoh memuatkan data dalam sistem backtesting dan mendapatkan data apabila strategi backtest sedang berjalan:
/*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)
}
}
{@fun SetData}, {@fun GetData}
JSON ini adalah struktur data yang dikembalikan olehEventLoop()
fungsi.EventLoop()
pemantau fungsi: 1. sebarang peristiwa data yang boleh dibaca WebSocket; 2. peristiwa penyelesaian tugas serentak dengan fungsi exchange.Go() dan HttpQuery_Go(); 3. peristiwa mesej yang dihantar dalam benang yang dicipta olehthreading.Thread()
fungsi dalam strategi bahasa JavaScript.
Nombor urutan peristiwa. Seq nombor Nama acara. Acara senar ID benang acara. ThreadId nombor Indeks peristiwa. Indeks nombor Stempel masa nano. Nano nombor
Gunakanexchange.Go()
fungsi untuk membuat permintaan serentak dan struktur data peristiwa dikembalikan olehEventLoop()
function.
{
"Seq":1,
"Event":"Exchange_GetTrades",
"ThreadId":0,
"Index":3,
"Nano":1682068771309583400
}
Dalam benang yang dijalankan secara serentak strategi bahasa JavaScript (dicipta olehthreading.Thread()
fungsi), apabilapostMessage()
fungsi objek benang digunakan untuk menghantar mesej,EventLoop()
fungsi dalam utas yang menerima mesej akan memantau struktur data peristiwa berikut:
{
"Seq":4,
"Event":"thread",
"ThreadId":1,
"Index":0,
"Nano":1727592066508674000
}
{@fun/Global/EventLoop EventLoop}
JSON ini adalah struktur data yang dikembalikan olehDBExec()
fungsi; ia juga dikembalikan apabila menjalankan arahan SQL menggunakanexec()
kaedah objek yang dicipta olehDial()
function.
Nama lajur data yang akan ditanyakan, array rentetan. Kolom Array Data tertentu yang akan ditanyakan, di mana setiap data sepadan dengan nama lajur. Nilai medan nilai adalah array dua dimensi, di mana setiap elemen adalah array dan rekod data. nilai Array
Contoh data pertanyaan dalam pangkalan data:
{
"columns":["TS","HIGH","OPEN","LOW","CLOSE","VOLUME"],
"values":[
[1518970320000,100,99.1,90,100,12345.6],
[1518960320000,100,99.1,90,100,12345.6]
]
}
{@fun/Global/DBExec DBExec}, {@fun/Global/Dial Dial}
JSON ini adalah struktur data yang dikembalikan oleh fungsi ahlijoin()
daripadaThread
objek, yang menyimpan beberapa maklumat mengenai benang serentak dalamJavaScript
strategi bahasa.Thread
objek merujuk kepada objek benang, yang dicipta olehthreading.Thread()
.
ID benang. id nombor Sama ada benang dipaksa untuk berakhir. tamat bool Masa berjalan benang dalam nanosegund. telah berlalu nombor Nilai pulangan fungsi benang. ret nombor
Kod berikut menguji mekanisme masa lapangjoin()
FungsiThread
objek dan mencetak nilai pulanganjoin()
function.
function testFunc() {
for (var i = 0; i < 5; i++) {
Log(i)
Sleep(300)
}
}
function main() {
var t1 = threading.Thread(testFunc)
Log(t1.join(1000)) // undefined
Log(t1.join()) // {"id":1,"terminated":false,"elapsed":1506864000}
} ```
{@fun/Threads/Thread/join join}
Fungsi terbina dalam
Variabel terbina dalam