股票技术分析理论,股票交易技术分析的技术分析方法一般包括

  

  

一、简介

  

  

  大家好,我是自然。今天给大家分享的内容是基于Python编程实现股票交易相关功能的开发。如果读者对股票或金融衍生品的交易不太了解,有兴趣,可以自行查询相关信息。   

  

  接下来,笔者将介绍股票交易中几种常见交易策略的实现思路和源代码编写过程。如果你听说过量化交易这个词,你可能对交易策略有所了解,大概意思是股票、加密货币或金融衍生品在价格波动的过程中,按照自己的交易策略不断买入卖出,不断套利,降低仓位陈本,实现利润最大化。   

  

  常见的交易策略有很多种,趋势型、网格型、刷单、概率定律、高频交易等。今天主要介绍两种低频交易策略,即高抛低吸网格交易策略和日内T策略。其他交易策略比较复杂,读者可以通过百度了解。我在这里推荐一个量化交易网站,仅供参考,米篮量化:   

  

  https://www.ricequant.com/doc/quant/   

  

  

二、需求分析实现思路

  

  

  每个交易日,股票都会有涨有跌。在这个过程中,作者偶尔会想监控一些股票的涨跌情况,或者自动交易。在这种需求的前提下,现有的证券公司和股票分析软件都会有机器人自动交易策略的功能,大部分需要收费或者部分策略无法满足自身需求。这里,作者提供了两种实现思路:   

  

  1.借助现有的量化平台,编写策略和回测分析,然后在券商软件层面实现策略。   

  

  2.自己写函数代码监控估值,对股价波动进行特殊处理,满足特殊需要。   

  

  第一实现成本低,但功能受平台限制;第二种实现成本无疑比较高,但是逻辑可以自己掌控。   

span>

三、借助现有量化平台编写策略和回测分析

这里利用米筐量化实现和分析自己的交易策略,需要先注册个账号,然后进入到平台-笔者的策略中进行策略编写,平台的功能使用可以参考平台文档。

笔者这里贴出笔者自己写的2种策略代码,这个平台只支持使用Python脚本编写。

1)价差交易策略

平台截图:

用Python编程借助现有量化平台,编写股票交易策略和回测分析

部分代码如下,详细代码可以自己手撸实现,也可以在文末进行获取:

# 你选择的证券的数据更新将会触发此段逻辑,例如日或分钟历史数据切片或者是实时数据切片更新 def handle_bar(context, bar_dict): ...     if newPrice >= context.nextSellPrice:         logger.info("执行高抛交易,对应价格:{}".format(newPrice))         amount = context.portfolio.positions[context.s1].quantity         if amount >= context.tradeNumber:             logger.info("执行高抛交易,对应数量:{}".format(context.tradeNumber))             order_shares(context.s1, -context.tradeNumber)             plot("S", newPrice)         elif amount >= 100:             logger.info("执行高抛交易,对应数量:{}".format(amount))             order_shares(context.s1, -amount)             plot("S", newPrice)                   calc_next_trade_price(context,newPrice)         obj = {             "nextSellPrice":context.nextSellPrice,             "nextBuyPrice":context.nextBuyPrice,             "curTradePrice":context.curTradePrice         }         context.buyTradeList.append(obj)      if newPrice <= context.nextBuyPrice:         logger.info("执行低吸交易,对应价格:{}".format(newPrice))         amount = int(context.portfolio.cash / newPrice / 100.0)  * 100         if amount >= context.tradeNumber:             logger.info("执行低吸交易,对应数量:{}".format(context.tradeNumber))             order_shares(context.s1, context.tradeNumber)             plot("B", newPrice)          calc_next_trade_price(context,newPrice)                 obj = {             "nextSellPrice":context.nextSellPrice,             "nextBuyPrice":context.nextBuyPrice,             "curTradePrice":context.curTradePrice         }         context.sellTradeList.append(obj)  

选择回测时间段,点击右侧平台右侧按钮运行回测,结果页面如下

用Python编程借助现有量化平台,编写股票交易策略和回测分析

从结果中可以看到,对招商银行[600036]这只股票进行价差网格交易,其参数设置在上涨8%的时候卖出,下跌8%的时候买入,最大连续下跌买入次数为3次。

回测收益:13.628%

回测年化收益:17.096%

比基准年化收益-6%高出非常之大,这是在股价波动的过程中可以进行执行该策略来不断的降低持仓成本。从交易详情面板来看,这个策略可以通过参数调节交易频率,在上涨下跌比率较大的情况下,其交易次数是能控制的相对较少,结果图如下:

用Python编程借助现有量化平台,编写股票交易策略和回测分析

2)日内做T策略

同样的,只贴部分代码

# 你选择的证券的数据更新将会触发此段逻辑,例如日或分钟历史数据切片或者是实时数据切片更新 def handle_bar(context, bar_dict): ...     newPrice = bar_dict[context.s1].last     if newPrice >= context.nextSellPrice:         context.lastTradeType = 1         logger.info("执行高抛交易,对应价格:{}".format(newPrice))         amount = context.portfolio.positions[context.s1].quantity         #if amount - context.tradeNumber >= context.lockStockNumber:         if amount - context.tradeNumber >= 0:             logger.info("执行高抛交易,对应数量:{}".format(context.tradeNumber))             order_shares(context.s1, -context.tradeNumber)             plot("S", newPrice)         else:             logger.info("股票数量不足,无法执行高抛交易,对应数量:{}".format(amount))             return                      calc_next_trade_price(context,newPrice)          obj = {             "nextSellPrice":context.nextSellPrice,             "nextBuyPrice":context.nextBuyPrice,             "curTradePrice":context.curTradePrice         }         context.buyTradeList.append(obj)      if newPrice <= context.nextBuyPrice:         context.lastTradeType = 0         logger.info("执行低吸交易,对应价格:{}".format(newPrice))         amount = int(context.portfolio.cash / newPrice / 100.0)  * 100         if amount >= context.tradeNumber:             logger.info("执行低吸交易,对应数量:{}".format(context.tradeNumber))             order_shares(context.s1, context.tradeNumber)             plot("B", newPrice)         else:             logger.info("现金不足,无法执行低吸交易,对应数量:{}".format(amount))             return              calc_next_trade_price(context,newPrice)                 obj = {             "nextSellPrice":context.nextSellPrice,             "nextBuyPrice":context.nextBuyPrice,             "curTradePrice":context.curTradePrice         }         context.sellTradeList.append(obj) 

总体来说,代码逻辑还是比较简单,就是对价格的涨跌进行处理,其参数设置在日内上涨2%的时候卖出,下跌2%的时候买入,初始买入资金比例7成,锁定最低仓位5成。然后运行回测,其结果如下

用Python编程借助现有量化平台,编写股票交易策略和回测分析

回测收益:5.501%

回测年化收益:6.839%

基准收益:19.26%

可以看到日内做T这种高频交易,在长期来看收益可能并不高,适合在短期价格内运行。

四、总结

这个量化平台在笔者的熟悉情况下,它可以很方便的回测你的交易策略,但是在股价盯盘上,或者自定义逻辑上支持的不是很完善,很多功能也是需要收费才能使用。本文基于Python,借助现有量化平台编写策略和回测分析,希望对大家的学习有所帮助。

相关文章