设为首页收藏本站

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

StepMa-来自MT [复制链接]

Rank: 7Rank: 7Rank: 7

精华
0
UID
926
积分
4317
帖子
167
主题
33
阅读权限
80
注册时间
2007-12-15
最后登录
2016-8-9
跳转到指定楼层
1#
发表于 2008-9-4 15:38:43 |只看该作者 |倒序浏览
//------------------------------------------------------------------------
// 简称: StepMA
// 名称: StepMA
// 类别: 技术指标
// 类型: 趋势类
// 输出: 三条指标线
//------------------------------------------------------------------------

Params
        Numeric  Length(9);      // Volty Length
        Numeric  Kv(1.0);     // Sensivity Factor
        Numeric  StepSize(0);       // Constant Step Size (if need)
        Numeric  MA_Mode(0);       // Volty MA Mode : 0-SMA, 1-LWMA
        Numeric  Percentage(0);       // Percentage of Up/Down Moving   
        Numeric     ColorMode(2);       // Color Mode Switch
        Numeric     rate(3.0);       // Color Mode Switch
Vars
        NumericSeries  smin;
        NumericSeries  smax;
        NumericSeries p;
        NumericSeries StepMA(0);
        NumericSeries  cost;
        NumericSeries n;
        Numeric Step ;
        Numeric Size ;

Begin
        if (BarStatus==0)
        {
                smax=Low;
                smin=High;
                p=0;
                n=0;
                cost=Close;
        }
if(CurrentBar>Length)
{
        Step = StepSizeCalc(High,Low,Open,Close,Length, Kv, StepSize,MA_Mode);
        //Step = AvgTrueRange[Length];
        Size =Step*MinMove();
       
          smax=Close+rate*Size;
          smin=Close-rate*Size;

          p=p[1];
          cost=cost[1];
      n=n[1]+1;
          if (Close>smax[1]) {p=1; }         
          if (Close<smin[1]) {p=-1;}

          if(p==1 && p[1]!=1){cost=Close;n=0;}       
          if(p==-1 && p[1]!=-1){cost=Close;n=0;}               
                 
          if(p>0)
          {
                if(smin<smin[1])
                        smin=smin[1];
                StepMA=(smin+Size)+Percentage/100.0*Size;
                if(StepMA<StepMA[1])
                        StepMA=StepMA[1];
          }
          Else
          {
                if(smax>smax[1])
                        smax=smax[1];
                StepMA=(smax-Size)+Percentage/100.0*Size;
                if(StepMA>StepMA[1])
                        StepMA=StepMA[1];
          }

        if ( ColorMode == 0) PlotNumeric("MA",StepMA);
       
        if ( ColorMode == 1)
        {
                if ( p>0 )
                        {                               
                                PlotNumeric("MA",StepMA-Size);
                                PlotNumeric("盈",Close-cost);
                        }
                else
                if ( p<0 )
                        {
                                PlotNumeric("MA",StepMA+Size);
                                PlotNumeric("盈",cost-Close);
                        }
        }
        else
                if ( ColorMode == 2)
                {
                        if (p>0)
                        {
                                PlotNumeric("MA",StepMA,Rgb(255,0,255));
                                PlotNumeric("盈",Close-cost);
                        }
                        if (p<0)
                        {
                                PlotNumeric("MA",StepMA,Yellow);
                                PlotNumeric("盈",cost-Close);
                        }
                        PlotNumeric("期",n);
                        PlotNumeric("差",Abs(Close-StepMA));
                }                
        PlotNumeric("波",Size);        
       
        If(AlertEnabled AND (CrossOver(Close,StepMA) Or CrossUnder(Close,StepMA)))
    {
        Alert("变色:平仓反开仓,未变色:止损空仓对待");
    }
}
End

//------------------------------------------------------------------------
// 编译版本        GS2004.06.12
// 用户版本        2008/01/09 20:34
// 版权所有        fish0451
// 更改声明        TradeBlazer Software保留对TradeBlazer平台
//                        每一版本的TrabeBlazer公式修改和重写的权利
//------------------------------------------------------------------------
附件: 你需要登录才可以下载或查看附件。没有帐号?注册

Rank: 7Rank: 7Rank: 7

精华
0
UID
926
积分
4317
帖子
167
主题
33
阅读权限
80
注册时间
2007-12-15
最后登录
2016-8-9
2#
发表于 2008-9-4 15:40:56 |只看该作者
//------------------------------------------------------------------------
// 简称: StepSizeCalc
// 名称: StepSizeCalc
// 类别: 用户函数
// 类型: 用户函数
// 输出: 数值型
//------------------------------------------------------------------------

