增加交易策略、交易指标、量化库代码等文件夹

This commit is contained in:
Win_home committed 2025-04-27 15:54:09 +08:00
1 parent ca3b209096
commit f57150dae8
589 files changed
+854346 -1757

No files matched your search

+196
View File
@@ -0,0 +1,196 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"https://mp.weixin.qq.com/s/myBYHS0EVJyy8JQ0i-ZA8g"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Ultimate Smoother:终极指标平滑器"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"终极平滑器(Ultimate Smoother)是由交易系统和算法交易策略开发者John Ehlers设计的一种数学工具,用于金融数据的平滑处理,它使用高通滤波器从价格曲线中减去高频成分,实现了其强大的平滑能力。终极平滑器旨在减少价格数据中的高频噪声,同时保持对市场趋势的敏感性,从而提供一个更加清晰和平滑的价格曲线表示。"
]
},
{
"attachments": {
"image.png": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABDgAAAIjCAIAAABpszy6AAAgAElEQVR4Aey991cVWb7/PX/C/f17f5k7d9Zz5/muWc+suXfN3Nt9xzQmGgxtQBtBhzhiGGlwDNjGNnYL2GJoFWySCgItIIqoICBJiRIlCucAJ3Iip3LV55ldG45H9NhqqzD62asW1qmwa9erqlz1rk/6BWBDAkgACSABJIAEkAASQAJIAAlMMwK/mGbjweEgASSABJAAEkACSAAJIAEkgAQAhQreBEgACSABJIAEkAASQAJIAAlMOwIoVKbdJcEBIQEkgASQABJAAkgACSABJIBCBe8BJIAEkAASQAJIAAkgASSABKYdARQq0+6S4ICQABJAAkgACSABJIAEkAASQKGC9wASQAJIAAkgASSABJAAEkAC044ACpVpd0lwQEgACSABJIAEkAASQAJIAAmgUMF7AAkgASSABJAAEkACSAAJIIE3IaBMtDfZ+af2mdZCZeLEX/bvT50grkcCSAAJIAEkgASQABJAAkjg7RPwfEd/+73DNK6jIsuyJErCTzVJlHBCAkgACSABJIAEkAASQAJI4L0RkD0alSsfl1ABAPYVGocNCSABJIAEkAASQAJIAAkggfdIgOd5QRAkUZJl+SMVKhqNJiEhYefOnQcPHtzppe3AhgSQABJAAkgACSABJIAEkMB7IRAbGxsVFbVjx47Y2NjMzEyr1QpqexduYNM6RuXBgwdz58719/ffvHnzVi8tBhsSQAJIAAkgASSABJAAEkAC74VAVFRUdHT0pk2bPv300+DgYIPBIMsyAHx0QqWtrc3X1/fK5Stms9nipZmxIQEkgASQABJAAkgACSABJPBeCBgMBqvVqtFoDh48GBoaqtfrP1KLSktLy5IlS3JycqhQoxTwLxJAAkgACSABJIAEkAASQAJTSIBl2fj4+LCwsMHBQUVRPl6LSn5+viAI78KcNIVXFw+NBJAAEkACSAAJIIH3QMDzDcojUdNPzL635FHT5EA/geO51dNk2O9hGPTU6V3kebtSoRIcHDw0NAQA7pD657f03Ot156d1jAp1/UKh8roXFbdHAkgACSABJIAEkAASQALvjgAKFUCh8u5uL+wZCSABJIAEkAAS+HgIeNpVXmX+ORPCB77gVZh4bvOB4/A4Pc+z9nxeqFAJCQkZHh6e5PdFPcE8N37j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 truncated
}
},
"cell_type": "markdown",
"metadata": {},
"source": [
"![image.png](attachment:image.png)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"终极平滑器的工作原理基于以下几个关键概念:\n",
"\n",
"高通滤波器(Highpass Filter):这是一种信号处理技术,用于去除信号中的低频成分,只允许高频成分通过。在金融分析中,这意味着可以减少价格数据中的长期趋势和周期性波动,从而突出短期的价格变动。\n",
"减法操作:终极平滑器通过从原始价格数据中减去其高通滤波后的版本来工作。这样,低频成分(如长期趋势)被去除,而高频成分(如短期波动)被保留。\n",
"指数移动平均(EMA):虽然终极平滑器本身不直接使用EMA,但EMA是一种常见的平滑技术,通过给予最近的数据更多的权重来计算平均值。终极平滑器的设计哲学与EMA相似,但采用了不同的数学方法来实现平滑效果。\n",
"数学公式:终极平滑器使用特定的数学公式来计算平滑后的价格。这涉及到一些三角函数和指数函数的计算,以确定如何从原始数据中减去高频成分。\n",
"无滞后(Lag-Free):终极平滑器的一个关键特点是无滞后,这意味着它在计算平滑价格时不需要未来的数据。这对于实时交易系统来说非常重要,因为它们需要即时的反应。\n",
"自适应性:终极平滑器可以根据不同的市场条件调整其平滑参数,以实现最佳的平滑效果。"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"# import pandas_ta as ta\n",
"# import akshare as ak\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {},
"outputs": [],
"source": [
"def ultimate_smoother(price, period):\n",
" # 初始化变量\n",
" a1 = np.exp(-1.414 * np.pi / period)\n",
" b1 = 2 * a1 * np.cos(1.414 * 180 / period)\n",
" c2 = b1\n",
" c3 = -a1 * a1\n",
" c1 = (1 + c2 - c3) / 4\n",
" \n",
" # 准备输出结果的序列\n",
" us = np.zeros(len(price))\n",
" \n",
" # 计算 Ultimate Smoother\n",
" for i in range(len(price)):\n",
" if i < 4:\n",
" us[i] = price[i]\n",
" else:\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",
" return us"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {},
"outputs": [],
"source": [
"df_new = pd.read_csv(r\"E:\\of_data\\主力连续\\tick生成的OF数据(5M)\\data_rs_merged\\中金所\\IM888\\IM888_rs_2023_5T_back_ofdata_dj.csv\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"df_new.iloc[-1]"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {},
"outputs": [],
"source": [
"df_new[\"UltimateSmoother\"] = ultimate_smoother(df_new[\"close\"].values, 20)"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA+IAAAH5CAYAAAAFlIQ6AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdd3RU5dbH8e+ZSe8kkEoCofdeRVQUxd47tmtBvSr29ur12nvv7Vqv3WtXEFRUUASk11ADgXTSe6a8f5yZSYcEkkwCv89arIRzzpzZk6Lsefazt+F0Op2IiIiIiIiISLuweDsAERERERERkYOJEnERERERERGRdqREXERERERERKQdKREXERERERERaUdKxEVERERERETakRJxERERERERkXakRFxERERERESkHfl4O4C24nA4SE9PJzQ0FMMwvB2OiIiIiIiIHOCcTifFxcXEx8djsTS97n3AJuLp6ekkJiZ6OwwRERERERE5yKSlpdG9e/cmzx+wiXhoaChgfgHCwsK8HI2IiIiIiIgc6IqKikhMTPTko005YBNxdzl6WFiYEnERERERERFpN3vbHq1mbSIiIiIiIiLtSIm4iIiIiIiISDtSIi4iIiIiIiLSjg7YPeIiIiIiItJx2O12qqurvR2GyH7x9fXFarXu932UiIuIiIiISJtxOp1kZmZSUFDg7VBEWkVERASxsbF7bci2J0rERURERESkzbiT8OjoaIKCgvYreRHxJqfTSVlZGdnZ2QDExcXt872UiIuIiIiISJuw2+2eJDwqKsrb4Yjst8DAQACys7OJjo7e5zJ1NWsTEREREZE24d4THhQU5OVIRFqP++d5f3oeKBEXEREREZE2pXJ0OZC0xs+zEnERERERERGRdqREXERERERERKQdKREXERERERHZB4Zh8NVXX3k7DOmElIiLiIiIiIg0IjMzk+uuu45evXrh7+9PYmIiJ510Ej///LO3Q5NOTuPLRERERERE6klNTWXSpElERETwxBNPMHToUKqrq/nxxx+55ppr2LBhg7dDlE5MK+IiIiIiItJunE4nZVU2r/xxOp3NjvOf//wnhmGwePFizjjjDPr168fgwYO56aab+Ouvvxp9zOrVqznyyCMJDAwkKiqKGTNmUFJS4jn/66+/Mm7cOIKDg4mIiGDSpEls377dc/7rr79m1KhRBAQE0KtX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 truncated
"text/plain": [
"<Figure size 1200x600 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"df_new = df_new.iloc[-480:-240]\n",
"\n",
"plt.figure(figsize=(12, 6))\n",
"plt.plot(df_new.index, df_new['close'], label='Close')\n",
"plt.plot(df_new.index, df_new['UltimateSmoother'], label='Ultimate Smoother', linestyle='--')\n",
"plt.legend()\n",
"\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# 获取数据\n",
"df = ak.stock_zh_index_daily(symbol=\"sh000001\").iloc[-270:]\n",
"df = df.set_index(\"date\")\n",
"period = 20\n",
"\n",
"df[\"UltimateSmoother\"] = ultimate_smoother(df[\"close\"].values, period)\n",
"df[\"EMA\"] = df.ta.ema(length=period).values\n",
"df[\"SMA\"] = df.ta.sma(length=period).values\n",
"\n",
"\n",
"\n",
"df = df.iloc[-200:]\n",
"\n",
"plt.figure(figsize=(12, 6))\n",
"plt.plot(df.index, df['close'], label='Close')\n",
"plt.plot(df.index, df['EMA'], label='EMA', linestyle='--')\n",
"plt.plot(df.index, df['SMA'], label='SMA', linestyle='--')\n",
"plt.plot(df.index, df['UltimateSmoother'], label='Ultimate Smoother', linestyle='--')\n",
"plt.legend()\n",
"\n",
"plt.show()"
]
}
],
"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
}