小白量化《穿云箭集群量化》(7) 巡航导弹策略

news2024/11/17 16:30:31

小白量化《穿云箭集群量化》(7) 巡航导弹策略
量化交易策略比较有名的是网格策略,网格策略的缺点是对网格定义不容易,另外通过网格穿越交易也不是最优价格。
穿云箭量化平台提供了巡航导弹策略,可以利用巡航导弹技术自动实现买卖交易。巡航导弹技术本质上是价格漂移跟踪技术,能够自动识别股价移动方向,及时发出多空信号。它客服了人的 贪婪和恐惧,聪明的投资者利用穿云箭量化的巡航导弹技术,选择一个优质股票池,交给穿云箭量化的巡航导弹策略自动交易赚钱,轻松实现自己的资产增值。
在穿云箭量化中有一个超级订单SuperOrder功能。

##超级动态跟踪挂单
class SuperOrder():
    def __init__(self,gap=1.5,ld=3,lk=3):
        pass

    '''
    kind种类,code代码,price价格,volume数量,
    kind=0 #买多,固定价格
    kind=1 #卖空,固定价格
    kind=2 #买多,浮动价格
    kind=3 #卖空,浮动价格
    x是正涨幅
    y是负涨幅
    '''
    def add(self,code="",kind=0,price=1.00,volume=100,magic=0,\
           sl=-99999,tp=-99999,comment='',stop=99999,t=99999,\
           x=0.05,y=-0.05,d=0.0,p=0.0):
           pass

对于股票,这里主要使用kind=2
kind=2 #买多,浮动价格
x=0.05 #上涨偏移
通过设置上涨偏移,实现动态买入信号,
卖出继续采用回撤止盈函数,动态卖出。
下面给出回测版本的完整策略。
注意:穿云箭量化使用的中文Python,可直接使用中文Python关键字。

策略名='回测_中文巡航导弹'
#修改日期:2022-11-05
导入 pandas 命名为 pd
导入 HP_tdx 命名为 htdx
导入 HP_global 命名为 hg   #建立全局数据域hg
从 HP_formula 导入 *
导入 HP_formula 命名为 gs
从 HP_factor 导入 *
导入 HP_factor 命名为 hf
导入 HP_quant 命名为 hpq
从 HP_quant 导入 *
导入 time

#巡航导弹
cruise_missile=hf.SuperOrder()

函数 初始化(context):  
    context.zh='xiaobai'      #账户
    context.zhlx='回测'   #账户类型,2个汉字
    context.firstcash=2000000.00  #初始现金
    context.cash=context.firstcash
    context.portfolio.available_cash=context.firstcash
    set_maxdays(300)

    # 设置我们要操作的股票池
    g.stocks=hpq.get_universe()
    hpq.log.info('----策略环境信息-----')
    hpq.log.info('量化模块版本: '+str(hpq.ver))
    hpq.log.info('量化模块最后修改日期: '+str(hpq.mdate))
    hpq.log.info('svrip: '+hpq.svrip)
    hpq.log.info('svrport: '+str(hpq.svrport))
    hpq.log.info('\n----开始运行策略-----\n')
    hpq.log.info('策略名:'+策略名)
    qhcsj2=time.strftime('%Y%m%d %H:%M:%S')
    hpq.log.info('开始运行时间:'+qhcsj2)
    # 设定沪深300作为基准
    set_benchmark((1,'000001'))
    # 开启动态复权模式(真实价格)
    set_option('use_real_price',)
    #pop_universe([(1,'600861'),(0,'000517')])  #需要删除的股票代码池 
    hg.seemsg=假
    g.stocks2=[]  #被选池
    htdx.TdxInit(ip='139.159.239.163',port=7709)
    g.hd=0.005  #滑点比例 

