以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp) -- 高级功能研发区 (http://weistock.com/bbs/list.asp?boardid=5) ---- [求助]谁能帮我修改一下阿火的VBA跟单程序? (http://weistock.com/bbs/dispbbs.asp?boardid=5&id=72185) |
-- 作者:bbking -- 发布时间:2014/11/20 9:39:56 -- [求助]谁能帮我修改一下阿火的VBA跟单程序? http://www.weistock.com/bbs/dispbbs.asp?boardid=10&id=9439&authorid=1617&page=0&star=3 原版出处在这里~ 十六、CTP账户的跟单VBA代码 B账户跟着A账户做单(前提是知道A账户的密码,在同一个金字塔同时登陆A账户和B账户) Sub ORDER_OrderStatusEx2(OrderID, Status, Filled, Remaining, Price, Code, Market, OrderType, Aspect, Kaiping, Account, AccountType) if Status="Tradeing" and filled>0 and Account="8000000000" then if aspect=0 then if kaiping=0 then order.Buy 1,filled,0,0,code,market,"800000",0 if kaiping>0 then order.sellshort 1,filled,0,0,code,market,"800000",0 end if if aspect=1 then if kaiping=0 then order.Buyshort 1,filled,0,0,code,market,"800000",0 if kaiping>0 then order.sell 1,filled,0,0,code,market,"800000",0 end if end if End Sub 跟单代码如上~ 现在需要实现B账户跟踪A账户下单~ 但是保持B账户是A账户持仓的三分之一 具体思路是 A账户下单某合约成交后~ 查询B账户与A账户在该合约上的持仓~ 保持该合约上B账户持仓为A账户的三分之一 多了就平少了就补~ |
-- 作者:bbking -- 发布时间:2014/11/20 10:53:49 -- 帮个忙啊 都悬赏了的 |
-- 作者:bbking -- 发布时间:2014/11/20 11:11:19 -- 两个账户能否改一下用 ac1:="800000"; ac2:="8000000000" 这样表示? |
-- 作者:王锋 -- 发布时间:2014/11/20 11:15:25 -- VBA的问题需要一定时间安排处理,请不要急躁,谢谢 |
-- 作者:bbking -- 发布时间:2014/11/20 13:33:42 -- 我是觉得这个程序对于有vba基础的人来说简直小菜啊~ 至少有人回帖了~ 谢谢~ |
-- 作者:bbking -- 发布时间:2014/11/21 9:27:57 -- 每日一顶 |
-- 作者:guotx2010 -- 发布时间:2014/11/21 9:35:41 -- 你这个问题,如果每次A账户都是3手或以上,可以在B账户跟踪时,用手数除以3开B账户,问题是如果A账户不是一次开到位,而是1手1手开,累计达到了3手,那么你的B账户就每次都错过了,所以,啊火的方式不能满足你的要求,你得用定时器,在定时器中定时检查A账户的累计持仓量,然后判断是否B账户开仓或平仓。 建议看看那我那个已经商品化的跟踪程序,在我的博客上有介绍。 http://blog.sina.com.cn/s/blog_78d813780102uzor.html
|
-- 作者:bbking -- 发布时间:2014/11/21 10:11:24 -- 其实我觉得应该是个比较简单的问题啊~ A账户为8000000000 B账户为800000~跟踪A账户操作~保持为A账户的三分之一 我下面的伪代码思路如何? 每次成交后查询AB账户该合约上的多空持仓进行调整? Sub ORDER_OrderStatusEx2(OrderID, Status, Filled, Remaining, Price, Code, Market, OrderType, Aspect, Kaiping, Account, AccountType) if Status="Tradeing" and filled>0 and Account="8000000000" then if round(A账户TBUYHOLDINGEX/3)>B账户TBUYHOLDINGEX then order.Buy 1,round(A账户TBUYHOLDINGEX/3)-B账户TBUYHOLDINGEX,0,0,code,market,"800000",0 end if round(A账户TBUYHOLDINGEX/3)<B账户TBUYHOLDINGEX then order.sell1,B账户TBUYHOLDINGEX-round(A账户TBUYHOLDINGEX/3),0,0,code,market,"800000",0 end if round(A账户TSELLHOLDINGEX/3)>B账户TSELLHOLDINGEXthen order.Buyshort 1,round(A账户TSELLHOLDINGEX/3)-B账户TSELLHOLDINGEX,0,0,code,market,"800000",0 end if round(A账户TSELLHOLDINGEX/3)<B账户TSELLHOLDINGEXthen order.sellshort 1,B账户TSELLHOLDINGEX-round(A账户TSELLHOLDINGEX/3),0,0,code,market,"800000",0 end End Sub |
-- 作者:bbking -- 发布时间:2014/11/21 10:19:42 -- 帮我写一下吧 这个思路很简单 我只是一时看不懂VBA的帮助文档~ 对你们也就是分分钟的事情 没法增加悬赏数量啊 [此贴子已经被作者于2014/11/21 10:20:17编辑过]
|
-- 作者:bbking -- 发布时间:2014/11/21 15:47:30 -- 伪代码都写好了 还没人帮忙写一下啊? |