精华内容
下载资源
问答
  • 2020-12-29 19:24:02

    ·了解交易的规则与数据指标,学习正确的金融算法·基于真实的数据进行回测和分析,了解期货交易的内涵·循序渐进的案例式教学,按部就班地操作就能上手·基于Python 3.7进行分析,提供示例代码,可在异步社区轻松下载如今要想在金融领域保持竞争力,只是精通电子表格和计算器已经远远不够,传统的工具和数据集已经无法满足我们的需要,Python已经成为金融从业者需要掌握的又一个强大工具。本书从数据分析的角度切入,以案例的形式深入数据背后,从基本的交易规则讲起,引导读者了解技术指标,并配合丰富的Python代码示例,教读者掌握期货量化交易技巧。

    如今,要想在企业和投资金融领域保持竞争力,只是精通电子表格和计算器已经远远不够,传统工具和数据集已经无法满足我们的需要。本书将用Python编程来解决期货量化交易的问题,并通过110多个技巧介绍实际的解决方案。本书基于台湾地区期货交易所的案例进行讲解,从数据分析的角度切入,以技巧的形式深入数据背后,让读者从基本的期货交易规则开始,了解相关的技术指标,并能够熟练使用Python编程走上量化交易之路。本书既适合期货领域的从业人员学习,也适合想进入金融领域的程序员参考。

    酆士昌,在Linux系统管理与服务器架设方面拥有十多年经验,目前担任企业信息技术部门主管并兼任讲师,曾教授操作系统、服务器、云端系统等课程。 刘承彦,目前供职于金融科技公司,专注于算法开发与数据库管理,拥有多年程序化交易与教学经验。他还在多所学校担任讲师,讲授Python基础、大数据分析以及程序化交易等课程。

    第 1章 Python的基本语法 1技巧1 【概念】Python的诞生与发展 1技巧2 【操作】安装Python的基本环境 2技巧3 【操作】Python语言的基本操作 5技巧4 【操作】执行Python语言的方式 6技巧5 【操作】Python的基本运算与数学函数 9技巧6 【操作】基本变量的使用 16技巧7 【操作】元组、列表与字典的应用 18技巧8 【操作】使用Python的第三方库 26技巧9 【操作】字符串处理的应用 27技巧10 【操作】时间函数应用 30技巧11 【程序】文档的读取与写入 33技巧12 【操作】MySQL数据库的基本操作 34技巧13 【程序】使用Python访问MySQL 37技巧14 【操作】数据的分割与合并 39技巧15 【程序】判断表达式与示例 41技巧16 【程序】循环语句与示例 43第 2章 建立自己的工具函数 49技巧17 【概念】建立函数的方法 49技巧18 【程序】在函数库中建立多个函数 50技巧19 【概念】了解时间格式 51技巧20 【程序】时间转换秒数函数 54技巧21 【程序】秒数转换时间函数 55技巧22 【程序】固定时间内的高开低收量 55技巧23 【程序】获取指定时间的价格与数量 56技巧24 【程序】计算移动平均价格 57第3章 Python的图表绘制 59技巧25 【操作】安装绘图包 59技巧26 【概念】折线图与MA的关联性 60技巧27 【程序】绘制价格折线图 61技巧28 【程序】绘制一个与MA重叠的图表 63技巧29 【概念】委托档的意义与用法 65技巧30 【程序】价格折线和委托总量差图 65技巧31 【程序】绘制委托比重线图 68技巧32 【程序】绘制价格线图和量能图 70技巧33 【概念】上下五档的含义与量能变化 72技巧34 【程序】绘制上下五档的量能分布表 73技巧35 【程序】绘制上下五档平均价格走势图 75技巧36 【概念】K线图的解读 76技巧37 【程序】绘制K线图 77技巧38 【程序】绘制价格和点位图表 82技巧39 【程序】绘制绩效图表 84第4章 进行历史回测 86技巧40 【概念】认识历史回测 86技巧41 【概念】回测算法架构 86技巧42 【概念】建立回测流程 87技巧43 【概念】即时算法回放回测 94技巧44 【概念】时间单位不同的差异 94技巧45 【程序】固定时间买进卖出回测 96技巧46 【程序】顺势交易回测 98技巧47 【程序】MA交叉买进卖出回测 99技巧48 【程序】绘制价格走势图并标上买卖点 102第5章 设计自己的指标函数 104技巧49 【概念】何谓指标函数 104技巧50 【概念】定义输入及输出 104技巧51 【程序】获取即时报价咨询 105技巧52 【程序】计算每分钟的高开低收价 107技巧53 【程序】计算每分钟的累计量 109技巧54 【程序】计算买卖方每笔平均成交手数 110技巧55 【概念】了解内外盘的含义 111技巧56 【程序】计算内外盘总量 112技巧57 【程序】计算内外盘比率 113技巧58 【程序】计算买卖方委托总量 114技巧59 【程序】计算买卖方委托平均量 115技巧60 【程序】计算动态委托量变化 116技巧61 【程序】计算上下五档平均成本 117技巧62 【程序】计算价格MA指标 119技巧63 【程序】计算量MA指标 120技巧64 【程序】计算每分钟价格变化趋势 122技巧65 【程序】计算固定tick数高开低收价 123技巧66 【程序】计算大户指标 124第6章 判断涨跌的趋势 127技巧67 【概念】趋势的发生与判断 127技巧68 【概念】趋势交易与顺势交易 128技巧69 【程序】时间区段价格走势 128技巧70 【程序】多点查看委托量比重 129技巧71 【程序】多区段查看委托量变化 131技巧72 【程序】查看买卖平均成交手数 132技巧73 【程序】查看内外盘总量 133技巧74 【程序】大户指标趋势判断 135第7章 规划进场的时机 137技巧75 【概念】何谓进场 137技巧76 【概念】进场点及成交价 137技巧77 【概念】趋势交易和顺势交易的进场区别 138技巧78 【概念】如何通过Python进行实盘委托 138技巧79 【程序】固定时间进场 139技巧80 【程序】价格穿越MA进场 140技巧81 【程序】MA快线追慢线进场 142技巧82 【程序】MA第二次穿越进场 143技巧83 【程序】MA延迟进场第二次穿越进场 146技巧84 【程序】上下穿越高低点顺势进场 148技巧85 【程序】上下穿越高低点加上高低点区间顺势进场 151技巧86 【程序】大户指标触发进场 153第8章 设置出场及止损获利的条件 156技巧87 【概念】何谓出场 156技巧88 【程序】价格止损与获利 157技巧89 【程序】价格回跌获利出场 158技巧90 【程序】MA穿越价格出场 159技巧91 【程序】MA慢线追过快线出场 160技巧92 【程序】委托比重反转出场 162技巧93 【程序】委托量抽单出场 163技巧94 【程序】内外盘量反转出场 164技巧95 【程序】一分钟爆量出场 165技巧96 【程序】大户指标反转出场 168第9章 连接券商的即时报价与下单函数 170技巧97 【概念】程序交易流程 170技巧98 【概念】交易所解释信息 171技巧99 【概念】获取报价的方式 172技巧100 【概念】实盘交易算法与回测算法差异 174技巧101 【概念】下单参数介绍 175技巧102 【概念】实盘委托的市场机制 176技巧103 【程序】完整下单函数介绍 178技巧104 【程序】发送市价委托函数 179技巧105 【程序】发送限价委托函数 180技巧106 【程序】获取单笔委托明细 181技巧107 【程序】撤销委托函数 182技巧108 【概念】认识交易命令 183技巧109 【程序】限价单到期转市价单 184技巧110 【程序】限价单到期撤单 185第 10章 实盘交易与账务管理 187技巧111 【程序】固定时间买进卖出策略 187技巧112 【程序】顺势交易策略(海龟策略) 189技巧113 【程序】MA交叉买进卖出策略 192技巧114 【概念】何谓账务 195技巧115 【程序】获取总委托明细 196技巧116 【程序】获取未平仓明细 196技巧117 【程序】获取权益数 197

    更多相关内容
  • 重磅干货:万字长文解析全球商品期货量化交易策略
  • 期货量化交易

    2022-04-19 15:05:10
    一、量化交易概述 量化交易是指以先进的数学模型替代人为的主观判断,利用计算机技术从庞大的历史数据中海选能带来超额收益的多种“大概率”事件以制定策略,极大地减少了投资者情绪波动的影响,避免在市场极度狂热...

    一、量化交易概述

    量化交易是指以先进的数学模型替代人为的主观判断,利用计算机技术从庞大的历史数据中海选能带来超额收益的多种“大概率”事件以制定策略,极大地减少了投资者情绪波动的影响,避免在市场极度狂热或悲观的情况下作出非理性的投资决策。

    量化投资和传统的定性投资本质上来说是相同的,二者都是基于市场非有效或弱有效的理论基础。两者的区别在于量化投资管理是“定性思想的量化应用”,更加强调数据。

    二、量化交易特点

    量化交易具有以下几个方面的特点:

    1、纪律性。

    根据模型的运行结果进行决策,而不是凭感觉。纪律性既可以克制人性中贪婪、恐惧和侥幸心理等弱点,也可以克服认知偏差,且可跟踪。

    2、系统性。

    具体表现为“三多”。
    一是多层次,包括在大类资产配置、行业选择、精选具体资产三个层次上都有模型;
    二是多角度,定量投资的核心思想包括宏观周期、市场结构、估值、成长、盈利质量、分析师盈利预测、市场情绪等多个角度;
    三是多数据,即对海量数据的处理。

    3、套利思想。

    定量投资通过全面、系统性的扫描捕捉错误定价、错误估值带来的机会,从而发现估值洼地,并通过买入低估资产、卖出高估资产而获利。

    4、概率取胜。

    一是定量投资不断从历史数据中挖掘有望重复的规律并加以利用;二是依靠组合资产取胜,而不是单个资产取胜。

    三、量化投资注意的方面

    量化投资技术包括多种具体方法,在投资品种选择、投资时机选择、股指期货套利、商品期货套利、统计套利和算法交易等领域得到广泛应用。
    量化交易一般会经过海量数据仿真测试和模拟操作等手段进行检验,并依据一定的风险管理算法进行仓位和资金配置,实现风险最小化和收益最大化,但往往也会存在一定的潜在风险,具体包括:
    1、历史数据的完整性。行情数据不完整可能导致模型与行情数据不匹配。行情数据自身风格转换,也可能导致模型失败,如交易流动性,价格波动幅度,价格波动频率等,而这一点是量化交易难以克服的。
    2、模型设计中没有考虑仓位和资金配置,没有安全的风险评估和预防措施,可能导致资金、仓位和模型的不匹配,而发生爆仓现象。
    3、网络中断,硬件故障也可能对量化交易产生影响。
    4、同质模型产生竞争交易现象导致的风险。
    5、单一投资品种导致的不可预测风险。
    为规避或减小量化交易存在的潜在风险,可采取的策略有:保证历史数据的完整性;在线调整模型参数;在线选择模型类型;风险在线监测和规避等。

    展开全文
  • 本文摘自《Python期货量化交易》 本书按内容逐级递进的层次进行编写,全书分两篇,共21章。 第一篇介绍Python基础。主要介绍Python编程的基础知识,共13章。 第1章主要介绍Python的语法规则。因为写一行代码就是写...

    1 常用内置常量

    Python解释器在启动时会创建None、True、False三个常量,None表示“无”,True表示“真”,False表示“假”。

    None是NoneType类型的唯一值,表示缺少值或空值,例如,当函数没有返回值时会默认返回None值。

    因为Python用“有”和“无”来表示“真”和“假”,“有”为真,“无”为假,所以None、0、空字符串、空列表、空字典都是假,非“空”数据则为真。

    True和False是bool类型的值,True和False除了表示真和假,其本身也有值,True的值为1,False的值为0,可以与数值做计算。例如,5+True结果为6,3*False结果为0,1==True结果为True,1 is True结果为False,以上示例说明True的值为1,但True在内存中的地址和整数1的地址不同。

    None、True、False这三个常量在量化策略中会经常用到。还有Ellipsis常量与省略号的字面含义相同,常用在注释当中。

    2 整型

    在计算交易手数时需要用到整型,如1、2、3、4。

    Python可以直接用整数进行计算,当在Python代码中输入整数数值时,Python会自动把输入的数值创建为整型。

    当然,你也可以用整型类int()创建整数,给整型类int()传递数值参数,int()便会把数值参数转换为整型。例如,int(5.89)的结果是5,转换时只保留了整数部分;int('123')的结果是123,把字符串类型转换成了整数类型。

    我们可能需要从本地文件中读取数据,比如保存在本地的成交数据,所读取的数据通常是字符串类型,要把字符串类型转换成整型才能参与相关计算。

    整型可以是正数也可以是负数,如3和−3。在量化策略中可定义净持仓pos=3,表示净多头3手;定义pos= -3,表示净空头3手。

    3 浮点型

    价格、保证金等属于浮点型数值,浮点型数值是带有小数点的小数。

    类似于整型,Python可以直接用浮点型数值计算,也可以用浮点型类float()创建浮点型数值。例如,float(5)结果是5.0,在转换整数时增加了一个小数位;float('5.999')结果是5.999,把字符串转换成了浮点型数值。

    整型和浮点型相加减,结果会转换成浮点型。如果在计算中想要保留两位小数,可以用round()函数,例如,a=5.946326598,round(a,2)结果是5.95,经过四舍五入之后保留两位小数。

    4 字符串类型

    字符串是由一对英文单引号、一对英文双引号、一对英文三单引号或一对英文三双引号包围的字符,交易品种、账号、密码等都是字符串类型。例如,'账号'、"123456"、'''密码'''、"""jkl"""都是合法的字符串。

    字符串是序列类型的数据,字符串的字符有位置(索引)属性,从左到右字符的位置序号为0、1、2、3、4、5、6……从右到左的位置序号为−1、−2、−3、−4、−5、−6……

    通常,字符串用一对英文单引号或一对英文双引号定义,英文三单引号或三双引号则用于多行注释。

    如果一个字符串里需要有英文单引号,则应用英文双引号定义;如果一个字符串里需要有英文双引号,则应用英文单引号定义。此时的英文单引号和双引号为字符,而不是字符串的标识,例如,"ad'cd"、'ef"gh',英文双引号或单引号组成一对,成为字符串的标识,字符串中的引号则作为字符以有别于字符串标识,不会出现“含义”冲突。

    字符串中可以有空格,因为空格也是字符。Python用“有”和“无”来表示“真”和“假”,没有任何字符的字符串为假,有字符的字符串为真。例如,“没有字符,为假;”有空格字符,为真。

    Python可以直接处理代码中的字符串,把字符串创建在内存中并保存为字符串类型,也可以用字符串类str()创建字符串。例如,str(123)结果为'123',把数值123转换成了字符串'123'。

    如果要在字符串中包含控制字符或有特殊含义的字符,就需要使用转义字符,常用的转义字符如表2-1所示。

    表2-1

    常用转义字符

    描述

    \n

    换行

    \r

    按Enter键

    \r\n

    按Enter键 + 换行

    \t

    制表符(Tab)

    \

    反斜杠(\)

    \'

    单引号字符串中的单引号

    \"

    双引号字符串中的双引号

    例如,print("abc\"de")输出abc"de,中间的英文双引号被\转义成字符,不会再与第一个英文双引号组成字符串标识。

    当在字符串前加上r或R,此时字符串为原始字符串,字符串中的“\”便不再是转义字符,而是“\”本身。但字符串的最后一个字符不能是“\”,原始字符串主要用在文件路径中。

    代码如下:

    >>> print(r'C:\new\T0002\export\MA.csv')
    C:\new\T0002\export\MA.csv
    
    >>> print(r'C:\new\T0002\export\')
      File "<stdin>", line 1
        print(r'C:\new\T0002\export\')
                                     ^
    SyntaxError: EOL while scanning string literal

    5 结构数据类型

    Python语言有许多的结构数据类型,最常用的有列表、元组、字典,列表和元组是序列类型,它们的元素有位置(索引)属性,而字典是集合类型,其元素没有位置属性。

    5.1 列表

    列表是以方括号“[ ]”包围的数据集合,不同元素间以英文逗号“,”隔开,列表的元素可以是任意数据类型,也可以是列表,例如,[1]、[1,]、[1, 2, 'a', [1,3], 'bcd']都是合法的列表。

    列表的元素有位置属性,从左到右元素的位置序号为0、1、2、3、4、5、6……从右到左的位置序号为−1、−2、−3、−4、−5、−6……

    Python可以直接处理代码中的列表,Python会自动创建列表,也可以用列表类list()创建列表。例如,a=list()创建空列表,给list()传递的参数必须是可迭代的,list()会按照参数的元素创建列表。例如,list('adffgghjj')结果是['a', 'd', 'f', 'f', 'g', 'g', 'h', 'j', 'j'],字符串的每个字符被创建为列表的元素。

    列表是可变的数据类型,对列表中的元素进行修改时会直接修改原列表,而不是生成一个新列表。

    5.2 元组

    元组可看成特殊的列表,元组是以小括号“( )”包围的数据集合,不同元素间以英文逗号“,”隔开,元组的元素可以是任意数据类型,也可以是元组,例如,(1,)、(1, 2, 'a', (1,3), 'bcd')都是合法的元组。当元组的元素只有一个时也不能省略英文逗号,否则小括号便不是元组的标识,而是语句运算,例如,(1,)是元组,而(1)则是数值1。

    同列表一样,元组的元素有位置属性,元素从左到右的位置序号为0、1、2、3、4、5、6……从右到左的位置序号为−1、−2、−3、−4、−5、−6……

    Python可以直接处理代码中的元组,Python也会把以英文逗号隔开的对象创建为元组,代码如下:

    >>> 1,2,3,4,5
    (1, 2, 3, 4, 5)

    Python也可以用元组类tuple()创建元组,例如,a=tuple()创建空元组,给tuple()传递的参数必须是可迭代的。tuple()会按照参数的元素创建元组,例如,tuple(['a', 'd', 'f', 'f', 'g'])的结果是('a', 'd', 'f', 'f', 'g'),把列表转换成了元组。

    元组是不可变数据类型,对元组中的元素进行修改会创建一个新的元组,而不是直接修改原来的元组。若需要创建一组不可变的数据对象,可用元组创建。

    元组主要用在变量定义中,代码如下:

    >>> a,b,c=1,2,3
    >>> a;b;c
    1
    2
    3

    在上述代码中,等号右边的“1,2,3”是元组,Python会自动按位置顺序把1赋值给a,把2赋值给b,把3赋值给c。

    5.3 字典

    字典是以大括号“{ }”包围起来的数据集合,数据以“键:值”对的形式存在,“值”可以是任意类型的数据,但“键”必须是不可变数据。不可变数据又称为可哈希的数据,可哈希数据具有唯一性,能产生唯一映射关系,因此,字典中元素的“键”都是不同的,可以通过“键”来访问字典中的元素。例如,{'a':1,'b':2,3:'c'}和{'a':1,'b':2,c:[1,2]}都是合法的字典。

    Python可以直接处理代码中的字典,也可以用字典类dict()创建字典,因为字典的元素是以“键:值”对的形式存在,所以传给dict()的参数应是关键字形式,代码如下:

    >>> dict(h=1,i=2,j=3,k=4)
    {'h': 1, 'i': 2, 'j': 3, 'k': 4}

    字典是集合类型,因此字典中的元素没有位置属性,元素是无序的,可以通过元素的键访问元素,不能通过位置访问元素。字典是可变的数据类型,修改元素的值或增删元素会直接改变原字典。

    本文摘自《Python期货量化交易》

    本书按内容逐级递进的层次进行编写,全书分两篇,共21章。

    第一篇介绍Python基础。主要介绍Python编程的基础知识,共13章。

    第1章主要介绍Python的语法规则。因为写一行代码就是写一条语句,所以先从语法规则介绍。

    第2章介绍Python常用的数据类型。数据是要处理的对象,也是语句的组成部分。

    第3章介绍函数。函数是代码重用的方式,我们编写的语句如果需要反复执行,就可以放进函数中,可把函数看作数据和各种语句的结合体。

    第4章介绍常用数据类型的运算。数据是一个对象,对象具有方法(函数),我们可以用Python内置函数处理数据,也可以用数据自带的方法处理数据。

    第5章介绍循环语句。Python语言的for循环和其他编程语言不同,Python的for循环是迭代执行可迭代对象,可迭代对象是Python语言的重要概念,特殊的可迭代对象生成器是异步协程的基础。

    第6章介绍类的概念。类是面向对象编程的核心概念,类是数据的属性与方法的封装,类也是代码重用的方式,它便于我们处理同类的问题。类可以被看作各种语句与函数的结合体。

    第7章介绍装饰器。装饰器也是代码重用的一种方式,装饰器可被看作“函数的继承”。

    第8章介绍错误和异常的处理。学完前面几章的内容我们就可以写各种程序了,但程序在执行时可能遇到错误和异常,本章介绍了异常捕捉及错误处理的方法。

    第9章介绍模块和包。模块是Python文件,我们写好的代码需要保存成Python文件,模块所在的文件夹称为包。

    第10章介绍日期时间的处理。TqSdk业务数据的时间经常需要转换,我们也可能需要设置时间条件来选择执行量化策略。

    第11~13章介绍实现异步任务的方法,分别是多进程、多线程和异步协程,这3章尽可能详尽地列出了量化中可能会用到的方法,TqSdk的代码比较依赖异步协程,读者应当掌握这部分内容。

    第二篇介绍期货量化交易。主要介绍如何用TqSdk编写期货交易策略。

    第14章介绍TqSdk的基本信息。

    第15章介绍pandas模块。因为K线和tick数据是pandas的数据格式,所以有必要介绍pandas在数据处理中的使用。

    第16章介绍TqSdk各接口如何使用,诸如账户登录、下单、生成图形化界面等。

    第17章解读TqSdk的部分函数,深入了解这些函数才可以进行高级开发。

    第18章介绍一些量化策略的框架,这些框架可用于多种策略场景中。

    第19章和第20章介绍图形化编程。可以用PyQt5开发GUI程序,用
    PyQtgraph绘制实时K线和技术指标。

    第21章介绍时间序列的相关性检验方法,并作为量化分析的一个简单示例。

     

    展开全文
  • python版期货量化交易(AlgoPlus)案例(多进程处理子任务) python因为简单、易上手,所以深受大家的喜爱,并且随着人工智能的不断发展与进步,python也一跃成为了最受欢迎的编程语言之一,俗话说:人生苦短,我用...

    python版期货量化交易(AlgoPlus)案例(多进程处理子任务)

    python因为简单、易上手,所以深受大家的喜爱,并且随着人工智能的不断发展与进步,python也一跃成为了最受欢迎的编程语言之一,俗话说:人生苦短,我用python。伴随着量化交易的崛起,上期所下面的子公司根据CTP接口封装出了python版本的api接口:Algoplus



    前言

    为了 策略的安全性,有必要自己搭建一套交易系统


    提示:以下是本篇文章正文内容,下面案例可供参考

    一、AlgoPlus是什么?

    安装: pip install AlgoPlus
    

    关于AlgoPlus的介绍请查看www.algoplus.com官网,这里不得不得不吐槽有一下,AlgoPlus官网有一段时间打不开。

    二、使用步骤

    1.引入库

    代码如下(示例):

    # from CTP.MdApi import *
    from AlgoPlus.CTP.FutureAccount import get_simnow_account, FutureAccount
    from AlgoPlus.CTP.FutureAccount import SIMNOW_SERVER, MD_LOCATION, TD_LOCATION
    
    from multiprocessing import Process, Queue
    
    from CTP.MdApi import run_bar_engine, run_tick_engine
    
    from CTP.TradeApi import run_trade_engine
    
    

    2.账号配置

    代码如下(示例):

     # 账户配置
        future_account = FutureAccount(
            broker_id='9999',  # 期货公司BrokerID
            # server_dict={'TDServer': "180.168.146.187:10130", 'MDServer': '180.168.146.187:10131'},   # TEST
            server_dict={'TDServer': "218.202.237.33:10102", 'MDServer': '218.202.237.33:10112'},       # 移动
            # TDServer为交易服务器,MDServer为行情服务器。服务器地址格式为"ip:port。"
            reserve_server_dict={},
            investor_id="****************",     # 账户
            password="****************",        # 密码
            app_id='simnow_client_test',        # 认证使用AppID
            auth_code='0000000000000000',       # 认证使用授权码
            instrument_id_list=instrument_id_list,  # 订阅合约列表
            md_page_dir=MD_LOCATION,                # MdApi流文件存储地址,默认MD_LOCATION
            td_page_dir=TD_LOCATION                 # TraderApi流文件存储地址,默认TD_LOCATION
        )
    

    SimNow提供了7x24小时的模拟服务器

    3.合成分钟线

    代码如下(algoplus提供官方示例):

    # ///深度行情通知
        def OnRtnDepthMarketData(self, pDepthMarketData):
            last_update_time = self.bar_dict[pDepthMarketData['InstrumentID']]["UpdateTime"]
            is_new_1minute = (pDepthMarketData['UpdateTime'][:-2] != last_update_time[:-2]) and pDepthMarketData['UpdateTime'] != b'21:00:00'  # 1分钟K线条件
            # is_new_5minute = is_new_1minute and int(pDepthMarketData['UpdateTime'][-4]) % 5 == 0  # 5分钟K线条件
            # is_new_10minute = is_new_1minute and pDepthMarketData['UpdateTime'][-4] == b"0"  # 10分钟K线条件
            # is_new_10minute = is_new_1minute and int(pDepthMarketData['UpdateTime'][-5:-3]) % 15 == 0  # 15分钟K线条件
            # is_new_30minute = is_new_1minute and int(pDepthMarketData['UpdateTime'][-5:-3]) % 30 == 0  # 30分钟K线条件
            # is_new_hour = is_new_1minute and int(pDepthMarketData['UpdateTime'][-5:-3]) % 60 == 0  # 60分钟K线条件
    
            # # 新K线开始
            if is_new_1minute and self.bar_dict[pDepthMarketData['InstrumentID']]["UpdateTime"] != b"99:99:99":
                for md_queue in self.md_queue_list:
                    md_queue.put(self.bar_dict[pDepthMarketData['InstrumentID']])
    
            # 将Tick池化为Bar
            tick_to_bar(self.bar_dict[pDepthMarketData['InstrumentID']], pDepthMarketData, is_new_1minute)
    

    注意:我在向队列里添加数据时使用了深拷贝,官方给的示例有时无法得到正确的一分钟k线数据,因为当你在交易进程中还未拿到k线数据之前,已经被修改了。

    4.Join函数

    在Join函数中可以写策略逻辑:开仓、平仓等。
    
        def Join(self):
            lastPrice = 0  # 上根k线的收盘价
            while True:
                if self.status == 0:
                    if not self.md_queue.empty():
    
                        makeData = self.md_queue.get(True)
    
                        # 撤单
                        if self.local_position_dict:
                            if self.local_position_dict[self.tickData['InstrumentID']]['Volume'] != 0:
                                self.req_remove(self.tickData)
    
                        print(f"====={makeData}")
                        # 亏损超8个点止损,回撤6个点止损
                        for instrument_id, position in self.local_position_dict.items():
                            if self.symbol_close[instrument_id] == 1:
                                if instrument_id not in self.md_dict.keys():
                                    break
                                if position['Volume'] != 0 and position['Direction'] == b'0':
                                    self.sell_close(b'', instrument_id, makeData['LastPrice'] - 6, 1)
                                    print(f"卖平仓:{lastPrice}{makeData['LastPrice']}")
                                else:
                                    self.buy_close(b'', instrument_id, makeData['LastPrice'] + 6, 1)
                                    print(f"买平仓:{lastPrice}{makeData['LastPrice']}")
    
                        if lastPrice != 0:
                            sleep(1)   # 时间是59s的时候休眠1s,0s时开仓
                            if makeData['LastPrice'] >= lastPrice:
                                self.buy_open(b'', b'p2209', makeData['LastPrice'] + 6, 1)
                                print(f"买开仓:{lastPrice}{makeData['LastPrice']}")
                            else:
                                self.sell_open(b'', b'p2209', makeData['LastPrice'] - 6, 1)
                                print(f"卖开仓:{lastPrice}{makeData['LastPrice']}")
    
                        lastPrice = makeData['LastPrice']
    
                        # 初始化为最新价
                        self.HighPrice = makeData['LastPrice']
                        self.LowPrice = makeData['LastPrice']
    
                else:
                    sleep(1)
                    
                # 止盈止损
                self.check_position()
    
    

    5.结果展示

    在这里插入图片描述


    源代码链接: https://pan.baidu.com/s/10HnZf89cEAbXtlbrJRlVEA .
    提取码:yooq

    如果您熟悉c++11,请看CTP开发案例:
    CTP接口开发链接: http://t.csdn.cn/AnkZy .

    总结

    请关注www.algoplus.com官网的最新消息

    展开全文
  • 1.双均线策略(期货) 双均线策略是简单移动平均线策略的加强版。移动平均线目的是过滤掉时间序列中的高频扰动,保留有用的低频趋势。它以滞后性的代价获得了平滑性,比如,在一轮牛市行情后,只有当价格出现大幅度的...
  • 所谓的麦语言就是从早期的股票技术指标延伸出来的一套程序化函数库。把算法封装到一个个函数里,用户只需要像“积木式”的调用这一行行函数,实现策略逻辑。 我们兼容了:数据引用、统计函数、数学函数、...
  • 最近有从事期货交易的朋友找到我,说一起探索下期货量化交易,因为之前基于CTP开发过相关期货交易软件,对量化交易有个基本了解。之前是基于C++和QT开发的客户端软件,了解了下现在市面上已经有了比较成熟量化交易...
  • 所谓的麦语言就是从早期的股票技术指标延伸出来的一套程序化函数库。把算法封装到一个个函数里,用户只需要像“积木式”的调用这一行行函数,实现策略逻辑。   我们兼容了:数据引用、统计函数、数学...
  • python量化交易.pdf

    2021-11-07 11:03:25
    python量化交易教程,从Python入门到量化交易策略,量化交易师的python日记,股票量化交易,alpha多因子模型,宏观研究,布林带,均线系统,cci顺势指标探析,EMV技术指标的构建及应用,FPC指标选股,动量模型,基于...
  • 很多人写CTP都是为了自动交易。 费好大劲,CTP接口写好了,该往策略方面靠了。 有同学说:“那简单,把文华的策略翻译到CTP里去。” 姑且不论这么做是否可行。我这篇文章要说的,不是这么简单的一个东西,而是一个...
  • 期货量化交易程序CTP入门指南 一

    千次阅读 2021-07-24 19:53:13
    本人从对期货一无所知,到完成一套高频量化程序并且实盘,大概用了两个多周!这其中既要感谢CTP接口文档非常完善,也要感谢乐于分享知识的网友们!所以我也再次分享一下自己的开发过程,并随讲解附上源码! ...
  • 沪铜期货量化交易策略教材.pptx
  • 15、pandas模块:K线、tick数据都是pandas.DataFrame类型,因此我们有必要介绍下pandas模块。Pandas 的主要数据结构是 Series(一维数据)与 DataFrame(二维数据),这两种数据结构足以处理金融、统计、社会科学、工程...
  • 网格化交易相信大部分做股票或期货的朋友都不会陌生,非常适合于震荡行情。 如果我们观察到行情在某价格区间持续震荡,如下图,我们即可一直盈利1个点。 买入 卖出 再买入卖出 3500买入 等到价格3501时...
  • 全球商品期货量化交易策略

    千次阅读 2020-09-08 09:46:41
    商品期货品种繁多,可以通过多品种投资...全球商品期货量化对冲基金及产品介绍商品期货交易源远流长,分布广泛。商品期货品种繁多,因此可以通过多品种投资有效降低回撤。另一方面,商品期货市场与股票市场有着相对.
  • Python期货量化交易基础教程(1)

    千次阅读 2021-02-09 12:34:38
    (本教程基于天勤量化平台)前言语言:人与人在沟通的时候,需要靠语言传递彼此的“意思”,没有语言,人们就无法相互理解对方,语言是承载人们的“意思”、“含义”的媒介。什么样的语言可以准确有效的传递人们的...
  • Q1:期货量化交易软件哪个好这种问题怎么回答,会被屏蔽的市场还是有很多的,中金、和讯、同花顺、期获宝、新浪期货等,都有,自己去分别体验下Q2:只为了自己遍自己用的炒期货软件,学Python还是C#?这两个都没用,...
  • 基于人工神经网络的期货量化交易实践探索.pdf
  • ★ 小白从零上手,入门到精通 ★ 一句一句代码讲解,掌握Python语言开发的基于CTP接口的期货交易系统 ★ 多线程CTP交易系统,策略系统与...★ 适配神经网络进行量化交易 ★ 配套社群、全程答疑  
  • 该楼层疑似违规已被系统折叠隐藏此楼查看此楼策略名称:横盘突破策略策略思路:日内交易策略,收盘平仓;横盘突破在过去30根K线的高低点围绕中轴上下0.5%的范围内波动时;上轨=过去30根K线的最高价;下轨=过去30根...
  • 常见商品期货量化交易策略

    千次阅读 2019-05-07 11:49:55
    转 常见商品期货量化交易策略 商品期货套利策略  套利策略一般包括期现套利、跨期套利、跨市场套利、跨品种套利等。 对于商品期货而言,期现套利必须交易大量的商品实物,这对大多数机构投资者而言并不合适。因此...
  • 3.3 基于资金流模型的期货量化策略设计 3.3.1 策略概况 3.3.2 计算因子的构建 3.3.3 入场条件 3.3.4 加仓条件 3.3.5 平仓(止盈止损)条件 3.3.6 策略绩效 4 参考文献 5 附录 摘要 资金流向是一个成熟的技术指标,能...
  • 今天是周三,又到了给大家送书的时刻啦!这次给大家带来的是《商品期货量化交易实战》! (文末查看送书规则)简介本书首先讲解量化交易基础和Python编程入门;再讲解量化交易API;...
  • 声明:本文策略源码均来自掘金量化示例策略库,仅供参考! 一、股票策略 1.多因子选股 # coding=utf-8 from __future__ import print_function, absolute_import, unicode_literals import numpy as np from...
  • 期货量化交易实例

    千次阅读 2019-01-21 16:31:01
    量化交易是用数学模型替代人的主观判断,通过使用计算机从庞大的历史数据中海选能带来超额收益的多种“大概率”事件以制定策略,极大地减少投资者因为情绪波动而造成的影响,避免在市场极度狂热或悲观的情况下作出非...
  • 股指期货即日交易模型(DTM)以每日开盘的前X分钟为参考区,以参考区形成的高点H和低点L多头入场:突破H点以上N个点位多头入场空头入场:跌破L点一下N个点位空头入场多头出场条件:止损0.5%,盈利超过1%启动跟踪止盈,...
  •  2) 利用这些特征值进行分类,这里对于期货走势就是三类,1 是之后上涨,0是之后无规律,-1是之后下跌,这里使用线性回归分析当前时点之后6根K线的走势,如果斜度下,那么当前时点归为-1下跌类,斜度上,为1上涨,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,084
精华内容 2,033
关键字:

期货量化交易