当前位置: 首页 > news >正文

建设部网站221号文件班级优化大师免费下载安装

建设部网站221号文件,班级优化大师免费下载安装,比较好的中文wordpress主题,西部数码空间的网站访问统计本文介绍了通过Python和Benzinga API构建自动化交易策略的方法#xff0c;帮助交易者方便的回测交易策略。原文: An Algo Trading Strategy which made 8,371%: A Python Case Study Behnam Norouzi Unsplash 导言 传统自动化交易策略(如均线交叉或 RSI 临界点突破策略)已被证… 本文介绍了通过Python和Benzinga API构建自动化交易策略的方法帮助交易者方便的回测交易策略。原文: An Algo Trading Strategy which made 8,371%: A Python Case Study Behnam Norouzi Unsplash 导言 传统自动化交易策略(如均线交叉或 RSI 临界点突破策略)已被证明过时了这些策略过于简单更重要的是市场上有大量参与者在尝试执行这些策略。 因此与其接受这些策略不如尝试些新东西。本文将基于 Python 和 Benzinga API来构建并回测一种新的交易策略帮助我们战胜市场。 话不多说直接进入主题 交易策略 在编码之前有必要先了解一下本文将要构建的策略背景该策略遵循简单但非常有效的突破策略原则。 如果出现以下情况我们就入市股价超过 50 周的最高点 如果出现以下情况我们就出市股价跌破 40 周的最低点 我们通过唐氏通道指标(Donchian Channel indicator)来跟踪 50 周高点和 40 周低点。本策略是周线交易系统因此将在周线时间框架内进行回测。 这就是我们要在本文中进行回测的策略。就这么简单对吧接下来开始编码。 导入软件包 本文将使用四个主要软件包即 pandas、requests、pandas_ta 和 matplotlib次要/可选软件包包括 termcolor 和 math。下面的代码将把所有提到的包导入到 Python 环境中 # IMPORTING PACKAGESimport pandas as pdimport requestsimport pandas_ta as taimport matplotlib.pyplot as pltfrom termcolor import colored as climport math plt.rcParams[figure.figsize]  (20,10)plt.style.use(fivethirtyeight) 如果尚未安装任何导入的软件包请确保通过 pip 命令进行安装。 提取历史数据 我们将在苹果股票上对突破策略进行回测。为了获取苹果公司的股票历史数据将使用 Benzinga 的 Historical Bar Data API接口。以下 Python 代码通过该接口提取了 1993 年以来的苹果股票数据 # EXTRACTING HISTORICAL DATAdef get_historical_data(symbol, start_date, interval):    url  https://api.benzinga.com/api/v2/bars    querystring  {token:YOUR API KEY,symbols:f{symbol},from:f{start_date},interval:f{interval}}    hist_json  requests.get(url, params  querystring).json()    df  pd.DataFrame(hist_json[0][candles])        return dfaapl  get_historical_data(AAPL, 1993-01-01, 1W)aapl.tail() 在上述代码中定义了名为 get_historical_data 的函数该函数获取股票代码、数据起始日期和数据点之间的间隔。 在函数中我们将把 API URL 和查询字符串存储到各自的变量中。请确保将 YOUR API KEY 替换为实际的 Benzinga API KEY可以在创建账户后获得该 KEY。然后调用 API 以获取数据并将 JSON 响应转换为 Pandas dataframe最后返回该数据。 基于该函数我们提取了苹果公司自 1993 年以来每周股票历史数据。这是最终输出结果 苹果公司的历史数据 太棒了我们继续计算提取的苹果公司历史数据的唐氏通道指标。 唐氏通道计算 如果深入研究该指标的数学原理需要单独撰文进行解释。基本上唐氏通道揭示了股票在特定时间段内的最高点和最低点。 以下代码使用 pandas_ta 计算指标 # CALCULATING DONCHIAN CHANNELaapl[[dcl, dcm, dcu]]  aapl.ta.donchian(lower_length  40, upper_length  50)aapl  aapl.dropna().drop(time, axis  1).rename(columns  {dateTime:date})aapl  aapl.set_index(date)aapl.index  pd.to_datetime(aapl.index)aapl.tail() 第一行使用 pandas_ta 提供的 donchian 函数来计算指标。该函数需要两个参数下限长度和上限长度分别是最低点和最高点的回溯周期。由于我们的策略要求 40 周低点和 50 周高点因此将下限和上限分别设为 40 和 50。 计算之后执行一些数据处理任务以清理和格式化数据。这就是最终的数据帧 苹果股票的唐氏通道 为了更好的了解唐氏通道指标我们用 Matplotlib 库绘制计算值 # PLOTTING DONCHIAN CHANNELplt.plot(aapl[-300:].close, label  CLOSE)plt.plot(aapl[-300:].dcl, color  black, linestyle  --, alpha  0.3)plt.plot(aapl[-300:].dcm, color  orange, label  DCM)plt.plot(aapl[-300:].dcu, color  black, linestyle  --, alpha  0.3, label  DCU,DCL)plt.legend()plt.title(AAPL DONCHIAN CHANNELS 50)plt.xlabel(Date)plt.ylabel(Close) 这段代码没有什么特别之处。我们利用 matplotlib 提供的基本功能来实现可视化这是最终的图表 苹果公司唐氏通道图 从图中可以看出唐氏通道指标有三个重要组成部分 Upper Band上限波段上限波段显示了股票在特定时间段内的最高点。 Lower Band下限波段基本上与上限相反显示股票在特定时间段内的最低点。 Middle Band中间波段这个部分有点不同显示的是上限波段和下限波段之间的平均值。 唐氏通道是最广泛使用的观察股价走势突破情况的指标之一这也是本文使用该指标的核心原因之一。 回溯测试策略 接下来是最重要的步骤之一即对突破策略进行回测。为了简单起见我们将使用非常基本和直接的回测系统。下面的代码将对该策略进行回测并显示结果 # BACKTESTING THE STRATEGYdef implement_strategy(aapl, investment):        in_position  False    equity  investment        for i in range(3, len(aapl)):        if aapl[high][i]  aapl[dcu][i] and in_position  False:            no_of_shares  math.floor(equity/aapl.close[i])            equity - (no_of_shares * aapl.close[i])            in_position  True            print(cl(BUY: , color  green, attrs  [bold]), f{no_of_shares} Shares are bought at ${aapl.close[i]} on {str(aapl.index[i])[:10]})        elif aapl[low][i]  aapl[dcl][i] and in_position  True:            equity  (no_of_shares * aapl.close[i])            in_position  False            print(cl(SELL: , color  red, attrs  [bold]), f{no_of_shares} Shares are bought at ${aapl.close[i]} on {str(aapl.index[i])[:10]})    if in_position  True:        equity  (no_of_shares * aapl.close[i])        print(cl(f\nClosing position at {aapl.close[i]} on {str(aapl.index[i])[:10]}, attrs  [bold]))        in_position  False    earning  round(equity - investment, 2)    roi  round(earning / investment * 100, 2)    print(cl(fEARNING: ${earning} ; ROI: {roi}%, attrs  [bold]))    implement_strategy(aapl, 100000) 我不打算深入探讨这段代码因为解释起来需要一些时间基本上程序会根据满足的条件执行交易。当入市条件得到满足时就会入市而当出市条件得到满足时就会平仓。以下是程序执行的交易以及回测结果 AAPL 回测结果 正如标题中所说该策略取得了 8371% 的投资回报率这是一个巨大的数字。但现在是时候看看我们的策略是否真的跑赢了市场。 与 SPY ETF 对比 将策略回测结果与 SPY ETF 的买入/持有回报进行比较有助于真正了解策略的表现。以下代码计算了 SPY ETF 多年来的回报 spy  get_historical_data(SPY, 1993-01-01, 1W)spy_ret  round(((spy.close.iloc[-1] - spy.close.iloc[0])/spy.close.iloc[0])*100)print(cl(SPY ETF buy/hold return:, attrs  [bold]), f{spy_ret}%) 上述代码首先提取 SPY 的历史数据其规格与 AAPL 相同。然后使用简单的公式计算该指数的收益百分比结果是 SPY ETF 买入/持有回报 该指数的回报率为 936%其实已经很不错了但与我们的策略相比还是有很大差距。我们的策略大大超过了基准这是个好消息 结束语 本文通过大量编码过程对一个简单但非常有效的突破策略进行了回测。不出所料该策略的结果令人惊叹。我们首先使用 Benzinga API 提取苹果公司的历史数据然后慢慢探索唐氏通道最后对该策略进行回测并将结果与 SPY ETF 进行比较。 该策略还有很多方面可以改进。如果加上佣金和滑点回测系统就会更加复杂和现实。适当的风险管理必须到位特别是在算法交易的情况下。 你好我是俞凡在Motorola做过研发现在在Mavenir做技术工作对通信、网络、后端架构、云原生、DevOps、CICD、区块链、AI等技术始终保持着浓厚的兴趣平时喜欢阅读、思考相信持续学习、终身成长欢迎一起交流学习。为了方便大家以后能第一时间看到文章请朋友们关注公众号DeepNoMind并设个星标吧如果能一键三连(转发、点赞、在看)则能给我带来更多的支持和动力激励我持续写下去和大家共同成长进步 本文由 mdnice 多平台发布
http://www.w-s-a.com/news/540866/

