Chiến lược giao dịch BIAS tỷ lệ lệ lệch

Tác giả:Tốt, Tạo: 2020-06-30 09:58:26, Cập nhật: 2023-10-28 15:29:08

[TOC]

img

Tóm lại

Như câu nói, Thế giới này sẽ tách ra sau khi đoàn kết lâu dài. Cũng sẽ làm ngược lại sau khi chia ra lâu dài. Và hiện tượng này cũng tồn tại trong thị trường tương lai. Không có sự đa dạng mà chỉ tăng nhưng không giảm. Nhưng khi nào tăng và khi nào giảm, nó phụ thuộc vào tỷ lệ lệ lệ lệch. Trong bài viết này, chúng tôi sẽ sử dụng tỷ lệ lệ lệch để xây dựng một chiến lược giao dịch đơn giản.

Giới thiệu ngắn

img

Tỷ lệ lệ lệch BIAS là một chỉ số kỹ thuật bắt nguồn từ trung bình động. Nó chủ yếu ở dạng tỷ lệ phần trăm để đo mức độ lệch giá từ trung bình động trong biến động. Nếu trung bình động là chi phí trung bình của nhà giao dịch, tỷ lệ lệ lệch là tỷ lệ lợi nhuận trung bình của nhà giao dịch.

Nguyên tắc tỷ lệ lệ lệch

Cơ sở lý thuyết của tỷ lệ lệ lệ lệch là phân tích trái tim của nhà giao dịch. Khi giá lớn hơn chi phí trung bình của thị trường, điều đó có nghĩa là các nhà giao dịch vị trí dài sẽ có ý tưởng rút tiền lợi nhuận, điều này sẽ làm cho giá giảm. Khi giá thấp hơn chi phí trung bình của thị trường, điều đó có nghĩa là người bán ngắn có lợi nhuận, và ý tưởng rút tiền lợi nhuận sẽ làm cho giá tăng.

  • Khi giá lệch lên từ đường trung bình động, tỷ lệ lệ lệch quá lớn và có khả năng cao giá sẽ giảm trong tương lai.

  • Khi giá chênh lệch so với đường trung bình động xuống, tỷ lệ chênh lệch quá nhỏ và có khả năng cao giá sẽ tăng trong tương lai.

Mặc dù giá trung bình động được tính từ giá, về hình thức bên ngoài, giá chắc chắn sẽ di chuyển gần hơn với giá trung bình động, hoặc giá sẽ luôn dao động xung quanh giá trung bình động. Nếu giá lệch quá xa so với giá trung bình động, bất kể giá trên hay dưới giá trung bình động, cuối cùng nó có thể có xu hướng đến giá trung bình động, và tỷ lệ lệ lệch là giá trị phần trăm mà giá lệch so với giá trung bình động.

Công thức tính tỷ lệ lệ lệch

Tỷ lệ lệ lệch = [(giá đóng của ngày - giá trung bình ngày N) / giá trung bình ngày N] * 100%

Trong số đó, N là tham số trung bình động, bởi vì giai đoạn của N là khác nhau, kết quả tính toán của tỷ lệ lệ lệch cũng khác nhau. Nói chung, các giá trị của N là: 6, 12, 24, 36, vv. Trong sử dụng thực tế, nó cũng có thể được điều chỉnh năng động theo các giống khác nhau. Tuy nhiên, việc lựa chọn các tham số là rất quan trọng. Nếu tham số quá nhỏ, tỷ lệ lệch sẽ quá nhạy, nếu tham số quá lớn, tỷ lệ lệch sẽ quá chậm. Kết quả tính toán của tỷ lệ lệ lệch là dương và âm. Tỷ lệ lệch dương càng lớn, lợi nhuận của những con bò và xác suất điều chỉnh giá càng lớn. Tỷ lệ lệ lệch ngắn càng lớn, lợi nhuận tiêu cực càng lớn và xác suất phục hồi giá càng lớn.

Chiến lược logic

