You are here:  Home » 量化交易与机器学习 » backtrader » Oanda API- backtrader 中文教程

与OANDA Oanda

The集成支持:

  • Live Datafeeding
  • Live Trading

Requirements

  • oandapy

    Install:pip install git+https://github.com/oanda/oandapy.git

  • pytz(可选,并不推荐)

    由于外汇的全球整体和全天候性质,选择工作UTC时间。您还可以与所需输出时区工作,如果wished.

Sample Code

The源包含下一个完整的示例:

  • samples/oandatest/oandatest.py

OANDA – 在store

这家商店是实时数据馈送/贸易支持的基石,提供一个之间适配的层中的OandaAPI和一个数据供给的需求和经纪人proxy.

  • Providesaccess得到一个broker实例与方法:
  • 提供访问吸气剂data饲料instances
    • OandaStore.getedata(\*args, **kwargs)

    在这种情况下,许多的**kwargs是常见的数据输入像dataname, fromdate, todate, sessionstart, sessionend,
    timeframe, compression

    的数据可以提供其它PARAMS。检查参考below.

Mandatory parameters

In为​​了成功地连接到Oanda,下面的参数强制性:

  • token(默认:None):API访问token
  • account(默认:None):帐户id

This通过设置Oanda

是否连接到practice服务器或真实服务器,使用:

  • practice(默认:False):使用测试environment

The帐户必须定期检查,以获得cashvalue。该周期性可以被控制:

  • account_tmout(默认值:10.0):刷新周期为帐户值/现金refresh

Oanda feeds

Instantiating数据:

  • 根据以下从OANDA准则必须是OANDA guidelines
    • EUR/USDD传递的符号指定为EUR_USD。它实例为:
    data = oandastore.getdata(dataname="EUR_USD", ...)
    

时间management

Unless一个tz参数(pytz-compatible对象)被传递到数据进料,所有时间输出处于UTC的格式表示above.

Backfilling

backtrader使得没有特别要求Oanda。对于小时限在Oanda服务器已经practice条回填返回由500long

OandaBroker – 交易Live

Using的broker

To使用OandaBroker,标准的经纪人模拟例如,通过创建cerebro必须被replaced.

Using的Store模型(优选的):

import backtrader as bt

cerebro = bt.Cerebro()
oandastore = bt.stores.OandaStore()
cerebro.broker = oandastore.getbroker()  # or cerebro.setbroker(...)

经纪人 – 初始Positions

The代理支持一个单个参数:

  • use_positions(默认值:True):当连接到代理供应商使用现有位置的kickstart的broker.

    Set来False实例化过程中忽略任何现有的position

Opperations

There是关于该STANDAR使用没有变化。只需使用方法在战略上可用的(见全了Strategy引用解说)

  • buy
  • sell
  • close
  • cancel

订单执行Types

Oanda支持几乎所有需要的订单执行类型backtrader的除外Close.

这样的顺序执行类型仅限于:

  • Order.Market
  • Order.Limit
  • Order.Stop
  • Order.StopLimit(使用StopupperBound/lowerBound价格)
  • Order.StopTrail
  • Bracket订单是通过使用支持的takeprofitstoploss为了成员和回测过程中产生的内部模拟orders.

Order Validity

