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点平仓。
请表述清楚你的具体问题,以及贴出完整的代码。
[此贴子已经被作者于2020/7/2 6:05:02编辑过]
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编辑过]
抱歉,这种代码我没法调试。你自己的逐个条件分析自己的开仓条件。肯定是你自己的逻辑不成立。并且你最起码要提供品种、周期以及出现的k线位置等信息。还有你所谓的满足条件,是事后看到的信号,但是没有委托记录,还是说你自己分析条件后,得到的应该成立,但是没有图标中没有信号等信息都没有表述。
另外,cs根据上下文的逻辑应该是全局变量,而你定义的是普通变量。同时冒号还应该是英文下的。
VARIABLE:NUM=0; // 全局变量,来控制当天交易次数
VARIABLE: CS:=1; //限定一天最多交易1次
[此贴子已经被作者于2020/7/2 9:00:14编辑过]
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。
空头持仓这里的判断是 holding<0 才对。
IF PK AND
HOLDING<0 THEN SELLSHORT(1,1,MARKET) ; //平仓