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

标题: 请大侠再出手相助,谢谢 [打印本页]

作者: 柳长街    时间: 2007-8-23 15:37:59     标题: 请大侠再出手相助,谢谢

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;

大侠好,这是三根均线的延伸,请大侠修改下,能和主图k线叠加在一起,同时,当k线收盘从下面上穿牙齿的时候显示买进信号,必须是收盘在牙齿上方才显示买进信号,上影线不算,,同理,当从上往下跌破牙齿的时候,显示卖出信号,谢谢
作者: nopain    时间: 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
复制代码


图形如下:紫色是买入,浅蓝色是卖出
[attach]103[/attach]

[ 本帖最后由 nopain 于 2007-8-24 10:38 编辑 ]
作者: 蛾子    时间: 2007-8-23 18:18:06

个人感觉指标没什么意思,还是搞交易系统.
指标不过是个小小怡情的玩具,交易系统才是战场搏杀的武器!!!
另:老大真是无所不能啊!编公式随手拈来,羡慕中!!!!!
作者: skywalker    时间: 2007-8-23 18:31:31

原帖由 蛾子 于 2007-8-23 18:18 发表
个人感觉指标没什么意思,还是搞交易系统.
指标不过是个小小怡情的玩具,交易系统才是战场搏杀的武器!!!
另:老大真是无所不能啊!编公式随手拈来,羡慕中!!!!! ...


指标好卖啊,而交易系统却不好卖,确切地讲指标好忽悠人,而交易系统却难以忽悠。
象股票里好些软件一样,“红线买进,绿线卖出,傻瓜操作,简单赚钱”!这口号听着多带劲啊。可是,红线时该买入多少?绿线时该平掉多少呢?新手们需要很久才能明白金融的关键在于资金管理,在于头寸!而那些软件就靠新手不懂这一点来编指标卖钱。
指标无法被测试,而交易系统是可以被测试,很难忽悠人。在TB里面就更难了。因为TB不但有交易系统的历史数据测试,而且还有模拟帐户可以对交易系统进行实盘测试。
无论是分析家、飞狐、文华都有大量的人在上面编指标然后卖,搞得热火朝天很有人气。我估计TB是很难有这么一天的。
作者: 柳长街    时间: 2007-8-23 19:59:15

原帖由 蛾子 于 2007-8-23 18:18 发表
个人感觉指标没什么意思,还是搞交易系统.
指标不过是个小小怡情的玩具,交易系统才是战场搏杀的武器!!!
另:老大真是无所不能啊!编公式随手拈来,羡慕中!!!!! ...


谢谢蛾子版主,哪个交易系统不是来自指标呢?而哪个指标不是交易系统呢?不是每个人都能上来就用机械交易系统,我的交易系统就是我的脑子,我只赚我技术范围内的钱,谢谢您的指点,我一直在努力
作者: 柳长街    时间: 2007-8-23 20:01:44

原帖由 skywalker 于 2007-8-23 18:31 发表


指标好卖啊,而交易系统却不好卖,确切地讲指标好忽悠人,而交易系统却难以忽悠。
象股票里好些软件一样,“红线买进,绿线卖出,傻瓜操作,简单赚钱”!这口号听着多带劲啊。可是,红线时该买入多少?绿线时该平掉多少呢?新手们需要很 ...



您一语中的,确实很多人在捣鼓指标卖钱,其实大家都知道,没有百战百胜的指标,谢谢您的回复
作者: 柳长街    时间: 2007-8-23 20:03:09

原帖由 nopain 于 2007-8-23 16:25 发表


YX好像没什么用处!
技术指标不能显示讯号,因此只能画出线条,或画出一个大点来标记!
您可以通过属性来调整各个线条的显示类型。

Vars
        NumericSeries MidPrice;        // 定义变量用于保存高低价的平均值。
        NumericSeries V ...



请问大侠,怎样才能把这个指标和k线叠加啊?谢谢
作者: 柳长街    时间: 2007-8-23 20:09:33

原帖由 nopain 于 2007-8-23 16:25 发表


YX好像没什么用处!
技术指标不能显示讯号,因此只能画出线条,或画出一个大点来标记!
您可以通过属性来调整各个线条的显示类型。

Vars
        NumericSeries MidPrice;        // 定义变量用于保存高低价的平均值。
        NumericSeries V ...



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

