python:chatGPT 写一个趋势跟踪策略 量化交易程序

chatGPT:趋势跟踪策略的量化交易程序可能会因语言和框架而异,下面是一个简单的Python代码示例,用于演示如何通过量化编程来实现趋势跟踪策略。
这段代码是一个简单的策略实现,它读取股票数据并计算移动平均线,然后遍历每天的数据并根据短期移动平均线上穿长期移动平均线进行买入,短期移动平均线下穿长期移动平均线进行卖出。
ma20_ma60.py

# coding: utf-8
import os, sys
import pandas as pd
import numpy as np
import math

# 写一个趋势跟踪策略 量化交易程序
if len(sys.argv) ==2:
    code = sys.argv[1]
else:
    print('usage: python ma20_ma60.py stockcode ')
    sys.exit(1)

if len(code) !=6:
    print('stock code length: 6')
    sys.exit(2)

# 读取股票数据
df = pd.read_csv(f'{code}.csv')

# 计算移动平均线
df['ma20'] = df['close'].rolling(window=20).mean()
df['ma60'] = df['close'].rolling(window=60).mean()
df = df[ df['date'] > '2020-01-01']

# 初始化持仓和资金
cost = 100000
cash = cost
stock = 0
# 假设每一次交易费为万分之五
fee = 0.0005
# 遍历每天的数据
for index, row in df.iterrows():
    # 如果短期移动平均线上穿长期移动平均线,则买入
    if row['ma20'] > row['ma60'] and stock == 0:
        date = row['date']
        price = row['close']	
        stock = math.floor(cash*(1-fee)/price/100)*100
        cash = cash - stock*price*(1+fee)
        print(f'{date}: cash= {cash:.2f} , stock= {stock} x {price:.2f}')
    # 如果短期移动平均线下穿长期移动平均线,则卖出
    elif row['ma20'] < row['ma60'] and stock > 0:
        date = row['date']
        price = row['close']	
        cash = cash + stock*price*(1-fee)
        stock = 0
        print(f'{date}: cash= {cash:.2f} , stock= {stock} x {price:.2f}')

# 计算最终收益
price = df.iloc[-1]['close']
profit = cash + stock*price - cost
print(f'profit= {profit:.2f} , stock= {stock} x {price:.2f}')

运行 python ma20_ma60.py 000776

获取股票价格信息 stock1.py

# coding: utf-8
import os, sys
import time
#import matplotlib.pyplot as plt
import pandas as pd
import tushare as ts

if len(sys.argv) ==2:
    code = sys.argv[1]
else:
    print('usage: python stock1.py stockcode ')
    sys.exit(1)

if len(code) !=6:
    print('stock code length: 6')
    sys.exit(2)
    
# help(ts.get_k_data) 了解参数
df = ts.get_k_data(code, start='2018-01-01')
if len(df) <10:
    print(" len(df) <10 ")
    sys.exit(2)

df.to_csv(code+'.csv')
# 数据基本统计量
df['close'].describe().to_csv(code+'.tsv', sep='\t')

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值