Chiến lược giao dịch định lượng với phân tích động lực giá trong Python

Tác giả:Lydia., Tạo: 2023-01-11 11:35:36, Cập nhật: 2023-09-20 11:20:06

img

Chiến lược giao dịch định lượng với phân tích động lực giá trong Python

Giới thiệu về chiến lược giao dịch động lực giá

Chiến lược giao dịch động lực phân tích việc so sánh các lực vị trí dài và ngắ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, điều này gián tiếp cho phép chúng ta hiểu sự phân bố hiện tại của các lực dài và ngắn trên thị trường.

Phân tích động lượng giá đã được sử dụng rộng rãi trong các lệnh đầu cơ 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. Câu chuyện cổ điển cũ, những gì là để tận dụng tình hình. Việc định lượng tốt nhất của tình hình là định lượng sự so sánh sức mạnh giữa hai bên vị trí dài và ngắn. Phân tích động lượng giá là một trong những chỉ số tốt nhất.

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

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

AR = [Tổng tất cả (High-Open) trong N ngày / Tổng tất cả (Open-Low) trong N ngày] * 100

Trong số đó có:

  • N: Cửa sổ thống kê của chu kỳ thời gian hàng ngày thường là 30 ngày theo mặc định, bởi vì ngày giao dịch hiệu quả của một tháng là khoảng 30 ngày (giao dịch tiền kỹ thuật số 24/7, có thể thận trọng)

  • Cao: giá cao nhất trong một ngày

  • Mở: giá mở của một ngày duy nhất

  • Giá thấp nhất trong một ngày

Làm thế nào để sử dụng động lực giá

Động lực 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.

  • Chúng ta giả định rằng giá trị này là khoảng 100. Nếu nó lớn hơn 100, lực vị trí dài bắt đầu tăng. Nếu nó nhỏ hơn 100, lực vị trí ngắn bắt đầu tập trung.
  • Khi giá trị AR tăng lên, điều đó có nghĩa là thị trường đang hoạt động và phổ biến, và các vị trí dài đang tăng vọt, nhưng nếu giá quá cao, điều đó có nghĩa là giá đã bước vào khu vực mua quá mức và bạn nên chọn thời gian để đóng vị trí. Không có tiêu chuẩn cụ thể cho chiều cao của giá trị AR. Nói chung, khi giá trị AR tăng lên khoảng 120, giá có khả năng giảm lại.
  • Khi giá trị AR giảm, nó chỉ ra rằng thị trường đang giảm, và vị trí ngắn đang ở trong làn sóng đầy đủ, đòi hỏi những nỗ lực của các vị trí dài. Nếu giá trị AR quá thấp, nó chỉ ra rằng giá có thể đã rơi vào khu vực bán quá mức, và bạn có thể xem xét chờ đợi cơ hội đi dài. Nói chung, khi giá trị AR giảm xuống dưới 50, giá sẽ ngừng giảm và tăng bất cứ lúc nào.

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

Thực hiện chiến lược giao dịch định lượng cho đà tăng giá trong Python

Như thường lệ, chúng tôi mởFMZ.COM, đăng nhập vào tài khoản của chúng tôi, nhấp vào Dashboard, và triển khai docker và robot.

Vui lòng tham khảo bài viết trước của tôi về cách triển khai một docker và robot:https://www.fmz.com/bbs-topic/9864.

Người đọc muốn mua máy chủ điện toán đám mây của riêng mình để triển khai các dockers có thể tham khảo bài viết này:https://www.fmz.com/digest-topic/5711.

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 Thêm chiến lược.

Hãy nhớ để chọn ngôn ngữ lập trình như Python ở góc trên bên phải của trang chỉnh sửa chiến lược, như được hiển thị trong hình:

img

Tiếp theo, chúng tôi sẽ viết mã Python vào trang chỉnh sửa mã. Mã sau có những bình luận chi tiết rất chi tiết, bạn có thể dành thời gian để hiểu. Quan trọng hơn, mặc dù chiến lược này được viết dựa trên giao dịch tại chỗ, tính mở rộng của mã sau cũng tính đến giao dịch tương lai. Người đọc quan tâm có thể thử viết lại mã sau vào giao dịch tương lai. Lý thuyết của chính chiến lược là phổ quát. Trên nền tảng FMZ Quant, chúng tôi đã chuẩn bị các giao diện API của các giao dịch tương lai và giao dịch tương lai lớn cho bạn, vì vậy 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 điểm Bitcoin của Huobi làm mục tiêu giao dịch và bắt đầu thực hiện chiến lược này:

