以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  TBUYSHORT 能这样嵌套 在if 语句使用吗?  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=174210)

--  作者:OscarDeng
--  发布时间:2020/2/9 0:11:29
--  TBUYSHORT 能这样嵌套 在if 语句使用吗?
TBUYSHORT 能这样嵌套 在if 语句使用吗?

IF 空头开仓数>8 AND 成交量比例>2 THEN//如果是成交量千分之二那么多, 建议分两次下而且用加仓的方式来操作。
    BEGIN
  IF DYNAINFO(34)-DYNAINFO(28)>3*DYNAINFO(208) THEN 
  BEGIN 
  TBUYSHORT(1,空头开仓数/8,LMT,DYNAINFO(34)+DYNAINFO(208));
  TBUYSHORT(1,空头开仓数/8,LMT,DYNAINFO(34));
  TBUYSHORT(1,空头开仓数/8,LMT,DYNAINFO(34)-DYNAINFO(208));
  TBUYSHORT(1,空头开仓数/8,LMT,DYNAINFO(34)-2*DYNAINFO(208))
  TBUYSHORT(1,空头开仓数/8,LMT,DYNAINFO(34)-3*DYNAINFO(208))
TBUYSHORT(1,空头开仓数/8,LMT,DYNAINFO(28)+3*DYNAINFO(208));
TBUYSHORT(1,空头开仓数/8,LMT,DYNAINFO(28)+2*DYNAINFO(208));
    TBUYSHORT(1,空头开仓数/8,LMT,DYNAINFO(28)+DYNAINFO(208));
      END
      IF DYNAINFO(34)-DYNAINFO(28)>DYNAINFO(208) AND DYNAINFO(34)-DYNAINFO(28)<=3*DYNAINFO(208) THEN
  BEGIN 
  TBUYSHORT(1,空头开仓数/5,LMT,DYNAINFO(34)+DYNAINFO(208));
  TBUYSHORT(1,空头开仓数/5,LMT,DYNAINFO(34));
  TBUYSHORT(1,空头开仓数/5,LMT,DYNAINFO(34)-DYNAINFO(208));
  TBUYSHORT(1,空头开仓数/5,LMT,DYNAINFO(34)-2*DYNAINFO(208))
TBUYSHORT(1,空头开仓数/5,LMT,DYNAINFO(28)+2*DYNAINFO(208));
    TBUYSHORT(1,空头开仓数/5,LMT,DYNAINFO(28)+DYNAINFO(208));
      END       
      IF DYNAINFO(34)-DYNAINFO(28)=DYNAINFO(208) THEN
      BEGIN 
