作为一个教学策略,兼顾一定的实战性能当然是最好的。「数字货币期货类马丁策略」在FMZ.COM围观板块也已经展示了小半年了。经历了好几拨风吹雨打,马丁、网格策略有其风险硬伤,参数保守一点也不是不能用。
Biên An tương lai thực
đĩa thực dYdX
Trong khi đó, một số nhà sản xuất dầu mỏ ở Việt Nam cũng cho biết họ sẽ tiếp tục sản xuất dầu vào năm 2020.
Tuy nhiên, phiên bản đầu tiên của chiến lược thiết kế tương đối đơn giản, trên giao diện chỉ có một nắm giữ, tổng quyền lợi dữ liệu đầu ra, lợi nhuận đường cong cũng chỉ in để đạt được lợi nhuận và lỗ, không tính vào lãi và lỗ.
Bài viết này cùng với tất cả các bạn nâng cấp chiến lược ổn định trong nửa năm chiến tranh thực.
Phiên bản chính sách trước khi nâng cấp được ghi lại trên trang "Lưu ý" của chính sách.
这个也是我的个人开发习惯,在FMZ.COM上很方便记录策略开发、迭代的点点滴滴。
Bắt đầu nâng cấp!
Đầu tiên, chúng tôi sẽ tối ưu hóa "bảng trạng thái" để hiển thị, và tất cả những người quen thuộc với các tài liệu phát triển FMZ đều biết rằng hiển thị dữ liệu trên FMZ là một cách tốt nhất để hiển thị dữ liệu trên FMZ.LogStatus
Các chức năng. Vì vậy, chúng ta tìm ra điểm cắt này để bắt đầu thiết kế mã.
Sau đó, hãy thêm một đoạn mã lớn:
var tblPos = {
"type" : "table",
"title" : "持仓",
"cols" : ["持仓数量", "持仓方向", "持仓均价", "持仓盈亏", "合约代码", "自定义字段 / " + SpecifyPosField],
"rows" : []
}
var descType = ["多头仓位", "空头仓位"]
for (var posIndex = 0 ; posIndex < pos.length ; posIndex++) {
tblPos.rows.push([pos[posIndex].Amount, descType[pos[posIndex].Type], pos[posIndex].Price, pos[posIndex].Profit, pos[posIndex].ContractType, SpecifyPosField == "" ? "--" : pos[posIndex].Info[SpecifyPosField]])
}
var tbl = {
"type" : "table",
"title" : "数据",
"cols" : ["当前总权益", "实际盈亏", "当前价格", "买单价格/数量", "卖单价格/数量"],
"rows" : []
}
var buyOrder = null
var sellOrder = null
for (var orderIndex = 0 ; orderIndex < orders.length ; orderIndex++) {
if (orders[orderIndex].Type == ORDER_TYPE_BUY) {
buyOrder = orders[orderIndex]
} else {
sellOrder = orders[orderIndex]
}
}
var realProfit = currTotalEq - totalEq
if (exchange.GetName() == "Futures_Binance") {
_.each(pos, function(p) {
realProfit += parseFloat(p.Info.unRealizedProfit)
})
}
var t = exchange.GetTicker()
tbl.rows.push([currTotalEq, realProfit, t ? t.Last : "--", (buyOrder.Price + "/" + buyOrder.Amount), (sellOrder.Price + "/" + sellOrder.Amount)])
// 更新图表数据
if (t && showLine) {
_.each(pos, function(p) {
$.PlotLine(descType[p.Type] + "持仓价格", p.Price)
})
$.PlotLine("买单挂单价格", buyOrder.Price)
$.PlotLine("卖单挂单价格", sellOrder.Price)
$.PlotLine("当前价格", t.Last)
}
// 更新状态栏数据
LogStatus("时间:" + _D() + "\n" + "`" + JSON.stringify(tblPos) + "`" + "\n" + "`" + JSON.stringify(tbl) + "`")
Thay thế những thứ đơn giản trước đâyLogStatus
Xuất phát
LogStatus(_D(), "当前总权益:", currTotalEq, "持仓:", pos)
Trong khi đó, các chiến lược đã thêm 2 tham số:
showLine Khi chọn, bạn có thể sử dụng thư viện lớp học vẽ trên trang thực để vẽ giá nắm giữ, giá đặt hàng, đường cong giá hiện tại.
SpecifyPosField Sử dụng để thiết lập các trường dữ liệu nguyên thủy để hiển thị thông tin nắm giữ, vì tên của các trường dữ liệu nguyên thủy của mỗi sàn giao dịch là khác nhau. Vì vậy, hãy thiết kế một tham số tùy chỉnh để chỉ định tên trường để hiển thị. Ví dụ, máy tính của tôi:
Tôi muốn hiển thị dữ liệu thông tin lưu trữ trong trường Info (đối với giao diện giao dịch dữ liệu gốc)unRealizedProfit
Thuộc tính, giữ không đạt được lợi nhuận. Bạn có thể đặt tham số SpecifyPosField thành unRealizedProfit.
Thiết kế tương tự như vậy có thể cho phép chính sách điều chỉnh đầu ra đối với dữ liệu không thống nhất, cho phép người dùng tùy chỉnh nội dung đầu ra của mình.
Bạn có thể thấy dữ liệu cần hiển thị một cách dễ dàng. Quan sát chiến lược tiến độ giao dịch, giá cổ phiếu hiện tại, lợi nhuận, lỗ, giá đặt hàng là rất thuận tiện. Chiến lược có một số rủi ro, thực tế dựa trên rủi ro của mình để kiểm soát các tham số cụ thể, tự chịu lợi nhuận và tổn thất. Chiến lược công khai chỉ được sử dụng để trao đổi và học tập.
AAA386Có vẻ như n = 1 trong mã nguồn không thể hiện ý nghĩa?
Người ẩn dật.XAUUSD tương đối tăng, giảm, không có một vòng đồng tiền mạnh mẽ như vậy
Ồ.Một số loại tiền tệ, một số tiền tệ, một số tiền tệ, một số tiền tệ, một số tiền tệ, một số tiền tệ, một số tiền tệ.
Những nhà phát minh định lượng - những giấc mơ nhỏCó thể thiết kế, nhưng cảm thấy rủi ro lớn hơn, vì vậy viết chết n = 1.
Những nhà phát minh định lượng - những giấc mơ nhỏVâng, bởi vì các cặp giao dịch khác nhau, giá khác nhau rất nhiều, không thể hiển thị sự khác biệt giá sử dụng trực quan, cần phải được thiết kế theo tỷ lệ phần trăm. Nếu muốn tiếp tục sử dụng sự khác biệt giá, bạn cần phải thiết lập một tham số số liệu để thiết lập sự khác biệt giá của các loại khác nhau.