以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  错在哪里  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=180980)

--  作者:tonyzhu
--  发布时间:2020/7/1 23:31:58
--  错在哪里
KK:=DK<=10&&F<S&&F>50&&S>50&&BC>50;          //开空条件
PK:=(ENTERPRICE-C)>=50*MINDIFF;       //平空条件



IF PK AND HOLDING>0 THEN SELLSHORT(1,1,MARKET)  ;     //平仓

IF KK AND HOLDING=0 AND NUM<CS THEN             //开仓
BEGIN
BUYSHORT(1,1,MARKET);
NUM:=NUM+1;
END 
IF TIME=CLOSETIME(0) THEN NUM:=0;             // CLOSETIME(0)是取商品期货最后一节的交易时间,收盘的同时,NUM赋值为0。


以上公式错在哪里?符合条件没有开仓。公式思路:当符合开空条件时开空,盈利50点平仓。

--  作者:wenarm
--  发布时间:2020/7/2 5:58:12
--  

请表述清楚你的具体问题,以及贴出完整的代码。

[此贴子已经被作者于2020/7/2 6:05:02编辑过]

--  作者:tonyzhu
--  发布时间:2020/7/2 8:41:14
--  

VARIABLE:NUM=0;                            // 全局变量,来控制当天交易次数
           CS:=1;    //限定一天最多交易1次
中间代码太多,超出帖子限制,省略

KK:=DK<=10&&F<S&&F>50&&S>50&&BC>50;          //开空条件
PK:=(ENTERPRICE-C)>=50*MINDIFF;       //平空条件



IF PK AND HOLDING>0 THEN SELLSHORT(1,1,MARKET)  ;     //平仓

IF KK AND HOLDING=0 AND NUM<CS THEN             //开仓
BEGIN
BUYSHORT(1,1,MARKET);
NUM:=NUM+1;
END 
IF TIME=CLOSETIME(0) THEN NUM:=0;             // CLOSETIME(0)是取商品期货最后一节的交易时间,收盘的同时,NUM赋值为0。


以上公式错在哪里?符合条件没有开仓。公式思路:当符合开空条件时开空,盈利50点平仓,每天只开仓1次。同样思路,编了开多的,运行正常。

[此贴子已经被作者于2020/7/2 8:41:58编辑过]

--  作者:wenarm
--  发布时间:2020/7/2 8:45:13
--  

抱歉,这种代码我没法调试。你自己的逐个条件分析自己的开仓条件。肯定是你自己的逻辑不成立。并且你最起码要提供品种、周期以及出现的k线位置等信息。还有你所谓的满足条件,是事后看到的信号,但是没有委托记录,还是说你自己分析条件后,得到的应该成立,但是没有图标中没有信号等信息都没有表述。

另外,cs根据上下文的逻辑应该是全局变量,而你定义的是普通变量。同时冒号还应该是英文下的。

 

VARIABLE:NUM=0;                            // 全局变量,来控制当天交易次数
 VARIABLE: CS:=1;    //限定一天最多交易1次
[此贴子已经被作者于2020/7/2 9:00:14编辑过]

--  作者:tonyzhu
--  发布时间:2020/7/2 14:29:55
--  
VARIABLE:NUM=0;                            // 全局变量,来控制当天交易次数
           CS:=1;    //限定一天最多交易1次


//日内强度
AA:=(2*C-H-L)/(H-L);
BB:=AA*VOL;
R:=SUM(BB,20)/SUM(VOL,20);

//中期方向线
MA1:=EMA(CLOSE,12);
MA2:=EMA(CLOSE,47);
B11:=(MA1-MA2);


//穿叉短周期
N:=34;
VAR1:=LLV(CLOSE,10);//10日最低
VAR2:=HHV(CLOSE,10);//10日最大
F: =EMA((CLOSE-VAR1)/(VAR2-VAR1)*100,10), COLORGREEN;//价差
S: =EMA(0.667*REF(F,1)+0.333*F,2) , COLORYELLOW;
FS:=(F+S)/2;

//穿叉长周期
VAR3:=(2*CLOSE+HHV(CLOSE,2)+LLV(CLOSE,2))/4;//化解
VAR4:=LLV(CLOSE,N);//34日最低
VARA:=HHV(CLOSE,N);
VARB:=EMA((VAR3-VAR4)/(VARA-VAR4)*100,13);//价差
VARC:=EMA(0.667*REF(VARB,1)+0.333*VARB,2);
FJ:=VARB-VARC;
BC:=(VARB+VARC)/2;




D1:=IFELSE(R>REF(R,1), 1,0);
D2:=IFELSE(B11>REF(B11,1), 1,0);
D3:=IFELSE(FS>REF(FS,1), 1,0);
D4:=IFELSE(BC>REF(BC,1), 1,0);

                                           


DK:=D1+D2+D3+D4;
N:=34;
VAR1:=LLV(CLOSE,10);//10日最低
VAR2:=HHV(CLOSE,10);//10日最大
F:=EMA((CLOSE-VAR1)/(VAR2-VAR1)*100,10), COLORGREEN;//价差
S:=EMA(0.667*REF(F,1)+0.333*F,2) , COLORYELLOW;
FS:=(F+S)/2;
VAR3:=(2*CLOSE+HHV(CLOSE,2)+LLV(CLOSE,2))/4;//化解
VAR4:=LLV(CLOSE,N);//34日最低
VARA:=HHV(CLOSE,N);
VARB:=EMA((VAR3-VAR4)/(VARA-VAR4)*100,13);//价差
VARC:=EMA(0.667*REF(VARB,1)+0.333*VARB,2);
FJ:=VARB-VARC;
BC:=(VARB+VARC)/2;


KK:=DK<1&&F<S&&F>50&&S>50&&BC>50;          //开多条件
PK:=(ENTERPRICE-C)>=50*MINDIFF;       //平多条件



IF PK AND HOLDING>0 THEN SELLSHORT(1,1,MARKET)  ;     //平仓

IF KK AND HOLDING=0 AND NUM<CS THEN             //开仓
BEGIN
BUYSHORT(1,1,MARKET);
NUM:=NUM+1;
END 
IF TIME=CLOSETIME(0) THEN NUM:=0;             // CLOSETIME(0)是取商品期货最后一节的交易时间,收盘的同时,NUM赋值为0。



--  作者:FireScript
--  发布时间:2020/7/2 14:36:37
--  
 空头持仓这里的判断是 holding<0 才对。
IF PK AND HOLDING<0 THEN SELLSHORT(1,1,MARKET)  ;     //平仓
--  作者:tonyzhu
--  发布时间:2020/7/2 19:48:12
--  
非常感谢