设为首页收藏本站

 找回密码
 注册
楼主: 柳长街
打印 上一主题 下一主题

请大侠再出手相助,谢谢 [复制链接]

Rank: 10Rank: 10Rank: 10

精华
20
UID
4
积分
22709
帖子
4802
主题
64
阅读权限
255
注册时间
2007-7-20
最后登录
2024-1-15
1#
发表于 2007-8-23 16:25:00 |显示全部楼层
原帖由 柳长街 于 2007-8-23 15:37 发表
YX:=((CLOSE > OPEN) OR ((CLOSE = OPEN) AND (CLOSE > REF(CLOSE,1))));
Y:=((HIGH + LOW) / 2);
上唇:SMA(Y,5,1),SHIFT3,colorFF00;
牙齿:SMA(Y,8,1),SHIFT5,colorFF;
下颚:SMA(Y,13,1),SHIFT8,colorFF0000;

大侠 ...


YX好像没什么用处!
技术指标不能显示讯号,因此只能画出线条,或画出一个大点来标记!
您可以通过属性来调整各个线条的显示类型。
  1. Vars
  2.         NumericSeries MidPrice;        // 定义变量用于保存高低价的平均值。
  3.         NumericSeries Value1;                // 定义变量用于保存SMA值
  4.         NumericSeries Value2;                // 定义变量用于保存SMA值
  5.         NumericSeries Value3;                // 定义变量用于保存SMA值
  6. Begin
  7.         MidPrice = (High + Low)/2;
  8.         Value1 = SAverage(MidPrice,5);
  9.         Value2 = SAverage(MidPrice,8);
  10.         Value3 = SAverage(MidPrice,13);
  11.         PlotNumeric("上唇",Value1[3]);
  12.         PlotNumeric("牙齿",Value2[5]);
  13.         PlotNumeric("下颚",Value3[8]);
  14.        
  15.         If(CrossOver(Close,Value2[5]))
  16.         {
  17.                 PlotNumeric("BuySignal",High);
  18.         }
  19.        
  20.         If(CrossUnder(Close,Value2[5]))
  21.         {
  22.                 PlotNumeric("SellSignal",Low);
  23.         }
  24. End
复制代码


图形如下:紫色是买入,浅蓝色是卖出


[ 本帖最后由 nopain 于 2007-8-24 10:38 编辑 ]
附件: 你需要登录才可以下载或查看附件。没有帐号?注册

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
20
UID
4
积分
22709
帖子
4802
主题
64
阅读权限
255
注册时间
2007-7-20
最后登录
2024-1-15
2#
发表于 2007-8-23 21:14:13 |显示全部楼层
原帖由 柳长街 于 2007-8-23 20:09 发表



老大能否再贴一张强麦的图,我想对照一下,和飞狐的好像不一样,谢谢,这是橡胶的主力合约,感觉没有那么多的信号


仔细看了看,原来SHIFT的意思要延后N周期,我再改一个版本!
修改后放回2楼了!
SMA我不知道他的具体算法,我这里是用的简单平均,可能有点差别!

[ 本帖最后由 nopain 于 2007-8-23 21:23 编辑 ]

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
20
UID
4
积分
22709
帖子
4802
主题
64
阅读权限
255
注册时间
2007-7-20
最后登录
2024-1-15
3#
发表于 2007-8-24 10:37:42 |显示全部楼层
原帖由 柳长街 于 2007-8-24 10:20 发表



你好版主,sma可能是飞狐的算法,这个指标的文字表述是这样,请大侠再费心改写一下,谢谢,总是麻烦您,都有点不好意思了,再次感谢


将上面的代码中的AverageFC修改为SAverage,您看看这样对不对?
我已经将修改后的代码放回2楼了。

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
20
UID
4
积分
22709
帖子
4802
主题
64
阅读权限
255
注册时间
2007-7-20
最后登录
2024-1-15
4#
发表于 2007-8-24 13:33:11 |显示全部楼层
原帖由 柳长街 于 2007-8-24 10:52 发表



