在使用backtrader进行回测外汇数据时,烧脑的是在保证金与杠杆的设置。

例如:如何EURUSD下单1手时,100倍杠杆的情况下,

buy: 1.12888,close: 1.13162

占用保证金:1128.88

其中赚取0.00274即274个点,按17的点差,单边收取8.5个点。

毛利:274

净利 = 毛利 - 点差 = 274 - 17 = 257

如以下运行结果:

经过测试,可以使用多种方式实现,这里介绍两种简单的方式,我个人觉得在特定的情况下行数越少运行越高效。

核心:设置参数使保证金 = automargin * margin * size * price

第一种:cerebro.broker.setcommission

cerebro.broker.setcommission(commission=SYMBOL_COMM[symbol_name] * 1000.0 * 100.0 / 2, # SYMBOL_COMM[symbol_name]为货币对的点差,/2 :变成单边点差 margin=1, # 必须为1 automargin=1000,# 不同货币的保证金可以使用公式计算得出   mult=1000.0*100.0, # 100是杠杆的倍数,1000固定 name=symbol_name) # 设定此方案分配给那个货币对使用

第二种:cerebro.broker.addcommissioninfo

comm_customize_symbol = bt.CommissionInfo( commission=SYMBOL_COMM[symbol_name] * 1000.0 * 100.0 / 2, # SYMBOL_COMM[symbol_name]为货币对的点差,/2 :变成单边点差 margin=1, # 必须为1 automargin=1000, # 不同货币的保证金可以使用公式计算得出 mult=1000.0 * 100.0) # 100是杠杆的倍数,1000固定
cerebro.broker.addcommissioninfo(comm_customize_symbol, symbol_name)

上面两种方式,都要记得设置和修改SYMBOL_COMM[symbol_name],这里存的是货币对的点差。当然您也可以另外设置参数,让点差自动浮动起来。这是另外的话题了。

下面是完整的代码:

import backtrader as bt
# 佣金点差
SYMBOL_COMM = {'EURUSD': 0.00017}
cerebro = bt.Cerebro()
cerebro.broker.setcommission(commission=sett.SYMBOL_COMM[symbol_name] * 1000.0 * 100.0 / 2, # SYMBOL_COMM[symbol_name]为货币对的点差,/2 :变成单边点差 margin=1, # 必须为1,原因不说了automargin=1000, # 不同货币的保证金可以使用公式计算得出 mult=1000.0*100.0, # 100是杠杆的倍数,1000固定 name=symbol_name) # 设定此方案分配给那个货币对使用

各位看官,如果对您有用,请帮助点赞!点赞!点赞!非常感谢,这是我分享的唯一动力!

backtrader.broker Commission外汇点差/保证金/杠杆的设置(技巧)相关推荐

  1. MongoDB 教程番外篇之添加用户及设置用户权限 ( Rockmongo登陆设置 )

    继上一篇 MongoDB 教程番外篇之管理工具: Rockmongo ,MongoDB 缺省是没有设置鉴权的,业界大部分使用 MongoDB 的项目也没有设置访问权限.这就意味着只要知道 MongoD ...

  2. 【Python】python初学者应该知道与其他语言差异化的高效编程技巧(附测试代码+详细注释)

    目录 1. 交换变量 2. 集合去重 3. 列表推导.集合推导和字典推导 4. 统计字符串中各个字符出现的次数 5.优雅地打印JSON数据 6.行内的if语句 6. 符合正常逻辑的数值比较 7. 田忌 ...

  3. SEO外链专员工作心得与经验技巧

    SEO外链专员工作心得与经验技巧 1:查找资源(论坛平台.博客等):(在之前刚打仗的时间找论坛资源都是通过一个论坛的情谊链接找到另一个论坛平台如许子.)由于都忽略了论坛的权重.pr等,导致收录不是很高 ...

  4. 期货保证金杠杆原理——以股指期货为例(转)

    有人说玩期货就是玩个心跳,呵呵,也是,玩股票就算是连续五个跌停板不过损失T日本金的百分之三十五左右,但是期货能让你一日之内本金全部亏损,俗话说:来得快,去的也快.期货交易赚钱快,赔钱也快,为什么?这里 ...

  5. iPhone续航真的很差吗?这样设置你的苹果手机,可增加约30%的续航时长

    iPhone手机如果说有哪些不足的地方?那么很多小伙伴们脱口而出的就是续航差以及信号弱,这两个关键性的问题.不过近日,外媒就进行了一则测试,该测试的结果就是,我们通过设置自己的苹果手机,便能够增加约3 ...

  6. wifi信号桥怎么设置_iPhone信号差怎么办?这样设置,信号满分,网速如飞

    阅读本文前,请您先点击上面的蓝色字体,再点击"关注",这样您就可以继续免费收到文章了.每天都有分享,完全是免费订阅,请放心关注. [免责声明]本文部分文字与图片资源来自于网络,转载 ...

  7. php任何读取外键数据,在表中设置外键实现的是哪一类数据完整性

    在表中设置外键实现的是参照完整性. 参照的完整性要求关系中不允许引用不存在的实体.与实体完整性是关系模型必须满足的完整性约束条件,目的是保证数据的一致性.参照完整性又称引用完整性.(推荐学习:MySQ ...

  8. 苹果手机还原网络设置会怎样_iPhone信号太差?几个设置就搞定

    很多苹果用户都有过信号不好的经历,机小镇也不例外.比如在地铁.电梯等使用场景中,自己的苹果手机经常出现没有信号的情况,而别人手中的安卓手机信号居然满格,这时候看着手里如同板砖的手机,有种恨铁不成钢的无 ...

  9. mysql创建表时设置外键_mysql创建表时设置外键约束的方法

    mysql创建表时设置外键约束的方法 发布时间:2020-06-17 15:54:11 来源:亿速云 阅读:312 作者:元一 MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中, ...

最新文章

  1. java代码的执行机制_关于java代码的执行机制
  2. 机器学习数据预处理之离群值/异常值:MAD法(绝对值差中位数法)+绝对中位差(Median Absolute Deviation,MAD)
  3. 训练三层BP神经网络实现异或运算 Python 代码实现
  4. echarts柱状图同一页面点击不同得按钮切换_不可思议,这个PPT居然有按钮滑动效果...
  5. 区块链的技术——账本是去中心化的分布式存储,加密+校验(哈希二叉树)+多数选举来防止篡改...
  6. 返回、取消与关闭的使用逻辑
  7. Gradle入门 - 一个最简单的hello world级别的例子
  8. Do not use built-in or reserved HTML elements as component id等等vue warn问题
  9. golang——channel笔记
  10. Pyspark:NLP(文本分类)
  11. eclipse环境的搭建以及JDK的安装步骤详细
  12. 5G WiFi频段介绍
  13. 百度Clouda的初步探索
  14. CVE-2017-11176: A step-by-step Linux Kernel exploitation (part 4/4)
  15. 人民币大小写转换(php版),JavaScript实现人民币大小写转换
  16. 鬼谷八荒逆天改命词条通过C++代码制作
  17. flea-db使用之JPA分库分表实现
  18. 解决conda在Downloading and Extracting Packages时下载速度慢的问题
  19. 计算机毕业设计Java的健身房管理系统(源码+系统+mysql数据库+lw文档)
  20. 杰理-BLE连接后打开经典蓝牙

热门文章

  1. 经典网页设计:超炫的动画效果单页网站设计
  2. rust tech trash是什么_最新热点|那些“垃圾分类”你该知道的相关英语表达
  3. java调tapd-api获取Bug并发企微通知
  4. 新晋总监生存指南五——人才运营机制
  5. 解决页面中引用了谷歌字体库访问缓慢的问题
  6. 【机器学习】评价指标 : 准确率,查准率与查全率
  7. 长春小学数学补习学校得花多少钱?
  8. SAM BAM 和 CRAM
  9. 目前最好用的软件下载网站
  10. 灵光乍现:巧妙居中显示原始大图片!