以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp) -- 高级功能研发区 (http://weistock.com/bbs/list.asp?boardid=5) ---- 模拟K线下记录开平仓,并计算盈亏 (http://weistock.com/bbs/dispbbs.asp?boardid=5&id=7737) |
-- 作者:guotx2010 -- 发布时间:2011/8/28 10:31:44 -- 模拟K线下记录开平仓,并计算盈亏 本程序可以将模拟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了。 |
-- 作者:guotx2010 -- 发布时间:2011/8/30 12:25:03 -- 补充说明: 1、程序中使用了定时器,时间间隔为1秒,所以,K线回放不能过快,过快可能会导致信号漏掉的情况。 2、现在程序中的品种指定了是IF09,如果,需要测试别的品种,可以将程序中的Code和Market两个变量修改成你要监控的品种代码和市场代码。
同时,在此征集不通过定时器,也能实现此功能的方案,毕竟使用定时器太耗资源,效率不高。
|
-- 作者:rogerhylt -- 发布时间:2011/10/22 11:58:27 -- 这个在实盘中 是否也可以应用? |
-- 作者:guotx2010 -- 发布时间:2011/10/22 15:06:17 -- 实盘也可以应用,思路差不多,只是开仓价可能需要用市价才更容易成交。 如果只想记录逐笔成交情况,则需要将成交写Excel的代码放到Order_OrderStatusEx过程中。 可以参看我另一个帖子哦。 http://www.weistock.com/bbs/dispbbs.asp?boardid=9&Id=7831
[此贴子已经被作者于2011-10-22 15:09:36编辑过]
|
-- 作者:rogerhylt -- 发布时间:2011/10/22 18:45:10 -- 那个帖子也拜读了,真的不错 。我只想记录逐笔成交情况 就像版主那个自动交易所做的那样, 能否把你那个帖子所用代码发一个学习学习。另外还有一个问题请教:这个记录的是是虚拟持仓呢 还是实际持仓?谢谢 |
-- 作者:samyongq -- 发布时间:2011/10/25 11:31:29 -- 楼主你好!我也看了链接中的帖子,不知楼主能否把“自动记录每笔交易到Excel的程序”在这里贴出来?让我等学习学习 或者给个大概的模版也行啊 谢谢 |
-- 作者:guotx2010 -- 发布时间:2011/10/25 17:16:10 -- 模拟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、收盘后自动进行求和,并写日汇总表。
[此贴子已经被作者于2011-10-25 17:35:12编辑过]
|
-- 作者:dnt00193 -- 发布时间:2013/4/7 7:47:52 -- 顶该程序 |
-- 作者:明心 -- 发布时间:2013/4/10 16:36:11 -- 我有一个方法不用定时器,当满足条件的时候可以输出。直接Q我把。 ![]() |