hans123 chiến lược đột phá trong ngày

Tác giả:Tốt, Tạo: 2020-08-12 11:38:39, Cập nhật: 2023-10-10 21:15:02

img

Lời giới thiệu

Chiến lược HANS123 đầu tiên được áp dụng chủ yếu cho thị trường ngoại hối. Phương pháp giao dịch của nó tương đối đơn giản và thuộc về hệ thống đột phá xu hướng. Phương pháp giao dịch này có thể nhập thị trường ngay khi xu hướng được hình thành, vì vậy nó được nhiều nhà giao dịch ưa thích. Cho đến nay, HANS123 đã mở rộng rất nhiều phiên bản, hãy cùng nhau hiểu và triển khai chiến lược HANS123.

img

Nguyên tắc chiến lược

Một số người tin rằng việc mở thị trường vào buổi sáng là thời điểm thị trường có sự phân kỳ lớn nhất. Sau khoảng 30 phút, thị trường đã tiêu hóa đầy đủ tất cả các loại thông tin qua đêm, và xu hướng giá sẽ có xu hướng hợp lý và trở lại bình thường. Nói cách khác: xu hướng thị trường trong 30 phút đầu tiên về cơ bản tạo thành mô hình giao dịch tổng thể ngày hôm nay.

  • Đường sắt trên: giá cao nhất trong vòng 30 phút sau khi mở
  • Đường sắt dưới: giá thấp nhất trong vòng 30 phút sau khi mở cửa

Các điểm cao và thấp tương đối được tạo ra tại thời điểm này tạo thành các điểm cao và thấp hiệu quả trong Lý thuyết Dow, và chiến lược HANS123 là logic giao dịch được thiết lập bởi điều này. Trong thị trường tương lai trong nước, thị trường mở lúc 09:00 sáng, và lúc 09:30 bạn có thể đánh giá liệu nó có dài hay ngắn ngày hôm nay. Khi giá vượt qua điểm cao lên, giá sẽ dễ dàng tiếp tục tăng; khi giá vượt qua điểm thấp xuống, giá sẽ dễ dàng tiếp tục giảm.

  • Mở vị trí dài: Hiện tại không có vị trí giữ và giá phá vỡ trên đường ray trên
  • Mở vị trí ngắn: Hiện tại không có vị trí giữ và giá phá vỡ dưới đường sắt dưới

Mặc dù chiến lược đột phá có thể đi vào thị trường ngay khi xu hướng được hình thành. Nhưng lợi thế này cũng là một thanh kiếm hai lưỡi. Do sự gia nhập nhạy cảm, đột phá giá đã thất bại. Vì vậy, cần thiết phải thiết lập dừng lỗ. Đồng thời, để đạt được chiến lược logic của chiến thắng và thua lỗ, phải thiết lập lợi nhuận.

  • Định vị dài dừng lỗ: vị trí dài hiện tại đã đạt đến số tiền lỗ
  • Stop loss vị trí ngắn: vị trí ngắn hiện tại đã đạt đến số tiền lỗ
  • Lấy lợi nhuận cho các vị trí dài, giữ các vị trí dài và đạt được số tiền lợi nhuận
  • Lấy lợi nhuận cho các vị trí ngắn, giữ các vị trí ngắn và đạt được số tiền lợi nhuận

Viết chiến lược

Mở theo lượt:fmz.comwebsite> Login > Dashboard > Strategy Library > New Strategy > Nhấp vào menu thả xuống ở góc trên bên phải để chọn ngôn ngữ Python và bắt đầu 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() # execute strategy main function
        Sleep(1000) # Sleep for 1 second

Viết một khuôn khổ chiến lược, điều này đã được học trong chương trước, một làonTickchức năng, và một làmainchức năng, trong đóonTickchức năng được thực hiện trong một vòng lặp vô tận trongmain function.

Bước 2: Định nghĩa các biến toàn cầu

up_line = 0 # upper rail
down_line = 0 # lower rail
trade_count = 0 # Number of transactions on the day

Vì các đường ray trên và dưới chỉ được đếm vào lúc 09:30, và không có thống kê được thực hiện trong phần còn lại của thời gian, chúng ta cần phải viết hai biến này bên ngoài vòng lặp.trade_countTrước khi sử dụng hai biến toàn cầu này trong chức năng chính củaonTickchiến lược, bạn cần phải sử dụngglobaltừ khóa để tham khảo.

Bước 3: Nhận dữ liệu

exchange.SetContractType("rb888") # Subscribe to futures varieties
bar_arr = _C(exchange.GetRecords, PERIOD_M1) # Get 1-minute K line array
current_close = bar_arr[-1]['Close'] # Get the latest price
if len(bar_arr) <50: # If less than 50 k line bars
    return # Return to continue waiting for data

Để thu thập dữ liệu, trước tiên sử dụngSetContractTypechức năng trong nền tảng FMZ API để đăng ký các loại tương lai, và sau đó sử dụng cácGetRecordsBạn cũng có thể đi vào K-line mảng xác địnhPERIOD_M11phút khi sử dụngGetRecords function.

Bước tiếp theo là lấy giá mới nhất, được sử dụng để xác định mối quan hệ vị trí giữa giá hiện tại và đường ray trên và dưới. Đồng thời, khi đặt lệnh bằng chức năng Mua hoặc Bán, bạn cần phải truyền vào giá đã chỉ định. Ngoài ra, đừng quên lọc số lượng thanh đường k, bởi vì nếu số lượng thanh đường k quá ít, sẽ có một lỗi không thể tính toán được.

