0
tập trung vào
78
Người theo dõi

Triển khai các chiến lược giao dịch định lượng để phân tích động lực giá bằng Python

Được tạo ra trong: 2019-08-09 15:49:06, cập nhật trên: 2024-12-19 21:03:15
comments   1
hits   3521

Triển khai các chiến lược giao dịch định lượng để phân tích động lực giá bằng Python

Giới thiệu về Chiến lược giao dịch theo đà giá

Chiến lược giao dịch theo động lượng phân tích sự so sánh giữa lực mua và lực bán thông qua mối quan hệ giữa giá mở cửa, giá cao nhất và giá thấp nhất trong một khoảng thời gian nhất định và gián tiếp hiểu được sự phân bổ của lực mua và lực bán trên thị trường hiện tại. Phân tích biến động giá để theo dõi xu hướng giá trong tương lai.

Phân tích động lượng giá được sử dụng rộng rãi trong giao dịch thủ công truyền thống, đặc biệt là trong việc xác định xu hướng đơn phương trong ngày. Đây là một chủ đề phổ biến, xu hướng đang diễn ra như thế nào? Cách tốt nhất để định lượng xu hướng là so sánh sức mạnh của cả hai bên dài và ngắn. Xét về mặt so sánh định lượng, phân tích động lực giá là một trong những chỉ báo tốt nhất.

Bài viết này sẽ sử dụng chiến lược này để phát triển chương trình giao dịch tự động cho các loại tiền kỹ thuật số trên Huobi.com.

Công thức tính động lực giá

AR = [Tổng của tất cả (Mở cao) trong N ngày / tổng của tất cả (Mở thấp) trong N ngày] * 100

Trong số đó:

  • N: Cửa sổ thống kê của khoảng thời gian hàng ngày, thường là 30 ngày theo mặc định, vì có khoảng 30 ngày giao dịch hợp lệ trong một tháng (tiền kỹ thuật số được giao dịch 247, vì vậy con số này có thể hơi thận trọng)

  • Cao: Giá cao nhất trong ngày

  • Mở: Giá mở cửa trong ngày

  • Thấp: Giá thấp nhất trong ngày

Cách sử dụng động lực giá

Động lượng giá phản ánh vị trí của giá mở cửa giữa giá cao nhất và giá thấp nhất trong một khoảng thời gian. Vị trí này là cơ sở để chúng ta phán đoán sự giằng co giữa hai bên.

  • Chúng tôi cho rằng giá trị này vào khoảng 100. Nếu vượt quá 100, lực tăng giá bắt đầu tăng và nếu dưới 100, lực giảm giá bắt đầu tích tụ.
  • Khi giá trị AR tăng, điều đó có nghĩa là thị trường đang hoạt động, mức độ phổ biến cao và phe mua đang tiến triển nhanh chóng. Tuy nhiên, nếu quá cao, điều đó có nghĩa là giá đã vào vùng quá mua và bạn nên chọn đúng thời điểm để đóng vị trí. Không có tiêu chuẩn cụ thể nào cho chiều cao của giá trị AR. Nhìn chung, khi giá trị AR tăng lên khoảng 120, giá có khả năng sẽ giảm trở lại.
  • Khi giá trị AR giảm, điều đó có nghĩa là thị trường đang suy thoái, phe gấu đang có tâm trạng tốt và phe bò cần phải làm việc chăm chỉ hơn. Nếu quá thấp, điều đó cho thấy giá có thể đã giảm xuống vùng quá bán và bạn có thể cân nhắc chờ cơ hội để mua vào. Nhìn chung, khi giá trị AR giảm xuống dưới 50, giá sẽ ngừng giảm và thay vào đó sẽ tăng.

Lưu ý: Các con số trên đều là giá trị mặc định và không phải là sự thật. Trong quá trình giao dịch thực tế, chúng ta cần điều chỉnh phạm vi này để thích ứng với điều kiện thị trường hiện tại khi thị trường thay đổi.

Triển khai các chiến lược giao dịch định lượng cho động lực giá bằng Python

Như thường lệ, chúng ta mở FMZ.COM, đăng nhập vào tài khoản, nhấp vào trung tâm điều khiển và triển khai máy chủ và robot.

Để biết thêm thông tin về cách triển khai máy chủ và rô-bốt, vui lòng tham khảo bài viết trước của tôi: https://www.fmz.com/bbs-topic/4140