Vì tỷ lệ lệ lệch là một hình thức khác của trung bình động, thì chúng ta cũng có thể thích nghi một chiến lược tỷ lệ lệ lệch kép dựa trên chiến lược trung bình động đôi. Xét về mối quan hệ vị trí giữa tỷ lệ lệch ngắn hạn và tỷ lệ lệch dài hạn, tình trạng thị trường hiện tại được đánh giá. Nếu tỷ lệ lệch dài hạn lớn hơn tỷ lệ lệch ngắn hạn, nó thực sự đại diện cho trung bình động ngắn hạn vượt qua trung bình động dài hạn, và ngược lại.

  • Mở vị trí dài: nếu không có vị trí nắm giữ hiện tại và tỷ lệ lệ lệch dài hạn lớn hơn tỷ lệ lệ lệch ngắn hạn
  • Khởi mở vị trí ngắn: nếu không có vị trí nắm giữ hiện tại và tỷ lệ lệ lệch dài hạn thấp hơn tỷ lệ lệ lệch ngắn hạn
  • Khóa vị trí dài: nếu có một vị trí dài giữ và tỷ lệ lệ lệch dài hạn thấp hơn tỷ lệ lệch ngắn hạn
  • Đóng vị trí ngắn: nếu có một vị trí ngắn và tỷ lệ lệ lệ lệch dài hạn lớn hơn tỷ lệ lệ lệch ngắn hạn

Viết chiến lược

Bước 1: Viết khung chiến lược

# Strategy main function
def onTick():
     pass


# Program entry
def main():
     while True: # Enter infinite loop mode
         onTick() # execution strategy main function
         Sleep(1000) # sleep for 1 second

Nền tảng FMZ áp dụng chế độ đào tạo luân phiên.mainchức năng vàonTickchức năng cần phải được xác định. chức năng chính là chức năng đầu vào của chiến lược, và chương trình sẽ thực hiện các dòng mã bắt đầu từ chức năng chính. Trong chức năng chính, viết mộtwhilevòng lặp và lặp đi lặp lại thực hiện cáconTickTất cả các mã cốt lõi của chiến lược được viết trongonTick function.

Bước 2: Xác định vị trí ảo

mp = 0

Ưu điểm của các vị trí ảo là nó đơn giản để viết và hoạt động lặp lại nhanh chóng. Nó thường được sử dụng trong môi trường backtest. Người ta giả định rằng mỗi lệnh được hoàn thành hoàn toàn, nhưng vị trí thực tế thường được sử dụng trong giao dịch thực tế. Vì vị trí ảo là để ghi lại trạng thái sau khi mở và đóng, nó cần được định nghĩa là một biến toàn cầu.

Bước 3: Tìm đường K

exchange.SetContractType('rb000') # Subscribe to futures varieties
bars_arr = exchange.GetRecords() # Get K-line array
if len(bars_arr) <long + 1: # If the number of K lines is too small
     return

Sử dụng hàm FMZSetContractType, bạn có thể đăng ký hợp đồng chỉ số thanh thép bằng cách chuyển vào rb000, nhưng trong backtest và tình huống thị trường thực tế, chỉ số thanh thép được sử dụng như là dữ liệu, và hợp đồng chính cụ thể được sử dụng để đặt đơn đặt hàng.GetRecordsVì nó mất một khoảng thời gian nhất định để tính toán tỷ lệ lệ lệch, để tránh lỗi chương trình, nếu không có đủ K đường, sử dụngifcác câu lệnh để lọc.

Bước 4: Tính toán tỷ lệ lệ lệch

close = bars_arr[-2]['Close'] # Get the closing price of the previous K line
ma1 = TA.MA(bars_arr, short)[-2] # Calculate the short-term moving average value of the previous K line
bias1 = (close-ma1) / ma1 * 100 # Calculate the short-term deviation rate value
ma2 = TA.MA(bars_arr, long)[-2] # Calculate the long-term average of the previous K line
bias2 = (close-ma2) / ma2 * 100 # Calculate the long-term deviation rate value

Theo công thức tính toán tỷ lệ lệ lệch, trước tiên chúng ta lấy giá đóng. Trong chiến lược này, chúng ta sử dụng giá đóng K-line trước đó, có nghĩa là tín hiệu K-line hiện tại được thiết lập và K-line tiếp theo là để đặt lệnh. Sau đó sử dụng FMZ tích hợptalibthư viện để tính toán trung bình động. ví dụ, trung bình động là:TA.MAChức năng này nhận được 2 tham số, cụ thể là: K mảng đường và thời gian trung bình động.

