添加实盘和模拟盘交易相关脚本和配置文件
- 新增实盘和模拟盘交易相关批处理脚本和Python脚本 - 添加交易数据记录和时间同步相关文件 - 包含交易策略、行情数据处理和定时任务脚本 - 新增交易品种和费率信息CSV文件
This commit is contained in:
181
999.账户相关/simnow_trader/traderdata/akshare数据下载.ipynb
Normal file
181
999.账户相关/simnow_trader/traderdata/akshare数据下载.ipynb
Normal file
@@ -0,0 +1,181 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"import akshare as ak\n",
|
||||
"import pandas as pd\n",
|
||||
"import numpy as np\n",
|
||||
"import os\n",
|
||||
"import ast\n",
|
||||
"import time"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"symbol_name = 'rb2505'\n",
|
||||
"# 获取当前工作目录\n",
|
||||
"current_directory = os.getcwd()\n",
|
||||
"print(\"当前工作目录:\", current_directory)\n",
|
||||
"# 设置新的工作目录\n",
|
||||
"new_directory = \"C:/Users/zhouj/Desktop\"\n",
|
||||
"os.chdir(new_directory) \n",
|
||||
"# 验证新的工作目录\n",
|
||||
"updated_directory = os.getcwd()\n",
|
||||
"print(\"已更改为新的工作目录:\", updated_directory)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"futures_zh_minute_sina_df = ak.futures_zh_minute_sina(symbol=symbol_name, period=\"5\")\n",
|
||||
"print(futures_zh_minute_sina_df)\n",
|
||||
"\n",
|
||||
"df = pd.read_csv(f\"{symbol_name}_ofdata.csv\", usecols=range(12))\n",
|
||||
"df.tail(1)\n",
|
||||
"\n",
|
||||
"def ultimate_smoother(price, period):\n",
|
||||
" # 初始化变量(修正角度单位为弧度)\n",
|
||||
" a1 = np.exp(-1.414 * np.pi / period)\n",
|
||||
" b1 = 2 * a1 * np.cos(1.414 * np.pi / period) # 将180改为np.pi\n",
|
||||
" c2 = b1\n",
|
||||
" c3 = -a1**2\n",
|
||||
" c1 = (1 + c2 - c3) / 4\n",
|
||||
"\n",
|
||||
" # 准备输出序列\n",
|
||||
" us = np.zeros(len(price))\n",
|
||||
" us_new = np.zeros(len(price))\n",
|
||||
" trend = [None] * (len(price))\n",
|
||||
" ma_close = np.zeros(len(price))\n",
|
||||
"\n",
|
||||
" # 前4个点用原始价格初始化\n",
|
||||
" for i in range(len(price)):\n",
|
||||
" if i < 4:\n",
|
||||
" us[i] = price[i]\n",
|
||||
" else:\n",
|
||||
" # 应用递归公式\n",
|
||||
" us[i] = (1 - c1) * price[i] + (2 * c1 - c2) * price[i-1] \\\n",
|
||||
" - (c1 + c3) * price[i-2] + c2 * us[i-1] + c3 * us[i-2]\n",
|
||||
"\n",
|
||||
" us_new = np.around(us, decimals=2)\n",
|
||||
" ma_close = price.rolling(window=5 * period).mean()\n",
|
||||
"\n",
|
||||
" if us_new[i] > price[i] and ma_close[i] > price[i]:\n",
|
||||
" trend[i] = '空头趋势'\n",
|
||||
" elif us_new[i] < price[i] and ma_close[i] < price[i]:\n",
|
||||
" trend[i] = '多头趋势'\n",
|
||||
" else:\n",
|
||||
" trend[i] = '无趋势'\n",
|
||||
"\n",
|
||||
" return us_new, trend"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"futures_zh_minute_sina_df['datetime'] = pd.to_datetime(futures_zh_minute_sina_df['datetime'])\n",
|
||||
"futures_zh_minute_sina_df['终极平滑值'], futures_zh_minute_sina_df[\n",
|
||||
" '趋势方向'] = ultimate_smoother(futures_zh_minute_sina_df[\"close\"], 48)\n",
|
||||
"\n",
|
||||
"# 设置索引\n",
|
||||
"df['datetime'] = pd.to_datetime(df['datetime'])\n",
|
||||
"df = df.set_index('datetime')\n",
|
||||
"futures_zh_minute_sina_df = futures_zh_minute_sina_df.set_index('datetime')"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"df_new = futures_zh_minute_sina_df.join(df[['price', 'Ask', 'Bid', 'delta','dj']], how='left')"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"df_new['symbol'] = symbol_name\n",
|
||||
"df_new = df_new.reset_index()\n",
|
||||
"cols = [\n",
|
||||
" 'price', 'Ask', 'Bid', 'symbol', 'datetime', 'delta', 'close', 'open',\n",
|
||||
" 'high', 'low', 'volume', 'hold', 'dj', '终极平滑值', '趋势方向'\n",
|
||||
"]\n",
|
||||
"df_new = df_new[cols]"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"df_new.head(5)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"df_new.tail(5)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"del df_new['hold'],df_new['终极平滑值'],df_new['趋势方向']"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"df_new.to_csv(f\"{symbol_name}_ofdata_new.csv\", index=False)"
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "Python 3",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 3
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.10.9"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 2
|
||||
}
|
||||
Reference in New Issue
Block a user