我檢查了這個專案,發現源專案是在Linux上開發且路徑設定可能有些問題,於是我做出了一些專案結構上的調整,並依據我調整的路徑結構,重寫了三個需要使用到的腳本內容:
mkdir MacroHFT
cd MacroHFT
git clone https://github.com/ZONG0004/MacroHFT.git
setup.py
放在專案根目錄下。MacroHFT
裡的 data
資料夾複製到外層資料夾中。data
資料夾下,解壓縮後命名為 ETHUSDT
。pip install -e .
readme.md
中提到的幾個腳本,將其改寫為 .bat
檔案。最終產生了三個腳本:decomposition.bat
、low_level.bat
和 high_level.bat
。最後,我的資料夾結構如下:
MacroHFT (專案根目錄)
|--- .vscode
|--- launch.json
|--- setup.py
|--- data
|--- ETHUSDT-20241003T120716Z-001.zip
|--- ETHUSDT
|--- feature_list
|--- decomposition.bat
|--- low_level.bat
|--- high_level.bat
|--- MacroHFT
|--- .git
|--- data
|--- env
|--- model
|...... (其他專案內容)
接下來,根據 readme.md
中的說明,依序執行以下三個步驟:
執行數據前處理:
decomposition.bat
執行 low_level 訓練:
low_level.bat
執行 high_level 訓練:
high_level.bat
decomposition.bat
的內容如下:
python -u ./MacroHFT/preprocess/decomposition.py
low_level.bat
則是逐一執行每個訓練指令,適合單顯卡使用:
@echo off
mkdir .\logs\low_level\ETHUSDT 2>nul
python -u ./MacroHFT/RL/agent/low_level.py --alpha 1 --clf slope --dataset ETHUSDT --device cuda:0 --label label_1 > .\logs\low_level\ETHUSDT\slope_1.log 2>&1
python -u ./MacroHFT/RL/agent/low_level.py --alpha 4 --clf slope --dataset ETHUSDT --device cuda:0 --label label_2 > .\logs\low_level\ETHUSDT\slope_2.log 2>&1
python -u ./MacroHFT/RL/agent/low_level.py --alpha 0 --clf slope --dataset ETHUSDT --device cuda:0 --label label_3 > .\logs\low_level\ETHUSDT\slope_3.log 2>&1
python -u ./MacroHFT/RL/agent/low_level.py --alpha 4 --clf vol --dataset ETHUSDT --device cuda:0 --label label_1 > .\logs\low_level\ETHUSDT\vol_1.log 2>&1
python -u ./MacroHFT/RL/agent/low_level.py --alpha 1 --clf vol --dataset ETHUSDT --device cuda:0 --label label_2 > .\logs\low_level\ETHUSDT\vol_2.log 2>&1
python -u ./MacroHFT/RL/agent/low_level.py --alpha 1 --clf vol --dataset ETHUSDT --device cuda:0 --label label_3 > .\logs\low_level\ETHUSDT\vol_3.log 2>&1
high_level.bat
的內容如下:
@echo off
mkdir .\logs\high_level 2>nul
python -u ./MacroHFT/RL/agent/high_level.py --dataset ETHUSDT --device cuda:0 > ./logs/high_level/ETHUSDT.log 2>&1
此外,我在根目錄撰寫了以下 setup.py
來定義專案:
from setuptools import setup, find_packages
import pathlib
ROOT = pathlib.Path(__file__).parent.resolve()
long_description = "Hello, world!"
setup(
name="MacroHFT",
version="0.1.0",
description="A high-frequency trading project using reinforcement learning",
long_description=long_description,
long_description_content_type="text/markdown",
url="https://github.com/yourusername/MacroHFT",
author="Your Name",
author_email="your.email@example.com",
classifiers=[
"Development Status :: 3 - Alpha",
"Intended Audience :: Developers",
"Topic :: Software Development :: Build Tools",
"License :: OSI Approved :: MIT License",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.7",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
],
keywords="high-frequency trading, reinforcement learning, finance",
packages=find_packages(),
python_requires=">=3.7, <4",
install_requires=[
"numpy",
"gym",
"pandas",
"torch",
],
extras_require={
"dev": ["check-manifest"],
"test": ["coverage"],
},
entry_points={
"console_scripts": [
"sample=sample:main",
],
},
project_urls={
"Bug Reports": "https://github.com/yourusername/MacroHFT/issues",
"Source": "https://github.com/yourusername/MacroHFT",
},
)