自己做量化交易软件(37)小白量化实战10–操作方法与MetaTrader5高频策略的进化
散户和主力不是一个级别的竞争对手,可以用蚂蚁和大象来比喻。散户和主力炒股比武,散户玩短线,主力玩长线,其结果是散户高买低卖;散户玩长线,主力玩短线,其结果是赚钱没卖,反而深套。散户只能泪眼朦胧叹息,“曾经有一份真诚的几万现金放在我面前,我没有珍惜,等我失去的时候我才后悔莫及(已经被深套几万),人世间最痛苦的事莫过于此,如果上天能够给我一个再来一次的机会,我会说三个字:早止赢,如果非要在这份爱上加上一个期限,我希望是,只赚1万元”。
散户单个的资金实力无法跟主力相比,如果所有散户操作一致,也能实现“蚂蚁般大象”。
那么散户要怎么实现这个目标呢?我先讲一个小故事。麦克是玩扑克牌的高手,一天他去跟一个农民进行扑克赌博,结果麦克输的身文皆无。是麦克玩扑克的水平不高吗?不是,是麦克没有理解游戏的规则。
理解游戏的规则后,怎么才能赢,我再讲另外一个故事。孙膑是春秋战国时期的著名军事家,他同齐国的将军田忌很要好。田忌经常同齐威王赛马,马分三等,在比赛时,总是以上马对上马,中马对中马,下马对下马。因为齐威王每一个等级的马都要比田忌的强,所以田忌屡战屡败。孙膑知道此事以后,对田忌说:“再同他比一次吧,我有办法使你得胜。”临场赛马那天,孙膑先以下马对齐威王的上马,再以上马对他的中马,最后以中马对他的下马。比赛结果,一败两胜,田忌赢了。同样的马匹由于调换了一下比赛次序,就得到了反败为胜的结果。
这个故事生动地告诉我们:在实际的工作生活中,我们要根据规则,科学地调整内部次序和方法,从而整体上发挥最大的功效。股市中操作也是如此,在一定的前提下,我们散户投资者也可以利用好的操作方法,可以在股市中经常保持获利。例如前面博客讲过,有一位看自行车的大妈,每到一段时间存车的人很少时就去买股票,看到一段时间存车的人多的时候就去卖股票,每年都有所获。
再讲一下近期真实的例子“散户报团大战华尔街机构空头”。以前散户投资者不懂交易规则,俗称“韭菜”,在市场中任人宰割,但是互联网信息给了这些散户投资者充分的教育机会,使散户也能懂得机构的操作手段。
做空有两个问题:第一,做空交易盈利的时候,最多只能赚100%,但是亏损的比例却可以是无限大。第二,做空标的要保持在理性的时间,标的价格上涨不能超越一定的幅度。
一般情况所有流通标的数量为100%, 做空标的一般不会超过流通盘。但是华尔街机构机构贪得无厌,他们做空了游戏驿站公司的股票130%,让散户带头大哥发现了其中的机会,才有机会组织散户合买游戏驿站公司的股票股价上涨,以致空头亏损无限大,因此只能提前平仓,平仓需要买现货股票或买看涨期权,机构平仓做多,这又加速股价飙升。又出现机构间相互踩踏事件。
投机和投资的本质是相同的,都是为了赚钱,这是一个“散户投机做多者”与“机构基本面做空者”的大碰撞,结果实现了蚂蚁板倒大象。

前面我的博客零散介绍了MetaTrader5上用Python做外汇和期货回测程序的例子,回测是模拟策略历史效果,跟实战结果有一些偏差。因此我们在MetaTrader5上采用模拟帐户实战的方式来研究策略,如果模拟实战结果满意,仅仅修改帐户为真实交易帐户,就可以实战了。
我们可以使用HP_mt5a增强版模块,这个模块中除了HP_mt5模块的所有功能外,还增加了策略类模块。我们以其中的马丁策略为例。
一、原始策略

'''
独狼荷蒲qq:2886002
通通小白python量化群:524949939
小白量化MT5群:556894446
tkinter,pyqt,gui,Python交流2群:517029284
微信公众号:独狼股票分析
'''
import HP_mt5a as hmt5  #导入HP_mt5a增强版模块
hmt5.init()  ##初始化小白mt5库#登陆帐号
用户名=0
密码=''
服务器=''
hmt5.login(login=用户名, server=服务器,password=密码)#输出mt5软件信息及连接相关信息
mt5info=hmt5.terminal_info()
#print(mt5info)
mt5软件名称=mt5info.name
mt5软件语言=mt5info.language
mt5软件所属公司=mt5info.company
mt5软件路径=mt5info.path
print()
print('----------软件信息----------')
print('mt5软件名称:',mt5软件名称)
print('mt5软件语言:',mt5软件语言)
print('mt5软件所属公司:',mt5软件所属公司)
print('mt5软件路径:',mt5软件路径)#获取用户登陆信息
accountinfo=mt5.account_info()
姓名=accountinfo.name
服务器=accountinfo.server
货币=accountinfo.currency
用户名=accountinfo.login
结余=accountinfo.balance
总净值=accountinfo.equity
总盈亏=accountinfo.profitprint()
print('----------用户信息----------')
print('姓名:',姓名)
print('服务器:',服务器)
print('用户名',用户名)
print('总盈亏',总盈亏)
print('总净值',总净值)
print('结余:',结余)#马丁策略Martingale Strategy
md=hmt5.Martingale_Strategy( symbol = "XAUUSD",volume=0.01,price=1.00,magic=168,n=3)
md.begin()  #执行策略,只运行1次
md.look()  #查看持仓和订单
#md.quanche()   #取消全部订单
#md.quanping()  #平掉全部持仓
df2=md.getcc()  #获取全部持仓
df3=md.getdd()  #获取全部订单#订单全部撤单,关闭全部持仓
# md.closeall()

