发新话题
打印

请教编写统计KD指标在期货上的成功率问题?

请教编写统计KD指标在期货上的成功率问题?

期货中可卖空,我想统计根据KD指标买入和卖出的成功率。思路是这样,金叉CROSS(K,D)时候买入直到死叉CROSS(D,K)时卖出,然后紧接着卖出然后知道金叉为止。这样周而复始,我想得到两个统计结果:成功率(交易次数)和盈利点数(以收盘价进出)。
下面是我编的公式,但编译公式时候提示“语法错误”,是指IF语句的语法错误,这是为何?
VK:="KD.K";
VD:="KD.D";
IFBUY:=0;//0为买平仓,1为买建仓
IFSELL:=0;//0为卖平仓,1为卖建仓
VAR1:=0;//统计总的赢利数
IFUP:=CROSS(VK,VD);//金叉买入
IFDOWN:=CROSS(VD,VK);//死叉卖出
IF IFUP THEN BEGIN
   VBUY:=C;//记下买入价
   IFBUY:=1;
   VT:=IF(IFSELL,VSELL-VBUY,0);//IFSELL为1时表示此次是买入平仓,统计差价
   IFSELL:=0;
   VAR1:=VAR1+VT;//统计赢利
END;
IF IFDOWN THEN BEGIN
   VSELL:=C;//记下卖出价
   IFSELL:=1;
   VT:=IF(IFBUY,VSELL-VBUY,0);
   IFBUY:=0;
   VAR1:=VAR1+VT;
END;
VALL:VAR1;

TOP

if语句参考南客老师的贴:
http://bbs.fjfox.com/viewthread.php?tid=13009

TOP

成功率参考:
复制内容到剪贴板
代码:
k:="kd.k";d:="kd.d";
x:=cross(k,d);y:=cross(d,k);
q:=BARSLAST(x);
成功:sum(y and c>ref(c,q),0);
失败:sum(y and c<ref(c,q),0);
总次数:sum(y,0);
成功率:成功/总次数;

TOP

读贴收入1000例

TOP

骑兵老师,我还是不明白我设计的IF语句有何错误,我看了南宫的贴。IFUP也不是序列值吧?

IF IFUP THEN BEGIN
   VBUY:=C;//记下买入价
   IFBUY:=1;
    VT:=IF(IFSELL,VSELL-VBUY,0);//IFSELL为1时表示此次是买入平仓,统计差价
   IFSELL:=0;
   VAR1:=VAR1+VT;//统计赢利
END;

TOP

引用:
梭哈先生 于 2005-1-24 11:57 PM 写道:
骑兵老师,我还是不明白我设计的IF语句有何错误,我看了南宫的贴。IFUP也不是序列值吧?

IF IFUP THEN BEGIN
   VBUY:=C;//记下买入价
   IFBUY:=1;
    VT:=IF(IFSELL,VSELL-VBUY,0);//IFSELL为1时表示此次 ...
我替老师回答一下:
引用:
IF条件语句
语法:IF cond THEN expr1 ELSE expr2
如果 cond 条件成立,则执行语句 expr1,否则执行 expr2 语句。
说明:
  1、在条件判断比较简单的情况下,ELSE expr2 子句可以省略。
  2、条件 cond 必须是单值变量,不能为序列变量。
注意:条件 cond 必须是单值变量,不能为序列变量。而IFUP就是序列变量;解决办法应增加一个FOR循环!!!

TOP

谢谢楼上的朋友

TOP

学习。关注中

TOP

引用:
kjyhao 于 2005-1-25 07:25 AM 写道:
我替老师回答一下:

注意:条件 cond 必须是单值变量,不能为序列变量。而IFUP就是序列变量;解决办法应增加一个FOR循环!!!
谢谢kjyhao朋友的回答!

梭哈先生你的留言我收到了。
我再简单讲一下南客老师当时教我的序列变量,单值变量判断:
序列变量就是随着时间变化,数据也会发生变化的。
单值变量就是随着时间变化,数据不会发生变化的。(图行是跟直线)

你公式中IFUP:=CROSS(VK,VD);//金叉买入
是序列变量。因为今天没金叉,可是明天可能金叉,数据也发生变化了。
也就是数据会随着时间变化而变化,IF语句就通不过了,kjyhao上面也说了,
必须要用循环才行的!

TOP

发新话题