Tài nguyên đang được tải lên... tải...

Khác Khắp cấu trúc

HttpQuery-options

Cấu trúc JSON này được sử dụng để cấu hình các tham số của hàm HttpQuery và hàm HttpQuery_Go để gửi yêu cầu Http.

Phương pháp yêu cầu, ví dụ:GET, POST, vv phương pháp chuỗi Ví dụ, trong một yêu cầu POST, cơ thể có thể chứa dữ liệu biểu mẫu, JSON, văn bản, v.v. cơ thể chuỗi Mã hóa tập hợp ký tự. Ví dụ, chỉ định mã hóa dữ liệu văn bản trong phần chính là:"UTF-8". Charset chuỗi Cookie là một phần nhỏ dữ liệu được sử dụng để lưu trữ và trao đổi thông tin trạng thái giữa một khách hàng (thường là trình duyệt) và một máy chủ. bánh quy chuỗi Được sử dụng để mô phỏng dấu vân tay của trình duyệt. hồ sơ chuỗi Khi được đặt thành true, cuộc gọi hàm HttpQuery trả về thông điệp phản hồi hoàn chỉnh. Khi được đặt thành false, chỉ có dữ liệu trong thư phản hồi Body được trả về. debug bool Thông tin tiêu đề yêu cầu tồn tại dưới dạng cặp giá trị khóa (cấu trúc JSON) và được sử dụng để truyền thông tin khác nhau, chẳng hạn như loại nội dung, thông tin xác thực, kiểm soát bộ nhớ cache, v.v. tiêu đề JSON Đặt 1000 nghĩa là thời gian nghỉ 1 giây. thời gian nghỉ số

Ví dụ sử dụng:

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

Thông điệp http được gửi khi mã trên được thực thi:

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-return

Cấu trúc JSON này là cấu trúc dữ liệu được trả về bởi hàm HttpQuery trong chế độ debug khi trường debug trongoptionsCác thông số cấu trúc là đúng.

Mã trạng thái http Mã trạng thái số Yêu cầu thông tin tiêu đề. Tiêu đề JSON Thông tin về cookie. Cookie mảng Thông tin đường dẫn đầy đủ của yêu cầu. Hồ sơ JSON Chiều dài tin nhắn Chiều dài số Nội dung tin nhắn. Cơ thể chuỗi

Một ví dụ về cấu trúc dữ liệu JSON được trả về là:

{
    "StatusCode": 302,
    "Header": {
        "Content-Type": ["text/html"],
        // ...
    },
    "Cookies": [{
        // ...
    }],
    "Trace": {},
    "Length": 154,
    "Body": "..."
}

{@fun/Global/HttpQuery HttpQuery}, {@fun/Global/HttpQuery_Go HttpQuery_Go}

LogStatus-table

Cấu trúc JSON này được sử dụng để cấu hình nội dung bảng được hiển thị trong thanh trạng thái chiến lược.

Sử dụng để thiết lập loại giao diện người dùng và điều khiển để phân tích và hiển thị. Đối với bảng thanh trạng thái, nó được thiết lập cố định là:table. loại chuỗi Sử dụng để đặt tiêu đề của bảng thanh trạng thái. tiêu đề chuỗi Được sử dụng để đặt tiêu đề cột của bảng thanh trạng thái. bông mảng Được sử dụng để thiết lập dữ liệu hàng của bảng thanh trạng thái. Đơn vị đầu tiên của mảng hàng (mảng hai chiều) cũng là một cấu trúc mảng. Chiều dài của cấu trúc mảng này nên phù hợp với số cột bảng (các yếu tố trong cấu trúc mảng tương ứng với tên cột bảng một lần một), tức là hàng đầu tiên của dữ liệu trong bảng. hàng mảng

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

Cấu trúc JSON này được sử dụng để cấu hình điều khiển nút trong thanh trạng thái. Cấu trúc JSON điều khiển nút có thể được nhúng vào cấu trúc bảng JSON thanh trạng thái. Cấu trúc này là một cấu trúc phiên bản cũ, và nền tảng vẫn tương thích. Ví dụ về việc xây dựng điều khiển nút thanh trạng thái (sau khi nút được kích hoạt và nhấp, hộp bật lên chứa một điều khiển đầu vào duy nhất, được xây dựng thông qua trường đầu vào):

