设为首页收藏本站

 找回密码
 注册
查看: 30840|回复: 75
打印 上一主题 下一主题

请将这两个文华模型改成交易开拓者. [复制链接]

Rank: 4

精华
1
UID
8
积分
432
帖子
57
主题
15
阅读权限
50
注册时间
2007-7-21
最后登录
2019-11-1
跳转到指定楼层
1#
发表于 2007-10-2 17:37:18 |只看该作者 |倒序浏览
模型1

LC := REF(CLOSE,1);
RSI1:=SMA(MAX(CLOSE-LC,0),N1,1)/SMA(ABS(CLOSE-LC),N1,1)*100;
RSI2:=SMA(MAX(CLOSE-LC,0),N2,1)/SMA(ABS(CLOSE-LC),N2,1)*100;
CROSS(RSI1,RSI2),BPK;
CROSS(RSI2,RSI1),SPK;

模型2
VAR1:=EMA(CLOSE,N1);
VAR2:=EMA(CLOSE,N2);
VAR1>VAR2,BPK;
VAR1<VAR2,SPK;

Rank: 10Rank: 10Rank: 10

精华
20
UID
4
积分
22709
帖子
4802
主题
64
阅读权限
255
注册时间
2007-7-20
最后登录
2024-1-15
2#
发表于 2007-10-2 18:44:48 |只看该作者
SMA是其它软件的移动平均函数,TB里面没有算法完全一致的对应函数,您可以先新建用户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
复制代码


