码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • ChatGPT生成量化交易策略,真好玩


    OK,还有没有更好玩的对

    量化策略开发,高质量社群,交易思路分享等相关内容

    『正文』

    ˇ

    最近比较火的OpenAI-ChatGPT,太有意思了。尝试让它写了几个策略,您别说,还真是有模有样。我们来看看吧。

    模型一:均值回归模型

    源码:

    1. import numpy as np
    2. import pandas as pd
    3. from sklearn import linear_model
    4. import numpy as np
    5. import pandas as pd
    6. from sklearn import linear_model
    7. # 定义交易资金
    8. capital = 100000
    9. # 定义每次交易的数量
    10. trade_qty = 1000
    11. # 定义交易费用
    12. trade_fee = 0.003
    13. # 定义时间跨度
    14. time_span = 10
    15. # 计算交易收益
    16. def calc_profit(open_price, close_price):
    17. return (close_price - open_price) * trade_qty - trade_qty * trade_fee * 2
    18. # 计算交易均值回归模型
    19. def calc_linear_model(df):
    20. X = np.array(df['open']).reshape(-1, 1)
    21. y = np.array(df['close']).reshape(-1, 1)
    22. model = linear_model.LinearRegression()
    23. model.fit(X, y)
    24. return model.coef_[0][0], model.intercept_[0]
    25. # 读入交易数据
    26. df = pd.read_csv('trade_data.csv')
    27. # 计算交易均值回归模型参数
    28. slope, intercept = calc_linear_model(df)
    29. # 初始化资产和交易结果
    30. capital_list = []
    31. result_list = []
    32. # 开始交易
    33. for i in range(time_span, len(df)):
    34. # 计算收益
    35. open_price = df.iloc[i-time_span]['open']
    36. close_price = df.iloc[i]['close']
    37. profit = calc_profit(open_price, close_price)
    38. # 更新资产
    39. capital += profit
    40. # 记录交易结果
    41. capital_list.append(capital)
    42. result_list.append(profit)
    43. # 输出交易结果
    44. print('Final capital:', capital)

    模型二:一个均线策略

    源码:

    1. # 导入需要的库
    2. import numpy as np
    3. import pandas as pd
    4. import matplotlib.pyplot as plt
    5. # 导入股票数据
    6. stock_data = pd.read_csv('stock_data.csv')
    7. # 计算移动平均线
    8. ma_5 = stock_data['close'].rolling(5).mean()
    9. ma_10 = stock_data['close'].rolling(10).mean()
    10. # 绘制移动平均线图
    11. plt.plot(stock_data['date'], ma_5)
    12. plt.plot(stock_data['date'], ma_10)
    13. plt.title('Moving Average')
    14. plt.xlabel('Date')
    15. plt.ylabel('Price')
    16. plt.legend(['MA5', 'MA10'])
    17. # 定义交易策略
    18. def trade(stock_data, ma_5, ma_10):
    19. # 创建交易信号数组
    20. signals = np.zeros(len(stock_data))
    21. # 遍历每个交易日
    22. for i in range(len(stock_data)):
    23. # 如果MA5大于MA10,则买入
    24. if ma_5[i] > ma_10[i]:
    25. signals[i] = 1
    26. # 如果MA5小于MA10,则卖出
    27. elif ma_5[i] < ma_10[i]:
    28. signals[i] = -1
    29. return signals
    30. # 运行交易策略
    31. signals = trade(stock_data, ma_5, ma_10)
    32. # 计算持仓和收益
    33. position = 0
    34. profit = 0
    35. for i in range(len(signals)):
    36. # 买入
    37. if signals[i] == 1:
    38. position += stock_data['close'][i]
    39. # 卖出
    40. elif signals[i] == -1:
    41. profit += stock_data['close'][i] - position
    42. position = 0
    43. # 输出最终收益
    44. print('Final profit:', profit)

    模型三:唐奇安通道+MACD

    源码:

     

    1. import numpy as np
    2. import talib
    3. # 定义唐奇安通道函数
    4. def Donchian(close, n):
    5. high = talib.MAX(close, n)
    6. low = talib.MIN(close, n)
    7. return high, low
    8. # 定义MACD函数
    9. def MACD(close, n_fast, n_slow, n_signal):
    10. macd, signal, hist = talib.MACD(close, n_fast, n_slow, n_signal)
    11. return macd, signal, hist
    12. # 定义交易函数
    13. def trade(open, close, high, low, macd, signal, hist):
    14. # 初始化持仓状态和交易信号
    15. position = 0
    16. signal = 0
    17. # 获取唐奇安通道上轨和下轨
    18. donchian_high, donchian_low = Donchian(close, 20)
    19. # 计算MACD和信号线
    20. macd, signal, hist = MACD(close, 12, 26, 9)
    21. # 判断交易信号
    22. if position == 0:
    23. # 如果当前没有持仓,判断开仓信号
    24. if macd[-1] > signal[-1] and hist[-1] > 0 and close[-1] > donchian_high[-1]:
    25. # 如果当前MACD大于信号线,且柱状图大于0,且收盘价高于唐奇安通道上轨,则开多仓
    26. signal = 1
    27. elif macd[-1] < signal[-1] and hist[-1] < 0 and close[-1] < donchian_low[-1]:
    28. # 如果当前MACD小于信号线,且柱状图小于0,且收盘价低于唐奇安通道下轨,则开空仓
    29. signal = -1
    30. else:
    31. # 如果当前有持仓,判断平仓信号
    32. if position > 0 and close[-1] < donchian_low[-1]:
    33. # 如果当前持多仓,且收盘价低于唐奇安通道下轨,则平多仓

    模型四:机器学习策略

    源码:

    编写期货收益率预测模型的过程可能比较复杂,因为这类模型通常需要考虑许多因素。但是,以下是一个简单的Python程序,它使用Scikit-learn库来构建并训练一个期货收益率预测模型:

    1. # Import necessary libraries
    2. from sklearn import linear_model
    3. from sklearn import metrics
    4. # Load data
    5. X = ... # Feature data
    6. y = ... # Target data
    7. # Split data into training and test sets
    8. X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42)
    9. # Train model
    10. model = linear_model.LinearRegression()
    11. model.fit(X_train, y_train)
    12. # Evaluate model
    13. y_pred = model.predict(X_test)
    14. print(metrics.mean_squared_error(y_test, y_pred))

    这个程序使用线性回归来构建模型,并用均方误差(MSE)来评估模型的性能。在实际应用中,您可能需要使用更复杂的模型,并使用多种指标来评估模型的性能。此外,您还需要准备足够的数据来训练模型,并确保数据的质量和准确性。

    哈哈哈,太有意思了铁子们,我们和它聊聊天。

    源码:

    1. import matplotlib.pyplot as plt
    2. # Set figure size
    3. plt.figure(figsize=(4, 4))
    4. # Draw squirrel
    5. plt.plot([1, 1, 2, 2, 3, 3, 4], [1, 2, 2, 3, 3, 2, 2], 'k')
    6. plt.plot([1.5, 1.5, 2.5, 2.5], [1, 2, 2, 1], 'k')
    7. plt.plot([2, 2], [1.5, 2.5], 'k')
    8. # Fill in the face and belly
    9. plt.fill([1.5, 1.5, 2.5, 2.5], [1, 2, 2, 1], 'b')
    10. plt.fill([2, 2], [1.5, 2.5], 'b')
    11. # Draw the eyes
    12. plt.plot([1.25, 1.75], [1.75, 1.75], 'k')
    13. plt.plot([2.25, 2.75], [1.75, 1.75], 'k')
    14. # Show the plot
    15. plt.show()

    哈哈哈哈,这也不像松鼠啊。

    OK,还有没有更好玩的对话,评论区留言哈。

     你要的干货都在这里→关注V V“松鼠宽客”

    松鼠宽客:研究04丨波动率与CTA盈利关键https://blog.csdn.net/m0_56236921/article/details/126655526?spm=1001.2014.3001.5502

    松鼠宽客:Pro08丨累计概率密度突破策略https://blog.csdn.net/m0_56236921/article/details/126637398?spm=1001.2014.3001.5502松鼠宽客:KD01策略丨SuperTrend+空头波段https://blog.csdn.net/m0_56236921/article/details/126504676?spm=1001.2014.3001.5502

    松鼠宽客:加降息与BTC流动性事件策略研究https://blog.csdn.net/m0_56236921/article/details/126136104?spm=1001.2014.3001.5502

     松鼠宽客:Pro_06丨重心拐点与高低波出场https://blog.csdn.net/m0_56236921/article/details/126704447?spm=1001.2014.3001.5502

    松鼠宽客:基于订单流工具,我们能看到什么?https://blog.csdn.net/m0_56236921/article/details/125478268?spm=1001.2014.3001.5502


    松鼠宽客:LM11丨重构K线构建择时交易策略https://blog.csdn.net/m0_56236921/article/details/125632587?spm=1001.2014.3001.5502

  • 相关阅读:
    Cadence OrCAD Capture 原理图单元件多符号库创建方法图文教程
    使用JAXB将Java对象转xml
    思维题练习部分
    znai: 使用Markdown编写Java文档系统
    论文解读(MVGRL)Contrastive Multi-View Representation Learning on Graphs
    广州规划新增30条地铁 来看看线路图?
    想搞懂持续交付理论和实践,你只差这三个问题
    【智能家居项目】裸机版本——设备子系统(LED && Display && 风扇)
    redis---非关系型数据库(NoSql)
    15个小技巧,助你源码阅读事半功倍
  • 原文地址:https://blog.csdn.net/m0_56236921/article/details/128206020
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号