{
    "type": "button", 
    "cmd": "open", 
    "name": "opening a position", 
    "input": {
        "name": "number of opening positions", 
        "type": "number", 
        "defValue": 1
    }
}

Các điều khiển trong hộp bật lên được kích hoạt bằng cách nhấp vào nút thanh trạng thái điều khiển được thiết lập thông quainputhoặcgroup.

Đối với các điều khiển nút, cài đặt cố định là:button. loại chuỗi Cài đặt kiểu nút lớp học chuỗi Văn bản trên nút điều khiển, nghĩa là tên nút. tên chuỗi Nội dung lệnh tương tác được gửi đến chiến lược khi điều khiển nút kích hoạt một hoạt động nhấp chuột. cmd chuỗi Mô tả của nút điều khiển. Mô tả được hiển thị khi chuột được đặt trên nút trong thanh trạng thái. mô tả chuỗi Thiết lập nút tắt (true) / bật (false). tàn tật bool Khi xây dựng một nút thanh trạng thái cho tương tác, nhập dữ liệu cũng được hỗ trợ.GetCommand()thêm cácinputmục vào cấu trúc dữ liệu JSON của điều khiển nút trong thanh trạng thái để cấu hình điều khiển đầu vào trong hộp bật lên được hiển thị khi nút được kích hoạt. Ví dụ, để thiết lập giá trị củainputtrường:

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

Mô tả của mỗi trường trong cấu trúc JSON trên:

  • tên Tiêu đề của điều khiển trong hộp pop-up xuất hiện sau khi nút thanh trạng thái kích hoạt một hoạt động nhấp chuột.
  • mô tả Mô tả điều khiển trong hộp bật lên xuất hiện sau khi nút thanh trạng thái kích hoạt một hoạt động nhấp chuột.
  • loại Loại điều khiển trong hộp bật lên sau khi nút thanh trạng thái kích hoạt hoạt động nhấp chuột. Các giá trị có thể của trường loại là như sau:
    1. "number": điều khiển đầu vào số.
    2. "string": điều khiển đầu vào chuỗi.
    3. "selected": điều khiển hộp thả xuống.
    4. "boolean"Đổi điều khiển.
  • defValue Giá trị mặc định của điều khiển trong hộp pop-up xuất hiện sau khi nút thanh trạng thái kích hoạt hoạt động nhấp. Nếu đó là một kiểm soát loại hộp thả xuống (được chọn), trường defValue được sử dụng để thiết lập các tùy chọn hộp thả xuống. Ví dụ:"input": {"name": "Opening quantity", "type": "selected", "defValue": "A|B|C"}, mô tả văn bản của các tùy chọn hộp thả xuống được đặt là A, B, C.

Đối với các trường được mở rộng bởi điều khiển loại hộp thả xuống:

  • các lựa chọn Các tùy chọn trong trường tùy chọn không chỉ hỗ trợ chuỗi, mà còn hỗ trợ việc sử dụng{text: "description", value: "value"}Sử dụng trường defValue để đặt tùy chọn mặc định, có thể là nhiều lựa chọn.
  • nhiều Khi trường này được đặt thành true, nhiều lựa chọn trong hộp thả xuống được hỗ trợ.

đầu vào JSON Cácinputfield cấu hình một điều khiển trong hộp pop-up xuất hiện sau khi nút thanh trạng thái được kích hoạt bằng cách nhấp vào.groupinputlà nó cấu hình một nhóm các điều khiển.groupcó cùng cấu trúc dữ liệu nhưinputVui lòng tham khảo mô tả liên quan củainput field.

nhóm mảng

Một ví dụ vềclassgiá trị của cấu trúc JSON của nút trong thanh trạng thái:

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) + "`")
}

Ví dụ sử dụnggrouplĩnh vực vớiinputtrường:

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

