设为首页收藏本站

 找回密码
 注册
楼主: 深蓝魔力
打印 上一主题 下一主题

请教nopain,帮帮忙好吗? [复制链接]

Rank: 3Rank: 3

精华
0
UID
4284
积分
174
帖子
36
主题
2
阅读权限
40
注册时间
2009-5-2
最后登录
2013-3-16
11#
发表于 2009-7-9 22:43:40 |只看该作者

Params
numeric Length(30);
Vars
NumericSeries OBVValue;
NumericSeries highestValue(0);
NumericSeries LowestValue(999999);
Numeric i;
Numeric Maxlimit;
Begin
If(CurrentBar == 0)
{
  OBVValue = 0;
}Else
{
  If(Close>Close[1])
  {
   OBVValue = OBVValue[1]+Vol;
  }Else If(Close<Close[1])
  {
   OBVValue = OBVValue[1]-Vol;
  }Else
  {
   OBVValue = OBVValue[1];
  }
}
Maxlimit = Min(Length-1,CurrentBar);
for i=0 to Maxlimit
{
  highestValue=Max(highestValue,ObvValue);
}
Maxlimit = Min(Length-1,CurrentBar);
for i=0 to Maxlimit
    {
  LowestValue=Min(LowestValue,obvvalue);
}
       If( CrossOver(obvValue,highestValue[1]))
        {
                Buy(1,NextOpen,True);
        }
    if(CrossUnder(LowestValue[1],obvvalue))
            {                        
                  Sell(1,NextOpen,True);  // 空头建仓
            }
  if(CrossUnder(LowestValue[1],obvvalue))
            {                        
                  SellShort(1,NextOpen,True);  // 空头建仓
            }
  if(CrossOver(obvValue,highestValue[1]))
            {                        
                   BuyToCover(1,NextOpen,True);    // 多头建仓
             }
//FileAppend("d:\\b.log",Text(highestvalue));
//FileAppend("d:\\b.log",Text(Lowestvalue));
End


取得了阶段性进步,感觉区间的OBV最大值和最小值是正确的,我用
//FileAppend("d:\\b.log",Text(highestvalue));
//FileAppend("d:\\b.log",Text(Lowestvalue));
测试过的,
问题是怎么没有下蛋的成果。
有点困惑。
请大家帮忙指点下,看问题在哪里!


[ 本帖最后由 深蓝魔力 于 2009-7-10 20:43 编辑 ]

使用道具 举报

Rank: 3Rank: 3