import types # Import the Types module library, which is designed to handle the various data types that will be used in the code.
def main(): # The main function, where the strategy logic begins.
    IDLE = 0 # It is used to mark the position status, which can be understood as 0, that is, idle status, i.e. short position status.
    LONG = 1 # Long positions
    SHORT = 2 # Short position. Note that this strategy is applied to the spot market, so there is no short opening or position. This is written here to facilitate understanding of the strategy and future expansion (such as extending to the futures market).
    state = IDLE # Variables that mark the status of a position
    while True: # Enter the loop
        r = exchange.GetRecords() # GetRecords is the official API of the FMZ Quant Platform, for detailed usage please refer to: https://www.fmz.com/api.
        if len(r) <= 1: # Judge whether the K-line is larger than one, that is, whether it is currently in the open state, or it may enter an endless loop. Here, it is also convenient for readers to expand, and the trend state of a larger K-line period is more stable.
           Log("The number of bars is not enough, wait for the next bar...") # Output logs
           continue # Python loop control statement, continuing with the next part of the loop.

        # Begin quantitative analysis of price momentum
        ar = sum(r.High - r.Open) / sum(r.Open - r.Low) * 100 # Calculation formula

        account = _C(exchange.GetAccount) # Get account information, _C is also the official API of the FMZ Quant platform, for usage, please refer to: https://www.fmz.com/api.

        if ar < 95 and (state == IDLE or state == SHORT) :  # If the AR value is less than the oversold line and the account has funds, then buy all positions.
           
           if account["Balance"] > 50:
                exchange.Buy(-1, account["Balance"] * 0.9) # Buy all positions of the market order
                state = LONG # Change the position status to LONG
                  
        elif ar > 80 and (state == IDLE or state == LONG):  # If the AR value is greater than the overbought line and the account has a position, sell the whole position.
            
           if account["Stocks"] > 0.01:
                exchange.Sell(-1, account["Stocks"] * 0.9) # Sell all positions market order
                state = SHORT # Change the position status to SHORT
                      
        LogStatus(_D(), exchange.GetAccount() , state) # Update log information

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 nó để xem nó hoạt động như thế nào trong dữ liệu lịch sử. Nhưng xin lưu ý rằng kết quả của backtest không bằng với dự đoán tương lai. Backtest chỉ có thể được sử dụng như một tham chiếu để xem xét hiệu quả của chiến lược của chúng ta. Một khi thị trường thay đổi và chiến lược bắt đầu có tổn thất lớn, chúng ta nên tìm ra vấn đề kịp thời, và sau đó thay đổi chiến lược để thích nghi với môi trường thị trường mới, chẳng hạn như ngưỡng đã đề cập ở trên. Nếu chiến lược có lỗ lớn hơn 10%, chúng ta nên ngừng hoạt động của chiến lược ngay lập tức, và sau đó tìm ra vấn đề. Chúng ta có thể bắt đầu điều chỉnh ngưỡng.

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

Thời gian backtest là 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.

img

Kết quả kiểm tra hậu quả:

img

Chúng ta có thể thấy rằng chiến lược hoạt động tốt trong backtest của tháng này.

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

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

  • Nhược điểm Sử dụng giá trị đà tăng giá một cách độc lập để đánh giá giá liệu giá có quá cao hay quá thấp, để đánh giá dài / ngắn, nó có khả năng ra sớm trong một làn sóng xu hướng lớn, hoặc đến đáy câu cá sớm trong một làn sóng thị trường giảm lớn.

Định ngưỡng của chiến lược cũng cần phải được xác định theo đặc điểm của đối tượng giao dịch. Sự biến động giá của thị trường tiền kỹ thuật số tương đối lớn, và khối lượng giao dịch rất lớn, đặc biệt là trên các loại tiền tệ chính như Bitcoin, và không có giới hạn về tăng và giảm, vì vậy giá ngưỡng cao hơn so với thị trường chứng khoán truyền thống. Đường bán quá mức 80 thường khó chạm vào và có ít tín hiệu mua; Trong khi đường mua quá mức 170 thường nằm dưới ngưỡng, tín hiệu bán thường được kích hoạt. Điều này sẽ khiến chiến lược ở vị trí ngắn hầu hết thời gian, và việc sử dụng quỹ trở nên rất thấp. Ví dụ, kể từ tháng 1 năm nay, giá Bitcoin đã tăng từ 3500 lên gần 13000 trong một làn sóng thị trường bò. Giá ngưỡng đã vượt qua đường 170 rất sớm và chúng ta đã rất cao. Nếu theo đường mua quá mức truyền thống, chúng ta sẽ chỉ bán ở mức thấp hơn 170 và chỉ có một phần lợi nhuận trong thị trường bò, sau đó sẽ có một tín hiệu bán quá mức 5000.

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

Nếu bạn có bất kỳ câu hỏi nào, bạn có thể để lại tin nhắn tạihttps://www.fmz.com/bbs, cho dù đó là về chiến lược hoặc công nghệ của nền tảng, nền tảng FMZ Quant có các chuyên gia sẵn sàng trả lời câu hỏi của bạn.


Có liên quan

Thêm nữa