以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  [求助]下单手数不同  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=62541)

--  作者:zzq888888
--  发布时间:2014/3/11 9:32:56
--  [求助]下单手数不同
我用的语句是ss:intpart(cash(0)/close/300*0.6);
可是测试明细中却突然从10手变成1手了,为什么会这样啊。

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20140311093113.png
图片点击可在新窗口打开查看
我是这样子设置的,

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20140311093138.png
图片点击可在新窗口打开查看




--  作者:jinzhe
--  发布时间:2014/3/11 9:43:15
--  

初始金额是多少?

这个公式计算思路能不能讲讲?


--  作者:zzq888888
--  发布时间:2014/3/11 9:55:10
--  
不好意思,是我弄错了图片点击可在新窗口打开查看
应该是intpart((cash(0)*0.6)/close/300/0.1);忘记加0.1了,不过那为什么测试的时候还测试的好好的啊,应该会提示资金不够才对啊,起始资金是20万

--  作者:jinzhe
--  发布时间:2014/3/11 10:08:32
--  

20万的怎么能在股指上开10手,你的费率是怎么设置的?

你把所有的代码都贴上来,我本地测试一下


--  作者:zzq888888
--  发布时间:2014/3/11 10:41:38
--  
不是啊,一开始是一手交易啊,然后慢慢的变成10手

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20140311104104.png
图片点击可在新窗口打开查看


--  作者:jinzhe
--  发布时间:2014/3/11 10:43:58
--  
帖代码
--  作者:zzq888888
--  发布时间:2014/3/11 11:33:59
--  
//该模型为简单示范模型,用户需根据自己交易经验,修改完善后再实际应用!!!

//适用模式:“走完一根K线以后”
//若用户模式选为“固定时间间隔”,请将"交易条件"中的CLOSE改为OPEN,避免信号闪烁。
//
//中间变量
input:N(9,1,100,10),P1(3,2,40,4),P2(3,2,40,2),SS(1,1,1000,1);
RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;
K:=SMA(RSV,P1,1);
D:=SMA(K,P2,1);
J:=3*K-2*D;
26ma:ma(close,26);
250ma:ma(close,250);
60ma:=ma(close,60);
250maref:abs(250ma-ref(250ma,1)),noaxis;
手数:=ss*intpart(cash(0)/close/300*0.6);

//交易条件

buy1:=CROSS(J,0) and count(close>250ma,120)=120 and   60ma>250ma;//开多平空条件
sell1:=CROSS(100,J) and count(close<250ma,120)=120 and 60ma<250ma ;//开空平多条件
//交易系统
ZSDS:=15;     {止损点数}
zyds:=if(250maref>0.05,20*250maref*10,10);    {止盈点数}

//持有空单

 IF  holding<0 then begin
   IF enterprice-C>=zyds THEN BEGIN   //平空单
      空平:SELLSHORT(1,0,Market),ORDERQUEUE;
   END
   IF   C-ENTERPRICE>=ZSDS THEN BEGIN
       空损:SELLSHORT(1,0,Market),ORDERQUEUE;
    END
 END
//开空单
IF HOLDING=0 THEN BEGIN
  IF SELL1 THEN BEGIN
   空开:BUYSHORT(1=1,手数,Market);
  END 
 END
 //持有多单

 IF  holding>0 then begin
   IF C-enterprice>=zyds THEN BEGIN   //平空单
      多平:SELL(1,0,Market),ORDERQUEUE;
   END
   IF   ENTERPRICE-C>=ZSDS THEN BEGIN
       多损:SELL(1,0,Market),ORDERQUEUE;
    END
 END
//开多单
IF HOLDING=0 THEN BEGIN
  IF buy1 THEN BEGIN
   多开:BUY(1=1,手数,Market);
  END 
 END
 

当前持仓:HOLDING,COLORGRAY,LINETHICK0;
当前资产:ASSET,NOAXIS,COLORGRAY;

//注意交易系统先开后平的原则



--  作者:zzq888888
--  发布时间:2014/3/11 11:35:42
--  
如果把“手数:=ss*intpart(cash(0)/close/300*0.6);”改成“手数:=ss*intpart((cash(0)*0.6)/close/300*/0.1);就不会了
--  作者:jinzhe
--  发布时间:2014/3/11 13:09:49
--  
*/0.1是啥意思?又乘又除?
--  作者:zzq888888
--  发布时间:2014/3/11 13:14:34
--  
呃,那个没有删掉
手数:=ss*intpart((cash(0)*0.6)/close/300/0.1);