相关文章:

  • jsp商业网站开发网站链接如何做二维码
  • 江苏高校品牌专业建设网站怎么制作网站搜索窗口
  • 北京app建设 网站开发公司织梦网站seo
  • 大学网站 作风建设专题汽车配件外贸出口公司
  • 东莞做网站系统购物网站建设精英
  • 建设vip网站相关视频网站营销建设公司
  • 微站直播平台杭州seo按天计费
  • seo 新旧网站 两个域名福州设计网站建设
  • 如何做网站客户端如何做网络营销网站
  • 苏州网站建设制度打鱼网站建设
  • 瓜子二手车直卖网上海小红书seo
  • 天津中小企业网站制作珠海做网站的
  • 网站排名影响因素最牛的科技网站建设
  • 长春网站建设公司怎么样电商网站建设与开发期末考试
  • 品牌网站建设搭建国内外网站建设
  • 辽宁人社app一直更新整站seo定制
  • 兰州网站建设论坛装修品牌
  • 云南省城乡住房与建设厅网站用什么网站可以做电子书
  • 自己电脑怎么做网站服务器吗0基础如何做网站
  • 做网站的股哥网络整合营销方案策划
  • 网站你懂我意思正能量晚上唯品会网站开发费用
  • 网站认证金额怎么做分录网页无法访问是怎么回事
  • 樟木头建网站的wordpress自适应吸附菜单
  • 番禺网站设计威海微网站建设
  • 新乡网站建设服务网站建设的点子
  • 赛罕区城乡建设局网站什么是新媒体运营
  • 松原企业网站建设设计素材网排名
  • 网站建设是那个行业广东公司排名
  • 制作网站要多少钱seo是如何优化
  • 求个网站2020急急急做金融网站拘留多久