系统1:您没有提供N1,N2的默认值,我这里随便写的初始值。
  1. Params
  2.     Numeric N1(10);
  3.     Numeric N2(5);
  4. Vars
  5.     NumericSeries RSIValue1;
  6.     NumericSeries RSIValue2;
  7.     NumericSeries Value1;
  8.     NumericSeries Value2;
  9. Begin
  10.     Value1 = IIF(Close>Close[1],Close-Close[1],0);
  11.     Value2 = ABS(Close-Close[1]);
  12.     RSIValue1 = SMA(Value1,N1,1)/SMA(Value2,N1,1)*100;
  13.     RSIValue2 = SMA(Value1,N2,1)/SMA(Value2,N2,1)*100;
  14.     If(CrossOver(RSIValue1,RSIValue2)
  15.     {
  16.          Buy(1,Close);
  17.     }

  18.     If(CrossUnder(RSIValue1,RSIValue2)
  19.     {
  20.          SellShort(1,Close);
  21.     }
  22. End
复制代码

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
20
UID
4
积分
22709
帖子
4802
主题
64
阅读权限
255
注册时间
2007-7-20
最后登录
2024-1-15
3#
发表于 2007-10-2 18:47:41 |只看该作者
系统2:

  1. Params
  2.     Numeric N1(10);
  3.     Numeric N2(5);
  4. Vars
  5.     Numeric Value1;
  6.     Numeric Value2;
  7. Begin
  8.     Value1 = XAverage(Close,N1);
  9.     Value2 = XAverage(Close,N2);
  10.     If(Value1 > Value2)
  11.     {
  12.          Buy(1,Close);
  13.     }
  14.     If(Value1 < Value2)
  15.     {
  16.          SellShort(1,Close);
  17.     }
  18. End
复制代码

使用道具 举报

Rank: 4

精华
1
UID
8
积分
432
帖子
57
主题
15
阅读权限
50
注册时间
2007-7-21
最后登录
2019-11-1
4#
发表于 2007-10-2 19:16:59 |只看该作者
谢谢nopain 的及时解答,   请您看看下面的四周规则
交易系统为什么无法通过,错在哪里.

//------------------------------------------------------------------------
// 简称: szgz
// 名称: 四周规则
// 类别: 交易指令
// 类型: 其他
// 输出: 多头平仓
//------------------------------------------------------------------------


Params
    Numeric n1(20);
Vars
        NumericSeries hh;
        numericseries ll;
        Bool a;
        bool b;
Begin
     hh=Highest(high,n1);
     ll=Lowest(low,n1);
         
       a=high=hh;
        b=low=ll;
       
       if(a)
       {
          buy(1,close);
        }
      if(b)
       {
         sellshort(1,close);
       }
End

//------------------------------------------------------------------------
// 编译版本        GS2004.06.12
// 用户版本        2007/10/02 19:00
// 版权所有        ccirsi88
// 更改声明        TradeBlazer Software保留对TradeBlazer平台
//                        每一版本的TrabeBlazer公式修改和重写的权利
//------------------------------------------------------------------------

使用道具 举报

Rank: 4

精华
1
UID
8
积分
432
帖子
57
主题
15
阅读权限
50
注册时间
2007-7-21
最后登录
2019-11-1
5#
发表于 2007-10-2 20:17:02 |只看该作者
原帖由 TB自动交易 于 2007-10-2 19:19 发表
a=high=hh;
  b=low=ll;
是这个地方的问题
计算机的语言没有这么表示的!
只能这样写  a=high and a =hh;




仍然无法通过,请版主帮忙.

四周规则文华原码 high=hhv(high,20),bpk;
                           low=llv(low,20),spk;

[ 本帖最后由 ccirsi 于 2007-10-2 20:31 编辑 ]

使用道具 举报

Rank: 6Rank: 6

精华
2
UID
390
积分
2142
帖子
286
主题
45
阅读权限
70
注册时间
2007-9-21
最后登录
2019-4-1
6#
发表于 2007-10-2 20:39:42 |只看该作者
Params
    Numeric n1(20);
Vars
        NumericSeries hh;
        numericseries ll;
Begin
     hh=Highest(high,n1);
     ll=Lowest(low,n1);
         
       //a=high=hh;
        //b=low=ll;
        
       if(High>hh)
       {
          buy(1,close);
        }
      if(Low<ll)
       {
         sellshort(1,close);
       }
End


测试下
看是不是您想要的

使用道具 举报

Rank: 4

精华
1
UID
8
积分
432
帖子
57
主题
15
阅读权限
50
注册时间
2007-7-21
最后登录
2019-11-1
7#
发表于 2007-10-2 20:55:04 |只看该作者
原帖由 pwqzc 于 2007-10-2 20:39 发表
Params
    Numeric n1(20);
Vars
        NumericSeries hh;
        numericseries ll;
Begin
     hh=Highest(high,n1);
     ll=Lowest(low,n1);
         
       //a=high=hh;
        //b=low=ll;
        
  ...


以上原码测试没有任何信号.


问题我刚刚自己解决了,修改后如下:


Params
    Numeric n1(20);
Vars
        NumericSeries hh;
        numericseries ll;
        Bool a;
        bool b;
Begin
     hh=Highest(high,n1);
     ll=Lowest(low,n1);
         a=(hh==high);
         b=(ll==low);
       
        if(a)
    {
       buy(1,close);
        }
        if(b)
        {
       sellshort(1,close);
    }
End

使用道具 举报

Rank: 6Rank: 6

精华
2
UID
390
积分
2142
帖子
286
主题
45
阅读权限
70
注册时间
2007-9-21
最后登录
2019-4-1
8#
发表于 2007-10-2 21:02:11 |只看该作者
呵呵
这样很好
我的代码是信手写的
不是在TB里面写

a=(hh==high);
         b=(ll==low);
的意思是如果hh等于high
则把true值赋给a
如果ll等于low
则把true值赋给b

使用道具 举报

Rank: 4

精华
1
UID
8
积分
432
帖子
57
主题
15
阅读权限
50
注册时间
2007-7-21
最后登录
2019-11-1
9#
发表于 2007-10-2 21:11:14 |只看该作者
请问如何才能做到开空仓以后,忽略以后同方向的开空信号,直到平空仓.

开多仓以后,忽略以后同方向的开多信号,直到平多仓.

四周规则公式如下:

Params
    Numeric n1(20);
Vars
        NumericSeries hh;
        numericseries ll;
        Bool a;
        bool b;
Begin
     hh=Highest(high,n1);
     ll=Lowest(low,n1);
         a=(hh==high);
         b=(ll==low);
        
        if(a)
    {
       buy(1,close);
        }
        if(b)
        {
       sellshort(1,close);
    }
End
附件: 你需要登录才可以下载或查看附件。没有帐号?注册

使用道具 举报

Rank: 6Rank: 6

精华
2
UID
390
积分
2142
帖子
286
主题
45
阅读权限
70
注册时间
2007-9-21
最后登录
2019-4-1
10#
发表于 2007-10-2 21:23:52 |只看该作者
很简单

Params
    Numeric n1(20);
Vars
        NumericSeries hh;
        numericseries ll;
        Bool a;
        bool b;
Begin
     hh=Highest(high,n1);
     ll=Lowest(low,n1);
         a=(hh==high);
         b=(ll==low);
        
        if(a && MarketPosition!=1)
    {
       buy(1,close);
        }
        if(b && MarketPosition!=-1)
        {
       sellshort(1,close);
    }
End

使用道具 举报

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

bottom

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

GMT+8, 2024-5-18 21:02

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部