栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

2021最新教程丨10分钟教你用Python量化交易-API入门+策略

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

2021最新教程丨10分钟教你用Python量化交易-API入门+策略

新手如何快速入门量化交易?10分钟教小白从入门到精通。在这篇文章里,我从概念介绍-量化交易原理-实操Python代码和案例,系统介绍量化交易,带粉丝们利用策略模型掘金!

2021年,随着元宇宙/NFT/数字货币的热度提升,量化交易的概念逐渐被很多技术人重新关注 。因为这个赛道7X24小时交易的特殊性,非常适合我们进行量化交易策略的验证和实践

量化交易简单说就是用电脑上的数学模型做策略,程序化的帮你完成金融产品的买卖,赚取波动利润。但是对于许多还未入门的人来说,下面的内容可以有效避免大家走弯路,进入到程序化交易的领域。

理解以下讲解的内容,需要有一点多的编程基础,策略编程以Javascript为主,新手用Python也可以。如果不懂编程,就去书店找本《python编程-从入门到实践》看一看。

其他的部分在OKEX官网上都容易找到教程,最复杂的要数策略代码编写部分。最快实现量化交易的方法自然是看懂已有的策略代码,移植到自己的策略里面。

一、量化交易基础概念 

1、量化交易是指借助现代统计学和数学的方法,利用计算机技术进行投资交易的方式。

对于从未接触过量化的人来说,想要了解量化到底是做什么的,关键掌握四部份的内容:

Python基础知识、金融知识、技术指标、量化交易框架

市面上也出现了很多支持 Python 语言的量化平台。通过这些平台,你可以很方便地实现自己的交易策略,进行验证,甚至对接交易系统(由于政策原因,现在很多交易接口暂停开放)。

2、为保证交易稳定,我们本次案例采用量化交易目前的最主流平台Okex做 ;

OKEX的前身是国内的OKCoin平台,由于众所周知的原因,现已移至海外。目前OKCoin旗下主要包括OKEX和OKCoin国际站两个平台,这两个平台上的API文档基本上是通用的,因此本次分享的内容以OKEX平台为主(国内访问可能受限,可关注后私信我获取内部注册渠道);内容包括新建API,python语言下的API程序调用方法(可用于获取平台现货,期货信息,以及挂单,撤单等常规操作)。

二、量化工具如何搭建?

一、APIKey的申请与使用

首先要找到OKEX网站的API入口(Application Programming Interface,应用程序编程接口)