老师你好,看了下还是不一样,下面的原码是文华对这个原码的写法,请老师再费心
AA:=IF(BARSCOUNT(Y)>=6,SMA(Y,5,1),MA(Y,6));
BB:=IF(BARSCOUNT(Y)>=9,SMA(Y,8,1),MA(Y,9));
CC:=IF(BARSCOUNT(Y)>=14,SMA(Y,13,1),MA(Y ...



SMA好像是取权重移动平均,改为WAverage看看!

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
20
UID
4
积分
22709
帖子
4802
主题
64
阅读权限
255
注册时间
2007-7-20
最后登录
2024-1-15
5#
发表于 2007-8-24 16:57:04 |显示全部楼层
XXX[nOffset]这种方式相当于向后移动,
换一种思维,你把3天前的Value1在当日输出,就相当于延后3天。
您把SAverage改为WAverage看看吧

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
20
UID
4
积分
22709
帖子
4802
主题
64
阅读权限
255
注册时间
2007-7-20
最后登录
2024-1-15
6#
发表于 2007-9-4 14:11:08 |显示全部楼层
最新修正后的版本,系统提供的各类求平均值的算法,和飞狐的算法都有些细微区别,需要先编写一个用户函数,来实现SMA的算法。

SMA代码如下:
  1. Params
  2.         NumericSeries Price(1);  
  3.         Numeric Length(10);
  4.         Numeric Weight(1);
  5. Vars
  6.         NumericSeries SMAValue;
  7. Begin
  8.         If ( CurrentBar < Length-1 || SMAValue[1] == InvalidNumeric)
  9.         {
  10.                 SMAValue = Summation(Price, CurrentBar+1)/(CurrentBar+1);
  11.         }Else
  12.         {
  13.                 SMAValue = (SMAValue[1]*(Length-Weight)+Price*Weight)/Length;
  14.         }
  15.         Return SMAValue;
  16. End
复制代码


注意:CrossOver,CrossUnder或者其他使用序列变量的函数,不能用CrossOver(Value1[4],Value2[3]);这种方式进行调用,必须先转存到另外一个序列变量之后才能使用。这也是以前版本讯号有些问题的原因。
Crocodile代码如下:
  1. Vars
  2.         NumericSeries MidPrice;   // 定义变量用于保存高低价的平均值。
  3.         NumericSeries Value1;     // 定义变量用于保存SMA值
  4.         NumericSeries Value2;     // 定义变量用于保存SMA值
  5.         NumericSeries Value3;     // 定义变量用于保存SMA值
  6.         NumericSeries Value4;     // 用来保存中间变量
  7. Begin
  8.         MidPrice = (High + Low)/2;
  9.         Value1 = SMA(MidPrice,5);
  10.         Value2 = SMA(MidPrice,8);
  11.         Value3 = SMA(MidPrice,13);
  12.        
  13.         PlotNumeric("上唇",Value1[3]);
  14.         PlotNumeric("牙齿",Value2[5]);
  15.         PlotNumeric("下颚",Value3[8]);
  16.        
  17.         Value4 = Value2[5];
  18.         If(CrossOver(Close,Value4))
  19.         {
  20.                 PlotNumeric("BuySignal",Low);
  21.         }

  22.         If(CrossUnder(Close,Value4))
  23.         {
  24.                 PlotNumeric("SellSignal",High);
  25.         }
  26. End
复制代码

[ 本帖最后由 nopain 于 2007-9-24 16:23 编辑 ]

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
20
UID
4
积分
22709
帖子
4802
主题
64
阅读权限
255
注册时间
2007-7-20
最后登录
2024-1-15
7#
发表于 2007-9-4 14:31:08 |显示全部楼层
原帖由 柳长街 于 2007-9-4 14:19 发表
大侠怎么导入阿? :L


先新建一个用户函数,取名为SMA, 注意,返回值要选择数值型。Copy过去SMA函数的代码,编译保存。
然后再新建一个技术指标Crocodile,Copy代码,编译保存。

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
20
UID
4
积分
22709
帖子
4802
主题
64
阅读权限
255
注册时间
2007-7-20
最后登录
2024-1-15
8#
发表于 2007-11-23 20:50:35 |显示全部楼层
20楼已经写好了啊,不知道您的理解是什么样的?

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

bottom

静态版|手机版|联系我们|交易开拓者 ( 粤ICP备07044698   

GMT+8, 2024-5-19 03:37

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部