Klang(金浪)AI量化论坛

    • 注册
    • 登录
    • 版块
    • 最新
    • 标签
    • 热门
    • 用户
    • 群组

    使用 Python 检测技术突破

    技术讨论
    1
    1
    156
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • H
      hejiasheng 最后由 编辑

      https://medium.datadriveninvestor.com/how-to-algorithmically-detect-technical-chart-patterns-155ca13b7b26

      自动检测技术图表模式是一个有趣的话题,尤其是对于交易者和投资者而言。价格行为交易通常比 MACD、RSI、布林带和 Ichimoku Cloud 等技术指标相关策略具有更高的胜率。然而,通过算法检测支撑和阻力可能很困难,因为没有已知的库或一刀切的技术可以做到这一点。在本文中,我将分享一种使用 Python 中的简单算法来检测技术图表模式的方法。

      首先,让我们导入所有必需的库:

      我们需要数据,其中包括资产的开盘价、最高价、最低价、收盘价 (OHLC)。AlphaVantage是一个获取这些数据的免费平台,尽管许多其他市场数据供应商,如Alpaca和marketstack也免费提供市场数据,当然,对 API 调用的数量和频率有限制。

      在上面的代码中,price_high、prices_low和prices_close包含所选资产的每日最高价、最低价和收盘价。datetime模块用于生成日期以访问 API 响应中包含的数据。如果生成的日期不对应任何数据(例如,在没有交易的周末和公共假期),它将跳过并继续检索第二天的数据。

      https://www.forextrading200.com/
      在趋势市场中,局部低点和高点形成支撑和阻力的参考点。同样在代码中,我们可以使用SciPy库中的argrelextrema 来识别局部最小值和最大值。

      现在,这种方法最重要的部分是绘制趋势线并构建一个筛选器来识别已完成突破的资产。下面的代码表达了这一点的主要思想:

      通过遍历所有局部最大值点,np.polyfit用于通过每 3 个连续的局部最大值点拟合一条方程为y=mx+c的直线。r是直线的残差,它反映了原始点与直线的拟合程度。筛选出梯度太大或太小的线以及拟合不太好的线。

      如上图所示,当且仅当 b 大于 ma+c 时,A 点 (a,b) 位于直线 y=mx+c 上方。因此,如果收盘价高于趋势线,即prices_close[k]>(k*m+c),则称突破已经发生。

      算法检测到的突破之一
      进一步发展
      通过适当的风险/回报率和止损,可以通过该算法开发一个简单而有效的策略来进行金融资产的自动化交易。仍然需要付出很多努力来确定梯度和残差的最合适范围,这些范围因不同的资产和衍生品而异。机器学习方法是解决此问题的一种有趣方法。此外,更具体的图表模式的检测,例如“杯柄”模式也是我未来工作的方向。

      如果您喜欢这篇文章,请点赞或分享给可能感兴趣的人,让更多人看到。谢谢!

      1 条回复 最后回复 回复 引用 0
      • First post
        Last post