Sumber dimuat naik... memuat...

Struktur

Perdagangan

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}

Tikal

Struktur pasaran.

Data asal dikembalikan oleh antara muka pertukaran, tiada atribut seperti itu tersedia untuk backtesting. Maklumat objek PerkhidmatanSymbolmedan adalah kod jenis dagangan yang ditakrifkan oleh platform FMZ.

  • Untuk objek pertukaran spot, formatSymbolNilai medan (sebagai contoh) adalah:BTC_USDT, yang menunjukkan pasangan dagangan spot BTC_USDT.
  • Untuk objek pertukaran niaga hadapan, formatSymbolNilai medan (sebagai contoh) adalahBTC_USDT.swap, yang mewakili kontrak perpetual hak milik USDT untuk BTC.
  • Untuk objek pertukaran niaga hadapan, formatSymbolNilai 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 bahawaTickermedan strukturBuyatauSelladalah 0, mesej ralat akan diaktifkan.

{@fun/Market/exchange.GetTicker exchange.GetTicker}, {@fun/Market/exchange.GetTickers exchange.GetTickers}

Rekod

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}

Perintah

Struktur perintah.

The data asal tindak balas antara muka pertukaran, tiada atribut seperti itu tersedia untuk backtesting. Maklumat objek PerkhidmatanSymbolmedan adalah kod produk dagangan yang ditakrifkan oleh platform FMZ dan formatnya adalah selaras denganSymbolmedan struktur {@struct/Ticker Ticker}.

  • Untuk objek pertukaran spot, formatSymbolNilai medan adalah (contohnya):BTC_USDT, yang menunjukkan pasangan dagangan spot BTC_USDT.
  • Untuk objek pertukaran niaga hadapan, formatSymbolNilai 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.Idformat pasangan dagangan spotETH_USDTurutan 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

PeraturanOrderstruktur pesanan boleh dikembalikan olehexchange.GetOrder()danexchange.GetOrders()fungsi.exchange.GetOrders()fungsi mengembalikan pelbagaiOrderstruktur atau array kosong. Jika tidak ada perintah yang belum selesai, ia mengembalikan[], yang merupakan array kosong.Statusharta bendaOrderstruktur perintah boleh dibandingkan secara langsung dengan pemalar sepertiORDER_STATE_PENDINGuntuk 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),Offsetmedan 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}

Buku pesanan

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}

Kedalaman

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}

Akaun

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.Equitymedan 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.UPnLmedan 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}

Aset

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, contohnyaBTCboleh dipanggilXBTdi beberapa pertukaran. Mata wang senar Saldo aset mata wang yang tersedia. Jumlah nombor Jumlah aset beku dalam mata wang. Beku Jumlah nombor

PeraturanFrozenAmountdari 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}

Kedudukan

Struktur maklumat kedudukan kontrak.

Data asal dikembalikan oleh antara muka pertukaran, tiada atribut seperti itu tersedia untuk backtesting. Maklumat objek PerkhidmatanSymbolmedan adalah kod produk dagangan yang ditakrifkan oleh platform FMZ dan formatnya adalah selaras denganSymbolmedan struktur {@struct/Ticker Ticker}.

  • Untuk objek pertukaran spot, formatSymbolNilai medan adalah (contohnya):BTC_USDT, yang menunjukkan pasangan dagangan spot BTC_USDT.
  • Untuk objek pertukaran niaga hadapan, formatSymbolNilai 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}

Pasaran

Struktur maklumat pasaran mengenai varieti yang didagangkan.

Mengambil nilai seperti"btcusdt", yangSymbolbidang ini mencatat nama asal varieti yang didagangkan di bursa.Symbolmedan struktur {@struct/Ticker Ticker}. Simbol senar Mengambil nilai seperti"BTC", yangBaseAssetmedan mencatat nama mata wang yang didagangkan (iaitu: baseCurrency), yang secara seragam huruf besar. Aset asas senar Mengambil nilai seperti"USDT", yangQuoteAssetmedan mencatat nama mata wang yang diisytiharkan (iaitu: quoteCurrency), yang adalah huruf besar secara seragam. Kuota Aset senar Mengambil nilai seperti0.01, yangTickSizemedan mencatat nilai perubahan terkecil dalam harga item yang didagangkan di bursa. TickSize nombor Mengambil nilai seperti0.01, yangAmountSizemedan mencatat nilai perubahan minimum dalam jumlah pesanan yang diletakkan di bursa untuk perdagangan itu. JumlahUkuran nombor Mengambil nilai seperti2, yangPricePrecisionmedan ini merekodkan ketepatan harga item yang didagangkan di bursa, menunjukkan bahawa harga adalah tepat kepada 2 decimal. PricePrecision nombor Mengambil nilai seperti3, yangAmountPrecisionmedan 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, yangMinQtymedan mencatat saiz pesanan minimum di bursa untuk perdagangan itu. MinQty nombor Mengambil nilai seperti1000, yangMaxQtymedan mencatat jumlah pesanan maksimum yang boleh diletakkan di bursa untuk jenis perdagangan itu. MaxQty nombor Mengambil nilai seperti5, yangMinNotionalmedan mencatat jumlah minimum pesanan yang diletakkan di bursa untuk jenis perdagangan itu. MinNotional nombor Mengambil nilai seperti9999999, yangMaxNotionalmedan mencatat jumlah maksimum pesanan yang diletakkan di bursa untuk jenis perdagangan itu. Max Notional nombor LapanganCtValmencatat nilai kontrak produk dagangan di bursa, dalam mata wang yang dicatatkan dalamCtValCcycontohnya:CtValialah 0.01,CtValCcyadalah"BTC", yang bermaksud bahawa kontrak bernilai 0.01 BTC. CtVal nombor LapanganCtValCcymencatatkan unit nilai kontrak. Unit nilai kontrak boleh:BTC, USD, ETH, dan lain-lain CtValCcy nombor LapanganInfomencatat data mentah untuk spesies yang dikembalikan oleh antara muka maklumat pasaran bursa. Maklumat objek

