很多时候在交易的过程中,手动挂单确实是相对来说比较慢,就说交易量大的,都需要慢慢去点,而且同时也不符合实现量化交易的初衷,那么今天就来看看如何用api实现量化交易吧?

先强调一点,在量化系统开发的时候,心中一定要有清晰的数据流图。

下单逻辑是一个很简单的 RESTful 的过程,和在网页操作的一样,构造请求订单、加密请求,然后 post 给 gemini 交易所即可。

采用的上“先读懂后记忆并使用”的方法来学,下面即为这段代码:

import requests
import json
import base64
import hmac
import hashlib
import datetime
import time

base_url = "https://api.sandbox.gemini.com"
endpoint = "/v1/order/new"
url = base_url + endpoint

gemini_api_key = "account-zmidXEwP72yLSSybXVvn"
gemini_api_secret = "375b97HfE7E4tL8YaP3SJ239Pky9".encode()

t = datetime.datetime.now()
payload_nonce = str(int(time.mktime(t.timetuple())*1000))

payload = {
   "request": "/v1/order/new",
   "nonce": payload_nonce,
   "symbol": "btcusd",
   "amount": "5",
   "price": "3633.00",
   "side": "buy",
   "type": "exchange limit",
   "options": ["maker-or-cancel"]
}

encoded_payload = json.dumps(payload).encode()
b64 = base64.b64encode(encoded_payload)
signature = hmac.new(gemini_api_secret, b64, hashlib.sha384).hexdigest()

request_headers = {
    'Content-Type': "text/plain",
    'Content-Length': "0",
    'X-GEMINI-APIKEY': gemini_api_key,
    'X-GEMINI-PAYLOAD': b64,
    'X-GEMINI-SIGNATURE': signature,
    'Cache-Control': "no-cache"
}

response = requests.post(url,
                         data=None,
                         headers=request_headers)

new_order = response.json()
print(new_order)

########## 输出 ##########

{'order_id': '239088767', 'id': '239088767', 'symbol': 'btcusd', 'exchange': 'gemini', 'avg_execution_price': '0.00', 'side': 'buy', 'type': 'exchange limit', 'timestamp': '1561956976', 'timestampms': 1561956976535, 'is_live': True, 'is_cancelled': False, 'is_hidden': False, 'was_forced': False, 'executed_amount': '0', 'remaining_amount': '5', 'options': ['maker-or-cancel'], 'price': '3633.00', 'original_amount': '5'}

RESTful 的 POST 请求,通过 requests.post 来实现。post 接受三个参数,url、data 和 headers。这里的 url 等价于 https://api.sandbox.gemini.com/v1/order/new . ,但是在代码中分两部分写。第一部分是交易所 API 地址;第二部分,以斜杠开头,用来表示统一的 API endpoint。我们也可以在其他交易所的 API 中看到类似的写法,两者连接在一起,就构成了最终的 url。

而接下来大段命令的目的,是为了构造 request_headers。

接下来的代码就很清晰了。我们要对 payload 进行 base64 和 sha384 算法非对称加密,其中 gemini_api_secret  为私钥;而交易所存储着公钥,可以对你发送的请求进行解密。

最后,代码再将加密后的请求封装到 request_headers 中,发送给交易所,并收到 response,这个订单就完成了。或许,想要更加简单方便快捷的操作交易,可以通过股票交易接口,还可以实现实盘交易!

