Python 数学与股票:如何编程钱德动量指标

本教程视频将引导你用 Python 编程实现 Shawnee Momentum Oscillator (CMO)。

视频假设你已拥有该系列的样本数据,如果没有,描述中有链接可以获取。你需要将数据复制粘贴到记事本文件,并保存到与脚本相同的目录。

视频中提供了前几行代码,你可以直接复制粘贴,也可以跟着视频学习。

首先,导入 numpy 库并命名为 np,以及 time 库。

然后,指定样本数据,打开名为 sample_data.txt 的文本文件,并将其读入内存。

接着,将数据按换行符分割,并使用 numpy.loadtxt 函数将数据加载到变量中,使用逗号作为分隔符,并使用 unpack=True 将数据解包到各个变量中。

接下来,定义 CMO 函数,该函数接受价格数据和时间框架作为参数。

在函数内部,初始化一个空数组 CMO,用来存储计算结果。

使用 while 循环遍历价格数据,对于每个时间框架,计算该时间段内的价格上涨和下跌的总和。

通过将上涨总和减去下跌总和,并除以时间段内所有价格的总和,得到 CMO 值,并将其添加到 CMO 数组中。

最后,返回 CMO 数组,该数组包含了所有时间段的 CMO 值。

视频中还解释了 CMO 的计算原理,以及如何理解 CMO 的结果。

本教程视频涵盖如何编程钱德动量指标 (CMO)。 本系列的目的是教授 Python 中的数学知识。 为此,我们将使用一些技术分析中常用的指标。 对于大多数指标,我们将首先讨论它们及其目的,然后教授如何在 Python 中编程它们,最后在图表上显示它们。基本的图表应用程序来自之前的教程系列,网址:http://www.youtube.com/playlist?list=PLQVvvaa0QuDcR-u9O8LyLR7URiKuW-XZq所需文件:实际图表部分的示例代码:http://sentdex.com/sentiment-analysisbig-data-and-python-tutorials-algorithmic-trading/python-matplotlib-sample-code-charting-stocks-python/Python:http://python.orgNumpy:http://www.lfd.uci.edu/~gohlke/pythonlibs/#numpyMatplotlib:http://matplotlib.org/downloads.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是股票常用指标Python代码示例: 1. 移动平均线(Moving Average) ```python import pandas as pd # 计算20日移动平均线 df['20MA'] = df['close'].rolling(window=20).mean() ``` 2. 相对强弱指标(Relative Strength Index, RSI) ```python import pandas as pd # 计算14日RSI delta = df['close'].diff() gain = delta.where(delta > 0, 0) loss = -delta.where(delta < 0, 0) avg_gain = gain.rolling(window=14).mean() avg_loss = loss.rolling(window=14).mean().abs() rs = avg_gain / avg_loss df['RSI'] = 100 - (100 / (1 + rs)) ``` 3. 布林带(Bollinger Bands) ```python import pandas as pd # 计算20日布林带 df['20MA'] = df['close'].rolling(window=20).mean() df['stddev'] = df['close'].rolling(window=20).std() df['upper_band'] = df['20MA'] + 2 * df['stddev'] df['lower_band'] = df['20MA'] - 2 * df['stddev'] ``` 4. 指数移动平均线(Exponential Moving Average, EMA) ```python import pandas as pd # 计算20日EMA df['EMA'] = df['close'].ewm(span=20).mean() ``` 5. 随机指标(Stochastic Oscillator) ```python import pandas as pd # 计算14日随机指标 low_min = df['low'].rolling(window=14).min() high_max = df['high'].rolling(window=14).max() k = (df['close'] - low_min) / (high_max - low_min) * 100 df['D'] = k.rolling(window=3).mean() df['K'] = df['D'].rolling(window=3).mean() ``` 6. 平均真实范围指标(Average True Range, ATR) ```python import pandas as pd # 计算14日ATR tr1 = df['high'] - df['low'] tr2 = (df['high'] - df['close'].shift()).abs() tr3 = (df['low'] - df['close'].shift()).abs() tr = pd.concat([tr1, tr2, tr3], axis=1).max(axis=1) df['ATR'] = tr.rolling(window=14).mean() ``` 7. 钱德动量摆动指标(Chande Momentum Oscillator, CMO) ```python import pandas as pd # 计算20日CMO up = (df['close'] - df['close'].shift(1)).where(df['close'] > df['close'].shift(1), 0) down = (df['close'].shift(1) - df['close']).where(df['close'] < df['close'].shift(1), 0) sum_up = up.rolling(window=20).sum() sum_down = down.rolling(window=20).sum() df['CMO'] = (sum_up - sum_down) / (sum_up + sum_down) * 100 ``` 8. MACD指标(Moving Average Con
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sentdex

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值