以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://222.73.7.161/bbs/index.asp)
--  公式模型编写问题提交  (http://222.73.7.161/bbs/list.asp?boardid=4)
----  指示错误引用的括号不完整, 指向标注黄色区域, 但是那一行只有一句END?为什么会出错?  (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=175865)

--  作者:OscarDeng
--  发布时间:2020/5/6 9:49:23
--  指示错误引用的括号不完整, 指向标注黄色区域, 但是那一行只有一句END?为什么会出错?
IF TSELLHOLDINGEX(\'\',\'\',2)>=空头开仓数 AND TSELLHOLDINGEX(\'\',\'\',1)<空头开仓数 THEN 
BEGIN
    TCANCEL(TSELLHOLDINGEX(\'\',\'\',3)>0,4);
    空头开仓数=TSELLHOLDINGEX(\'\',\'\',2);
END
//3.总空头持仓比现在开仓数要少
IF TSELLHOLDINGEX(\'\',\'\',2)<=空头开仓数 THEN
BEGIN
TCANCEL(TSELLHOLDINGEX(\'\',\'\',3)>0,4);
空头开仓数=INTPART(空头开仓数-TSELLHOLDINGEX(\'\',\'\',1));
//3.1 达到开空条件, 先检测程序化是否平衡先, 如果是平衡状态, 开始空
    IF(INTPART(空头开仓数)<1 ,1,INTPART(空头开仓数));//空头开仓数不能为0
//a.看成交量
//b.看卖一和买一的中间加个 DYNAINFO(34)卖一价;DYNAINFO(28)买一价; DYNAINFO(208)最小变动单位;
//成交量比例是自己设置的, 取5日的平均数。 千分之5那么多, 建议分两次下而且用加仓的方式来操作。
    IF 空头开仓数>24 or 成交量比例>=4 THEN
    BEGIN
  IF DYNAINFO(34)-DYNAINFO(28)>3*DYNAINFO(208) THEN 
  BEGIN 
  TBUYSHORT(1,空头开仓数/8,LMT,DYNAINFO(34)+DYNAINFO(208)),NOATTACK;
  TBUYSHORT(1,空头开仓数/8,LMT,DYNAINFO(34)),NOATTACK;
  TBUYSHORT(1,空头开仓数/8,LMT,DYNAINFO(34)-DYNAINFO(208)),NOATTACK;
  TBUYSHORT(1,空头开仓数/8,LMT,DYNAINFO(34)-2*DYNAINFO(208)),NOATTACK;
  TBUYSHORT(1,空头开仓数/8,LMT,DYNAINFO(34)-3*DYNAINFO(208)),NOATTACK;
TBUYSHORT(1,空头开仓数/8,LMT,DYNAINFO(28)+3*DYNAINFO(208)),NOATTACK;
TBUYSHORT(1,空头开仓数/8,LMT,DYNAINFO(28)+2*DYNAINFO(208)),NOATTACK;
    TBUYSHORT(1,空头开仓数/8,LMT,DYNAINFO(28)+DYNAINFO(208)),NOATTACK;
      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)),NOATTACK;
  TBUYSHORT(1,空头开仓数/4,LMT,DYNAINFO(34)),NOATTACK;
  TBUYSHORT(1,空头开仓数/4,LMT,DYNAINFO(34)-DYNAINFO(208)),NOATTACK;
    TBUYSHORT(1,空头开仓数/4,LMT,DYNAINFO(28)+DYNAINFO(208)),NOATTACK;
      END       
      IF DYNAINFO(34)-DYNAINFO(28)=DYNAINFO(208) THEN
      BEGIN 
      IF DYNAINFO(25)>DYNAINFO(31) THEN 
      BEGIN //DYNAINFO(31) 是买一量, DYNAINFO(25) 是卖一量,
      TBUYSHORT(1,空头开仓数/3,LMT,DYNAINFO(34)+DYNAINFO(208)),NOATTACK;
    TBUYSHORT(1,2*空头开仓数/3,LMT,DYNAINFO(34)),NOATTACK;
    END
        IF DYNAINFO(25)<DYNAINFO(31) THEN
        BEGIN
        TBUYSHORT(1,空头开仓数/2,LMT,DYNAINFO(34),NOATTACK;
    TBUYSHORT(1,空头开仓数/2,LMT,DYNAINFO(28)),NOATTACK;
END
      END     
    END 
   IF 空头开仓数<=24 AND 空头开仓数>=4 AND 成交量比例<4 THEN    
   BEGIN
      IF DYNAINFO(34)-DYNAINFO(28)>3*DYNAINFO(208) THEN 
  BEGIN 
  TBUYSHORT(1,空头开仓数/3,LMT,DYNAINFO(28)+3*DYNAINFO(208)),NOATTACK;
TBUYSHORT(1,空头开仓数/3,LMT,DYNAINFO(28)+2*DYNAINFO(208)),NOATTACK;
    TBUYSHORT(1,空头开仓数/3,LMT,DYNAINFO(28)+DYNAINFO(208)),NOATTACK;
      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)),NOATTACK;
    TBUYSHORT(1,空头开仓数/2,LMT,DYNAINFO(28)+DYNAINFO(208)),NOATTACK;
      END
   END   
   IF 空头开仓数<=3 AND 空头开仓数>=2 AND 成交量比例<4 THEN //注意holding是策略的理论持仓,他不管实际仓位   
   BEGIN //DYNAINFO(31) 是买一量, DYNAINFO(25) 是卖一量,
    IF DYNAINFO(25)>DYNAINFO(31) THEN TBUYSHORT(1,空头开仓数,LMT,DYNAINFO(34)),NOATTACK;
  IF DYNAINFO(25)<DYNAINFO(31) THEN TBUYSHORT(1,空头开仓数,LMT,DYNAINFO(28)),NOATTACK;
   END
END


--  作者:OscarDeng
--  发布时间:2020/5/6 9:57:06
--  
下面已经按照你的要求,TSELLHOLDINGEX(\'\',\'\',1)用了单引号, 空头开仓数:=TSELLHOLDINGEX(\'\',\'\',1)用了冒号, 还是出错说引用的括号不完整

//1.如果之前的开空持仓剩余数并且比现在空头开仓数还要多, 那就用之前的开空持仓剩余数,不需要开空。
IF TSELLHOLDINGEX(\'\',\'\',1)>=空头开仓数 THEN 空头开仓数:=TSELLHOLDINGEX(\'\',\'\',1);

//2.如果有平空挂单,之前的开空持仓剩余数比现在空头开仓数少, 总空头持仓比现在开仓数要多,那就用把要撤的单取消掉。 
IF TSELLHOLDINGEX(\'\',\'\',2)>=空头开仓数 AND TSELLHOLDINGEX(\'\',\'\',1)<空头开仓数 THEN 
BEGIN
    TCANCEL(TSELLHOLDINGEX(\'\',\'\',3)>0,4);
    空头开仓数:=TSELLHOLDINGEX(\'\',\'\',2);
END
//3.总空头持仓比现在开仓数要少
IF TSELLHOLDINGEX(\'\',\'\',2)<=空头开仓数 THEN
BEGIN
TCANCEL(TSELLHOLDINGEX(\'\',\'\',3)>0,4);
空头开仓数:=INTPART(空头开仓数-TSELLHOLDINGEX(\'\',\'\',1));
//3.1 达到开空条件, 先检测程序化是否平衡先, 如果是平衡状态, 开始空
    IF(INTPART(空头开仓数)<1 ,1,INTPART(空头开仓数));//空头开仓数不能为0
//a.看成交量
//b.看卖一和买一的中间加个 DYNAINFO(34)卖一价;DYNAINFO(28)买一价; DYNAINFO(208)最小变动单位;
//成交量比例是自己设置的, 取5日的平均数。 千分之5那么多, 建议分两次下而且用加仓的方式来操作。
    IF 空头开仓数>24 or 成交量比例>=4 THEN
    BEGIN
  IF DYNAINFO(34)-DYNAINFO(28)>3*DYNAINFO(208) THEN 
  BEGIN 
  TBUYSHORT(1,空头开仓数/8,LMT,DYNAINFO(34)+DYNAINFO(208)),NOATTACK;
  TBUYSHORT(1,空头开仓数/8,LMT,DYNAINFO(34)),NOATTACK;
  TBUYSHORT(1,空头开仓数/8,LMT,DYNAINFO(34)-DYNAINFO(208)),NOATTACK;
  TBUYSHORT(1,空头开仓数/8,LMT,DYNAINFO(34)-2*DYNAINFO(208)),NOATTACK;
  TBUYSHORT(1,空头开仓数/8,LMT,DYNAINFO(34)-3*DYNAINFO(208)),NOATTACK;
TBUYSHORT(1,空头开仓数/8,LMT,DYNAINFO(28)+3*DYNAINFO(208)),NOATTACK;
TBUYSHORT(1,空头开仓数/8,LMT,DYNAINFO(28)+2*DYNAINFO(208)),NOATTACK;
    TBUYSHORT(1,空头开仓数/8,LMT,DYNAINFO(28)+DYNAINFO(208)),NOATTACK;
      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)),NOATTACK;
  TBUYSHORT(1,空头开仓数/4,LMT,DYNAINFO(34)),NOATTACK;
  TBUYSHORT(1,空头开仓数/4,LMT,DYNAINFO(34)-DYNAINFO(208)),NOATTACK;
    TBUYSHORT(1,空头开仓数/4,LMT,DYNAINFO(28)+DYNAINFO(208)),NOATTACK;
      END       
      IF DYNAINFO(34)-DYNAINFO(28)=DYNAINFO(208) THEN
      BEGIN 
      IF DYNAINFO(25)>DYNAINFO(31) THEN 
      BEGIN //DYNAINFO(31) 是买一量, DYNAINFO(25) 是卖一量,
      TBUYSHORT(1,空头开仓数/3,LMT,DYNAINFO(34)+DYNAINFO(208)),NOATTACK;
    TBUYSHORT(1,2*空头开仓数/3,LMT,DYNAINFO(34)),NOATTACK;
    END
        IF DYNAINFO(25)<DYNAINFO(31) THEN
        BEGIN
        TBUYSHORT(1,空头开仓数/2,LMT,DYNAINFO(34),NOATTACK;
    TBUYSHORT(1,空头开仓数/2,LMT,DYNAINFO(28)),NOATTACK;
END
      END     
    END 
   IF 空头开仓数<=24 AND 空头开仓数>=4 AND 成交量比例<4 THEN    
   BEGIN
      IF DYNAINFO(34)-DYNAINFO(28)>3*DYNAINFO(208) THEN 
  BEGIN 
  TBUYSHORT(1,空头开仓数/3,LMT,DYNAINFO(28)+3*DYNAINFO(208)),NOATTACK;
TBUYSHORT(1,空头开仓数/3,LMT,DYNAINFO(28)+2*DYNAINFO(208)),NOATTACK;
    TBUYSHORT(1,空头开仓数/3,LMT,DYNAINFO(28)+DYNAINFO(208)),NOATTACK;
      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)),NOATTACK;
    TBUYSHORT(1,空头开仓数/2,LMT,DYNAINFO(28)+DYNAINFO(208)),NOATTACK;
      END
   END   
   IF 空头开仓数<=3 AND 空头开仓数>=2 AND 成交量比例<4 THEN //注意holding是策略的理论持仓,他不管实际仓位   
   BEGIN //DYNAINFO(31) 是买一量, DYNAINFO(25) 是卖一量,
    IF DYNAINFO(25)>DYNAINFO(31) THEN TBUYSHORT(1,空头开仓数,LMT,DYNAINFO(34)),NOATTACK;
  IF DYNAINFO(25)<DYNAINFO(31) THEN TBUYSHORT(1,空头开仓数,LMT,DYNAINFO(28)),NOATTACK;
   END
END


--  作者:FireScript
--  发布时间:2020/5/6 10:06:07
--  
是你标记位置的下面的位置:

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