Params
        NumericSeries HighPrice(1);
        NumericSeries LowPrice(1);
        NumericSeries OpenPrice(1);
        NumericSeries ClosePrice(1);
        Numeric  Length(10);      // Volty Length
        Numeric  Kv(1.0);     // Sensivity Factor
        Numeric  StepSize(0);       // Constant Step Size (if need)
        Numeric  MA_Mode(0);       // Volty MA Mode : 0-SMA, 1-LWMA
        //Numeric     rate(2.0);
Vars
        Numeric ATR0(0);
        Numeric ATRmax(-100000000);
        Numeric ATRmin(1000000000);
        Numeric alfa ;
        Numeric AvgRange ;
        Numeric result ;
        Numeric i;
Begin
If (CurrentBar >= Length-1)
{       
        if( StepSize==0 )
   {
        AvgRange=0;
             for i = 0 to Length - 1
             {
            if(MA_Mode==0)
                                alfa= 1.0;
                        else
                                alfa= 1.0+1.0*(Length-i)/Length;
                               
                        //AvgRange= AvgRange+alfa*(HighPrice[ i ]-LowPrice[ i ]);
                        //加上处理跳空,特别是一字跳空
                        if(Abs(HighPrice[ i ]-LowPrice[ i ])<4*MinMove() && Abs(OpenPrice[ i ]-ClosePrice[i+1])>27*MinMove())
                                If(OpenPrice[ i ]>ClosePrice[i+1])
                                        AvgRange= AvgRange+alfa*(HighPrice[ i ]-ClosePrice[i+1]);
                                Else
                                        AvgRange= AvgRange+alfa*(ClosePrice[i+1]-LowPrice[ i ]);
                        Else
                                AvgRange= AvgRange+alfa*(HighPrice[ i ]-LowPrice[ i ]);
        }
             ATR0 = AvgRange/Length;
       
                if (ATR0>ATRmax) ATRmax=ATR0;
                if (ATR0<ATRmin) ATRmin=ATR0;
       
                result=Round(0.5*Kv*(ATRmax+ATRmin)/MinMove(),0);
        }
        else
                result=Kv*StepSize;
}Else
        {
                result = InvalidNumeric;
        }
   
   return(result);
End

//------------------------------------------------------------------------
// 编译版本        GS2004.06.12
// 用户版本        2008/01/09 20:50
// 版权所有        fish0451
// 更改声明        TradeBlazer Software保留对TradeBlazer平台
//                        每一版本的TrabeBlazer公式修改和重写的权利
//------------------------------------------------------------------------

使用道具 举报

Rank: 7Rank: 7Rank: 7

精华
0
UID
926
积分
4317
帖子
167
主题
33
阅读权限
80
注册时间
2007-12-15
最后登录
2016-8-9
3#
发表于 2008-9-4 15:43:50 |只看该作者
趋势类的振荡要吃亏的!
有钱的给些奖励吧!
准备用TB了!

使用道具 举报

Rank: 4

精华
0
UID
2276
积分
317
帖子
66
主题
20
阅读权限
50
注册时间
2008-9-4
最后登录
2008-10-20
4#
发表于 2008-9-5 10:07:51 |只看该作者
哥哥,效果如何啊?。。。。。。。。。。。
交易开拓者交流
QQ-1群:38529330(已满)
QQ-2群:24771838

使用道具 举报

Rank: 4

精华
0
UID
2276
积分
317
帖子
66
主题
20
阅读权限
50
注册时间
2008-9-4
最后登录
2008-10-20
5#
发表于 2008-9-8 09:35:16 |只看该作者
编译的时候,说数据类型错误啊!
交易开拓者交流
QQ-1群:38529330(已满)
QQ-2群:24771838

使用道具 举报

Rank: 7Rank: 7Rank: 7

精华
0
UID
926
积分
4317
帖子
167
主题
33
阅读权限
80
注册时间
2007-12-15
最后登录
2016-8-9
6#
发表于 2008-9-8 13:40:29 |只看该作者
创建用户函数时选择“数值型”!

使用道具 举报

Rank: 4

精华
0
UID
2276
积分
317
帖子
66
主题
20
阅读权限
50
注册时间
2008-9-4
最后登录
2008-10-20
7#
发表于 2008-9-8 14:47:35 |只看该作者
看了一下,发现开仓价格用的是Close,请教一下,在这里,为什么没出现重复开仓的问题呢?
交易开拓者交流
QQ-1群:38529330(已满)
QQ-2群:24771838

使用道具 举报

Rank: 4

精华
0
UID
2276
积分
317
帖子
66
主题
20
阅读权限
50
注册时间
2008-9-4
最后登录
2008-10-20
8#
发表于 2008-9-8 14:56:32 |只看该作者
呵呵,观察了一下,也有反复开仓的问题。。。。
交易开拓者交流
QQ-1群:38529330(已满)
QQ-2群:24771838

使用道具 举报

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

bottom

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

GMT+8, 2024-5-8 22:33

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部