Bạn đọc muốn mua máy chủ triển khai điện toán đám mây riêng có thể tham khảo bài viết này: https://www.fmz.com/bbs-topic/2848

Tiếp theo, chúng ta nhấp vào Thư viện chiến lược ở cột bên trái và nhấp vào Chiến lược mới.

Ở góc trên bên phải của trang viết chiến lược, hãy nhớ chọn Python làm ngôn ngữ lập trình, như thể hiện trong hình:

Triển khai các chiến lược giao dịch định lượng để phân tích động lực giá bằng Python

Tiếp theo, chúng ta viết mã Python vào trang chỉnh sửa mã. Mã sau đây có các chú thích từng dòng rất chi tiết và người đọc có thể từ từ hiểu và đánh giá cao. Quan trọng hơn, mặc dù chiến lược này được viết dựa trên giao dịch giao ngay, Tuy nhiên, khả năng mở rộng của mã sau cũng tính đến giao dịch tương lai. Độc giả quan tâm có thể thử viết lại mã sau thành giao dịch tương lai. Logic của chiến lược này mang tính phổ quát. Trong Nền tảng định lượng Inventor, chúng tôi đã chuẩn bị sẵn các giao diện API của các sàn giao dịch giao ngay và tương lai lớn cho bạn, do đó công việc viết lại sẽ rất dễ dàng và thuận tiện.

Chúng tôi sẽ sử dụng giao dịch Bitcoin của Huobi làm mục tiêu giao dịch và bắt đầu triển khai chiến lược này:

import types # 导入Types模块库,这是为了应对代码中将要用到的各种数据类型
def main(): # 主函数,策略逻辑从这里开始
    IDLE = 0 # 用来标记持仓状态,可以理解为0即为空闲状态,也就是空仓状态
    LONG = 1 # 多头持仓
    SHORT = 2 # 空头持仓,注意,此策略应用于现货市场,所以不存在空头开仓或者持仓情况,这里这样写,是为了方便理解策略和以后的扩展(如扩展到期货市场)
    state = IDLE # 标记持仓状态的变量
    while True: # 进入循环
        r = exchange.GetRecords() #GetRecords是发明者量化平台的官方API,详细用法请参见:https://www.fmz.com/api
        if len(r) <= 1: # 判断K线是否大于一根,也就是当前是否为开盘状态,否则可能会进入死循环,这里也方便读者进行扩展,大一些的K线周期趋势状态更稳定。
           Log("bar的数量不足, 等待下一根bar...") # 输出日志
           continue # Python循环控制语句,继续下边的循环内容

        # 开始进行价格动量的量化分析
        ar = sum(r.High - r.Open) / sum(r.Open - r.Low) * 100 # 计算公式

        account = _C(exchange.GetAccount) # 获取账户信息,_C同样为发明者量化平台的官方API,用法请参见:https://www.fmz.com/api

        if ar < 95 and (state == IDLE or state == SHORT) :  # AR值小于超卖线且账户拥有资金,则全仓买入
           
           if account["Balance"] > 50:
                exchange.Buy(-1, account["Balance"] * 0.9) # 市价单全仓买入
                state = LONG # 改变持仓状态为LONG
                  
        elif ar > 80 and (state == IDLE or state == LONG):  # AR值大于超买线且账户有持仓,则全仓卖出
            
           if account["Stocks"] > 0.01:
                exchange.Sell(-1, account["Stocks"] * 0.9) # 市价单全仓卖出
                state = SHORT # 改变持仓状态为SHORT
                      
        LogStatus(_D(), exchange.GetAccount() , state) # 更新日志信息

Kiểm tra lại chiến lược

Sau khi viết chiến lược, điều đầu tiên chúng ta cần làm là kiểm tra ngược để xem nó hoạt động như thế nào trong dữ liệu lịch sử. Tuy nhiên, xin lưu ý rằng kết quả kiểm tra ngược không bằng với dự đoán về tương lai. Kiểm tra ngược chỉ có thể được sử dụng như một Tham khảo thông tin để xem xét hiệu quả chiến lược của chúng tôi. Khi thị trường thay đổi và chiến lược bắt đầu chịu tổn thất lớn, chúng ta nên nhanh chóng xác định vấn đề và sau đó thay đổi chiến lược để thích ứng với môi trường thị trường mới. Ví dụ, nếu chiến lược chịu tổn thất hơn 10%, chúng ta nên ngay lập tức dừng chiến lược và tìm kiếm vấn đề, bắt đầu bằng việc điều chỉnh ngưỡng.

