avatar of 发明者量化-小小梦 发明者量化-小小梦
tập trung vào tin nhắn riêng tư
4
tập trung vào
1271
Người theo dõi

Chiến lược luồng lệnh tuyến tính được phát triển dựa trên hàm phát lại dữ liệu

Được tạo ra trong: 2019-12-13 17:13:07, cập nhật trên: 2024-12-15 16:04:23
comments   3
hits   2355

Chiến lược luồng lệnh tuyến tính được phát triển dựa trên hàm phát lại dữ liệu

Lời nói đầu

Mọi người thường nói rằng giao dịch là một nghệ thuật và nghệ thuật xuất phát từ cảm hứng. Vì vậy, hôm nay tôi muốn chia sẻ với các bạn cách sử dụng chức năng Phát lại dữ liệu quantitative Data của Inventor để khám phá nguồn cảm hứng giao dịch của riêng bạn.

Cảm hứng giao dịch và nhận thức thị trường

Những gì chúng ta thường gọi là cảm hứng chính là trạng thái sáng tạo mà con người trải nghiệm ngay trong quá trình suy nghĩ. Đối với các nhà giao dịch, bán cầu não trái của chúng ta hoàn thiện việc xây dựng một loạt các quy tắc như viết chiến lược, phân bổ vốn và thiết lập thông số. Những cảm hứng giao dịch và nhận thức về thị trường đến từ bán cầu não phải.

Nhiều người đã nghe thuật ngữ “cảm xúc thị trường”, đó là một cảm giác khó diễn tả, như thể những gì đang diễn ra hiện nay có vẻ quen thuộc. Khi giao dịch, trực giác giống như giác quan thứ sáu này, mặc dù không dựa trên lý luận và phân tích logic, sẽ thúc đẩy các nhà giao dịch đưa ra quyết định mua hoặc bán dựa trên linh cảm của họ về xu hướng thị trường trong tương lai.

Làm thế nào để có được cảm hứng

Đối với người ngoài cuộc, thị giác là một tài năng bí ẩn giúp bạn chiến thắng mà không cần bất kỳ động thái nào. Nhờ có nó, bạn có thể có được chỗ đứng trên thị trường. Trên thực tế, cảm quan thị trường là bản tóm tắt kinh nghiệm giao dịch chủ quan của não. Đó là cảm giác dự đoán mơ hồ có được qua nhiều năm theo dõi thị trường.

Mặc dù nói một cách nghiêm túc thì cảm hứng không hoàn toàn ngang bằng với trực giác thị trường, nhưng tôi tin rằng sau hàng nghìn lần trải nghiệm trên thị trường, mọi người sẽ hiểu sâu hơn về thị trường và sẽ thành thạo trong việc xây dựng chiến lược. Do đó, nếu bạn muốn có được tài năng này và phát triển thêm nhiều chiến lược giao dịch thì không còn cách nào khác ngoài việc luyện tập cho đến khi có cơ hội. Chỉ thông qua số lượng lớn giao dịch, bạn mới có thể hoàn thiện hệ thống giao dịch của mình.

Tuy nhiên, hàng hóa tương lai trong nước và cổ phiếu chỉ có vài giờ giao dịch mỗi ngày. Nếu bạn chỉ cải thiện kinh nghiệm quan sát thị trường thông qua giao dịch thực tế, hình thành mô hình lợi nhuận và quy tắc giao dịch của riêng mình và rèn luyện phản xạ có điều kiện của mình một cách vô thức, nó sẽ khó có thể đạt được thành công. Tôi không thể làm được điều đó. Ngoài việc phải trả chi phí thời gian dài hơn, hầu hết các nhà giao dịch còn phải chịu chi phí mất vốn. Để giải quyết vấn đề này, các nhà phát minh đã phát triển định lượng một chức năng phát lại dữ liệu.

Cách sử dụng Phát lại dữ liệu

Chức năng phát lại dữ liệu có thể được đào tạo mà không bị hạn chế bởi giờ giao dịch của sàn giao dịch và hỗ trợ nhiều loại hàng hóa tương lai và tiền kỹ thuật số. Các điều kiện thị trường có thể được phát lại thủ công hoặc tự động và thời gian bắt đầu và kết thúc của các điều kiện thị trường lịch sử và tốc độ phát lại có thể được thiết lập tự do. So với các phần mềm khác thường sử dụng phương pháp phát lại dữ liệu K-line, Inventor Quantitative sử dụng phương pháp phát lại dữ liệu theo cấp độ Tick, đây là môi trường kiểm tra ngược thực sự gần với giao dịch thực tế, tái tạo dữ liệu giá và khối lượng, cho phép các nhà giao dịch đắm mình vào trải nghiệm.