精华
0
UID
4284
积分
174
帖子
36
主题
2
阅读权限
40
注册时间
2009-5-2
最后登录
2013-3-16
12#
发表于 2009-7-10 21:00:04 |只看该作者
If( CrossOver(obvValue,highestValue[1]))
        {
                Buy(1,NextOpen,True);

如改成
If( obvValue>highestValue[1])
        {
                Buy(1,NextOpen,True);
则有信号,但是这样符合条件的信号就太多了,怎么解决呀!

使用道具 举报

Rank: 3Rank: 3

精华
0
UID
4284
积分
174
帖子
36
主题
2
阅读权限
40
注册时间
2009-5-2
最后登录
2013-3-16
13#
发表于 2009-7-11 08:02:10 |只看该作者
我要晕倒了。
在文华中很简单的CROSS 到了这里就不听使唤了。
Params
    Numeric Length(20);
Vars
    NumericSeries hh;
    NumericSeries        ll;
Begin
    hh=Highest(high,length);
    ll=Lowest(low,length);
                if(CrossOver(High,hh[1]) )
                        //if(High>hh[1])
            {                        
                   Buy(1,NextOpen,True);    // 多头建仓
             }

            if(Low<ll[1] )
            {                        
                  Sell(1,NextOpen,True);  // 空头建仓
            }
                        if(CrossUnder(Low,ll[1]))
            {                        
                  SellShort(1,NextOpen,True);  // 空头建仓
            }
                        if(High>hh[1] )
            {                        
                   BuyToCover(1,NextOpen,True);    // 多头建仓
             }
                         
                        //FileAppend("d:\\a.log",Text(month)+"月"+Text(day)+"日20周期前最高价"+Text(hh[1])+"  20周期最低价"+Text(ll[1]));
            //FileAppend("d:\\a.log",Text(month)+"月"+Text(day)+"日20周期前最高价"+Text(hh)+"      20周期最低价"+Text(ll));
End



这简单的命令居然不执行。      
  if(CrossOver(High,hh[1]) )
                        //if(High>hh[1])
换成后面的注释语句就执行了。
我发现CROSSOVER在TB中的意思是“恰好交叉越过”,在文华里头就是不管你怎么越过,只要过了就OK,
但是TB中的“恰好越过”用在均线的交叉中有效,在其他的“越过”中没效呀!

巨汗!

使用道具 举报

Rank: 3Rank: 3

精华
0
UID
4284
积分
174
帖子
36
主题
2
阅读权限
40
注册时间
2009-5-2
最后登录
2013-3-16
14#
发表于 2009-7-11 08:03:50 |只看该作者
基本上知道11楼没有交易动作的原因了。
请斑主解释下可以么?

使用道具 举报

Rank: 3Rank: 3

精华
0
UID
4284
积分
174
帖子
36
主题
2
阅读权限
40
注册时间
2009-5-2
最后登录
2013-3-16
15#
发表于 2009-7-11 08:13:26 |只看该作者
偶所说的其他“越过”是指数据比较后,大的条件就符合,记录第一次大的点。
上面的语句用文华的效果图。

当阳线价格“超越”前“XX周期”的时候,记录或做买进动作。

[ 本帖最后由 深蓝魔力 于 2009-7-11 08:17 编辑 ]

使用道具 举报

Rank: 3Rank: 3

精华
0
UID
4284
积分
174
帖子
36
主题
2
阅读权限
40
注册时间
2009-5-2
最后登录
2013-3-16
16#
发表于 2009-7-11 08:16:32 |只看该作者
怎么上传图片呀!
附件: 你需要登录才可以下载或查看附件。没有帐号?注册

使用道具 举报

Rank: 3Rank: 3

精华
0
UID
4284
积分
174
帖子
36
主题
2
阅读权限
40
注册时间
2009-5-2
最后登录
2013-3-16
17#
发表于 2009-7-11 08:22:50 |只看该作者
DonchianHi = HighestFC(High[1],boLength);
If(CrossOver(High,DonchianHi) && TurtleUnits >= 1);
为什么海龟交易系统中的语句CROSSOVER可以执行,偶的不能执行呢?

使用道具 举报

Rank: 3Rank: 3

精华
0
UID
4284
积分
174
帖子
36
主题
2
阅读权限
40
注册时间
2009-5-2
最后登录
2013-3-16
18#
发表于 2009-7-11 09:39:38 |只看该作者
现在关于Crossover和Crossunder的用法很困惑,请nopain 指点一下。

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
20
UID
4
积分
22709
帖子
4802
主题
64
阅读权限
255
注册时间
2007-7-20
最后登录
2024-1-15
19#
发表于 2009-7-11 11:31:17 |只看该作者
CrossOver不能传入序列变量的回溯值。
if(CrossOver(High,hh[1]) )
需要修改为:

Vars
    NumericSeries prehh;
Begin

    hh....
    prehh = hh[1];
    If(CrossOver(high,prehh))
....

End

使用道具 举报

Rank: 3Rank: 3

精华
0
UID
4284
积分
174
帖子
36
主题
2
阅读权限
40
注册时间
2009-5-2
最后登录
2013-3-16
20#
发表于 2009-7-11 12:49:53 |只看该作者
谢谢!在nopain的指导下,终于看到了交易指令。
现在把改好的公式贴出来。


Params
        numeric Length(30);
Vars
        NumericSeries OBVValue;
        NumericSeries highestValue(0);
        NumericSeries LowestValue(999999);
        Numeric i;
        Numeric Maxlimit;
        NumericSeries prehh;
    NumericSeries        prell;
Begin
        If(CurrentBar == 0)
        {
                OBVValue = 0;
        }Else
        {
                If(Close>Close[1])
                {
                        OBVValue = OBVValue[1]+Vol;
                }Else If(Close<Close[1])
                {
                        OBVValue = OBVValue[1]-Vol;
                }Else
                {
                        OBVValue = OBVValue[1];
                }
        }
        Maxlimit = Min(Length-1,CurrentBar);
        for i=0 to Maxlimit
        {
                highestValue=Max(highestValue,ObvValue);
        }
        Maxlimit = Min(Length-1,CurrentBar);
        for i=0 to Maxlimit
    {
                LowestValue=Min(LowestValue,obvvalue);
        }
        prehh=highestValue[1];
        prell=LowestValue[1];
       If( Crosshigh(obvValue,prehh))
        {
                Buy(1,NextOpen,True);
        }
           if(CrossUnder(prell,obvvalue))
            {                        
                  Sell(1,NextOpen,True);  // 空头建仓
            }
                if(CrossUnder(prell,obvvalue))
            {                        
                  SellShort(1,NextOpen,True);  // 空头建仓
            }
                if(CrossOver(obvValue,prehh))
            {                        
                   BuyToCover(1,NextOpen,True);    // 多头建仓-
             }
        //FileAppend("d:\\b.log",Text(highestvalue));
        //FileAppend("d:\\b.log",Text(Lowestvalue));
End

使用道具 举报

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

bottom

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

GMT+8, 2024-5-23 19:00

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部