The同等法律效力可用的概念(用validbuysell)是可用且与相同的含义。因此,valid参数被转换为Oanda Orders为如下以下值:

  • None转换为Good Til Cancelled

    因为没有效力已规定可以理解,顺序必须是有效的,直到cancelled

  • datetime/date转化为Good Til Date
  • timedelta(x)转换为Good Til Date(这里timedelta(x) !=
    timedelta()

    此被解释为一个信号有一个为了从有效now+timedelta(x)

  • timedelta() or 0转换为Session

    的值已经过去(而不是None),但是Null和是解释为顺序适用于电流day(会话)

Notifications

The标准Order状态将被通知给strategy在方法notify_order(如果覆盖)

  • Submitted – 订单已发送到TWS
  • Accepted – 订单已placed
  • Rejected – 当没有使用真正的拒绝和其他状态是已知的为了creation
  • Partial期间 – 的部分执行已采取place
  • Completed – 订单已经完全executed
  • Canceled(或Cancelled
  • Expired– 当订单由于expiry

Reference

OandaStore

class backtrader.stores.OandaStore(取消)

Singleton类包装,以控制连接到Oanda.

Params:

  • token(默认:None):API访问token
  • account(默认:None):帐户ID
  • practice(默认值:False):使用测试environment
  • account_tmout(默认值:10.0):刷新周期为帐户价值/现金refresh

OandaBroker

class backtrader.brokers.OandaBroker(** kwargs

经纪人实施Oanda.

This类映射命令/位置从OANDA到的backtrader.

PARAMS内部API:

  • use_positions(默认值:True):当连接到代理供应商使用现有位置的kickstart的broker.

    Set来False实例化过程中忽略任何现有的position

OandaData

class backtrader.feeds.OandaData(** kwargs)

OANDA数据Feed.

Params:

  • qcheck(默认:0.5

    在几秒钟的时间,如果没有接收到的数据提供一个机会来唤醒重采样/重播正常数据包并通过通知了chain

  • historical(默认:False

    如果设置为True数据馈送将做后停止第一data.

    The标准数据馈送参数`的下载fromdatetodate将作为reference.

    The数据料将令多个请求如果请求的持续时间比给定的时限/压缩由IB允许的一个较大选择用于data.

  • backfill_start(默认值:True

    在起动时进行回填。最大可能的历史数据将在单一request.

  • backfill取出(默认值:True

    执行断开/再连接循环后回填。差距持续时间将被用来下载data

  • backfill_from的最小可能量(默认值:None

    附加的数据源可以传递给做的初始层回填。一旦数据源被耗尽,并且如果被请求,从IB回填会发生。这意味着理想的回填从已存储的来源,如磁盘上的文件,但不局限于to.

  • bidask(默认:True

    如果True,则历史/回填请求将请求出价/从server

    如果False,然后midpoint将requested

  • useask(默认:False

    如果Trueask`的bidask将使用价格的一部分,而不是默认使用bid

  • includeFirst的(默认值:True

    的影响的1st历史/回填巴通过直接设置参数给OANDA API calls

  • reconnect(默认值:True)请求

    重新连接时的网络连接是down

  • reconnections(默认值:-1

    次数尝试重新连接:-1意味着forever

  • reconntimeout(默认:5.0

    在几秒钟的时间等待在重联attempts

该数据馈送仅支持的timeframe这种映射和compression,这符合OANDA万达API中的定义开发商的GUID:

(TimeFrame.Seconds, 5): "S5",
(TimeFrame.Seconds, 10): "S10",
(TimeFrame.Seconds, 15): "S15",
(TimeFrame.Seconds, 30): "S30",
(TimeFrame.Minutes, 1): "M1",
(TimeFrame.Minutes, 2): "M3",
(TimeFrame.Minutes, 3): "M3",
(TimeFrame.Minutes, 4): "M4",
(TimeFrame.Minutes, 5): "M5",
(TimeFrame.Minutes, 10): "M10",
(TimeFrame.Minutes, 15): "M15",
(TimeFrame.Minutes, 30): "M30",
(TimeFrame.Minutes, 60): "H1",
(TimeFrame.Minutes, 120): "H2",
(TimeFrame.Minutes, 180): "H3",
(TimeFrame.Minutes, 240): "H4",
(TimeFrame.Minutes, 360): "H6",
(TimeFrame.Minutes, 480): "H8",
(TimeFrame.Days, 1): "D",
(TimeFrame.Weeks, 1): "W",
(TimeFrame.Months, 1): "M",

任何其它组合将是rejected

评论被关闭。