Mở trang web chính thức của Inventor Quantitative (fmz.com), đăng ký và đăng nhập, sau đó nhấp vào Data Exploration trong trung tâm điều khiển để hiển thị trang chức năng phát lại dữ liệu. Có bốn hộp tùy chọn và một nút chọn. Đầu tiên, nhấp vào nút chọn để chỉ hiển thị các loại hỗ trợ phát lại theo thời gian thực. Sau đó, chọn loại cần phát lại ở góc trên bên trái, rồi chọn bắt đầu và kết thúc thời gian của dữ liệu trong hai hộp tùy chọn tiếp theo. Chọn khoảng thời gian dữ liệu là phát lại thời gian thực và cuối cùng nhấp vào nút Đi ở phía bên phải để bắt đầu chức năng phát lại dữ liệu.

Chiến lược luồng lệnh tuyến tính được phát triển dựa trên hàm phát lại dữ liệu

Có ba phần bên dưới nhãn dữ liệu. Bên trái là lịch sử giao dịch, hiển thị tất cả các lệnh đã thực hiện theo thứ tự thời gian. Ở giữa là dữ liệu thị trường với 20 cấp độ sâu cho cả mua và bán. Bên phải là khu vực điều khiển phát lại dữ liệu, nơi bạn có thể chọn phương pháp phát lại dữ liệu thủ công hoặc tự động, dễ dàng như sử dụng trình phát phương tiện.

Chiến lược luồng lệnh tuyến tính được phát triển dựa trên hàm phát lại dữ liệu

Có thể kéo chỉ số vị trí qua lại để nhanh chóng chọn thời gian bắt đầu phát lại dữ liệu.

Chiến lược luồng lệnh tuyến tính được phát triển dựa trên hàm phát lại dữ liệu

Ở phía dưới, bạn cũng có thể kiểm soát tốc độ phát lại dữ liệu bằng cách di chuyển con trỏ sang phải hoặc trái. Đơn vị thời gian là mili giây. Bạn có thể tăng tốc hoặc làm chậm quá trình phát lại dữ liệu.

Chiến lược luồng lệnh tuyến tính được phát triển dựa trên hàm phát lại dữ liệu

Xây dựng logic chiến lược

Mặc dù có nhiều yếu tố ảnh hưởng đến biến động giá cả, bao gồm: môi trường kinh tế toàn cầu, chính sách kinh tế vĩ mô quốc gia, chính sách công nghiệp có liên quan, mối quan hệ cung cầu, sự kiện quốc tế, lãi suất và tỷ giá hối đoái, lạm phát và giảm phát, tâm lý thị trường, các yếu tố chưa biết, v.v. , tình hình thị trường cuối cùng Mức giá trên là kết quả của sự cạnh tranh giữa phe mua và phe bán. Nếu số người mua nhiều hơn số người bán, giá sẽ tăng; ngược lại, nếu số người bán nhiều hơn số người mua, giá sẽ giảm. Sau đó chúng ta chỉ cần phân tích giá để đưa ra chiến lược giao dịch.

Thông qua quá trình phát lại định lượng cặp giao dịch btc_usdt trên Sàn giao dịch Binance trong tháng qua, chúng tôi nhận thấy rằng khi thị trường tăng vọt hoặc giảm mạnh, khối lượng lệnh của bên mua và bên bán trong sổ lệnh dữ liệu Tick rõ ràng là không đối xứng. Khi thị trường tăng mạnh, khối lượng lệnh mua lớn hơn đáng kể so với khối lượng lệnh bán; khi thị trường giảm mạnh, khối lượng lệnh bán nhỏ hơn đáng kể so với khối lượng lệnh mua. Vậy chúng ta có thể dự đoán được sự tăng giảm giá trong thời gian ngắn dựa trên số lượng lệnh trong sổ lệnh không?

Câu trả lời là có.

Chiến lược luồng lệnh tuyến tính được phát triển dựa trên hàm phát lại dữ liệu Chiến lược luồng lệnh tuyến tính được phát triển dựa trên hàm phát lại dữ liệu

