Chúng tôi đã học được mô-đun trực quan để xây dựng chiến lược giao dịch - Lần đầu tiên quen biết, và chúng tôi có một sự hiểu biết khái niệm về xây dựng mô-đun trực quan và splicing, Tiếp theo, dễ dàng học cách sử dụng các mô-đun khác. Có thể kết hợp một số chức năng phức tạp hơn.
Trong quá trình học tập và thử nghiệm trước đây, chúng tôi đã tiếp xúc với một số mô-đun
Những điều đã được sử dụng sẽ không được lặp lại ở đây.
Khi viết các chiến lược để sử dụng robot giao dịch, bạn có thể thêm nhiều hơn một đối tượng trao đổi, chẳng hạn như các chiến lược phòng ngừa rủi ro. Hoặc bạn cần phải đi qua (đi qua có nghĩa là truy cập các đối tượng trao đổi một lần một lần) các đối tượng trao đổi để truy cập thị trường. Đây là nơi mà mô-đun để có được số lượng trao đổi đi vào chơi.
Chúng ta có thể in số lượng các giao dịch được cấu hình hiện tại trong một cấu trúc đơn giản:
Trong thực tế, nó giống như gọi mã chiến lược JavaScript như vậy:
function main () {
Log(exchanges.length)
}
Chúng ta hãy xem xét các kết quả của mô-đun kết hợp này:
Chúng ta có thể thấy rằng chúng ta đã thêm ba đối tượng trao đổi, đại diện cho ba tài khoản trao đổi khác nhau, và kết quả đầu ra của nhật ký backtest là 3.
Khi thêm ba đối tượng trao đổi, hộp thả xuống sẽ hiển thị ba tùy chọn. Tìm hiểu một module vòng lặp trong kiểu vòng lặp trước.
Tìm hiểu một mô-đun đánh giá điều kiện trước:
Các điều kiện phán quyết có thể được viết như sau:
Chúng tôi sử dụng module vòng lặp để đi qua các tên trao đổi được thêm vào. Chúng tôi sử dụng mô-đun đánh giá điều kiện để đánh giá xem số vòng hiện tại có tương ứng với tên của sàn giao dịch để in không.
Kết quả hoạt động thử nghiệm sau:
Giống như mã chiến lược JavaScript:
function main () {
for (var i = 1 ; i <= exchanges.length ; i++) {
if (i == 1) {
Log(exchanges[0].GetName())
} else if (i == 2) {
Log(exchanges[1].GetName())
} else {
Log(exchanges[2].GetName())
}
}
}
Một ví dụ đơn giản là lấy cặp giao dịch của đối tượng trao đổi đầu tiên hiện đang được đặt và gán nó cho biến văn bản (được tạo trong danh mục biến trước).
Kết quả kiểm tra hậu quả:
Nếu bạn gọi mã chiến lược JavaScript:
function main () {
var text = exchange.GetCurrency()
Log(text)
}
Mô-đun này rất quan trọng đối với hoạt động đặt hàng. vị trí tenon đầu tiên được nhúng với một biến giá, được sử dụng để chỉ định giá đặt hàng. Bạn cũng có thể nhập một giá trị cố định trực tiếp. Vị trí tenon thứ hai (đốm) được nhúng với biến số lượng đơn đặt hàng, được sử dụng để chỉ định số lượng đơn đặt hàng.
Ví dụ, chúng tôi ghép một ví dụ về đặt lệnh mua tại thêm một giá trượt 10 nhân dân tệ dựa trên giá mới nhất của dữ liệu thị trường tick hiện tại, với số lượng lệnh được thiết lập thành 0,1 đồng xu, và in ID lệnh.
Kết quả hoạt động thử nghiệm sau:
Giống như mã chiến lược JavaScript sau:
function main () {
var id = exchange.Buy(_C(exchange.GetTicker).Last + 10, 0.1)
Log(id)
}
Mô-đun này sẽ trả về tất cả các lệnh đang chờ trong trạng thái chưa hoàn tất của cặp giao dịch hiện tại. Nó trả về một cấu trúc danh sách (mảng), có thể được xử lý bởi mô-đun loại danh sách (hoạt động xuyên qua, v.v.).
Ví dụ, chúng tôi đã sửa đổi mô-đun đơn đặt hàng ví dụ trên một chút[4] và thay đổi giá 10 nhân dân tệ được thêm vào khi đặt đơn đặt hàng xuống dưới 10 nhân dân tệ.
Sau đó chúng ta sử dụng mô-đun của
Kiểm tra hậu quả cho thấy:
Giá của lệnh mua là 10 nhân dân tệ thấp hơn giá mới nhất vào thời điểm đó, vì vậy nó sẽ không được thực hiện ngay lập tức. Sau đó lấy lệnh trong tình trạng giao dịch đang chờ, và in nó ra. Cuối cùng, một ngoại lệ được ném để dừng chương trình.
Toàn bộ mô-đun lắp ráp giống như một cuộc gọi đến chiến lược JavaScript:
function main () {
var id = exchange.Buy(_C(exchange.GetTicker).Last - 10, 0.1)
Log(id)
Log(exchange.GetOrders())
throw "stop"
}
Mô-đun này được sử dụng để hủy lệnh.
Có nhiều kịch bản đòi hỏi các hoạt động như vậy khi viết chiến lược:
Hủy tất cả các đơn đặt hàng đang chờ.
Không có nghi ngờ gì rằng
Trước hết, để kiểm tra việc hủy bỏ tất cả các đơn đặt hàng, nó không phải là hiển nhiên để đặt một đơn đặt hàng. chúng tôi bắt đầu đặt 2 đơn đặt hàng, giá cả và số lượng của họ là khác nhau để phân biệt hai đơn đặt hàng.
Sử dụng
Trong quá trình đi qua, mỗi thứ tự được lấy được gán một giá trị cho thứ tự module biến (được tạo trong kiểu module biến, như được hiển thị bên dưới:)
Sử dụng
Lấy ID đơn đặt hàng, truyền nó đến vị trí tenon (đôn) của
Hoạt động kiểm tra ngược:
Sử dụng mô tả chiến lược JavaScript:
function main () {
var id = exchange.Buy(_C(exchange.GetTicker).Last - 10, 0.1)
Log(id)
var id2 = exchange.Buy(_C(exchange.GetTicker).Last - 12, 0.2)
Log(id2)
var orders = exchange.GetOrders()
Log(orders)
for (var i in orders) {
var order = orders[i]
Log(exchange.CancelOrder(order.Id))
}
}
Vị trí của mô-đun được kết nối với mô-đun biến số ID lệnh, và chi tiết lệnh có thể được trả về.
Lưu ý thứ tự được trả về sau khi chạy:
So sánh với kết quả chạy trong ví dụ [5], có thể thấy rằng đơn đặt hàng in là thông tin đơn đặt hàng riêng biệt mà không có dấu ngoặc []. Bởi vì ví dụ [5] trả về một danh sách, nhưng ví dụ này trả về một thông tin thứ tự riêng biệt (được thu được dựa trên mô-đun biến ID về vị trí tenon được chuyển vào bởi mô-đun).
Ví dụ trên tương tự như thực hiện chiến lược JavaScript:
function main () {
var id = exchange.Buy(_C(exchange.GetTicker).Last - 10, 0.1)
Log(exchange.GetOrder(id))
}
Chúng ta sẽ học các mô-đun trên một lần một và chúng ta thiết lập giao dịch thử nghiệm như tương lai hàng hóa.
Cài đặt kiểm tra ngược:
Ví dụ sau thực hiện backtest dựa trên các cài đặt.
Các hợp đồng tương lai hàng hóa có giờ mở và giờ đóng. Khi thị trường đóng, nó không thể được kết nối.
Khi đối tượng của sàn giao dịch được cấu hình là sàn giao dịch tương lai, nếu sàn giao dịch không thiết lập hợp đồng và lấy thông tin thị trường trực tiếp, sẽ báo cáo lỗi.
Chúng tôi đặt hợp đồng là MA909, hợp đồng chính của methanol hiện tại.
Bằng cách này, giá trị giá mới nhất trên thị trường tick hiện tại của hợp đồng MA909 được thu được.
Trong mô-đun thực thi lệnh
Định hướng lệnh cần phải được xác định, bởi vì tương lai có: mua: mở các vị trí dài bán: mở các vị trí ngắn closebuy: đóng các vị trí dài closesell: đóng các vị trí ngắn Bốn hướng (có hai hướng khác cho hợp đồng tương lai hàng hóa: closebuy_today để đóng các vị trí dài ngày hôm nay và closesell_today để đóng các vị trí ngắn ngày hôm nay).
Ví dụ, nếu mô-đun lệnh được đặt là
Hiển thị kiểm tra ngược:
Giống như mã chiến lược JavaScript:
function main () {
while (true) {
if (exchange.IO("status")) {
exchange.SetContractType("MA909")
Log(exchange.GetTicker().Last)
exchange.SetDirection("buy")
Log(exchange.Buy(1000, 1))
throw "stop"
} else {
Log("The commodity futures front-end processor is not connected")
}
Sleep(1000)
}
}
Việc sử dụng hợp đồng tương lai tiền kỹ thuật số về cơ bản giống như hợp đồng tương lai hàng hóa trong [8] ở trên
Nó được sử dụng để thiết lập đòn bẩy của tương lai tiền kỹ thuật số.
#Note: Backtesting is not supported.
Giống như chiến lược JavaScript:
function main () {
exchange.SetMarginLevel(10)
}
Ví dụ về các chiến lược trực quan hóa:
https://www.fmz.com/strategy/121404 https://www.fmz.com/strategy/129895 https://www.fmz.com/strategy/123904 https://www.fmz.com/strategy/122318Để biết thêm các chiến lược, vui lòng tham khảo:https://www.fmz.com/square
Các bài viết khác trong loạt bài này