开发者进入后,首先可完成初始注册(可用于收益提取,如不能访问,建议连接VPN),API位于页面顶端,进入我的API后,点击新建API,获取apikey和secretkey。(OKEX提供了强大的API,可以根据自身需求建立不同权限的API,并利用API进行自动交易或者提现。 量化交易操作入口-点击进入OKEX官网

我们可以直接调用这些API,获取自己想要的数据,供自己使用。平台提供了丰富的接口,供开发者调用,比如价格、账户资金、持仓量、盈亏等信息。用户的程序根据价格的变化,做出判断,自动进行交易。程序代替了人的操作,也规避了人性的风险。

API的交易权限让您可以快速的获取当前市场最新行情及时的下单交易、查询自己可用和冻结金额、查询自己当前尚未成交的挂单、买进或卖出、撤单;提现权限可以让您快速提现到您的认证地址。

API是直接跨过账号密码接管你的账户的,是非常重要的信息,建议大家不要在任何可以联网的设备中保存此类信息。

建立好API key后,进入API文档(该页面下有个API交流群,可以给大家提供帮助,说实话,找了我好久!),就可以查看到OKEX提供API的相关资料。对于使用python的用户,可以访问代码示例-REST API-python页面来获取相关程序信息,

(OKEX建议开发者使用REST API进行币币交易或者资产提现等操作。强烈建议开发者使用WebSocket API获取市场行情和买卖深度等信息。)

注:只有3.4 及以上版本的python才可以运行此示例程序,具体原因在readme 文档中有提到。 

官方提供的API文档详情,里面介绍了详细的接口信息,还有几个视频讲解;

 我们举个简单的例子,以公共API获取某个时刻的价格信息为例,用户可以通过这个接口获取某个币种的最新价格。

二、python语言下的API程序调用方法。以上四个后缀为py的文件(Client,httpMD5Util,OkcoinFutureAPI,OkcoinSpotAPI)即为可执行的python程序,它们的文件名已经说明了各自的作用,不过对于新手,看着还是很懵逼。这里我给大家梳理一下这几个程序文件的关系。

Client为主程序,包含用户指令集。在此文件里填入 API key,去除所需执行语句前的“#”符号,即可执行相应语句。

OkcoinFutureAPI,期货API功能项,供主程序调用;

OkcoinSpotAPI,现货API功能项,供主程序调用;

httpMD5Util,供现货、期货程序调用。用于进行http请求,以及MD5加密,生成签名。

大家也可以参考我之前的详细教程,如果文章没找到,可以私信问我

三、程序运行错误代码合集。由于网页提供的程序处于多年未更新的状态,已有一些内容与当下的情况并不相符,导致服务器返回错误代码,这时就需要查询错误代码的含义来debug。比如执行以下代码:

print (u' 现货深度 ')
print (okcoinSpot.depth('btc_usd'))

服务器会返回error code:1007。查询此编号代表含义为:没有交易市场信息。这样的返回信息也是让人摸不着头脑,想了很久终于发现原因:在OKEX上,是以usdt为交易对,而不是usd,因此只要把usd改成usdt就能返回正确的结果。

小结:除了上面的usd改为usdt这个问题,在实践中本人也发现了不少其他错误以及新手可能踩到的坑,因此我重新整理了API里的代码并添加了注释,相信对大家会有所帮助。整理不易,若有需求,一键三连私信我哦

 小白如果还需要具体操作流程,其实可以去官网看下他们的实操教程

三、量化交易策略模型

1、常用策略:移动平均线

在所有的技术指标中,移动平均线的应用最为广泛。因为它的构造方法简便,且成绩易于定量地检验 ;

在技术图表分析中,关于市场趋势的分析在很大程度上是基于分析师的主观判断,因此很难在计算机上进行量化;而移动均线的规则却不随分析师的主观意志而改变,可以简易地编写为计算机程序,然后自动生成买入和卖出信号。 

移动止损的核心思想:通过快慢周期线的交叉情况决定买入,还是卖出;然后由买入/卖出价格设置止盈止损价格;监测市场行情;到达止盈止损价格操作(例如,高于止盈价格时,则根据止盈价格重新设置止盈止损价格),统计总钱数和总币数,再次循环。

举一个简单的例子,我以前的策略就包括:

BTC买入条件:5日均价大于20日均价     BTC卖出条件:5日均价小于20日均价  

交易成本:千分之二    策略总收益:10061.98%(100倍)  最大回撤率:55.88%

简单移动平均其实就是算数平均。根据定义,第k个时间单位的m阶移动平均值(k>m) 我们以BTC每日收盘价为例,在python上运行以下程序可以得到其均线图:

import pandas as pd

import numpy as np

import matplotlib.pyplot as plt

from pandas.plotting import register_matplotlib_converters

register_matplotlib_converters()

data = pd.read_csv(r'C:Users Desktop量化策略代码数据csvbtc永续30min.csv')

data.index = pd.to_datetime(data.iloc[:,0])

data_value = data.iloc[:,1]

#提取收盘价数据

close = data_value

#建立移动平均函数,获取移动平均值

def ma_function(k): #k为移动平均的滞后期数

#设置时间系列

MA_k = pd.Series(0,index=data.index)

#使用for循环求职

for i in range(k-1,len(close)):

MA_k[i] = sum(close[(i-k+1):(i+1)])/k

return MA_k

#在价格时序图上加入均线图

def picture_1(m,n):  #m,n为移动平均滞后阶数,且m 

另一种移动平均就是指数加权策略,这是一种也别的移动平均,它给后期的价格给以较大的权重,而前期的价格给以较小的权重,并且囊括了金融类产品自上市以来的所有历史价格, 在python上用代码表示,并做出EMA图如下:

#建立指数加权移动平均函数

def EMA_function(k,exponential=0.2): #k为滞后阶数,权重默认为0.2,可根据实际情况自行修改

ema_k = pd.Series(0,index=close.index)

ema_k[k-1] = np.mean(close[:k])

for i in range(k,len(close)):

ema_k[i] = exponential*close[i]+(1-exponential)*ema_k[i-1]

return ema_k

#在价格时序图上加入指数加权移动均线图

def picture_2(m):  #m为移动平均滞后阶数

EMA = EMA_function(m)

plt.rcParams['axes.unicode_minus'] = False

plt.rcParams['font.sans-serif'] = 'SimHei'

plt.plot(close[(m-1):],label='价格',color='k')

plt.plot(EMA[(m-1):],label='EMA',color='r')

plt.title('BTC移动平均线与价格时序图')

plt.legend() #添加图例

plt.show()

return

具体相关策略的Python实操的代码后续会整理发出 ,建议一键三连哦,着急的话可私信我

着急看后续教程的CSDN粉丝可以私信我,另外本博主可提供内部渠道的OKEX邀请链接注册,每次交易返佣10-20%  ,相当于手续费八折,私信前请点击 关注、点赞、评论、收藏,谢谢支持!

2、常用策略还包括:网格交易策略、均线策略、跨期对冲策略等等,篇幅有限,下期介绍

这些都是非常实用且简单的量化策略,  用不同的趋势策略就可以跑赢囤币, 多多回测多验证 。

当然很多粉丝会陷入历史数据陷阱,数据只代表过去,不代表未来,其次,量化投资其本身无法弯曲发现市场价值为市场提供公允定价。量化投资擅长平抑市场的非理性波动,使市场回归理性,所以只有与基本面投资等模式一起,才能够更好地为二级市场提供公允定价。

代码其实不难,建议小白先学习下金融知识,我也是结合基本面,用了多组合策略才跑出来的

篇幅太长了,我整理了下计算公式和python代码放在下一篇讲,希望大家都能抓住这个时代机会! 

 

仅供CSDN粉丝探讨交流 ,纯技术帖,不构成投资建议哦

接下来,我会继续在CSDN分享后续教程,请大家支持我,争取早日破1000粉丝

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/357110.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号