Cấu trúc JSON này được sử dụng để cấu hình điều khiển nút trong thanh trạng thái. Cấu trúc JSON điều khiển nút có thể được nhúng trong cấu trúc bảng JSON thanh trạng thái. Phiên bản mới nhất của cấu trúc JSON nút. Ví dụ về việc xây dựng một nút điều khiển thanh trạng thái (sau khi nút được kích hoạt và nhấp vào, hộp bật lên chứa nhiều điều khiển đầu vào, được xây dựng thông qua trường nhóm):

{
    "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,
        }
    }],
}

Các điều khiển trong hộp bật lên được kích hoạt bằng cách nhấp vào nút thanh trạng thái điều khiển được thiết lập thông quainputhoặcgroup.

Đối với các điều khiển nút, cài đặt cố định là:button. loại chuỗi Văn bản trên nút điều khiển, nghĩa là tên nút. tên chuỗi Nội dung lệnh tương tác được gửi đến chiến lược khi điều khiển nút kích hoạt một hoạt động nhấp chuột. cmd chuỗi Khi xây dựng một nút thanh trạng thái cho tương tác, nhập dữ liệu cũng được hỗ trợ.GetCommand()thêm cácinputmục vào cấu trúc dữ liệu JSON của điều khiển nút trong thanh trạng thái để cấu hình điều khiển đầu vào trong hộp bật lên được hiển thị khi nút được kích hoạt. So với phiên bản cũ của cấu trúc đầu vào, phiên bản mới có một số trường mới và thay đổi:

{
    "type": "selected",
    "name": "test",         
    "label": "topic",       
    "description": "desc",  
    "default": 1,
    "filter": "a>1",
    "group": "group1",
    "settings": { ... },    // Component configuration
}

