以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  [求助]请问表红的部分怎么理解  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=11874)

--  作者:zk7777777
--  发布时间:2012/5/22 12:31:20
--  [求助]请问表红的部分怎么理解
 

input:zj(90,0,100,1) ;

开仓手数:=(asset*0.01*zj)/(c*300*0.18+c*300*0.000055) ; //保证金和手续费比例
aa:=ma(c,5) ;
bb:=ma(c,10) ;
dc:=cross(aa,bb) ;
kc:=cross(bb,aa) ;
//平多
sell( kc and holding>0  ,0 , LIMITR , close ) ,ORDERQUEUE ;
//平空
sellshort( dc and holding<0 , 0 , LIMITR , close ) ,ORDERQUEUE ;
//开多
buy(dc and holding=0 , if(zj=0,1,if(开仓手数<1,0.01,INTPART(开仓手数))) , LIMITR , close ) ,ORDERQUEUE ; 
//开空
buyshort(kc and holding=0  , if(zj=0,1,if(开仓手数<1,0.01,INTPART(开仓手数))) , LIMITR , close ) ,ORDERQUEUE ; 

请问表红的部分怎么理解?? 

特别是绿色部分不懂?

[此贴子已经被作者于2012-5-22 12:36:23编辑过]

--  作者:RogarZ
--  发布时间:2012/5/22 12:53:59
--  
参考IF函数的使用方法
if
根据条件求不同的值。
用法:
IF(X,A,B)若X不为0则返回A,否则返回B
例如:IF(CLOSE>OPEN,HIGH,LOW)表示该周期收阳则返回最高值,否则返回最低值

intpart
绝对值减小取整,即取得数据的整数部分。
用法:
INTPART(A)返回沿A绝对值减小方向最接近的整数
例如:INTPART(12.3)求得12,INTPART(-3.5)求得-3


--  作者:董小球
--  发布时间:2012/5/22 13:34:21
--  
//开多buy(dc and holding=0 , if(zj=0,1,if(开仓手数<1,0.01,INTPART(开仓手数))) , LIMITR , close ) ,ORDERQUEUE ;  

以这个为例表示 如果满足1、 DC
2、 持仓量=0就开多这么多手:if(zj=0,1,if(开仓手数<1,0.01,INTPART(开仓手数)) 
最外层IF的含义是如果ZJ=0,则返回1,如果不等于0,则返回if(开仓手数<1,0.01,INTPART(开仓手数)
内层if的含义是如果开仓手数<1则,返回0.01,否则则返回INTPART(开仓手数)
INTPART 其实就是根据保证金和手续费比例计算出到底可以开多少手,由于算出来的数值不一定是整数,所以要取整
LIMITR , close的意思是按照收盘价这个限价指令进行下单