Nhấp vào backtest mô phỏng trong trang chỉnh sửa chiến lược. Trên trang backtest, các tham số có thể được điều chỉnh theo các nhu cầu khác nhau để gỡ lỗi thuận tiện và nhanh chóng. Đặc biệt đối với các chiến lược có logic phức tạp và nhiều tham số, không cần phải quay lại mã nguồn và sửa đổi từng cái một.

Đối với thời gian kiểm tra ngược, chúng tôi chọn tháng gần đây nhất, nhấp để thêm sàn giao dịch giao ngay Huobi và mục tiêu giao dịch BTC.

Triển khai các chiến lược giao dịch định lượng để phân tích động lực giá bằng Python

Xem kết quả kiểm tra ngược

Triển khai các chiến lược giao dịch định lượng để phân tích động lực giá bằng Python

Có thể thấy chiến lược này đã hoạt động tốt trong đợt kiểm tra ngược tháng này.

Ưu điểm và nhược điểm của chiến lược động lực giá

  • Thuận lợi

Ưu điểm của động lực giá so với một số chỉ báo kỹ thuật truyền thống khác là thay vì sử dụng một mức giá mở cửa hoặc đóng cửa duy nhất, nó kết hợp mức giá cao nhất và thấp nhất. Chúng được so sánh một cách năng động và thông qua những biến động giá trong ngày, thông tin thị trường trở nên toàn diện hơn, phản ứng nhanh hơn và mang tính vĩ mô hơn.

  • Nhược điểm

Sử dụng giá trị động lượng giá một cách độc lập để đánh giá giá quá cao hay quá thấp, để đánh giá nên mua vào hay bán ra, có khả năng thoát ra quá sớm trong một xu hướng lớn hoặc mua vào đáy quá sớm trong một vụ sụp đổ thị trường lớn. . Nói chung, chiến lược này vẫn thuộc về chiến lược gây sốc hiệu quả.

Ngưỡng thiết lập của chiến lược cũng cần được xác định dựa trên đặc điểm của mục tiêu giao dịch. Biến động giá trên thị trường tiền kỹ thuật số tương đối lớn, khối lượng giao dịch rất lớn, đặc biệt là các loại tiền chính thống như Bitcoin không có giới hạn giá nên ngưỡng cao hơn so với thị trường chứng khoán truyền thống, ngưỡng 80 bị bán quá mức đường này thường khó chạm tới. Do đó, có ít tín hiệu mua hơn; trong khi đường quá mua 170 thường nằm dưới ngưỡng, do đó tín hiệu bán thường được kích hoạt. Điều này sẽ khiến chiến lược này thường ở trạng thái trống khi chạy và tỷ lệ sử dụng vốn sẽ trở nên rất thấp. Kể từ tháng 1 năm nay, Bitcoin đã tăng giá mạnh, với mức giá tăng từ mức cao nhất là 3.500 đô la lên gần 13.000 đô la. Ngưỡng này đã vượt qua ngưỡng 170 rất sớm và vẫn duy trì ở mức cao kể từ đó. Nếu chúng ta bán theo đường quá mua truyền thống là 170, chúng ta sẽ rời khỏi thị trường ở mức khoảng 5.000 và sẽ không có tín hiệu nào để mở vị thế sau đó, vì vậy chúng ta chỉ kiếm được một khoản lợi nhuận nhỏ trong một thị trường tăng giá lớn.

Do đó, chưa bao giờ có bất kỳ chiến lược giao dịch nào là thánh thiện trên thị trường này, một chiến lược có thể kiếm tiền mãi mãi mà không cần kiểm tra lại hoặc gỡ lỗi. Chúng ta, những nhà giao dịch định lượng, giống như những nhà giao dịch chủ quan, cuối cùng đều đạt đến cùng một đích đến. Chúng ta cần thích ứng với những thay đổi của thị trường, thích ứng với các điều kiện địa phương và phản ứng với những hoàn cảnh luôn thay đổi. Khi một chiến lược không hiệu quả, chúng ta cần phải điều chỉnh kịp thời.

Bạn bè có thắc mắc có thể để lại tin nhắn tại https://www.fmz.com/bbs. Cho dù là về chiến lược hay công nghệ nền tảng, Inventor Quantitative Platform đều có đội ngũ nhân viên chuyên nghiệp trả lời bạn bất cứ lúc nào.