Mô tả và giải thích của mỗi trường trong cấu trúc JSON trên:

  • loại Loại điều khiển (quảng trường bắt buộc), hỗ trợ các cài đặt sau:"number"hộp đầu vào số,"string"hộp đầu vào chuỗi,"selected"hộp thả xuống,"boolean"Chuyển điều khiển.

  • tên Nếu cấu trúc JSON hiện tại là giá trị trường của trường đầu vào, khi trường nhãn không được đặt, tên là tiêu đề điều khiển trong hộp bật lên xuất hiện sau khi nhấp vào nút thanh trạng thái. Nếu cấu trúc JSON hiện tại là một phần tử trong giá trị trường (cấu trúc mảng) của trường nhóm, tên không được sử dụng làm tiêu đề điều khiển.

    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"}]
            }
        ]
    }
    

    Theo đoạn trích này, nếu nút thanh trạng thái kích hoạt tương tác, một hộp pop-up sẽ bật lên với 4 điều khiển, tất cả đều là các điều khiển hộp thả xuống. Sau khi thiết lập các tùy chọn cho mỗi điều khiển và nhấp OK để gửi thông báo tương tác, hàm GetCommand trong chiến lược sẽ nhậncmdTestBtn3:{"comboBox1":1,"comboBox2":0,"comboBox3":[0,2],"comboBox4":["A","C"]}. Giá trị của tên trong cấu trúc JSON được sử dụng như tên trường của thông tin tương tác được trả về, ví dụ: comboBox1, comboBox2, v.v.

  • nhãn Sử dụng để đặt tiêu đề của điều khiển.

  • mô tả Mô tả điều khiển: Nếu cấu trúc JSON hiện tại là một phần tử trong giá trị trường (cấu trúc mảng) của trường nhóm, và trường nhãn không được đặt, mô tả là tiêu đề điều khiển trong hộp bật lên xuất hiện sau khi nhấp vào nút thanh trạng thái.

  • mặc định Giá trị mặc định của điều khiển.

  • bộ lọc Selector, được sử dụng để ẩn các điều khiển. Không đặt trường này có nghĩa là không lọc (hiển thị các điều khiển); khi trường này được đặt, không lọc (hiển thị các điều khiển) xảy ra khi biểu thức là đúng. Khi biểu thức là sai, lọc xảy ra (không hiển thị các điều khiển)

  • nhóm Được sử dụng để điều khiển nhóm các điều khiển, có thể được gấp.

  • cài đặt Cấu hình thành phần, điều khiển có một loạt các tùy chọn UI, sử dụng tùy chọn này để thực hiện các thiết lập cụ thể. Ví dụ:

    settings:{
        multiple:true,
        customizable:true,
        options:[{name:'xxx|yyy',value:0}]
    }
    

    cài đặt: settings.required: Có cần thiết hay không. settings.disabled: Cho dù để vô hiệu hóa. settings.min: Valid when type=number, chỉ ra giá trị tối thiểu hoặc chiều dài tối thiểu của một chuỗi. settings.max: Có hiệu lực khi type=number, chỉ ra giá trị tối đa hoặc chiều dài tối đa của chuỗi. settings.step: Có hiệu lực khi type=number và render=slider, chỉ ra chiều dài bước. settings.multiple: Valid when type=selected, indicating that multiple selections are supported: hợp lệ khi type= được chọn, cho thấy hỗ trợ nhiều lựa chọn. settings.customizable: Nó có giá trị khi type= được chọn, cho thấy tùy chỉnh được hỗ trợ; người dùng có thể trực tiếp chỉnh sửa và thêm các tùy chọn mới trong điều khiển hộp thả xuống. Nếu tùy chọn mới được chỉnh sửa được chọn, tên của tùy chọn được sử dụng thay vì giá trị đại diện cho tùy chọn khi tương tác được kích hoạt. settings.options: Valid when type=selected, indicating the selector option data format: [option 1, option 2], [{name:xxx,value:0}, {name:xxx,value:1}]. settings.render: Loại thành phần hiển thị. Khi type=number, settings.render không được thiết lập (hộp nhập số mặc định), tùy chọn: thanh trượt ( thanh trượt), ngày (chọn thời gian trả về dấu thời gian). Khi type=string, settings.render không được thiết lập (hộp đầu vào một dòng mặc định), tùy chọn: textarea (nhập nhiều dòng), ngày (chọn thời gian trả về yyyy-MM-dd hh:mm:ss), màu sắc (chọn màu trả về #FF00FF). Khi type= được chọn, settings.render không được thiết lập (bộ thả xuống mặc định), tùy chọn: segment (chọn phân đoạn). Khi type=boolean, hiện chỉ có hộp kiểm mặc định.

đầu vào JSON Cácinputfield cấu hình một điều khiển trong hộp pop-up xuất hiện sau khi nút thanh trạng thái được kích hoạt bằng cách nhấp vào.groupinputlà nó cấu hình một nhóm các điều khiển.groupcó cùng cấu trúc dữ liệu nhưinputVui lòng tham khảo mô tả ở trên củainput field.

nhóm mảng

Hỗ trợ cài đặt song ngữ:

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

Các tùy chọn biểu đồ

JSON này được sử dụng để thiết lập thông tin cấu hình biểu đồ của chức năng vẽ tùy chỉnhChart(). Thư viện biểu đồ được sử dụng là Highcharts. Chỉ có một vài trường cấu hình cơ bản được liệt kê ở đây.

Trường mở rộng nền tảng. Đặt thành true để sử dụng biểu đồ Highstocks; đặt thành false để sử dụng biểu đồ Highcharts.

__isStock chuỗi

{
    layout: 'single', // Not participating in grouping, displayed separately, default is group 'group'
    height: 300,      // Specify height
}

gia hạn JSON Tên biểu đồ tiêu đề chuỗi Cấu hình trục X. XAxis JSON Cấu hình trục y. Trục y JSON Dòng dữ liệu biểu đồ. loạt JSON

Một ví dụ vẽ đơn giản:

// 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-options

JSON này được sử dụng để thiết lập thông tin cấu hình biểu đồ của chức năng vẽ tùy chỉnhKLineChartChỉ một vài trường cấu hình cơ bản được liệt kê ở đây.

Có nên vẽ trên biểu đồ chính hay không. lớp phủ bool Cấu hình trục X. XAxis JSON Cấu hình trục y. Trục y JSON Cấu hình biểu đồ nến. nến JSON

Xin tham khảo:Bài viết đặc biệt về vẽ biểu đồ bằng chức năng KLineChart.

{@fun/Log/KLineChart KLineChart}

SetData-data

JSON được sử dụng để thiết lập dữ liệu để được tải bởi cácexchange.SetData()Dữ liệu JSON là một cấu trúc mảng, trong đó mỗi phần tử cũng là một mảng, cụ thể là[time, data].

Thời gian của dữ liệu, đánh dấu thời gian của dữ liệu này. thời gian số dữ liệu là một mảnh dữ liệu tương ứng với một thời gian nhất định trong dữ liệu tải bởi cácexchange.SetData()Khi chiến lược được thực hiện,exchange.GetData()chức năng nhận được dữ liệu với dấu thời gian tương ứng theo thời gian hiện tại.

dữ liệu chuỗi, số, bool, đối tượng, mảng, vv

Một ví dụ về tải dữ liệu trong hệ thống backtesting và lấy dữ liệu khi backtest chiến lược đang chạy:

/*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-return

JSON này là cấu trúc dữ liệu được trả về bởiEventLoop()chức năng.EventLoop()Các trình giám sát chức năng: 1. Bất kỳ sự kiện dữ liệu có thể đọc WebSocket nào; 2. Các sự kiện hoàn thành nhiệm vụ đồng thời với các chức năng exchange.Go (()) và HttpQuery_Go (()); 3. Các sự kiện tin nhắn được gửi trong các luồng được tạo ra bởithreading.Thread()chức năng trong chiến lược ngôn ngữ JavaScript.

Số chuỗi sự kiện. Tiếp theo số Tên sự kiện. Sự kiện chuỗi ID chuỗi sự kiện. ThreadId số Chỉ số sự kiện. Chỉ số số Mẫu thời gian nano. Nano số

Sử dụngexchange.Go()chức năng để thực hiện các yêu cầu đồng thời và cấu trúc dữ liệu sự kiện trả về bởi cácEventLoop() function.

{
    "Seq":1,
    "Event":"Exchange_GetTrades",
    "ThreadId":0,
    "Index":3,
    "Nano":1682068771309583400
}

Trong cùng một lúc thực thi chủ đề của chiến lược ngôn ngữ JavaScript (được tạo ra bởi cácthreading.Thread()chức năng), khipostMessage()chức năng của đối tượng thread được sử dụng để gửi một thông điệp,EventLoop()chức năng trong chủ đề nhận tin nhắn sẽ theo dõi cấu trúc dữ liệu sự kiện sau:

{
    "Seq":4,
    "Event":"thread",
    "ThreadId":1,
    "Index":0,
    "Nano":1727592066508674000
}

@fun/Global/EventLoop EventLoop

DBExec-return

JSON này là cấu trúc dữ liệu được trả về bởiDBExec()hàm; nó cũng được trả về khi thực thi một lệnh SQL sử dụngexec()phương pháp của đối tượng được tạo ra bởiDial() function.

Tên cột của dữ liệu được truy vấn, một mảng chuỗi. các cột mảng Các dữ liệu cụ thể được truy vấn, trong đó mỗi phần dữ liệu tương ứng với tên cột. Giá trị của trường giá trị là một mảng hai chiều, trong đó mỗi phần tử là một mảng và một bản ghi dữ liệu. giá trị mảng

Ví dụ về truy vấn dữ liệu trong cơ sở dữ liệu:

{
    "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 này là cấu trúc dữ liệu được trả về bởi hàm thành viênjoin()củaThreadobject, mà lưu một số thông tin về các chủ đề đồng thời trongJavaScriptChiến lược ngôn ngữThreadđối tượng đề cập đến đối tượng thread, được tạo ra bởithreading.Thread().

Thread ID. id số Cho dù sợi dây bị buộc phải kết thúc. kết thúc bool Thời gian chạy của sợi trong nano giây. đã qua số Giá trị trả về của hàm thread. rt số

Mã sau đây kiểm tra cơ chế thời gian củajoin()chức năng củaThreadđối tượng và in giá trị trả về củajoin() 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}
Tài trợ Các biến tích hợp