Bước 5: Đặt lệnh

global mp # global variables
current_price = bars_arr[-1]['Close'] # latest price
if mp> 0: # If you are holding long positions
    if bias2 <= bias1: # If the long-term deviation rate is less than or equal to the short-term deviation rate
        exchange.SetDirection("closebuy") # Set the trading direction and type
        exchange.Sell(current_price-1, 1) # Closing long positions
        mp = 0 # reset virtual holding positions
if mp <0: # If you are holding short positions
    if bias2 >= bias1: # If the long-term deviation rate is greater than or equal to the short-term deviation rate
        exchange.SetDirection("closesell") # Set the trading direction and type
        exchange.Buy(current_price + 1, 1) # closing short positions
        mp = 0 # reset virtual holding positions
if mp == 0: # If there is no holding position
    if bias2> bias1: # Long-term deviation rate is greater than short-term deviation rate
        exchange.SetDirection("buy") # Set the trading direction and type
        exchange.Buy(current_price + 1, 1) # open long positions
        mp = 1 # reset virtual holding position
    if bias2 <bias1: # The long-term deviation rate is less than the short-term deviation rate
        exchange.SetDirection("sell") # Set the trading direction and type
        exchange.Sell(current_price-1, 1) # open short positions
        mp = -1 # reset virtual holding position

Chiến lược hoàn chỉnh

# Backtest configuration
'''backtest
start: 2018-01-01 00:00:00
end: 2020-01-01 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_CTP","currency":"FUTURES"}]
'''

# External parameters
short = 10
long = 50


# Global variables
mp = 0


# Strategy main function
def onTick():
    # retrieve data
    exchange.SetContractType('rb000') # Subscribe to futures varieties
    bars_arr = exchange.GetRecords() # Get K-line array
    if len(bars_arr) <long + 1: # If the number of K lines is too small
        return

    # Calculate BIAS
    close = bars_arr[-2]['Close'] # Get the closing price of the previous K line
    ma1 = TA.MA(bars_arr, short)[-2] # Calculate the short-term moving average of the previous K line
    bias1 = (close-ma1) / ma1 * 100 # Calculate the short-term deviation rate value
    ma2 = TA.MA(bars_arr, long)[-2] # Calculate the long-term average of the previous K line
    bias2 = (close-ma2) / ma2 * 100 # Calculate the long-term deviation rate value

    # Placing Orders
    global mp # global variables
    current_price = bars_arr[-1]['Close'] # latest price
    if mp> 0: # If you are holding long positions
        if bias2 <= bias1: # If the long-term deviation rate is less than or equal to the short-term deviation rate
            exchange.SetDirection("closebuy") # Set the trading direction and type
            exchange.Sell(current_price-1, 1) # closing long positions
            mp = 0 # reset virtual holding position
    if mp <0: # If you are holding short positions
        if bias2 >= bias1: # If the long-term deviation rate is greater than or equal to the short-term deviation rate
            exchange.SetDirection("closesell") # Set the trading direction and type
            exchange.Buy(current_price + 1, 1) # closing short positions
            mp = 0 # reset virtual holding position
    if mp == 0: # If there is no holding position
        if bias2> bias1: # Long-term deviation rate is greater than short-term deviation rate
            exchange.SetDirection("buy") # Set the trading direction and type
            exchange.Buy(current_price + 1, 1) # opening long positions
            mp = 1 # reset virtual holding position
        if bias2 <bias1: # The long-term deviation rate is less than the short-term deviation rate
            exchange.SetDirection("sell") # Set the trading direction and type
            exchange.Sell(current_price-1, 1) # open short positions
            mp = -1 # reset virtual holding position
        

# Program entry function
def main():
    while True: # loop
        onTick() # execution strategy main function
        Sleep(1000) # sleep for 1 second

Chiến lược hoàn chỉnh đã được công bố trên trang web FMZ:https://www.fmz.com/strategy/215129

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

Cấu hình backtest

img

Báo cáo hiệu suất

img img

Đường cong quỹ

img

Tóm lại

Tỷ lệ lệ lệch là một công cụ giao dịch đơn giản và hiệu quả có thể cung cấp một tham chiếu hiệu quả cho các nhà giao dịch.


Có liên quan

Thêm nữa