程序运行结果如下:

策略操作完成!
策略持仓:ticket        time  type  magic  identifier  reason  volume  price_open   sl       tp  price_current  swap  profit  symbol comment             datetime
0  357156  1612433901     0    168      357156       3    0.01     1823.83  0.0  1825.28        1823.45   0.0   -0.38  XAUUSD   MSbuy  2021-02-04 16:18:21
策略订单:ticket  time_setup  type  type_time  type_filling  state  magic  position_id  position_by_id  reason  volume_initial  volume_current  price_open   sl       tp  price_current  price_stoplimit  symbol comment             datetime
0  357157  1612433901     2          0             2      1    168            0               0       3            0.02            0.02     1822.78  0.0  1825.28        1823.67              0.0  XAUUSD  MSbuy1  2021-02-04 16:18:21
1  357158  1612433902     2          0             2      1    168            0               0       3            0.04            0.04     1821.78  0.0  1825.28        1823.67              0.0  XAUUSD  MSbuy2  2021-02-04 16:18:22


上图是原始的马丁策略。以1单位赌注开始,在每次赔钱后,将赌注加倍,而在任何一次赢钱后,下一次又回归到1单位赌注。马丁策略的优点和诱惑力是在每一次赔钱后加码双倍,因此下一次赢钱时,你总能赢回之前所有的损失。
这个策略的缺陷:1、你曾经赚过钱,但是没有到你的止赢点,最后又亏钱了。2、如果价格逐步下跌,策略会加倍量买入,你必须有无数多钱去买,资金不足容易爆仓。
针对这个2个缺点,我们做应的改进。

二、动态止赢
用马丁策略我们曾经赚过钱,但是没有到的止赢点,最后又因价格下跌而亏钱了。因此我们引入动态止赢概念。需要计算最大回撤,例如总盈利大于1美元,盈利回撤20%,平掉所有持仓和订单。
我们增加下面的代码。

#我们的马丁策略开始时,已经下了1单,因此持仓数大于0,如果持仓数为0,就结束循环。
#这是一个高频策略。
lenc=len(df2)
i=0
while lenc>0:start = time.time()
#    if i>0:    #取消这段注释,循环只运行1次。
#        breakprint("第%d次工作"%i)df2=md.getcc()  #获取全部持仓lenc=len(df2)if lenc>0:profit=df2.profit.sum()  #持仓的总盈利hc=hmt5.huiche(mark='盈利',x=profit,t=30)  #获取盈利在30秒内的最大回撤if  hc>0.2 and profit>1: #如果总盈利大于1美元,且回测20%,关闭策略。md.closeall()break  #退出循环#time.sleep(5)    #暂停多少秒i=i+1    #循环次数加1end=time.time()   #获取循环结束时间print('时间:',round(start,2),round(end,2),round(end-start,4),'秒,每秒跑%d圈。'%int(1/(end-start)))

程序运行输出如下:

第1693次工作
时间: 1612428592.93 1612428592.94 0.005 秒,每秒跑199圈。
第1694次工作
时间: 1612428592.94 1612428592.94 0.005 秒,每秒跑200圈。
第1695次工作
时间: 1612428592.94 1612428592.95 0.005 秒,每秒跑199圈。
第1696次工作
时间: 1612428592.95 1612428592.95 0.004 秒,每秒跑250圈。

从输出信息我们可以看到,程序运行速度有多快,1秒运行250次。

我们这个马丁策略是做多策略,如果一开始,就获利了,直接就赚钱了,如果下跌要一直追加资金。
因此我们想再开单时,做一个涨跌方向判断,这就可以使用前面介绍的仿通达信自编指标来实现。
如果判断是上涨趋势,执行马丁策略,这样赚钱的概率会提高很多。

作者出版的书<零基础搭建量化投资系统――以Python为工具> 提供仿通达信自编指标的设计和实现。

请持续关注我的博客,我的进步,就是你的进步!

