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

标题: 可以搞个函数示例吗 ? [打印本页]

作者: dengwenle    时间: 2007-9-5 11:53:57     标题: 可以搞个函数示例吗 ?

函数nmins ndays nmoths 终于出来了!
可以用nmins 举个例子吗?
就在5分钟 的周期取 开盘价 和收盘价吧 !谢谢
作者: tradeblazer    时间: 2007-9-5 12:05:09

您看看技术指标nMins,nDays等函数,这些就是例子阿
作者: dengwenle    时间: 2007-9-5 13:02:02

我把这个10分钟的周期加入交易指令 !在保存公式的时候 报错
“函数PlotNumeric不能不能用于交易指令”
这是部分原码

Params
        Numeric lots(2);
        Numeric N(10);
Vars
    Bool szwy;
        Bool ssly;
        Bool sly;
        Bool sszwy;
        Bool Kk;
        Bool Kd;
        Bool Kztm;       // 看涨吞没
        Bool Kdtm;       // 看跌吞没
    Numeric op;
    Numeric Clo;
Begin
Ope=PlotNumeric("Open",DataConvert(Open,"min",N,"Open"));
Clos=PlotNumeric("Close",DataConvert(Close,"min",N,"Close"));       
       
       
SZWY=(clo<op)&&(close[1]<=open[1])&&(close[2]<=open[2]);
SSLY=(CLO>OP)&&(CLOSE[1]>=OPEN[1])&&(CLOSE[2]>=OPEN[2])&&(CLOSE[3]>=OPEN[3]);
SLY=(CLO>OP )&&(CLOSE[1]>=OPEN[1])&&(CLOSE[2]>=OPEN[2]);
SSZWY=(CLOSE<OPEN)&&(CLOSE[1]<=OPEN[1])&&(CLOSE[2]<=OPEN[2])&&(CLOSE[3]<=Open[3]);
、、、、、、、、、、、、、、、、、、
end
作者: dengwenle    时间: 2007-9-5 13:07:06

我公布的原码就是 常见的 三连阳 三连阴等 !现在怎么在5分钟周期取 10分钟的 三连阳 三连阴呢?
作者: nopain    时间: 2007-9-5 13:13:19

呵呵。在交易指令中使用这些数据当然不能用PlotNumeric,您需要自己建变量来保存。
例子如下:
  1. Params
  2.         Numeric lots(2);
  3.         Numeric N(10);
  4. Vars
  5.         Numeric op;
  6.         Numeric Clo;
  7. Begin
  8.         op = DataConvert(Open,"min",N,"Open");
  9.         Clo= DataConvert(Close,"min",N,"Close");
  10. ....
  11. End
复制代码

作者: dengwenle    时间: 2007-9-5 13:28:56

在检验公式的时候 报错   无法识别字符串
函数 dataconvert 好象无法识别
作者: nopain    时间: 2007-9-5 13:33:39

原帖由 dengwenle 于 2007-9-5 13:28 发表
在检验公式的时候 报错   无法识别字符串
函数 dataconvert 好象无法识别


我这里只是提供了一个示例,您可以不要连省略号都一起copy过去啦。
作者: dengwenle    时间: 2007-9-5 15:05:59

Params
        Numeric N(10);        // N 分钟  
    Numeric op;
    Numeric clo;
   
Begin
        op=DataConvert(Open,"min",N,"Open");
        clo=DataConvert(Close,"min",N,"Close");
        op[1]=DataConvert(Open[1],"min",N,"Open");
        clo[1]=DataConvert(Close[1],"min",N,"Close");
        op[2] =DataConvert(Open[2],"min",N,"Open");
        clo[2]=DataConvert(Close[2],"min",N,"Close");
        op[3] =DataConvert(Open[3],"min",N,"Open");
        clo[3]=DataConvert(Close[3],"min",N,"Close");
End

就是这个原码 !
报错
作者: nopain    时间: 2007-9-5 15:14:01

1、序列变量不能直接用Open[1]这种方式传入。先定义一个序列变量,赋值之后,用变量传入。
2、op是普通变量,不能使用op[1],即使是序列变量也不能对op[1]进行赋值。
如下:
Vars
    Numeric op;
    NumericSeries MyOpen;
Begin
    MyOpen = Open[1];
    op = DataConvert(MyOpen,"min",N,"Open");

End
作者: guidaon    时间: 2007-9-5 22:40:08

op = DataConvert(MyOpen,"min",N,"Open");

这样有点麻烦啊
作者: dengwenle    时间: 2007-9-5 23:15:58

这样写确实有点麻烦!
不过我还是完成了 !
原码太多了!有200多行代码!
我怕会影响运行的速度!
作者: nopain    时间: 2007-9-6 09:09:44

原帖由 dengwenle 于 2007-9-5 23:15 发表
这样写确实有点麻烦!
不过我还是完成了 !
原码太多了!有200多行代码!
我怕会影响运行的速度!


200多行小Case啦。等写到2000行在考虑效率的问题。




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