帮我写一个关于600893.SH的股票2016年到2018年的历史交易数据(只知道开盘价,最高价,最低价,收盘价,交易量的情况下)的趋势跟踪策略并且用weka来进行分析,并标出买入点跟卖出点
时间: 2024-04-06 16:32:38 浏览: 10
好的,我会为您提供策略和分析。
策略:
考虑到历史交易数据只有开盘价,最高价,最低价,收盘价和交易量,我建议使用技术分析中的移动平均线来跟踪趋势。具体来说,我们可以使用5日和20日移动平均线。当5日移动平均线上穿20日移动平均线时,产生一个买入信号,表示股票处于上涨趋势。当5日移动平均线下穿20日移动平均线时,产生一个卖出信号,表示股票处于下跌趋势。
分析:
我们可以使用Weka来进行数据分析。具体来说,我们可以使用Weka中的分类器来预测买入点和卖出点。首先,我们需要将历史交易数据导入Weka中。然后,我们可以使用Weka中的属性选择器来选择最有用的属性。接下来,我们可以使用Weka中的分类器来预测买入点和卖出点。具体来说,我们可以使用决策树或神经网络来进行分类。
最后,根据移动平均线策略和Weka分析的结果,我们可以标出买入点和卖出点。当5日移动平均线上穿20日移动平均线时,产生一个买入信号,表示股票处于上涨趋势。当Weka预测出买入点时,我们可以进行买入操作。当5日移动平均线下穿20日移动平均线时,产生一个卖出信号,表示股票处于下跌趋势。当Weka预测出卖出点时,我们可以进行卖出操作。
希望这个策略和分析对您有所帮助。
相关问题
帮我写一个关于600893.SH的股票2016年到2018年的历史交易数据(只知道开盘价,最高价,最低价,收盘价,交易量的情况下)的趋势跟踪策略的关于如何计算出买入卖出的python代码
对于股票的趋势跟踪策略,一般采用移动平均线的方法来进行分析。下面是基于600893.SH的股票历史交易数据的趋势跟踪策略的Python代码实现,其中采用了简单移动平均线和指数移动平均线两种方法。
``` python
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# 读取股票历史交易数据
data = pd.read_csv('600893.SH.csv', index_col=0, parse_dates=True)
# 计算简单移动平均线
data['SMA5'] = data['close'].rolling(window=5).mean()
data['SMA10'] = data['close'].rolling(window=10).mean()
# 计算指数移动平均线
data['EMA5'] = data['close'].ewm(span=5, adjust=False).mean()
data['EMA10'] = data['close'].ewm(span=10, adjust=False).mean()
# 绘制股票收盘价及移动平均线的趋势图
plt.figure(figsize=(12,6))
plt.plot(data['close'], label='Close Price')
plt.plot(data['SMA5'], label='SMA5')
plt.plot(data['SMA10'], label='SMA10')
plt.plot(data['EMA5'], label='EMA5')
plt.plot(data['EMA10'], label='EMA10')
plt.title('Trend Following Strategy for Stock 600893.SH')
plt.xlabel('Year')
plt.ylabel('Price')
plt.legend(loc='upper left')
plt.show()
# 采用简单移动平均线策略进行买入卖出
data['position'] = np.where(data['SMA5'] > data['SMA10'], 1, -1)
data['position'] = data['position'].shift()
# 采用指数移动平均线策略进行买入卖出
# data['position'] = np.where(data['EMA5'] > data['EMA10'], 1, -1)
# data['position'] = data['position'].shift()
# 计算每日收益率
data['returns'] = np.log(data['close'] / data['close'].shift())
# 计算策略收益率
data['strategy'] = data['position'] * data['returns']
# 计算累计收益率
data['cumulative returns'] = data['strategy'].cumsum()
# 绘制策略收益率及累计收益率的曲线图
plt.figure(figsize=(12,6))
plt.plot(data['strategy'], label='Strategy Returns')
plt.plot(data['cumulative returns'], label='Cumulative Returns')
plt.title('Trend Following Strategy Returns for Stock 600893.SH')
plt.xlabel('Year')
plt.ylabel('Returns')
plt.legend(loc='upper left')
plt.show()
```
在上述代码中,我们首先读取了股票历史交易数据,并计算了简单移动平均线和指数移动平均线。然后,我们绘制了股票收盘价及移动平均线的趋势图,以便直观地观察股票的趋势。接着,我们采用了简单移动平均线和指数移动平均线两种方法进行买入卖出的判断,并计算了每日收益率、策略收益率和累计收益率。最后,我们绘制了策略收益率及累计收益率的曲线图,以便评估该趋势跟踪策略的表现。
帮我写一个shell.sh脚本,自动连接ftp获取多期数据
好的,可以参考以下脚本:
```shell
#!/bin/bash
# FTP服务器信息
HOST="ftp.example.com"
USER="username"
PASSWORD="password"
# 本地数据文件保存路径
LOCAL_DIR="/path/to/local/dir"
# 远程数据文件保存路径
REMOTE_DIR="/path/to/remote/dir"
# 数据文件日期起始日期和结束日期
START_DATE="2022-01-01"
END_DATE="2022-01-05"
# 循环获取数据文件
CURRENT_DATE=$START_DATE
while [[ "$CURRENT_DATE" < "$END_DATE" ]]; do
# 连接 FTP 并获取数据文件
ftp -n $HOST <<EOF
user $USER $PASSWORD
binary
cd $REMOTE_DIR
lcd $LOCAL_DIR
get data_${CURRENT_DATE}.txt
bye
EOF
# 更新日期
CURRENT_DATE=$(date -d "$CURRENT_DATE + 1 day" +%Y-%m-%d)
done
```
在脚本中,需要修改以下变量:
- HOST:FTP服务器的主机名或IP地址。
- USER:FTP服务器的用户名。
- PASSWORD:FTP服务器的密码。
- LOCAL_DIR:本地数据文件保存的路径。
- REMOTE_DIR:远程数据文件保存的路径。
- START_DATE:数据文件的起始日期。
- END_DATE:数据文件的结束日期。
脚本中使用了循环结构,从起始日期开始,每次增加一天,直到结束日期为止。在每次循环中,使用 `${CURRENT_DATE}` 变量构造数据文件名,如 `data_2022-01-01.txt`。
可以将脚本保存为文件,如 `get_multi_data.sh`,并使用 `chmod +x get_multi_data.sh` 命令添加执行权限,然后执行 `./get_multi_data.sh` 命令即可连接 FTP 并获取多期数据文件。