TBUYSHORT(1,空头开仓数/5,LMT,DYNAINFO(28)+2*DYNAINFO(208));
TBUYSHORT(1,空头开仓数/5,LMT,DYNAINFO(28+DYNAINFO(208));
    TBUYSHORT(1,空头开仓数/5,LMT,DYNAINFO(28));
        TBUYSHORT(1,空头开仓数/5,LMT,DYNAINFO(34));
        TBUYSHORT(1,空头开仓数/5,LMT,DYNAINFO(34)+DYNAINFO(208));
      END     
   END   

--  作者:wenarm
--  发布时间:2020/2/9 10:15:25
--  
可以嵌套
[此贴子已经被作者于2020/2/9 10:15:42编辑过]

--  作者:OscarDeng
--  发布时间:2020/2/9 17:44:03
--  
那请问下面的语句哪里出现错误? 错误提示:TBUYSHORT不得在其他函数总做未参数被调用




IF HOLDING=0 AND TSELLHOLDINGEX("","",2)=0 THEN BEGIN //注意holding是策略的理论持仓,他不管实际仓位例如我想开单是10的, 那就用10, 100万的, 就用100. 最高就是100W。
//持仓比例和成交量的比例, 所以这两者一般不会去动, 除非是一些非主力合约

//1.看成交量
//2.看卖一和买一的中间加个 DYNAINFO(34)卖一价;DYNAINFO(28)买一价; DYNAINFO(208)最小变动单位;
    IF 空头开仓数>16 AND 成交量比例>2 THEN//如果是成交量千分之二那么多, 建议分两次下而且用加仓的方式来操作。
    BEGIN
  IF DYNAINFO(34)-DYNAINFO(28)>3*DYNAINFO(208) THEN 
  BEGIN 
  TBUYSHORT(1,空头开仓数/8,LMT,DYNAINFO(34)+DYNAINFO(208));
  TBUYSHORT(1,空头开仓数/8,LMT,DYNAINFO(34));
  TBUYSHORT(1,空头开仓数/8,LMT,DYNAINFO(34)-DYNAINFO(208));
  TBUYSHORT(1,空头开仓数/8,LMT,DYNAINFO(34)-2*DYNAINFO(208))
  TBUYSHORT(1,空头开仓数/8,LMT,DYNAINFO(34)-3*DYNAINFO(208))
TBUYSHORT(1,空头开仓数/8,LMT,DYNAINFO(28)+3*DYNAINFO(208));
TBUYSHORT(1,空头开仓数/8,LMT,DYNAINFO(28)+2*DYNAINFO(208));
    TBUYSHORT(1,空头开仓数/8,LMT,DYNAINFO(28)+DYNAINFO(208));
      END
      IF DYNAINFO(34)-DYNAINFO(28)>DYNAINFO(208) AND DYNAINFO(34)-DYNAINFO(28)<=3*DYNAINFO(208) THEN
  BEGIN 
  TBUYSHORT(1,空头开仓数/5,LMT,DYNAINFO(34)+DYNAINFO(208));
  TBUYSHORT(1,空头开仓数/5,LMT,DYNAINFO(34));
  TBUYSHORT(1,空头开仓数/5,LMT,DYNAINFO(34)-DYNAINFO(208));
  TBUYSHORT(1,空头开仓数/5,LMT,DYNAINFO(34)-2*DYNAINFO(208))
    TBUYSHORT(1,空头开仓数/5,LMT,DYNAINFO(28)+DYNAINFO(208));
      END       
      IF DYNAINFO(34)-DYNAINFO(28)=DYNAINFO(208) THEN
      BEGIN 
TBUYSHORT(1,空头开仓数/3,LMT,DYNAINFO(34)+DYNAINFO(208));
TBUYSHORT(1,空头开仓数/3,LMT,DYNAINFO(34));
    TBUYSHORT(1,空头开仓数/3,LMT,DYNAINFO(28));
      END     
   END   
   IF 空头开仓数>16 AND 成交量比例>8 THEN
   BEGIN
  IF DYNAINFO(34)-DYNAINFO(28)>3*DYNAINFO(208) THEN 
  BEGIN 
  TBUYSHORT(1,空头开仓数/8,LMT,DYNAINFO(34)+DYNAINFO(208));
  TBUYSHORT(1,空头开仓数/8,LMT,DYNAINFO(34));
  TBUYSHORT(1,空头开仓数/8,LMT,DYNAINFO(34)-DYNAINFO(208));
  TBUYSHORT(1,空头开仓数/8,LMT,DYNAINFO(34)-2*DYNAINFO(208))
  TBUYSHORT(1,空头开仓数/8,LMT,DYNAINFO(34)-3*DYNAINFO(208))
TBUYSHORT(1,空头开仓数/8,LMT,DYNAINFO(28)+3*DYNAINFO(208));
TBUYSHORT(1,空头开仓数/8,LMT,DYNAINFO(28)+2*DYNAINFO(208));
    TBUYSHORT(1,空头开仓数/8,LMT,DYNAINFO(28)+DYNAINFO(208));
      END
      IF DYNAINFO(34)-DYNAINFO(28)>DYNAINFO(208) AND DYNAINFO(34)-DYNAINFO(28)<=3*DYNAINFO(208) THEN
  BEGIN 
  TBUYSHORT(1,空头开仓数/5,LMT,DYNAINFO(34)+DYNAINFO(208));
  TBUYSHORT(1,空头开仓数/5,LMT,DYNAINFO(34));
  TBUYSHORT(1,空头开仓数/5,LMT,DYNAINFO(34)-DYNAINFO(208));
  TBUYSHORT(1,空头开仓数/5,LMT,DYNAINFO(34)-2*DYNAINFO(208))
TBUYSHORT(1,空头开仓数/5,LMT,DYNAINFO(28)+2*DYNAINFO(208));
    TBUYSHORT(1,空头开仓数/5,LMT,DYNAINFO(28)+DYNAINFO(208));
      END       
      IF DYNAINFO(34)-DYNAINFO(28)=DYNAINFO(208) THEN
      BEGIN 
TBUYSHORT(1,空头开仓数/3,LMT,DYNAINFO(34)+DYNAINFO(208));
TBUYSHORT(1,空头开仓数/3,LMT,DYNAINFO(34));
    TBUYSHORT(1,空头开仓数/3,LMT,DYNAINFO(28));
      END     
   END   
   IF 空头开仓数<=8 AND 空头开仓数>=4  THEN    
   BEGIN
   IF DYNAINFO(34)-DYNAINFO(28)>3*DYNAINFO(208) THEN 
  BEGIN 
  TBUYSHORT(1,空头开仓数/4,LMT,DYNAINFO(34)-DYNAINFO(208));
TBUYSHORT(1,空头开仓数/4,LMT,DYNAINFO(28)+3*DYNAINFO(208));
TBUYSHORT(1,空头开仓数/4,LMT,DYNAINFO(28)+2*DYNAINFO(208));
    TBUYSHORT(1,空头开仓数/4,LMT,DYNAINFO(28)+DYNAINFO(208));
      END
      IF DYNAINFO(34)-DYNAINFO(28)>DYNAINFO(208) AND DYNAINFO(34)-DYNAINFO(28)<=3*DYNAINFO(208) THEN
  BEGIN 
  TBUYSHORT(1,空头开仓数/2,LMT,DYNAINFO(34)-DYNAINFO(208));
    TBUYSHORT(1,空头开仓数/2,LMT,DYNAINFO(28)+DYNAINFO(208));
      END       
      IF DYNAINFO(34)-DYNAINFO(28)=DYNAINFO(208) THEN
      TBUYSHORT(1,空头开仓数/2,LMT,DYNAINFO(34)-DYNAINFO(208));
    TBUYSHORT(1,空头开仓数/2,LMT,DYNAINFO(28)+DYNAINFO(208));
      END
   IF 空头开仓数<=3 AND 空头开仓数>=2 THEN //注意holding是策略的理论持仓,他不管实际仓位   
    BEGIN 
  TBUYSHORT(1,空头开仓数/2,LMT,DYNAINFO(34)-DYNAINFO(208));
TBUYSHORT(1,空头开仓数/2,LMT,DYNAINFO(28)+DYNAINFO(208));
      END
   IF 空头开仓数=1 THEN //注意holding是策略的理论持仓,他不管实际仓位   
    BEGIN
    IF DYNAINFO(25)>DYNAINFO(31) THEN TBUYSHORT(1,空头开仓数,LMT,DYNAINFO(34));//DYNAINFO(31) 是买一量, DYNAINFO(25) 是卖一量,
  IF DYNAINFO(25)<DYNAINFO(31) THEN TBUYSHORT(1,空头开仓数,LMT,DYNAINFO(28));
      END   //开空信号
END

--  作者:wenarm
--  发布时间:2020/2/9 18:59:50
--  

代码语句结束没有分号作为结束。

 

 


--  作者:OscarDeng
--  发布时间:2020/2/10 10:48:00
--  
已经更新如下, 还是不行。   

IF 空头开仓数>16 AND 成交量比例>2 THEN//如果是成交量千分之二那么多, 建议分两次下而且用加仓的方式来操作。
    BEGIN
  IF DYNAINFO(34)-DYNAINFO(28)>3*DYNAINFO(208) THEN 
  BEGIN 
  TBUYSHORT(1,空头开仓数/8,LMT,DYNAINFO(34)+DYNAINFO(208));
  TBUYSHORT(1,空头开仓数/8,LMT,DYNAINFO(34));
  TBUYSHORT(1,空头开仓数/8,LMT,DYNAINFO(34)-DYNAINFO(208));
  TBUYSHORT(1,空头开仓数/8,LMT,DYNAINFO(34)-2*DYNAINFO(208));
  TBUYSHORT(1,空头开仓数/8,LMT,DYNAINFO(34)-3*DYNAINFO(208));
TBUYSHORT(1,空头开仓数/8,LMT,DYNAINFO(28)+3*DYNAINFO(208));
TBUYSHORT(1,空头开仓数/8,LMT,DYNAINFO(28)+2*DYNAINFO(208));
    TBUYSHORT(1,空头开仓数/8,LMT,DYNAINFO(28)+DYNAINFO(208));
      END
      IF DYNAINFO(34)-DYNAINFO(28)>DYNAINFO(208) AND DYNAINFO(34)-DYNAINFO(28)<=3*DYNAINFO(208) THEN
  BEGIN 
  TBUYSHORT(1,空头开仓数/5,LMT,DYNAINFO(34)+DYNAINFO(208));
  TBUYSHORT(1,空头开仓数/5,LMT,DYNAINFO(34));
  TBUYSHORT(1,空头开仓数/5,LMT,DYNAINFO(34)-DYNAINFO(208));
  TBUYSHORT(1,空头开仓数/5,LMT,DYNAINFO(34)-2*DYNAINFO(208));
    TBUYSHORT(1,空头开仓数/5,LMT,DYNAINFO(28)+DYNAINFO(208));
      END       
      IF DYNAINFO(34)-DYNAINFO(28)=DYNAINFO(208) THEN
      BEGIN 
TBUYSHORT(1,空头开仓数/3,LMT,DYNAINFO(34)+DYNAINFO(208));
TBUYSHORT(1,空头开仓数/3,LMT,DYNAINFO(34));
    TBUYSHORT(1,空头开仓数/3,LMT,DYNAINFO(28));
      END     
   END   
   IF 空头开仓数>16 AND 成交量比例<=2 THEN
   BEGIN
  IF DYNAINFO(34)-DYNAINFO(28)>3*DYNAINFO(208) THEN 
  BEGIN 
  TBUYSHORT(1,空头开仓数/8,LMT,DYNAINFO(34)+DYNAINFO(208));
  TBUYSHORT(1,空头开仓数/8,LMT,DYNAINFO(34));
  TBUYSHORT(1,空头开仓数/8,LMT,DYNAINFO(34)-DYNAINFO(208));
  TBUYSHORT(1,空头开仓数/8,LMT,DYNAINFO(34)-2*DYNAINFO(208));
  TBUYSHORT(1,空头开仓数/8,LMT,DYNAINFO(34)-3*DYNAINFO(208));
TBUYSHORT(1,空头开仓数/8,LMT,DYNAINFO(28)+3*DYNAINFO(208));
TBUYSHORT(1,空头开仓数/8,LMT,DYNAINFO(28)+2*DYNAINFO(208));
    TBUYSHORT(1,空头开仓数/8,LMT,DYNAINFO(28)+DYNAINFO(208));
      END
      IF DYNAINFO(34)-DYNAINFO(28)>DYNAINFO(208) AND DYNAINFO(34)-DYNAINFO(28)<=3*DYNAINFO(208) THEN
  BEGIN 
  TBUYSHORT(1,空头开仓数/4,LMT,DYNAINFO(34)+DYNAINFO(208));
  TBUYSHORT(1,空头开仓数/4,LMT,DYNAINFO(34));
  TBUYSHORT(1,空头开仓数/4,LMT,DYNAINFO(34)-DYNAINFO(208));
    TBUYSHORT(1,空头开仓数/4,LMT,DYNAINFO(28)+DYNAINFO(208));
      END       
      IF DYNAINFO(34)-DYNAINFO(28)=DYNAINFO(208) THEN
      BEGIN 
TBUYSHORT(1,空头开仓数/3,LMT,DYNAINFO(34)+DYNAINFO(208));
TBUYSHORT(1,空头开仓数/3,LMT,DYNAINFO(34));
    TBUYSHORT(1,空头开仓数/3,LMT,DYNAINFO(28));
      END     
   END   
   IF 空头开仓数<=16 AND 空头开仓数>=4  THEN    
   BEGIN
   IF DYNAINFO(34)-DYNAINFO(28)>3*DYNAINFO(208) THEN 
  BEGIN 
  TBUYSHORT(1,空头开仓数/3,LMT,DYNAINFO(28)+3*DYNAINFO(208));
TBUYSHORT(1,空头开仓数/3,LMT,DYNAINFO(28)+2*DYNAINFO(208));
    TBUYSHORT(1,空头开仓数/3,LMT,DYNAINFO(28)+DYNAINFO(208));
      END
      IF DYNAINFO(34)-DYNAINFO(28)>DYNAINFO(208) AND DYNAINFO(34)-DYNAINFO(28)<=3*DYNAINFO(208) THEN
  BEGIN 
  TBUYSHORT(1,空头开仓数/2,LMT,DYNAINFO(34)-DYNAINFO(208));
    TBUYSHORT(1,空头开仓数/2,LMT,DYNAINFO(28)+DYNAINFO(208));
      END       
      IF DYNAINFO(34)-DYNAINFO(28)=DYNAINFO(208) THEN
      TBUYSHORT(1,空头开仓数/2,LMT,DYNAINFO(34)-DYNAINFO(208));
    TBUYSHORT(1,空头开仓数/2,LMT,DYNAINFO(28)+DYNAINFO(208));
      END
   IF 空头开仓数<=3 AND 空头开仓数>=2 THEN //注意holding是策略的理论持仓,他不管实际仓位   
    BEGIN 
  TBUYSHORT(1,空头开仓数/2,LMT,DYNAINFO(34)-DYNAINFO(208));
TBUYSHORT(1,空头开仓数/2,LMT,DYNAINFO(28)+DYNAINFO(208));
      END
   IF 空头开仓数=1 THEN //注意holding是策略的理论持仓,他不管实际仓位   
    BEGIN
    IF DYNAINFO(25)>DYNAINFO(31) THEN TBUYSHORT(1,空头开仓数,LMT,DYNAINFO(34));//DYNAINFO(31) 是买一量, DYNAINFO(25) 是卖一量,
  IF DYNAINFO(25)<DYNAINFO(31) THEN TBUYSHORT(1,空头开仓数,LMT,DYNAINFO(28));
      END   //开空信号
    END
END


--  作者:FireScript
--  发布时间:2020/2/10 11:07:53
--  

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

好几个地方遗漏了分号。

--  作者:OscarDeng
--  发布时间:2020/2/10 14:21:34
--  
我重新发给你5楼的已经修改过加完整分号了, 还是不行, 说没有begin.  我检测了一下, 应该没有漏
--  作者:FireScript
--  发布时间:2020/2/10 14:41:06
--  
用文本工具 统计了下   13个begin  15个end  还是有缺失的地方。你再排重下吧。