开拓者期货期权程序化系统交易论坛

标题: 请修改均线的2次交叉语句 [打印本页]

作者: b8866    时间: 2008-3-5 21:22:27     标题: 请修改均线的2次交叉语句

在一定周期内,求交叉的次数的总数大于2。比如在30个值范围内MA1上交叉MA2的次数大于2。我认为是均线的2次交叉
CountIf(CrossOver(MA1, MA2),30)>2//我调用了统计总数函数,但我在校验时错误提示:被调用公式要求传入序列参数或序列表达式作为参数
如何修改,谢谢
作者: tradeblazer    时间: 2008-3-5 22:07:01

先定义序列变量
Vars
    BoolSeries crosscon;
begin
    crosscon = CrossOver(MA1,MA2);
    newcon = CountIf(CrossCon,30) > 2;
   ....
End
作者: b8866    时间: 2008-3-5 23:56:58

还是不对呀,老师帮我该一下好了,谢谢;
Params
        Numeric FastLength( 12 );
        Numeric SlowLength( 26 );
        Numeric MACDLength( 9 );
        Numeric BuyLots(1);
    Numeric M1(10);
    Numeric M2(30);
    Numeric M3(60);
    Numeric M4(120);
Vars
        NumericSeries DIFF;
        NumericSeries DEA;
    Numeric MA1;
    Numeric MA2;
    Numeric MA3;
    Numeric MA4;
        BoolSeries JC;
    Bool BK1;

Begin
    DIFF = XAverage( Close, FastLength ) - XAverage( Close, SlowLength ) ;       
        DEA = XAverage(DIFF,MACDLength);
   MA1=Average( Close, M1);
   MA2=Average( Close, M2);
   MA3=AverageFC( Close, M3);
   MA4=AverageFC( Close, M4);
  JC =CrossOver(MA1, MA2);//这里还是不对呀“被调用公式要求传入序列参数或序列表达式作为参数”
  BK1=CountIf(JC,30) > 2&&MA1>MA4&&MA2>MA4&&MA3>MA3[1]&&MA3[1]>MA3[2];//我想用MA3>MA3[1]&&MA3[1]>MA3[2]表示MA3向上可惜错误
        if (BK1 )
        {
                Buy(BuyLots,Close);
        }
End
作者: tradeblazer    时间: 2008-3-6 08:57:59

把MA1,MA2定义为NumericSeries
作者: b8866    时间: 2008-3-6 09:52:44

这次保存成功,可是前面就一次信号,我看别的地方也应该有,可就那一次,是不是没有平仓信号,就没第2个信号?
作者: cfmx2007    时间: 2008-3-6 13:48:25

b8866同学不错呀,好好交流一下啊
作者: b8866    时间: 2008-3-6 13:52:12

我的QQ137039357
作者: 哈哈    时间: 2008-3-6 19:44:32

原帖由 b8866 于 2008-3-6 09:52 发表
这次保存成功,可是前面就一次信号,我看别的地方也应该有,可就那一次,是不是没有平仓信号,就没第2个信号?

跟交易设置有没有冲突啊,如同一个交易指令不能连续建仓之类的
作者: huage    时间: 2008-3-6 23:20:48

努力学习中。




欢迎光临 开拓者期货期权程序化系统交易论坛 (http://bbs.tb18.net/) Powered by Discuz! X2