Type/to search
8
Follow
1365
Followers
Phiên bản Python của chiến lược cân bằng nền tảng đơn
Discussions
Created 2020-02-05 10:02:03  Updated 2023-10-12 21:20:47
 1
 2967

img

Phiên bản Python của chiến lược cân bằng nền tảng đơn

Phiên bản JavaScript

Địa chỉ chiến lược: https://www.fmz.com/strategy/345

Trong bài viết này, chúng ta hãy thực hành chuyển một chiến lược JavaScript đơn giản. Bằng cách cấy ghép các chiến lược, bạn sẽ trở nên quen thuộc hơn với các cuộc gọi của giao diện Inventor Quantitative Trading Platform và hiểu được những khác biệt nhỏ giữa các ngôn ngữ khác nhau khi phát triển các chiến lược trên nền tảng. Trên thực tế, sự khác biệt giữa chiến lược phiên bản JavaScript và phiên bản Python chiến lược rất nhỏ vì các lệnh gọi giao diện về cơ bản là giống nhau.

Mô tả chiến lược

Trích dẫn từ phiên bản JavaScript của hướng dẫn:

Điều này đòi hỏi phải mở một vị thế. Ví dụ, nếu tài khoản có 5.000 nhân dân tệ và 1 đồng xu, nếu giá trị của đồng xu lớn hơn số dư tài khoản là 5.000 và chênh lệch giá vượt quá ngưỡng, ví dụ, đồng xu hiện có giá trị là 6.000 nhân dân tệ, sau đó bán (6.000-5.000)/6.000. /2 đồng, nghĩa là đồng tiền đã tăng giá, đổi tiền lại, nếu đồng tiền mất giá, ví dụ, xuống còn 4.000 nhân dân tệ, hãy mua (5.000-4.000)/4.000/2 tiền xu, mua lại một số khi đồng xu giảm, nếu nó tăng trở lại, tôi sẽ bán nó một lần nữa, giống như một sự cân bằng, với các biện pháp phòng ngừa khác nhau ở cả hai bên, vì vậy tôi gọi nó là chiến lược cân bằng.

Nguyên lý chiến lược rất đơn giản và phiên bản mã JavaScript không dài, chỉ hơn 70 dòng. Được chuyển sang chiến lược ngôn ngữ Python với cú pháp ngắn gọn hơn, mã ngắn hơn và rất phù hợp với người mới bắt đầu học. Có rất nhiều mã được các nhà phát triển chia sẻ trên Nền tảng giao dịch định lượng Inventor và ngôn ngữ hỗ trợJavaScript/C++/PythonV.v., việc thành thạo thêm một ngôn ngữ phát triển không chỉ hữu ích cho việc học tập, nghiên cứu và các chiến lược phát triển mà còn cho phép bạn trở nên quen thuộc hơn với nhiều giao diện API khác nhau của nền tảng.

Mã chiến lược

'''backtest start: 2019-12-01 00:00:00 end: 2020-02-01 11:00:00 period: 1m exchanges: [{"eid":"OKEX","currency":"BTC_USDT","stocks":1}] ''' InitAccount = None def CancelPendingOrders(): ret = False while True: orders = _C(exchange.GetOrders) if len(orders) == 0 : return ret for j in range(len(orders)): exchange.CancelOrder(orders[j].Id) ret = True if j < len(orders) - 1: Sleep(Interval) return ret def onTick(): acc = _C(exchange.GetAccount) ticker = _C(exchange.GetTicker) spread = ticker.Sell - ticker.Buy diffAsset = (acc.Balance - (acc.Stocks * ticker.Sell)) / 2 ratio = diffAsset / acc.Balance LogStatus("ratio:", ratio, _D()) if abs(ratio) < threshold: return False if ratio > 0 : buyPrice = _N(ticker.Sell + spread, ZPrecision) buyAmount = _N(diffAsset / buyPrice, XPrecision) if buyAmount < MinStock: return False exchange.Buy(buyPrice, buyAmount, diffAsset, ratio) else : sellPrice = _N(ticker.Buy - spread, ZPrecision) sellAmount = _N(-diffAsset / sellPrice, XPrecision) if sellAmount < MinStock: return False exchange.Sell(sellPrice, sellAmount, diffAsset, ratio) return True def main(): global InitAccount, LoopInterval InitAccount = _C(exchange.GetAccount) LoopInterval = max(LoopInterval, 1) while True: if onTick(): Sleep(1000) CancelPendingOrders() Log(_C(exchange.GetAccount)) Sleep(LoopInterval * 1000)

Mã bắt đầu bằng

'''backtest start: 2019-12-01 00:00:00 end: 2020-02-01 11:00:00 period: 1m exchanges: [{"eid":"OKEX","currency":"BTC_USDT","stocks":1}] '''

Đây là cấu hình kiểm thử ngược, nghĩa là cấu hình kiểm thử ngược (cài đặt) được lưu dưới dạng mã và kiểm thử ngược được tự động cấu hình theo cài đặt này. Phần này có thể bị xóa. Nếu bị xóa, bạn sẽ cần phải thiết lập thủ công thông tin cấu hình backtest trên trang backtest trong quá trình backtest.
Tham khảo: https://www.fmz.com/bbs-topic/859

Các tham số của chiến lược này hoàn toàn giống với các tham số của phiên bản JavaScript. Mã chiến lược cũng được ghép từng câu một và cấu trúc chương trình không thay đổi. Bạn có thể so sánh chúng từng câu một để thấy sự khác biệt giữa các chiến lược được viết bằng các ngôn ngữ khác nhau ngôn ngữ.

Kiểm tra ngược

Cấu hình tham số
img

Thống kê
img

img

Địa chỉ chiến lược: https://www.fmz.com/strategy/183374

Chiến lược này chỉ mang tính tham khảo, kiểm tra ngược và thử nghiệm. Nếu bạn quan tâm, bạn có thể tối ưu hóa và nâng cấp.

Related Recommendations
Comment
All comments (1)

    好牛啊

    4 years ago
  • 1
iPhone Download
Forums
PINE Language
© 2015 - ∞ INVENTOR PTE LTD (SG)