# 每个单位时间(如果按天回测,则每天调用一次,如果按分钟,则每分钟调用一次)调用一次
函数 盘中运行(context, data):
    序列循环 m,security 在其中 context.universe[0]:
        df=data[security].df
        如果 len(df)<1:
            继续
        price = data[security].close
        close=price
        high= data[security].high
        low= data[security].low
        pre_close=data[security].pre_close   #前收盘

        acc_avg_cost  = context.portfolio.positions[security].acc_avg_cost #买入成本价 
        amos=context.portfolio.positions[security].closeable_amount  #可卖数量
        amos2=context.portfolio.positions[security].total_amount   #总数量

        #如果可卖数量大于0,做止盈和止损处理
        如果 amos>0:
            sell=hf.autosell(security,price=price,cost=acc_avg_cost,withdraw=0.3,stoploss=-0.05,minp=0.05,t=999) #追踪收盘价
            如果 sell==2:  #止损
                p5=round(price*(1-g.hd),2)
                x=order_target(security,0,p=p5)
                hpq.log.info(context.current_dt+   " 止损卖出: %s ,数量:%d,卖出价格:%.2f,成交资金:%0.2f"%(security,amos,p5,amos*p5))
                cruise_missile.add(security,2,price)
            否则如果 sell==1: #止盈
                p5=round(price*(1-g.hd),2)
                x=order_target(security,0,p=p5)
                hpq.log.info(context.current_dt+   " 止盈卖出: %s ,数量:%d,卖出价格:%.2f,成交资金:%0.2f"%(security,amos,p5,amos*p5))
                cruise_missile.add(security,2,price)
            继续
        否则如果 amos2>0 : #有持仓
            继续


        如果 不是 cruise_missile.isin(security,2):
            cruise_missile.add(security,2,price)
            继续

        buy=cruise_missile.oncheck(security,2,price)
        如果 buy==1:
            price2=round(price*(1+g.hd),2)
            x=order_target(security,1000,p=price2)
            如果 x !=:
                hpq.log.info(context.current_dt+ " 买入: %s ,数量:%d,买入价格:%.2f,成交资金:%0.2f"%(security,x.amount,price,x.amount*price))

我们选取一个股票池,看看回测结果。
在这里插入图片描述
如果使用easytrader进行实盘交易,可以使用下面的程序代码。

策略名='交易_中文巡航导弹'
#修改日期:2022-11-05
导入 pandas 命名为 pd
导入 HP_tdx 命名为 htdx
导入 HP_global 命名为 hg   #建立全局数据域hg
从 HP_formula 导入 *
导入 HP_formula 命名为 gs
从 HP_factor 导入 *
导入 HP_factor 命名为 hf
导入 HP_quant 命名为 hpq
从 HP_quant 导入 *
导入 time

导入 easytrader
##初始化同花顺软件
ths = easytrader.use('ths')
ths.connect( "C:\\同花顺软件\\同花顺\\xiadan.exe")
ths.enable_type_keys_for_editor()

#巡航导弹
cruise_missile=hf.SuperOrder()

函数 初始化(context):
    #context.istest=True    
    context.zh='xiaobai'      #账户
    context.zhlx='回测'   #账户类型,2个汉字
    context.firstcash=2000000.00  #初始现金
    context.cash=context.firstcash
    context.portfolio.available_cash=context.firstcash
    set_maxdays(300)

    # 设置我们要操作的股票池
    g.stocks=hpq.get_universe()
    hpq.log.info('----策略环境信息-----')
    hpq.log.info('量化模块版本: '+str(hpq.ver))
    hpq.log.info('量化模块最后修改日期: '+str(hpq.mdate))
    hpq.log.info('svrip: '+hpq.svrip)
    hpq.log.info('svrport: '+str(hpq.svrport))
    hpq.log.info('\n----开始运行策略-----\n')
    hpq.log.info('策略名:'+策略名)
    qhcsj2=time.strftime('%Y%m%d %H:%M:%S')
    hpq.log.info('开始运行时间:'+qhcsj2)
    # 设定沪深300作为基准
    set_benchmark((1,'000001'))
    # 开启动态复权模式(真实价格)
    set_option('use_real_price',)
    #pop_universe([(1,'600861'),(0,'000517')])  #需要删除的股票代码池 
    hg.seemsg=假
    g.stocks2=[]  #被选池
    htdx.TdxInit(ip='139.159.239.163',port=7709)
    g.hd=0.005  #滑点比例 

# 每个单位时间(如果按天回测,则每天调用一次,如果按分钟,则每分钟调用一次)调用一次
函数 盘中运行(context, data):
    序列循环 m,security 在其中 context.universe[0]:
        df=data[security].df
        如果 len(df)<1:
            继续
        price = data[security].close
        close=price
        high= data[security].high
        low= data[security].low
        pre_close=data[security].pre_close   #前收盘
        #value = context.portfolio.positions[security].value
        acc_avg_cost  = context.portfolio.positions[security].acc_avg_cost #买入成本价 
        amos=context.portfolio.positions[security].closeable_amount  #可卖数量
        amos2=context.portfolio.positions[security].total_amount   #总数量

        #如果可卖数量大于0,做止盈和止损处理
        如果 amos>0:
            #sell=hf.autosell(security,price=high,cost=acc_avg_cost,withdraw=0.3,stoploss=-0.05,minp=0.05,t=999)  #追踪最高价
            sell=hf.autosell(security,price=price,cost=acc_avg_cost,withdraw=0.3,stoploss=-0.05,minp=0.05,t=999) #追踪收盘价
            如果 sell==2:  #止损
                p5=round(price*(1-g.hd),2)
                x=order_target(security,0,p=p5)
                hpq.log.info(context.current_dt+   " 止损卖出: %s ,数量:%d,卖出价格:%.2f,成交资金:%0.2f"%(security,amos,p5,amos*p5))
                cruise_missile.add(security,2,price)
                ths.buy(security, price=p5, amount=amos) 
            否则如果 sell==1: #止盈
                p5=round(price*(1-g.hd),2)
                x=order_target(security,0,p=p5)
                hpq.log.info(context.current_dt+   " 止盈卖出: %s ,数量:%d,卖出价格:%.2f,成交资金:%0.2f"%(security,amos,p5,amos*p5))
                cruise_missile.add(security,2,price)
                ths.buy(security, price=p5, amount=amos) 
            继续
        否则如果 amos2>0 : #有持仓
            继续


        如果 不是 cruise_missile.isin(security,2):
            cruise_missile.add(security,2,price)
            继续

        buy=cruise_missile.oncheck(security,2,price)
        如果 buy==1:
            price2=round(price*(1+g.hd),2)
            x=order_target(security,1000,p=price2)
            ths.buy(security, price=price2, amount=1000) 
            如果 x !=:
                hpq.log.info(context.current_dt+ " 买入: %s ,数量:%d,买入价格:%.2f,成交资金:%0.2f"%(security,x.amount,price,x.amount*price))

