精华内容
下载资源
问答
  • python期货量化交易代码
    2022-06-05 17:35:01

      一直以来想要学习python去解决期货量化问题,通过数学描述变化的规律,从上海疫情封城开始学习一下python以及量化,在此记录一下;

      自学感觉非常艰难呀,尤其是python各项目代码更新频率并不同调导致项目中存在已弃用或即将弃用的方法,还需要经常性的补充或修改,以前辈代码为例进行修改

    报错信息:

    FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
    sr = sr1.append(sr2).sort_index()
    
    #改为
    sr = pd.concat([sr1,sr2]).sort_index()
    

    5日均线与30日均线双均线策略参考:

    import pandas as pd
    import tushare as ts
    
    # 获取财经数据
    #df = ts.get_k_data("601318",start="2000-01-01")
    #df.to_csv("601318.csv")
    
    # 读取财经数据并计算五日、三十日的平均收盘价
    df = pd.read_csv("601318.csv",index_col = 'date',parse_dates = ['date'])[['open','close','low','high']]
    df['ma5'] = df['close'].rolling(5).mean()
    df['ma30'] = df['close'].rolling(30).mean()
    df[['close','ma5','ma30']].plot()
    
    # 获取金叉和死叉的日期
    ar1 = df['ma5'] < df['ma30']
    ar2 = df['ma5'] >= df['ma30']
    death_cross = df[ar1 & ar2.shift(1)].index
    golden_cross = df[-(ar1 | ar2.shift(1))].index
     
    # 执行交易策略
    first_money = 100000
    money = first_money
    hold = 0
    sr1 = pd.Series(1,index=golden_cross)
    sr2 = pd.Series(0,index=death_cross)
    sr = pd.concat([sr1,sr2]).sort_index()
    
    for i in range(0,len(sr)):
        p = df['open'][sr.index[i]]
        if sr.iloc[i] == 1:
            buy = money//(100*p)
            hold += buy*100
            money -= buy*100*p
        else:
            money += hold * p
            hold = 0
    
    # 计算最后余下的金额总和
    p = df['open'][-1]        
    now_money = hold * p + money
    
    print(now_money)
    df['money']=now_money
    df[['money']].plot()

    更多相关内容
  • 博文《Python量化交易策略及回测系统》详细的介绍了Python量化交易策略编写的全过程,包括: 1、数据的获取 2、量化交易策略回测系统的编写 3、量化交易策略的设计 4、使用量化交易策略及回测系统对多个股票进行回测...
  • ·了解交易的规则与数据指标,学习正确的金融算法·基于真实的数据进行回测和分析,了解期货交易的内涵·循序渐进的案例式教学,按部就班地操作就能上手·基于Python 3.7进行分析,提供示例代码,可在异步社区轻松...

    ·了解交易的规则与数据指标,学习正确的金融算法·基于真实的数据进行回测和分析,了解期货交易的内涵·循序渐进的案例式教学,按部就班地操作就能上手·基于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

    展开全文
  • 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官网的最新消息

    展开全文
  • Python解释器在启动时会创建None、True、False三个常量,None表示“无”,True表示“真”,False表示“假”。 None是NoneType类型的唯一值,表示缺少值或空值,例如,当函数没有返回值时会默认返回None值。 因为...

    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期货量化交易基础教程(1)

    千次阅读 2021-02-09 12:34:38
    (本教程基于天勤量化平台)前言语言:人与人在沟通的时候,需要靠语言传递彼此的“意思”,没有语言,人们就无法相互理解对方,语言是承载人们的“意思”、“含义”的媒介。什么样的语言可以准确有效的传递人们的...
  • 3、函数式编程:我们在用Python程序处理实际问题时,有些代码可能需要重复使用,如果每次使用都要编写一遍代码会耗费不少工作量,我们可以把这部分代码编写成函数,每次调用函数就能完成工作,不用再重复编写代码了...
  • 语法错误是违反了Python语法规则,导致代码无法执行。异常是语法没有错误,但在执行过程中因为代码逻辑问题又发生了故障。8.1、try语句:Python中用try语句处理异常。我们先从示例开始:>>> if:File "", ...
  • 9.1、模块 :模块就是以“.py”为扩展名的文件,一个文件中可以定义变量、函数、类,因此模块就是Python对象的集合。想要使用某个模块中的代码,就需要在程序中导入这个模块,例如,我们想要使用datetime这个模块里...
  • python量化投资,从入门到实战代码(全)
  • Python量化交易-源码.rar
  • 12.2、Lock类: Lock(互斥锁),和多进程中的锁概念类似,acquire()方法请求锁定,release()方法释放锁,因此,处在acquire()和release()之间的代码会被锁定,其他线程不能访问代码中正在处理的数据。 我们看下...
  • 这是《量化交易之路—— 用python做股票量化分析》一书源代码
  • 原标题:基于python的开源量化交易...现阶段的量化策略还是人工编写的代码,abu量化交易系统的设计将会向着由计算机自动实现整套流程的方向迈进,包括编写量化策略本身。abupy的设计目标是:用户只需要提供一些简单...
  • 深入浅出Python量化交易配套视频和代码
  • Python量化代码源码160个,聚宽直接使用,已全部整理。包含截面策略,择时策略,神经网络,机器学习,随机森林 id=659330254988&
  • 基于C++/Python量化交易研究框架,用于策略分析及回测(仅受限于数据,如有数据也可用于期货等)。其核心思想基于当前成熟的系统化交易方法,将整个系统化交易抽象为由市场环境判断策略、系统有效条件、信号指示器...
  • Python量化交易实战

    2020-11-26 05:57:23
    (1)构建Python股票交易量化平台,实现交易量化技术;(2)详解股票交易主要模型、算法及其实现、应用;(3)量化交易工具提供云盘下载,方便读者学习¥62.40定价:¥79.00(7.9折)电子书:¥47.40/2019-01-02量化交易正以...
  • 依托,TqSdk支持用户使用极少的代码量构建各种类型的转换交易策略程序,并提供包含期货,收益,股票的历史数据-实时数据-开发调试-策略回测-模拟交易-实盘交易-运行监控-风险管理完整解决方案。 from tqsdk import ...
  • Python 实现你的量化交易策略

    千次阅读 2020-12-07 06:45:47
    揭秘人人都能学的量化思维投资数字货币在上一篇中,我们介绍了量化交易的一般流程、基本概念以及一些基本的策略设计思路,在这一篇中,我们将要利用上述成果,手把手教您构建第一个量化交易策略!我们以比特币作为...
  • 现阶段的量化策略还是人工编写的代码,abu量化交易系统的设计将会向着由计算机自动实现整套流程的方向迈进,包括编写量化策略本身。abupy的设计目标是:用户只需要提供一些简单的种子策略,计算机在这些种子基础上...
  • 利用故事、数学模型和代码,学习量化与编程的关系,描绘量化的人生哲学,学习作者在量化方面的经验,体会作者对交易、人生的理解。Python凭借其简单、易读、可扩展性以及拥有巨大而活跃的科学计算社区,在需要分析、...
  • Python量化交易 MACD计算
  • Python小白量化学习包

    2019-10-06 22:05:36
    # 为Python代码,如下。 def RSI(N1=6, N2=12, N3=24): """ RSI 相对强弱指标 """ LC = REF(CLOSE, 1) RSI1 = SMA(MAX(CLOSE - LC, 0), N1, 1) / SMA(ABS(CLOSE - LC), N1, 1) * 100 RSI2 = SMA(MAX(CLOSE - ...
  • 最近学习Python进行量化交易,第一步是获取实时行情数据,本资源是从新浪财经API接口获取期货实时行情数据的Python代码(本代码获得的数据不再仅是5分钟行情数据,而是秒级行情更新,行情刷新间隔视网速及获取品种...
  • 17.2、业务函数: 以get_quote()为例,上节已经介绍了get_quote()与_data的关系,现在我们结合函数的代码再看下其执行过程,我们只取代码的主要部分: def get_quote(self, symbol: str) -> Quote: # 从_data属性中...
  • Dual Thrust交易算法介绍Dual Thrust交易算法是由Michael Chalek开发的著名量化交易策略。它通常用于期货,外汇和股票市场。DualThrust的概念属于典型的突破交易系统,其运用“双推力”系统根据历史价格构建更新的...
  • python量化交易之路

    2021-10-28 22:35:37
    ## 写在前面 ## 量化交易概念 ## 国内外平台 ## 我最近关注的量化交易框架 ## 一些文章分享
  • 一、策略简介动量交易策略源于股票或期货市场中的动量效应,所谓动量效应是指过去一段时间的收益较高的资产价格,那么,资产在未来一段时间内同样也能获得较高收益。同样的,如果某一资产价格过去的波动越大,那么在...

空空如也

空空如也

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

python期货量化交易代码

友情链接: WebQQApp.rar