如何用api实现量化交易?相关推荐

  1. 哪些券商支持api接口量化交易

    现在可以做api接口量化交易的公司确实是不多的,但是市场上有几家上市券商领先行业,可以支持PTrade和QMT两个量化交易软件的接口,是可以实现网格交易的,软件是有两个版本,一个是普通版本,一个是专业 ...

  2. 如何用java股票量化交易接口读取股票数据?

    股票实时行情,可以通过两个方法来进行查看: 第一种,在百度搜索页面直接输入股票代码,如:000717,百度输入后,即可在搜索结果中看到,其中分时,就是该股票在当天的实时走向. 第二种,通过炒股软件,如 ...

  3. 如何用python进行量化交易_从零开始学习Python和量化交易

    Python的特点 1.易于学习:Python有相对较少的关键字,结构简单,和一个明确定义的语法,学习起来更加简单. 2.易于阅读:Python代码定义的更清晰. 3.易于维护:Python的成功在于 ...

  4. Python量化交易:如何用不到20行代码实现回溯检验

    假设您有了一个交易策略,接下来怎么做?实盘交易测试策略的有效性?不,在使用资金进行冒险前,应该先对策略进行回溯检验,在历史数据上测试策略是否有效. 什么是回溯检验? 回溯检验(backtest):在历 ...

  5. python 同花顺thstrader_GitHub - yanjlee/THSTrader: 量化交易。同花顺免费模拟炒股软件客户端的python API。(Python3)...

    THSTrader 量化交易.同花顺免费模拟炒股软件客户端的python API.(Python3) 为什么有这个项目 本来看到了这个easytrader这个项目,不过这个客户端已经过时了(被强制更新 ...

  6. python 同花顺thstrader_GitHub - fswzb/THSTrader: 量化交易。同花顺免费模拟炒股软件客户端的python API。(Python3)...

    THSTrader 量化交易.同花顺免费模拟炒股软件客户端的python API.(Python3) 为什么有这个项目 本来看到了这个easytrader这个项目,不过这个客户端已经过时了(被强制更新 ...

  7. 如何使用a股量化交易api接口?

    在进行量化交易的需要的时候,可以考虑使用a股量化交易api接口作为分析工具. 如何使用a股量化交易api接口? 一是进行自主研发,不过这种办法费时费力,而且对技术也有一定要求. 第二种办法就是选择一个 ...

  8. 如何接入量化交易接口api进行交易?

    量化交易接口API 是应用程序编程的接口,可以提供应用程序与开发人员基于某软件或硬件的访问权限,且无需访问源码. API 接口是提供服务的基础,开发者在网站创建账号后,可以根据自身需求建立不同权限的 ...

  9. python同花顺自动交易软件下载_GitHub - touzi-platform/THSTrader: 量化交易。同花顺免费模拟炒股软件客户端的python API。(Python3)...

    THSTrader 量化交易.同花顺免费模拟炒股软件客户端的python API.(Python3) 为什么有这个项目 本来看到了这个easytrader这个项目,不过这个客户端已经过时了(被强制更新 ...

最新文章

  1. Access Your Office on Your Phone
  2. 排序 (4)插入排序
  3. 结对项目——电梯调度算法的实现和测试
  4. 取消ajax请求时页面闪烁,用Ajax+js+jQuery实现无闪烁定时刷新页面
  5. (转)用AGG实现高质量图形输出(二)
  6. java jsp 图片上传_jsp 图片上传代码
  7. Bosh vs Comet vs Long Polling vs Polling
  8. 解决vmware虚拟机安装苹果系统Mac OS X 10.10出现“二进制转换不支持用于Mac OS X”的问题-网络教程与技术 -亦是美网络 - 傲游云浏览器 (beta) 4.9.3.100...
  9. luogu 大陆争霸 WD yj
  10. Confluence 6 安全相关问题提交链接
  11. 第一章 Javascript基础
  12. Java Poi 根据文字内容 插入 word 图片
  13. 信息学奥赛一本通习题答案(五)
  14. 计算机系统动态库修复,一键修复!动态库文件 mfc100u.dll 修复使用说明
  15. 跨境物流的主要操作流程是怎样的?
  16. 【计算机图形学实验四——简单几何形体的平移、缩放、旋转等几何变换】
  17. Python:实用的IPython(一种交互式开发环境)
  18. 解决iTunes9在Windows2003下无法安装的问题
  19. React SSR路由支持实现
  20. FH6908A负极关断同步整流模拟低压降二极管控制IC芯片TSOT23-6超低功耗整流器 1w功耗 <100uA静态 替代MP6908

热门文章

  1. Qt5.10实现图片转文字功能添加截图功能代码分析
  2. SVM支持向量机原理(二) 线性支持向量机的软间隔最大化模型
  3. oracle日常运维11g
  4. UART项目验证(一) uart协议与uart ip的理解
  5. Nginx 常用操作的总结
  6. html股票分时线代码,【股票课堂】:某交易员的趋势交易系统(附图解)
  7. PTA 基础编程题 题解
  8. 树莓派python版本的串口通信设置
  9. Ant Design Pro 菜单icon图标修改或新增
  10. MATLAB矩阵归一化