自己做量化交易软件(37)小白量化实战10--操作方法与MetaTrader5高频策略的进化相关推荐

  1. 自己做量化交易软件(44)小白量化实战17--利用小白量化金融模块在迅投QMT极速策略交易系统上仿大智慧指标回测及实战交易设计

    自己做量化交易软件(44)小白量化实战17–利用小白量化金融模块在迅投QMT极速策略交易系统上仿大智慧指标回测及实战交易设计 小白量化平台是由若干小白金融模块构成.其中包含行情接收模块,仿通达信大智慧 ...

  2. 自己做量化交易软件(31)小白量化实战5--板块股票池与基本面选股

    自己做量化交易软件(31)小白量化实战5–板块股票池与基本面选股 在小白量化软件中,股票池与板块是一样的,都是股票代码列表.前面博客有零散知识的介绍. 小白量化学习(4)基本面选股与股票池 https ...

  3. 自己做量化交易软件(43)小白量化实战16--利用小白量化金融模块在恒生PTrade交易系统(交易端)上仿大智慧指标回测及实战交易设计

    自己做量化交易软件(43)小白量化实战16–利用小白量化金融模块在恒生PTrade交易系统(交易端)上仿大智慧指标回测及实战交易设计 量化产品PTrade(Personalise Trade)交易系统 ...

  4. 自己做量化交易软件(39)小白量化实战12--利用神经网络程序预测价格上涨

    自己做量化交易软件(39)小白量化实战12–利用神经网络程序预测价格上涨 大家使用小白量化软件的主要目不是为了仿通达信公式和仿大智慧公式,大家主要的目的想利用Python神经网络和深度学习等功能来用人 ...

  5. 自己做量化交易软件(33)小白量化实战7--投资理念与通达信公式回测(1)

    自己做量化交易软件(33)小白量化实战7–投资理念与通达信公式回测(1) 什么是投资理念?我们先给大家讲个小故事. 从前,有个郑国人,打算到集市上买双鞋穿.他先把自己脚的长短量了一下,做了一个尺子.可 ...

  6. 自己做量化交易软件(35)小白量化实战8--事件型回测程序

    自己做量化交易软件(35)小白量化实战8–事件型回测程序 小白量化第二代程序也提供了一个简单的事件型回测程序,我们前面的博客文章有介绍这方面的知识.当时用MT5 做的回测演示,见文章:自己做量化交易软 ...

  7. 自己做量化交易软件(29)小白量化实战3--跨周期共振

    自己做量化交易软件(29)小白量化实战3–跨周期共振 在第一次世界大战中,一队德国士兵迈着整齐的步伐,通过一座桥,结果把桥踩塌.就桥梁的本身负载能力而言,远远大过这队德国士兵的重量,但由于士兵步调整齐 ...

  8. 自己做量化交易软件(34)小白量化实战7--投资理念与通达信公式回测(2)

    自己做量化交易软件(34)小白量化实战7–投资理念与通达信公式回测(2) 投资通俗地讲就是"财富变压器".投资是使资本和财富生长的源泉.没有证券市场和期货市场时投资者当投出一元钱时 ...

  9. 自己做量化交易软件(41)小白量化实战14--美国17年周期蝉与指标参数设计技巧

    自己做量化交易软件(41)小白量化实战14–美国17年周期蝉与指标参数设计技巧 我们从新闻开始谈投资分析理念. 最近的有新闻介绍美国17年周期蝉,根据科学家的长期监测,每隔十几年,从地下钻出的蝉的数量 ...

  10. 自己做量化交易软件(24)小白量化增强仿通达信财务基本数据公式

    自己做量化交易软件(24)小白量化增强仿通达信财务基本数据公式 通达信公式指标中有很多关于系统或基本面的函数,小白量化公式系统只有关于行情方面的公式基本函数.为了便于移植更多的自编通达信公式指标,我们 ...

最新文章

  1. DNN(DotNetNuke)研究资源
  2. 答应我,调试Python代码,不要再用Print了!
  3. 广播IP转型报告:远程制作持续崛起
  4. Linux学习总结(81)—— Linux 权限详解
  5. 用Aspose.Words 从Word文档中提取表格数据
  6. C语言的关键字 详解
  7. android nexus 6尺寸,谷歌Nexus 6详细配置曝光 原生Android大杀器
  8. ROS激光雷达小车自主导航学习(一)(持续更新中)
  9. linux rm 文件找回_Linux下用rm删除的文件的恢复方法
  10. ios 线条球_烧脑挑战画线给小球回家
  11. MySQL数据结构选择的合理性
  12. SUST OJ 1642: 绝地求生—死亡顺序
  13. 腾讯QQ圈子——数据挖掘的典型
  14. PTA 实验2-1-5 将x的平方赋值给y (5分)
  15. windows集成身份验证
  16. 雷电pygame代码
  17. Bitnami Redmine安装配置指南
  18. 用后处理做一个烟雾的效果(也可以用指数雾达到类似的效果)
  19. XDOJ数字排序/选号程序
  20. 【JZOJ 1319】 邮递员

热门文章

  1. python颜色校正
  2. Java学习手册:Java基础知识点(不断扩充更新中)
  3. 算法设计与分析——排序算法:十大排序算法总结
  4. 锐起无盘系统菜鸟教程
  5. linux 命令:chmod详解
  6. word转换为pdf后图片失真的解决办法
  7. linux open函数详解
  8. 数据恢复软件真的可以恢复硬盘数据吗,有哪些数据恢复软件推荐?
  9. 放大你的Rstudio窗口字体
  10. 什么是大数据,模式识别和人工智能算法实现