中文Python穿云箭量化平台支持中文Python语法,提供了完整的Python股票软件开发源代码。新版本支持自编指标公式脚本编写策略回测,并有一键生成Python交易策略功能,提供多空雷达,抄底雷达,响尾蛇导弹,巡航到导弹等交易技术。提供期货行情,期货CTP接口,提供MT5交易接口,提供miniQMT接口,盈透TWS接口以及彩票模块。支持问财选股,支持语音报盘,微信通知等。用户可以根据自己需求设计出满足自己要求的 自动化交易工具。我们后面逐步介绍这些功能和技术。
超越自己是我的每一步!我的进步就是你的进步!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/545614.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

无效数据大揭秘——你不知道的那些坑!

进行数据管理时&#xff0c;无效数据可能会对生产力和决策质量造成严重的影响。如何发现和处理无效数据变得愈发重要。一起来唠唠各位大佬是如何处理的&#xff1f; ⭐ 什么是无效数据&#xff1f;⭐ 如何处理无效数据&#xff1f;⭐ 如何减少无效数据&#xff1f;⭐ 无效数据管…

Python入门(十一)while循环(一)

while循环&#xff08;一&#xff09; 1.简介2.使用while循环3.让用户选择何时退出4.使用标志5.使用break退出循环6.在循环中使用continue7.避免无限循环 作者&#xff1a;xiou 1.简介 for循环用于针对集合中的每个元素都执行一个代码块&#xff0c;而while循环则不断运行&am…

css3:精灵图sprite的使用

文章目录 精灵图sprite简介原理优缺点实例通过精灵图实现一个导航栏 精灵图sprite 简介 CSS精灵技术&#xff08;也称CSS Sprites、CSS雪碧&#xff09;&#xff0c;简单来说就是从一张有各种小图标的大图上截取下来一个小图标来使用。 正因为只要加载一张大图片&#xff0c;…

Restful路径下编写controller层及其增删改查

前置&#xff1a;需要先创建好项目&#xff0c;并且使用mabtis根据数据表生成好代码 mybatis plus自动生成代码&#xff08;代码生成器&#xff09;_wa1ttinG的博客-CSDN博客 一、controller层定义 controller层就是和用户打交道&#xff0c;直接与前端进行交互。可调用service…

安全中级1-nginx_host与php处理不同绕过

一、nginx配置证书 1.生成一个ssl.key密钥 openssl genrsa -des3 -out ssl.key 2096 2.创建一个key的目录,并将ssl.key放入到key目录下 mkdir key mv ssl.key key/ cd key 3.将ssl.key修改为xxx.key mv ssl.key xxx.key 4.创建ssl.key密钥 openssl rsa -in xxx.key -out ssl.…

【计算机组成原理】实验二

文章目录 实验二 运算器实验一、实验目的二、实验原理三、运算器功能编码四、设置初始状态任务一 算术运算任务二 逻辑运算任务三 移位运算任务四 进位控制与零标志 实验二 运算器实验 一、实验目的 完成算术、逻辑、移位运算实验&#xff0c;熟悉ALU运算类型的控制位运用。…

华为OD机试真题 Java 实现【硬件产品销售方案】【2023Q1 200分】

一、题目描述 某公司目前推出了AI开发者套件、AI加速卡、AI加速模块、AI服务器、智能边缘多种硬件产品&#xff0c;每种产品包含若干个型号。 现某合作厂商要采购金额为amount元的硬件产品搭建自己的AI基座。 假设当前库存有N种产品&#xff0c;每种产品的库存量充足&#x…