[ 本帖最后由 柳长街 于 2007-8-23 20:12 编辑 ]
作者: tradeblazer    时间: 2007-8-23 21:02:42

原帖由 柳长街 于 2007-8-23 20:03 发表



请问大侠,怎样才能把这个指标和k线叠加啊?谢谢


在修改公式时,指标的属性中默认页面,设置为主图显示。
作者: nopain    时间: 2007-8-23 21:14:13

原帖由 柳长街 于 2007-8-23 20:09 发表



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


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

[ 本帖最后由 nopain 于 2007-8-23 21:23 编辑 ]
作者: 柳长街    时间: 2007-8-23 21:16:08

原帖由 tradeblazer 于 2007-8-23 21:02 发表


在修改公式时,指标的属性中默认页面,设置为主图显示。

谢谢老大,修改好了
作者: 柳长街    时间: 2007-8-23 21:17:43

原帖由 nopain 于 2007-8-23 21:14 发表


仔细看了看,原来SHIFT的意思要延后N周期,我再改一个版本!



大侠果然是名家啊,说的太对了,都怪我,没有说明白,误导您理解成均线了吧
作者: 柳长街    时间: 2007-8-24 10:20:54

原帖由 nopain 于 2007-8-23 21:14 发表


SMA我不知道他的具体算法,我这里是用的简单平均,可能有点差别! ...



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

[ 本帖最后由 柳长街 于 2007-8-24 10:22 编辑 ]
作者: nopain    时间: 2007-8-24 10:37:42

原帖由 柳长街 于 2007-8-24 10:20 发表



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


将上面的代码中的AverageFC修改为SAverage,您看看这样对不对?
我已经将修改后的代码放回2楼了。
作者: 柳长街    时间: 2007-8-24 10:52:21

原帖由 nopain 于 2007-8-24 10:37 发表


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



老师你好,看了下还是不一样,下面的原码是文华对这个原码的写法,请老师再费心
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,14));
绿线:AA,SHIFT3,PRECISION1,COLORGREEN;
红线:BB,SHIFT5,PRECISION1,COLORRED;
蓝线:CC,SHIFT8,PRECISION1,COLORBLUE;
R1:=REF(SMA(Y,8,1),5);{红线}
R2:=IF(C<R1,0,R1);R3:=IF(C>R1,0,R1);
DRAWNUMBER(ISLASTBAR,1.012*R1,R2,1),SHIFT5,COLORRED;
DRAWNUMBER(ISLASTBAR,R1,R3,1),SHIFT5,COLORRED;
作者: nopain    时间: 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看看!
作者: 柳长街    时间: 2007-8-24 16:28:40

原帖由 nopain 于 2007-8-24 13:33 发表



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



老师好,我觉得问题应该出在这里
PlotNumeric("上唇",Value1[3]);
        PlotNumeric("牙齿",Value2[5]);
        PlotNumeric("下颚",Value3[8]);
我在软件帮助查了下,前面
MidPrice = (High + Low)/2;
        Value1 = SAverage(MidPrice,5);
        Value2 = SAverage(MidPrice,8);
        Value3 = SAverage(MidPrice,13);三句意思是平均线吧,上面三句就应该是向后移动,PlotNumeric这个的意思是向后移动吗?查了半天没有找到具体的向后移动代码,老师您技高一筹,请指点一下,谢谢
作者: nopain    时间: 2007-8-24 16:57:04

XXX[nOffset]这种方式相当于向后移动,
换一种思维,你把3天前的Value1在当日输出,就相当于延后3天。
您把SAverage改为WAverage看看吧
作者: 柳长街    时间: 2007-8-24 17:47:46

原帖由 nopain 于 2007-8-24 16:57 发表
XXX[nOffset]这种方式相当于向后移动,
换一种思维,你把3天前的Value1在当日输出,就相当于延后3天。
您把SAverage改为WAverage看看吧



谢谢您不厌其烦的指点,祝您发财,开心,谢谢
作者: nopain    时间: 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 编辑 ]
作者: 柳长街    时间: 2007-9-4 14:19:55

大侠怎么导入阿? :L
作者: nopain    时间: 2007-9-4 14:31:08

原帖由 柳长街 于 2007-9-4 14:19 发表
大侠怎么导入阿? :L


