量化交易常见问题
(以“=每次开仓开入5%如何设置?= 问:在某同类软件里面很容易实现每次开仓买入5% 写法如下 buy(holding=0 and bk0,5%,limitr,c); 怎么设置...”为内容创建页面) |
2014年2月27日 (四) 14:53的最后版本
[编辑] 每次开仓开入5%如何设置?
问:在某同类软件里面很容易实现每次开仓买入5% 写法如下 buy(holding=0 and bk0,5%,limitr,c); 怎么设置每次开仓开入5%(´・_・`)
答:金魔方的交易机制有两种,第一种称为“虚实盘同步机制”。原理是按照测评的逻辑跑一遍,得到一系列的买卖信号,并且根据这些信号得到虚拟的持仓情况。交易的时候,虚拟持仓发生改变,则同步引擎努力的保持实盘仓位跟虚盘一致(包括会自动发出委托,如果委托不成交自动撤单重发等等,一直到实盘仓位达到跟虚盘一致为止)。 第二种称为“直接发委托机制”。这种情况,不存在虚盘,交易函数一执行,就发一条相同指令到交易所。至于指令是否成交,成交了多少,金魔方都不管,用户需要自己写函数去查询,判断,处理。
虚盘和直接发单这两种机制有两套函数,虚盘系列函数包括“虚盘交易函数”、“虚盘状态函数”和“虚盘绩效函数”三组。 常用到的交易函数是buy,sell,sellshort,buytocovert等。
对于虚盘实盘同步机制,只能做到虚盘持仓数量跟实盘一致,资金却很难做到一致。一般虚盘会给一个100万的初始资金,从有K线开始一直做虚拟交易直到当前K线,这时资金和权益肯定跟实盘不同。
这时回到问题:想开仓5%,如果所指的,仅仅是虚盘的5%,那么没问题,计算虚盘权益或可用金,然后算出持仓量即可,但如果希望是实盘的5%,那么对不起,没办法自动达成。 只能通过写死常数在程序里,或者是通过参数输入的方法来控制。
对于直接发单机制,其函数一般以“a_”开头,例如a_sendOrder。这类函数是直接发单到经纪商,直接从经纪商查询数据;如果想开仓5%,那么用a_freeCapital查到账户可用金或a_currentEquity查到账户权益,就能计算需要开出的仓位了。