Python爬虫urllib的基础使用详解

文章目录 1、urllib的使用response 服务器返回的数据&#xff1a;一个类型&#xff0c;六个方法urllib.request.urlretrieve(url,filename) 请求下载网页 请求下载图片 请求下载视频 2、请求对象的定制3.编解码post请求方式ajax的get请求ajax的post请求cookie模拟登录使用handl…

策略模式+单例模式(go)

《设计模式&#xff1a;可复用面向对象软件的基础》 策略允许算法独立于使用它的客户端而变化。 算法可以互相替换&#xff0c;不影响客户端 一个类定义多种行为&#xff0c;并且这些行为在这个类操作中以多个条件形式出现。将相关的条件移入它们各自的Strategy类中以替代这些…

Tomcat 的maxConnections、maxThreads、acceptCount 之间的关系

1. 在springboot 项目配置方式 server:port: 8081servlet:context-path: "/account"tomcat:threads:max: 200min-spare: 10max-connections: 8192accept-count: 100connection-timeout: 10000min-spare &#xff1a;最小线程数 最小工作空闲线程数&#xff0c;默认1…

ChatGPT 自定义提示词模板提升使用效率

相关文章推荐&#xff1a; 《提问的艺术&#xff1a;如何通过提示词让 ChatGPT 更准确地理解你的问题&#xff1f;》 《这些免费插件&#xff0c;让你的 ChatGPT 效率爆炸》 一、背景 现在 ChatGPT 异常火爆&#xff0c;很多人都在体验甚至购买 ChatGPT Plus。 现在使用 ChatG…

ProtoBuf之启航

"How do we do we do go refarming~" 如何理解序列化和反序列化? 序列化: 把 对象 转换为 字节序列 的过程 称为对象的序列化。 反序列化: 把 字节序列 恢复为 对象 的过程 称为对象的反序列化。 这两对反义词从概念上来说并不难理解&#xff0c;但是为什么有事没…

Xcode 14.3 和 iOS 16.4 为 SwiftUI 带来了哪些新的功能?

0. 概览 今年年初&#xff0c;Apple 推出了最新的 Xcode 14.3 以及对应的 iOS 16.4 。 与此同时&#xff0c;它们对目前最新的 SwiftUI 4.0 也添加了一些新功能&#xff1a; sheet 弹窗后部视图&#xff08;Interact with a view Behind a sheet&#xff09;可交互&#xff…

高级树结构

二叉排序树 左子树中所有结点的值&#xff0c;均小于其根结点的值。 右子树中所有结点的值&#xff0c;均大于其根结点的值。 二叉搜索树的子树也是二叉搜索树。 注意&#xff1a; 1.二叉查找树不能插入重复元素 2.中序遍历是一个递增的数列 3.高度越小查询效率越高 二叉排序…

RK3568平台开发系列讲解(驱动基础篇)RK 看门狗的使用

🚀返回专栏总目录 文章目录 一、简介二、DTS配置三、使用沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇将对RK 看门狗的使用进行学习。 文章目录 一、简介二、DTS配置三、使用一、简介 看门狗(watchdog)是一个定时器,启动之后会开始计时。系统或者软件需要…

一个非常sb的报错……idea创建项目初始化失败……

今天在用idea创建项目时报错项目初始化失败&#xff1b; 一开始以为是配置原因&#xff0c;但后面尝试创建空项目都失败…… 觉得可能跟版本什么的无关&#xff0c;尝试重启、更新系统后&#xff0c;试着以管理员身份运行idea&#xff0c;问题解决了……………… 如果有报错信…

C语言——结构体初阶

哈喽&#xff0c;大家好&#xff0c;今天我们来学习C语言中的结构体&#xff0c;今天主要学习初阶结构体&#xff0c;后期我们将继续学习结构体进阶。 目录 1.结构体类型的声明 1.1 结构体的基础知识 1.2 结构的声明 1.3 结构成员的类型 1.4 结构体变量的定义和初始化 2. …

Cannot resolve plugin com.spotify:docker-maven-plugin:1.2.2 not found

问题 遇到这个错误是按照ruoyi-clou-plus把插件复制过来的,开始没有版本号&#xff0c;一直爆红&#xff0c;自己随便试了几个版本号&#xff0c;还是提示Cannot resolve plugin com.spotify:docker-maven-plugin not found 过程分析 百度了很多都说在settings.xml中加上 …

Tomcat安装与使用

Tomcat 是HTTP服务器&#xff0c;用于使用HTTP协议。 1、下载Tomcat 下载链接&#xff1a;https://tomcat.apache.org/ 进入官网后&#xff0c;根据自己想要下载的版本进行下载&#xff0c;我这里选择下载的版本是Tomcat 8. 点击选择自己想要下载的对应版本&#xff0c;下载Z…