Bước 4: Chức năng thời gian xử lý

def current_time():
    current_time = bar_arr[-1]['Time'] # Get current K-line timestamp
    time_local = time.localtime(current_time / 1000) # Processing timestamp
    hour = time.strftime("%H", time_local) # Format the timestamp and get the hour
    minute = time.strftime("%M", time_local) # Format the timestamp and get the minute
    if len(minute) == 1:
        minute = "0" + minute
    return int(hour + minute)

Khi tính toán các đường ray trên và dưới và đặt lệnh, cần phải đánh giá xem thời gian hiện tại có phù hợp với thời gian giao dịch được chỉ định bởi chúng tôi không, vì vậy để tạo điều kiện cho việc đánh giá, chúng tôi cần phải xử lý các giờ và phút cụ thể của dòng K hiện tại.

Bước 5: Tính toán đường ray trên và dưới

global up_line, down_line, trade_count # Introduce global variables
current_time = current_time() # processing time
if current_time == 930: # If the latest K-line time is 09:30
    up_line = TA.Highest(bar_arr, 30,'High') + count # The highest price of the first 30 k line bars
    down_line = TA.Lowest(bar_arr, 30,'Low')-count # The lowest price of the first 30 ke line bars
    trade_count = 0 # Reset the number of transactions to 0

Bước 6: Nhận vị trí

position_arr = _C(exchange.GetPosition) # Get position array
if len(position_arr) > 0: # If the position array length is greater than 0
    position_arr = position_arr[0] # Get position dictionary data
    if position_arr['ContractType'] =='rb888': # If the position symbol is equal to the subscription symbol
        if position_arr['Type']% 2 == 0: # If it is a long position
            position = position_arr['Amount'] # The number of assigned positions is a positive number
        else:
            position = -position_arr['Amount'] # Assign a negative number of positions
        profit = position_arr['Profit'] # Get position profit and loss
else:
    position = 0 # The number of assigned positions is 0
    profit = 0 # Assign position profit and loss to 0

Tình trạng vị trí liên quan đến chiến lược logic. mười bài học đầu tiên của chúng tôi luôn luôn sử dụng vị trí nắm giữ ảo, nhưng trong một môi trường giao dịch thực sự, nó là tốt nhất để sử dụng cácGetPositionchức năng để có được thông tin về vị trí thực, bao gồm: hướng vị trí, lợi nhuận và lỗ vị trí, số lượng vị trí, v.v.

Bước 7: Đặt hàng

# If it is close to market closing or reach taking profit and stopping loss
if current_time > 1450 or profit > stop * 3 or profit < -stop:
    if position > 0: # If holding a long position
        exchange.SetDirection("closebuy") # Set transaction direction and type
        exchange.Sell(current_close-1, 1) # Close long order
    elif position <0: # If holding an empty order
        exchange.SetDirection("closesell") # Set transaction direction and type
        exchange.Buy(current_close + 1, 1) # Close short order
# If there is no current position, and it is less than the specified number of transactions, and within the specified trading time
if position == 0 and trade_count < 2 and 930 < current_time < 1450:
    if current_close > up_line: # If the price is greater than the upper line
        exchange.SetDirection("buy") # Set transaction direction and type
        exchange.Buy(current_close + 1, 1) # Open long order
        trade_count = trade_count + 1 # Increase the number of transactions
    elif current_close < down_line: # If the price is less than the lower line
        exchange.SetDirection("sell") # Set transaction direction and type
        exchange.Sell(current_close-1, 1) # Open a short order
        trade_count = trade_count + 1 # Increase the number of transactions

Để tránh các lỗi logic trong chiến lược, tốt nhất là viết logic vị trí đóng trước logic vị trí mở. Trong chiến lược này, khi mở một vị trí, trước tiên xác định trạng thái vị trí hiện tại, liệu nó có nằm trong thời gian giao dịch được chỉ định hay không, và sau đó xác định mối quan hệ giữa giá hiện tại và đường ray trên và dưới. Để đóng một vị trí, trước tiên xác định xem nó có gần đóng thị trường hay không, hoặc liệu nó đã đạt đến các điều kiện lấy lợi nhuận và dừng lỗ.

HANS123 là một chiến lược giao dịch tự động rất điển hình và rất hiệu quả. Nguyên tắc cơ bản của nó là phá vỡ giá cao nhất hoặc thấp nhất của thị trường trước đó trong một khoảng thời gian nhất định. Hệ thống có thể được áp dụng cho hầu hết các sản phẩm ngoại hối có lợi nhuận ổn định. Đây cũng là một chế độ giao dịch nhập cảnh sớm, với công nghệ lọc thích hợp, hoặc có thể cải thiện tỷ lệ thắng của nó.

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

Nhấp để sao chép mã nguồn chiến lược đầy đủhttps://www.fmz.com/strategy/179805backtest không cấu hình

Kết thúc

Trên đây là nguyên tắc và phân tích mã của chiến lược HANS123. Trên thực tế, chiến lược HANS123 cung cấp một thời gian tốt hơn để vào thị trường. Bạn cũng có thể cải thiện thời gian thoát theo sự hiểu biết của bạn về thị trường và sự hiểu biết về giao dịch, hoặc theo sự biến động của đa dạng Để tối ưu hóa các thông số như lấy lợi nhuận và dừng lỗ để đạt được kết quả tốt hơn.


Có liên quan

Thêm nữa