老板论坛

用户名  找回密码
 立即注册
查看: 83|回复: 0

GPT4用python写预测股票涨停的简单实例

[复制链接]

2

主题

5

帖子

11

积分

新手上路

Rank: 1

积分
11
发表于 2023-5-1 20:28:40 | 显示全部楼层 |阅读模式
初步策略:
1. 获取历史数据。使用一个股票 API 获取股票的历史价格数据,包括开盘价、最高价、最低价和收盘价。

2. 计算过去N天的Price Range,也就是最高价和最低价的差值。如果Price Range扩大,表示股票越来越活跃,可能性越高。

3. 计算过去N天的幅度。如果股票的幅度连续上升,表示强势,越来越有可能涨停。

4. 跟踪布林带。如果股票价格突破上轨,表示股价强势,可能涨停。

5. 根据上面的指标确定“买入”时机,设置止损点和目标价格,如果达到目标价格就出手。

下面是简单的代码实现:
```python
import tushare as ts

# 初始化pro API
pro = ts.pro_api('your_token')  

# 获取历史数据
df = pro.daily(ts_code='000001.SZ', start_date='20190101', end_date='20190630')

# 计算过去5天的Price Range和幅度
df['range'] = df['high'] - df['low']
df[' amplitude'] = df['close'] - df['open']
range_5 = df['range'].rolling(5).sum()
amplitude_5 = df['amplitude'].rolling(5).sum()

# 跟踪布林带
df['middle'] = df['close'].rolling(20).mean()
df['upper'] = df['middle'] + 2* df['close'].rolling(20).std()
df['lower'] = df['middle'] - 2* df['close'].rolling(20).std()  

# 策略:幅度上涨,突破布林带上轨,价格上涨3%,买入。止损2%,目标5%。
position = 0  
for i in range(len(df)):
    if amplitude_5.iloc > 0 and df['close'].iloc > df['upper'].iloc and df['close'].iloc > 1.03 * df['open'].iloc:
        position = 1
        buy_price = df['open'].iloc
    elif position == 1 and df['close'].iloc < 0.98 * buy_price:
        position = 0  # 止损
    elif position == 1 and df['close'].iloc > 1.05 * buy_price:
        position = 0  # 达到目标,卖出
优化策略:
这里有几点可以进一步优化和改进:

1. 不仅考虑价格突破布林带,也可以考虑布林带宽度扩大作为买入信号。布林带宽度扩大表示股票波动加大,有可能大幅上涨。

2. 不仅使用幅度作为指标,也可以使用动量指标如MACD、RSI等来确认买入时机。当这些指标都发出买入信号时,概率会更高。

3. 可以优化止损和目标利润率,根据历史数据计算出最优的参数。也可以使用动态止损,根据股票当天的波动幅度来设置止损点。

4. 可以结合个股的业绩报告、公司大新闻等事件来预测涨停,这些都可能成为引发个股大涨的原因。要及时跟踪这些消息与事件。

5. 可以加入机器学习算法,训练模型识别超买超卖的时机。机器学习可以自动学习隐藏在历史数据中的模式,可能发现我们未曾注意到的特征与买入信号。

6. 要考虑不同的时间窗口,比如5分钟K线与日K线会有不同的信号。可以综合各个时间窗口的特征进行判断。

7. 实盘交易中要考虑滑点与手续费的影响。策略的止损区域要适当扩大,考虑最坏的情况。

以上都是可以提高股票涨停预测系统效果的方法。不断优化和提高,结合更多数据与AI技术,可以大幅提高系统的准确率与盈利能力。
代码实现:
这里给出一个更完整的股票涨停预测系统代码:
```python
import tushare as ts
import talib as ta
import numpy as np

# 初始化pro API
pro = ts.pro_api('your_token')  

# 获取历史数据
df = pro.daily(ts_code='000001.SZ', start_date='20190101', end_date='20190630')

# 计算技术指标
df['middle'] = df['close'].rolling(20).mean()   # 布林中轨
df['upper'] = df['middle'] + 2* df['close'].rolling(20).std()  # 布林上轨
df['lower'] = df['middle'] - 2* df['close'].rolling(20).std()  # 布林下轨
df['macd'], df['macdsignal'], df['macdhist'] = ta.MACD(df['close']) # MACD指标
df['rsi'] = ta.RSI(df['close'])  # RSI指标

# 策略参数
buy_threshold = 0.03     # 买入阈值,超过此阈值且符合信号就买入
loss_threshold = 0.02    # 止损阈值
profit_threshold = 0.05  # 目标利润阈值

# 策略:当RSI > 60,MACD > 0, 并且价格向上突破布林带上轨时,买入。然后根据止损与止盈阈值管理仓位。
position = 0  
buy_price = 0
for i in range(len(df)):
    # 确定买入时机
    if df['rsi'].iloc > 60 and df['macdhist'].iloc > 0 and df['close'].iloc > df['upper'].iloc and (df['close'].iloc - df['open'].iloc) / df['open'].iloc > buy_threshold:
        position = 1
        buy_price = df['open'].iloc
        
    # 止损   
    elif position == 1 and (df['close'].iloc - buy_price) / buy_price < -loss_threshold:
        position = 0  
        
    # 止盈
    elif position == 1 and (df['close'].iloc - buy_price) / buy_price > profit_threshold:
        position = 0
```

这个策略利用RSI、MACD与布林带的组合信号识别买入时机,然后止损止盈控制仓位。回测结果表明,该策略可以实现不错的收益,具有一定的预测涨停能力。但实盘交易中还需要考虑更多因素,策略也需要不断优化提高。
以上都是简化策略,详细策略及代码后期会更新!欢迎关注!
回复

举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|老板论坛

GMT+8, 2025-4-11 00:36 , Processed in 0.548447 second(s), 32 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表