Fungsi exchange.GetMarkets( mengembalikan kamus yang mengandungi iniMarketstruktur. 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}

Pembiayaan

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 PerkhidmatanSymbolmedan adalah kod produk dagangan yang ditakrifkan oleh platform FMZ. Simbol senar Jangkaan kadar pembiayaan, dalam milidetik.28800000bermaksud 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. PerkhidmatanRatemedan 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}

LainStruct

HttpQuery-pilihan

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}

HttpQuery-kembali

Struktur JSON ini adalah struktur data yang dikembalikan oleh fungsi HttpQuery dalam mod debug apabila medan debug dalamoptionsParameter 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}

Jadual LogStatus

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}

LogStatus-btnTypeOne

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 melaluiinputataugroup.

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.inputItem 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 nilaiinputmedan:

{
    "name": "Number of opening positions", 
    "type": "number", 
    "defValue": 1,
    "description": "test",                  
}

Penerangan setiap medan dalam struktur JSON di atas:

  • nama Judul kawalan dalam kotak pop-up yang muncul selepas butang bar status mencetuskan operasi klik.
  • Penerangan Penerangan kawalan dalam kotak pop-up yang muncul selepas butang bar status mencetuskan operasi klik.
  • jenis Jenis kawalan dalam kotak pop-up yang muncul selepas butang bar status mencetuskan operasi klik.
    1. "number": kawalan input berangka.
    2. "string": kawalan input rentetan.
    3. "selected": kawalan kotak turun.
    4. "boolean"- Pindah kawalan.
  • defValue Nilai lalai kawalan dalam kotak pop-up yang muncul selepas butang bar status mencetuskan operasi klik. Jika ia adalah kawalan jenis kotak turun (dipilih), medan defValue digunakan untuk menetapkan pilihan kotak turun. Sebagai contoh:"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:

  • pilihan Kawalan kotak drop-down dalam halaman yang dicetuskan oleh kawalan butang bar status boleh menggunakan medan pilihan untuk menetapkan pilihan. Pilihan dalam medan pilihan bukan sahaja menyokong rentetan, tetapi juga menyokong penggunaan{text: "description", value: "value"}Gunakan medan defValue untuk menetapkan pilihan lalai, yang boleh menjadi pelbagai pilihan.
  • berganda Apabila medan ini ditetapkan kepada benar, pelbagai pilihan dalam kotak drop-down disokong.

input JSON Peraturaninputmedan mengkonfigurasi kawalan dalam kotak pop-up yang muncul selepas butang bar status dicetuskan dengan mengklik.groupdaninputadalah bahawa ia mengkonfigurasi sekumpulan kawalan.groupmempunyai struktur data yang sama denganinputSila rujuk penerangan yang berkaitaninput field.

kumpulan Array

Satu contohclassnilai 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 penggunaangroupmedan denganinputmedan:

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}

LogStatus-btnTypeTwo

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 melaluiinputataugroup.

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.inputItem 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: [option 1, option 2], [{name:xxx,value:0}, {name:xxx,value:1}]. setings.render: Jenis komponen rendering. Apabila type=number, settings.render tidak ditetapkan (kotak input nombor lalai), pilihan: slider (slider bar), tarikh (pemilih masa mengembalikan cap masa). Apabila type=string, settings.render tidak ditetapkan (kotak input baris tunggal lalai), pilihan: textarea (masukan pelbagai baris), tarikh (pemilih masa mengembalikan yyyy-MM-dd hh:mm:ss), warna (pemilih warna mengembalikan #FF00FF). Apabila type= dipilih, setings.render tidak ditetapkan (default drop-down box), pilihan: segmen (selector segmen). Apabila type=boolean, pada masa ini hanya kotak semak lalai.

input JSON Peraturaninputmedan mengkonfigurasi kawalan dalam kotak pop-up yang muncul selepas butang bar status dicetuskan dengan mengklik.groupdaninputadalah bahawa ia mengkonfigurasi sekumpulan kawalan.groupmempunyai struktur data yang sama denganinputSila 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}

Pilihan carta

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}

KLineChart-pilihan

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}

SetData-data

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}

EventLoop-kembali

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}

DBExec-kembali

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}

Thread.join-return

JSON ini adalah struktur data yang dikembalikan oleh fungsi ahlijoin()daripadaThreadobjek, yang menyimpan beberapa maklumat mengenai benang serentak dalamJavaScriptstrategi bahasa.Threadobjek 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()FungsiThreadobjek 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