Làm thế nào để mở rộng thư viện tùy chỉnh bạn cần cho các chiến lược trực quan? ví dụ, tôi muốn tính toán chỉ số MA, nhưng hệ thống chỉ đi kèm với:
Những chỉ số này, làm thế nào tôi có thể thêm một số mã tùy chỉnh vào những chỉ số đó? Hãy lấy thêm một mô-đun tính toán chỉ số MA tùy chỉnh làm ví dụ để giải thích cách mở rộng mô-đun trực quan hóa.
Chúng ta hãy nói về mẫu
Thư viện giao dịch giao dịch tại chỗ tiền điện tử; định nghĩa trực quan ở đầu:
/*blockly
{
"type": "ext_Trade",
"message0": "%1 symbol amount %2|%1 Coins %2",
"args0": [{
"type": "field_dropdown",
"options": [
["bid|Buy", "Buy"],
["ask|Sell", "Sell"]
]
}, {
"type": "input_value",
"check": "Number"
}],
"template": "(function(){var r = $.%1(%2); return r ? r.amount : 0; })()",
"order": "ORDER_ATOMIC",
"output": "Number",
"colour": 85
}, {
"type": "ext_CancelPendingOrders",
"message0": "cancel %1 orders|Cancel %1 Orders",
"args0": [{
"type": "field_dropdown",
"name": "TYPE",
"options": [
["all|All", " "],
["buy order|Buy", "ORDER_TYPE_BUY"],
["sell order|Sell", "ORDER_TYPE_SELL"]
]
}],
"previousStatement": null,
"nextStatement": null,
"template": "$.CancelPendingOrders(%1);",
"colour": 85
}, {
"type": "ext_Cross",
"message0": "calculate cross period %1 and %2|Cross Period %1 and %2",
"inputsInline": true,
"args0": [{
"type": "input_value"
}, {
"type": "input_value"
}],
"template": "$.Cross(%1,%2)",
"order": "ORDER_ATOMIC",
"output": "Number"
}, {
"type": "ext_GetAccount",
"message0": "obtain asset information|GetAccount",
"template": "$.GetAccount()",
"order": "ORDER_ATOMIC",
"output": null
}
*/
Tương ứng với các mô-đun trong trang chỉnh sửa trực quan (đơn lẻ):
Với ví dụ sẵn sàng, nó rất đơn giản để tự xây dựng nó, giống như sao chép cơ học.
Đầu tiên, tạo một mẫu mới trong ngôn ngữ JavaScript.
Chỉnh sửa mã mẫu.
/*blockly
{
"type": "ext_testA",
"message0": "testA|testA",
"template": "function(){return 99;}()",
"order": "ORDER_ATOMIC",
"output": "Number"
},{
"type": "ext_MA",
"message0": "MA period %1| MA Period %1",
"args0": [{
"type": "input_value",
"check": "Number"
}],
"template": "(function(){var r = exchange.GetRecords(); return (!r || r.length < %1) ? false : TA.MA(r, %1); })()",
"order": "ORDER_ATOMIC",
"output": null,
"colour": 85
}
*/
Sau khi chỉnh sửa mẫu mới, lưu nó. Trong chiến lược mà chúng ta cần sử dụng mẫu này, kiểm tra mẫu.
Bạn có thể thấy rằng có hai mô-đun bổ sung:
Mô-đun tên là: testA. Hãy xem mã thực thi:
function(){return 99;}()
Đây là một hàm JavaScript rất đơn giản trả về giá trị 99 khi thực thi.
Mô-đun có tên là: MA period.
(function(){var r = exchange.GetRecords(); return (!r || r.length < %1) ? false : TA.MA(r, %1); })()
Mã là một cuộc gọi hàm ẩn danh. Chức năng ẩn danh đầu tiên thực hiện hoạt động để lấy dữ liệu đường K, cụ thể là dữ liệu đường Kr
. Sau đó, tùy thuộc vào việc liệu r thu được lànull
hoặc liệu chiều dài củar
là nhỏ hơn so với tham số%1
nhập vào mô-đun, phán xét để trở lạifalse
hoặc trả về kết quả chỉ số được tính bằngTA.MA(r, %1)
.
Nó sẵn sàng để sử dụng tiếp theo.
Chỉnh sửa chiến lược trực quan:
Hoạt động:
Có thể thấy rằng dữ liệu được tính bằng chỉ số MA đã được thu được như mong muốn.
Điều trên chỉ là một ví dụ cho thiết kế của mô-đun trực quan hóa, vì vậy bạn có thể sử dụng chức năng mẫu để mở rộng một mình.