Chúng tôi có thể thu thập dữ liệu đánh dấu sâu, tính toán khối lượng lệnh mua và lệnh bán và so sánh chúng. Nếu khối lượng kết hợp của lệnh mua và lệnh bán rất khác nhau, thì đó có thể là cơ hội mua hoặc bán tiềm năng. Ví dụ, khi số lượng lệnh mua dài hạn gấp N lần số lượng lệnh bán ngắn hạn, chúng ta có thể cho rằng hầu hết mọi người trên thị trường đều lạc quan và khả năng giá tăng trong ngắn hạn sẽ tăng lên; khi số lượng lệnh bán ngắn hạn gấp N lần so với lệnh mua, Lúc này, chúng ta có thể cho rằng hầu hết mọi người trên thị trường đều bi quan và khả năng giá giảm trong ngắn hạn trong tương lai sẽ tăng lên.

Viết chiến lược giao dịch

Theo logic chiến lược trên, hãy bắt đầu triển khai nó bằng mã. Mở theo trình tự: Trang web fmz.com > Đăng nhập > Trung tâm điều khiển > Thư viện chính sách > Chính sách mới > Nhấp vào menu thả xuống ở góc trên bên phải và chọn ngôn ngữ Python để bắt đầu viết chính sách. Chiến lược này chỉ là điểm khởi đầu cho việc giảng dạy, vì vậy tôi cố gắng trình bày ngắn gọn nhất có thể. Vui lòng chú ý đến các bình luận trong mã bên dưới.

Bước 1: Viết khuôn khổ chính sách

# 策略主函数
def onTick():
    pass


# 程序入口
def main():
    while True:  # 进入无限循环模式
        onTick()  # 执行策略主函数
        Sleep(1000)  # 休眠1秒

Khi viết chiến lược, chúng ta nên viết từ lớn đến nhỏ, giống như xây nhà, trước tiên là xây khung rồi mới xây tường. Trong khuôn khổ này, chúng tôi sử dụng hai hàm: hàm main và hàm onTick. Chức năng chính là điểm vào của chương trình, nghĩa là chương trình sẽ được thực thi từ đây, sau đó vào chế độ lặp vô hạn, thực thi hàm onTick nhiều lần. Sau đó chúng ta chỉ cần viết nội dung chiến lược vào hàm onTick.

Bước 2: Viết các biến toàn cục

vol_ratio_arr = []  # 多空挂单比率数组
mp = 0  # 虚拟持仓

Lý do tại sao vol_ratio_arr được định nghĩa là một biến toàn cục là vì chiến lược của tôi cần thu thập tỷ lệ các lệnh dài và lệnh ngắn trong một khoảng thời gian của dữ liệu Tick. Nếu chúng ta đặt biến vol_ratio_arr trong hàm onTick, thì rõ ràng là không hợp lý khi chạy với vòng lặp. Điều chúng ta cần là Trong một mẫu, giá trị của một biến chỉ thay đổi khi một điều kiện nhất định được đáp ứng. Cách tiếp cận hợp lý nhất là đặt biến ra ngoài vòng lặp.

Quản lý vị thế rất cần thiết vì nó liên quan đến logic mua và bán. Nói chung, trong giao dịch giao ngay, chúng ta tính toán các cặp tiền tệ được nắm giữ bằng cách lấy tài khoản. Để đơn giản hóa mã, một biến vị trí ảo toàn cục được định nghĩa trực tiếp tại đây để kiểm soát logic mua và bán.

Bước 3: Tính tỷ lệ dài-ngắn hiện tại

depth = exchange.GetDepth()  # 获取深度数据
asks = depth['Asks']  # 获取卖价数组
bids = depth['Bids']  # 获取买价数组
asks_vol = 0  # 所有卖价挂单
bids_vol = 0  # 所有买价挂单
for index, ask in enumerate(asks):  # 遍历卖价数组
    # 线性计算所有卖价挂单
    asks_vol = asks_vol + ask['Amount'] * (20 - index)
for index, bid in enumerate(bids):  # 遍历买价数组
    # 线性计算所有买价挂单
    bids_vol = bids_vol + bid['Amount'] * (20 - index)
bidask_ratio = bids_vol / asks_vol  # 计算多空比率

Như chúng ta đã biết, tiền kỹ thuật số thường có 20 cấp độ dữ liệu độ sâu, vì vậy chúng ta có thể cộng các lệnh mua và lệnh bán để tính tỷ lệ mua và bán. Khi giá trị này lớn hơn 1, điều đó có nghĩa là có nhiều người lạc quan hơn giảm giá. , chỉ ra rằng giá sẽ tăng trong ngắn hạn trong tương lai; khi giá trị này nhỏ hơn 1, điều đó có nghĩa là số lượng người giảm giá lớn hơn số lượng người tăng giá, chỉ ra rằng giá sẽ giảm trong ngắn hạn trong tương lai.