先新建一个用户函数,取名为SMA, 注意,返回值要选择数值型。Copy过去SMA函数的代码,编译保存。
然后再新建一个技术指标Crocodile,Copy代码,编译保存。
作者: zzgmm888    时间: 2007-9-27 17:21:34


作者: dc32168    时间: 2007-10-20 09:16:27

好贴,学习学习!!!
作者: dc32168    时间: 2007-11-23 20:26:45

Vars
        NumericSeries MidPrice;        // 定义变量用于保存高低价的平均值。
        NumericSeries Value1;                // 定义变量用于保存SMA值
        NumericSeries Value2;                // 定义变量用于保存SMA值
        NumericSeries Value3;                // 定义变量用于保存SMA值
Begin
        MidPrice = (High + Low)/2;
        Value1 = SAverage(MidPrice,5);
        Value2 = SAverage(MidPrice,8);
        Value3 = SAverage(MidPrice,13);
        PlotNumeric("上唇",Value1[3]);
        PlotNumeric("牙齿",Value2[5]);
        PlotNumeric("下颚",Value3[8]);
        
      
End

版主:
      如下图红色圆圈圈住的部分,如果要把“上唇”向未来延伸投射3天、“牙齿”向未来延伸投射5天、“下颚”向未来延伸投射8天用BT该如何编写?


[ 本帖最后由 dc32168 于 2007-11-23 20:28 编辑 ]
作者: nopain    时间: 2007-11-23 20:50:35

20楼已经写好了啊,不知道您的理解是什么样的?
作者: dc32168    时间: 2007-11-24 08:54:02

版主:
      如下图红色圆圈圈住的部分,如果要把“上唇”向未来延伸投射3天、“牙齿”向未来延伸投射5天、“下颚”向未来延伸投射8天用BT该如何编写?

      请版主注意观察红色圆圈部分,该指标分别向未来延伸了3、5、8天不等的时间,用于提前观察指标的开口及闭合情况。而20楼的指标只能提供当天的指标数值。
作者: pwqzc    时间: 2007-11-24 16:24:43

原帖由 蛾子 于 2007-8-23 18:18 发表
个人感觉指标没什么意思,还是搞交易系统.
指标不过是个小小怡情的玩具,交易系统才是战场搏杀的武器!!!
另:老大真是无所不能啊!编公式随手拈来,羡慕中!!!!! ...

何为交易系统?何为交易模型?
叫可以乱叫,但是心里是一定要区别开来的啦~~~~~~~~~~~
作者: yk1234    时间: 2007-11-24 20:20:01

原帖由 dc32168 于 2007-11-24 08:54 发表
版主:
      如下图红色圆圈圈住的部分,如果要把“上唇”向未来延伸投射3天、“牙齿”向未来延伸投射5天、“下颚”向未来延伸投射8天用BT该如何编写?

      请版主注意观察红色圆圈部分,该指标分别向未来延伸了3、5、8 ...


TB软件的计算时间,来自电脑的时钟,显示的是当天即时的时间,不能延伸到未来.
作者: feng1234567    时间: 2008-8-25 09:51:40

学习了,非常感谢
终于有点入门了

顺便问下管理员
If ( CurrentBar < Length-1 || SMAValue[1] == InvalidNumeric)
应该怎么理解??
作者: 小米    时间: 2008-8-25 10:02:55     标题: 回复 #30 feng1234567 的帖子

当前BAR的索引值小于周期数,或者是前一个BAR上的SMAVALUE 是无效值.
作者: feng1234567    时间: 2008-8-25 13:56:26

学习了。非常感谢。。
作者: 马不停蹄    时间: 2009-7-24 23:46:52

混沌,混沌,混沌交易法
作者: zyj    时间: 2011-12-27 00:07:39

我怎么老是看不到图呀
作者: ggyyff    时间: 2012-3-29 00:09:20

混沌.....投资者之梦......兄弟 你分形指标搞定了没 光有鳄鱼线 进场还不够
作者: 01011012    时间: 2012-4-5 14:43:44

为什么这个SMA和系统自带的SMA不一样?
作者: 醒客老罗    时间: 2012-9-22 09:21:39

skywalker 发表于 2007-8-23 18:31
指标好卖啊,而交易系统却不好卖,确切地讲指标好忽悠人,而交易系统却难以忽悠。
象股票里好些软件一样 ...

说的太好了,我五年后才看到




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