本程序可以将模拟k线模式下的开平仓信号输出到Excel,并计算逐笔交易的盈亏情况,对于想快速测试自己的模型能不能赚钱的朋友,可以使用这个程序来做盘后的分析。
程序中用到的知识点:
1、策略中的信号写到全局变量
2、VBA后台监控全局变量的值,当开平仓条件成立时,读出全局变量的值
3、将全局变量的值写到Excel,开仓时记录新行,平仓时,寻找对应的开仓记录,并计算本次交易的盈亏。
程序下载地址:http://www.weistock.com/download/testK.rar
安装说明:1、下载后,解压缩到d:\ 2、在金字塔中导入MdMoni.bas文件
使用说明: 1、启动VBA,系统就会自定打开d:\test.xls文件,不要关闭
2、打开技术分析,选中测试公式
3、在工具菜单,打开模拟K线模式,选择好开始日期,启动模拟K线
4、切换到Excel,信号出现时,观察是否写到Excel了。
补充说明:
1、程序中使用了定时器,时间间隔为1秒,所以,K线回放不能过快,过快可能会导致信号漏掉的情况。
2、现在程序中的品种指定了是IF09,如果,需要测试别的品种,可以将程序中的Code和Market两个变量修改成你要监控的品种代码和市场代码。
同时,在此征集不通过定时器,也能实现此功能的方案,毕竟使用定时器太耗资源,效率不高。
这个在实盘中 是否也可以应用?
实盘也可以应用,思路差不多,只是开仓价可能需要用市价才更容易成交。
如果只想记录逐笔成交情况,则需要将成交写Excel的代码放到Order_OrderStatusEx过程中。
可以参看我另一个帖子哦。
http://www.weistock.com/bbs/dispbbs.asp?boardid=9&Id=7831
那个帖子也拜读了,真的不错 。我只想记录逐笔成交情况 就像版主那个自动交易所做的那样,
能否把你那个帖子所用代码发一个学习学习。另外还有一个问题请教:这个记录的是是虚拟持仓呢
还是实际持仓?谢谢
模拟K线下记录的当然是虚拟的开、平仓了。
将持仓信息写入到Excel并进行盈亏管理那个帖子记录的实际持仓,同时监控实时价格变化,进行止盈或止损交易。
逐笔记录写到Excel的大致思路如下:
1、在Application_VBAStart过程中打开Excel,这个的代码在《持仓信息写入到Excel并进行盈亏管理》一贴中有完整的代码
2、在Order_OrderStatusEX2过程中捕获Status="Filled"的记录,那就是成交记录,将这些数据传递到写Excel的过程
3、在写Excel主笔成交记录过程中,根据当前交易的开、平仓类型确定是否要写一行新记录:
A)如果是开仓记录(Kaiping=0)就自动写一行新记录,当然,需要根据当前成交的账号分别写进不同的工作表;
B)如如果是平仓记录(Kaiping=1),就寻找excel中已经写了开仓记录没有写平仓记录的行,将本次的成交价格写进去;
C)并计算本次交易的手续费,加上开仓时的手续费,平仓盈亏-手续费就是本次交易的盈亏金额。
为了计算手续费,需要使用Order.ChargeByNum(Code,Market,Price,1,Aspect)函数,还需要取出本次交易的品种对应的合约乘数,
使用Order.Contract(sCode,sMarket,Multipliter,MinTick,ShortPercent,LongPercent)
D)写动态权益,使用Order.Account2
4、收盘后自动进行求和,并写日汇总表。