当前位置:   article > 正文

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

python 趋势跟踪策略

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

  1. # coding: utf-8
  2. import os, sys
  3. import pandas as pd
  4. import numpy as np
  5. import math
  6. # 写一个趋势跟踪策略 量化交易程序
  7. if len(sys.argv) ==2:
  8. code = sys.argv[1]
  9. else:
  10. print('usage: python ma20_ma60.py stockcode ')
  11. sys.exit(1)
  12. if len(code) !=6:
  13. print('stock code length: 6')
  14. sys.exit(2)
  15. # 读取股票数据
  16. df = pd.read_csv(f'{code}.csv')
  17. # 计算移动平均线
  18. df['ma20'] = df['close'].rolling(window=20).mean()
  19. df['ma60'] = df['close'].rolling(window=60).mean()
  20. df = df[ df['date'] > '2020-01-01']
  21. # 初始化持仓和资金
  22. cost = 100000
  23. cash = cost
  24. stock = 0
  25. # 假设每一次交易费为万分之五
  26. fee = 0.0005
  27. # 遍历每天的数据
  28. for index, row in df.iterrows():
  29. # 如果短期移动平均线上穿长期移动平均线,则买入
  30. if row['ma20'] > row['ma60'] and stock == 0:
  31. date = row['date']
  32. price = row['close']
  33. stock = math.floor(cash*(1-fee)/price/100)*100
  34. cash = cash - stock*price*(1+fee)
  35. print(f'{date}: cash= {cash:.2f} , stock= {stock} x {price:.2f}')
  36. # 如果短期移动平均线下穿长期移动平均线,则卖出
  37. elif row['ma20'] < row['ma60'] and stock > 0:
  38. date = row['date']
  39. price = row['close']
  40. cash = cash + stock*price*(1-fee)
  41. stock = 0
  42. print(f'{date}: cash= {cash:.2f} , stock= {stock} x {price:.2f}')
  43. # 计算最终收益
  44. price = df.iloc[-1]['close']
  45. profit = cash + stock*price - cost
  46. print(f'profit= {profit:.2f} , stock= {stock} x {price:.2f}')

运行 python ma20_ma60.py 000776

获取股票价格信息 stock1.py

  1. # coding: utf-8
  2. import os, sys
  3. import time
  4. #import matplotlib.pyplot as plt
  5. import pandas as pd
  6. import tushare as ts
  7. if len(sys.argv) ==2:
  8. code = sys.argv[1]
  9. else:
  10. print('usage: python stock1.py stockcode ')
  11. sys.exit(1)
  12. if len(code) !=6:
  13. print('stock code length: 6')
  14. sys.exit(2)
  15. # help(ts.get_k_data) 了解参数
  16. df = ts.get_k_data(code, start='2018-01-01')
  17. if len(df) <10:
  18. print(" len(df) <10 ")
  19. sys.exit(2)
  20. df.to_csv(code+'.csv')
  21. # 数据基本统计量
  22. df['close'].describe().to_csv(code+'.tsv', sep='\t')

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/41736
推荐阅读
相关标签
  

闽ICP备14008679号