Nhưng có một điều cần phân biệt. Lệnh chờ càng gần với giá thị trường thì tâm lý tăng giá hoặc giảm giá càng mạnh. Ví dụ, lệnh mua được đặt ở mức đầu tiên chắc chắn cho thấy tâm lý tăng giá mạnh hơn lệnh mua được đặt ở cấp độ 20. Do đó, khi tích lũy các lệnh chờ, chúng ta cần đưa ra các trọng số khác nhau cho 20 lệnh theo cách tuyến tính, điều này sẽ hợp lý hơn.

Bước 4: Tính toán tuyến tính tỷ lệ dài-ngắn trong một khoảng thời gian

global vol_ratio_arr, mp  # 引入全局变量
vol_ratio_arr.insert(0, bidask_ratio)  # 把多空比率放到全局变量数组里面
if len(vol_ratio_arr) > 20:  # 如果数组超过指定长度
    vol_ratio_arr.pop()  # 删除最旧的元素
all_ratio = 0  # 临时变量,所有多空挂单比率
all_num = 0  # 临时变量,所有线性乘数
for index, vol_ratio in enumerate(vol_ratio_arr):  # 变量全局变量数组
    num = 20 - index  # 线性乘数
    all_num = all_num + num  # 线性乘数累加
    all_ratio = all_ratio + vol_ratio * num  # 所有多空挂单比率累加
ratio = all_ratio / all_num  # 线性多空挂单比率

Tỷ lệ dài-ngắn có thể thu được bằng cách chia các lệnh dài tích lũy cho các lệnh ngắn tích lũy, nhưng đây chỉ là dữ liệu của một tick. Có thể không phải là lựa chọn khôn ngoan khi quyết định mua và bán giao dịch dựa trên dữ liệu chỉ một tick , bởi vì trong thị trường luôn thay đổi, một tích tắc có thể thay đổi xu hướng thị trường. Dữ liệu tích tắc không thuyết phục. Do đó, chúng ta cần thu thập dữ liệu tích tắc trong một khoảng thời gian cố định, sau đó sử dụng phép tính tuyến tính để có được giá trị hợp lý.

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

last_ask_price = asks[0]['Price']  # 最新卖一价,用于买入的价格
last_bid_price = bids[0]['Price']  # 最新买一价,用于卖出的价格
if mp == 0 and ratio > buy_threshold:  # 如果当前无持币,并且比率大于指定值
    exchange.Buy(last_ask_price, 0.01)  # 买入
    mp = 1  # 设置虚拟持仓的值
if mp == 1 and ratio < sell_threshold:  # 如果当前持币,并且比率小于指定值
    exchange.Sell(last_bid_price, 0.01)  # 卖出
    mp = 0  # 重置虚拟持仓的值

Vì chúng ta cần phải chỉ định giá khi đặt lệnh nên chúng ta có thể sử dụng trực tiếp giá chào bán mới nhất khi mua và giá chào mua mới nhất khi bán. Cuối cùng, sau khi lệnh được đặt và giao dịch hoàn tất, hãy thiết lập lại giá trị của vị thế ảo.

Phần kết luận

Trên đây là phân tích mã của chiến lược luồng lệnh tuyến tính được phát triển dựa trên hàm phát lại dữ liệu. Nếu bạn là người mới bắt đầu giao dịch, hàm phát lại dữ liệu có thể giúp bạn học giao dịch với chi phí bằng không và rút ngắn thời gian hiểu giao dịch. Nó thường mất vài năm để học giao dịch trong giao dịch thực tế hoặc mô phỏng. Kết quả ban đầu đã thấy. Hiệu ứng tương tự có thể đạt được sau vài tuần sử dụng chức năng phát lại dữ liệu, cho phép bạn học giao dịch với mức thua lỗ tối thiểu mà không lãng phí thời gian. Đối với các nhà giao dịch nâng cao, việc xem xét động có thể giúp bạn phân tích các vấn đề trong quá khứ, xác minh và cải thiện các chiến lược giao dịch, tăng sự tự tin của nhà giao dịch vào các chiến lược và giúp tạo ra nguồn cảm hứng cho các chiến lược mới.