欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → 求高手改寫這TB指标成金字塔指标, 謝谢

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有4584人关注过本帖树形打印复制链接

主题:求高手改寫這TB指标成金字塔指标, 謝谢

美女呀,离线,留言给我吧!
annbi
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:黑侠 帖子:841 积分:0 威望:0 精华:0 注册:2014/4/22 15:41:41
求高手改寫這TB指标成金字塔指标, 謝谢  发帖心情 Post By:2014/7/15 15:33:12    Post IP:112.118.81.36[显示全部帖子]


Params
        Numeric SF(5);                        
        Numeric RSI_Period(14);        
        Numeric rat(4.236);
Vars
        NumericSeries TrLevelSlow(0);        
        NumericSeries AtrRsi(0);        
        NumericSeries MaAtrRsi(0);        
        NumericSeries Rsi(0);
        NumericSeries RsiMa(0);
        Numeric Wilders_Period(0);        
        Numeric dar(0);        
        NumericSeries  smin(0);
    NumericSeries  smax(0);
        NumericSeries p;
        
Begin
        Wilders_Period=RSI_Period * 2 - 1;
        If(BarStatus==0)
        {
                 TrLevelSlow=0;
         AtrRsi=0;
         MaAtrRsi=0;
         Rsi=0;
         RsiMa=0;
                 p=0;
        }
        if(CurrentBar>RSI_Period)
        {
                Rsi=iRSI(Close,RSI_Period);
                RsiMa=XAverage(Rsi,SF);
                AtrRsi=Abs(RsiMa[1] - RsiMa);
                MaAtrRsi=XAverage(AtrRsi,Wilders_Period);
                dar=XAverage(MaAtrRsi,Wilders_Period) * rat;        
                smax=RsiMa+dar;
                smin=RsiMa-dar;

                p=p[1];

                if (RsiMa>smax[1]) {p=1; }         
                if (RsiMa<smin[1]) {p=-1;} 

                if(p>0)
          {
                if(smin<smin[1]) 
                        smin=smin[1];
                TrLevelSlow=smin; 
                if(TrLevelSlow<TrLevelSlow[1])
                        TrLevelSlow=TrLevelSlow[1];
          } 
          Else
          {
                if(smax>smax[1]) 
                        smax=smax[1];
                TrLevelSlow=smax; 
                if(TrLevelSlow>TrLevelSlow[1])
                        TrLevelSlow=TrLevelSlow[1];
          }
                PlotNumeric("RsiMa",RsiMa);
                PlotNumeric("TrLevelSlow",TrLevelSlow);
        }

End

 回到顶部
美女呀,离线,留言给我吧!
annbi
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:黑侠 帖子:841 积分:0 威望:0 精华:0 注册:2014/4/22 15:41:41
  发帖心情 Post By:2014/7/15 16:46:05    Post IP:112.118.81.36[显示全部帖子]

是rsi変種, 是老外常用的指标被人改了TB版, 我不懂太多, 只知這TB版已是简化了很多了


思路可看(非TB版)http://www.cxh99.com/2012/05/15/848.shtml, 那人寫到一半而已(以上TB版是完整一個指标)

 回到顶部
美女呀,离线,留言给我吧!
annbi
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:黑侠 帖子:841 积分:0 威望:0 精华:0 注册:2014/4/22 15:41:41
  发帖心情 Post By:2014/7/15 16:58:14    Post IP:112.118.81.36[显示全部帖子]

也可參考老外原裝说明
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:qqe.doc

[此贴子已经被作者于2014/7/15 17:00:05编辑过]

 回到顶部
美女呀,离线,留言给我吧!
annbi
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:黑侠 帖子:841 积分:0 威望:0 精华:0 注册:2014/4/22 15:41:41
  发帖心情 Post By:2014/7/15 17:25:03    Post IP:112.118.81.36[显示全部帖子]

遲些上傳

 回到顶部
美女呀,离线,留言给我吧!
annbi
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:黑侠 帖子:841 积分:0 威望:0 精华:0 注册:2014/4/22 15:41:41
  发帖心情 Post By:2014/7/15 23:32:31    Post IP:112.118.81.36[显示全部帖子]

http://www.cxh99.com/2012/05/15/848.shtml  其實裡面已寫得很清楚了又中文化了, 求高手完成他未能完成的部份, 便可利益大家, 谢谢

 回到顶部
美女呀,离线,留言给我吧!
annbi
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:黑侠 帖子:841 积分:0 威望:0 精华:0 注册:2014/4/22 15:41:41
  发帖心情 Post By:2014/7/16 19:31:04    Post IP:112.118.81.36[显示全部帖子]

譯, 只是mt4版, 但內容差不多, 希望有高手能编写一個金字塔版, 谢



指标有几个参数可以设定
        SF(平滑系数)=5(建议不要更动)

        RSI_Period(相对强弱指数的周期) = 14;

        DARFACTOR(DAR因子) = 4.236;

//+------------------------------------------------------------------+
//|   Qualitative Quantitative Estimation Indicator for Metatrader 4 |
//|                                     Copyright ?2006Roman Ignatov |
//|                                   mailto:roman.ignatov@gmail.com |
//+------------------------------------------------------------------+
#property copyright "Copyright ?200 Roman Ignatov"
#property link      "mailto:roman.ignatov@gmail.com"

#property indicator_separate_window //指标画在付图上

#property indicator_buffers 2       //设定后面要计算的2个曲线,每个线用一个数组表示

#property indicator_color1 Red      //第一条线的颜色为红色
#property indicator_style1 STYLE_SOLID //线为实体的
#property indicator_width1 2           //宽度为2

#property indicator_color2 Yellow    //第二条技术指标线为黄色
#property indicator_style2 STYLE_DOT //线为虚线

 

//Smooth Factor,平滑因子
extern int SF = 5; // original 5   

//相对强弱指数,周期
extern int RSI_Period = 14; // original 14

//DAR factor DAR 因子
extern double DARFACTOR = 4.236; //original 4.236  //通过修改这个参数可以更早的进场(为什么?)


int Wilders_Period;  //wilders 周期, Wilders是发明RSI的人. QQE指标其实就是RSI指标的组合计算和优化
int StartBar;    //起始的K线

 

//定义后面计算或指标的数组

double TrLevelSlow[]; //True range level,真实波动水平
double AtrRsi[]; //相对强弱指数的平均真实波动幅度
double MaAtrRsi[]; //相对强弱指数的平均真实波动幅度的移动平均
double Rsi[];  //相对强弱指数
double RsiMa[]; //相对强弱指数的移动平均

int init() //初始化变量和参数,初始化函数,指标加载的时候计算一次
{
    Wilders_Period = RSI_Period * 2 - 1;   //Wilders周期
    if (Wilders_Period < SF)               //保证计算开始的Bar的点有效
        StartBar = SF;
    else
        StartBar = Wilders_Period;
       
    IndicatorBuffers(6);//指定计算需要的数组数量
    SetIndexBuffer(0, RsiMa); //指定第一个数组对应的名字叫RsiMa
    SetIndexStyle(0, DRAW_LINE, STYLE_SOLID, 2);//设定指标线的样式,画线,实线,宽度为2
    SetIndexLabel(0, "Value 1");  //设定指标线的名称为"value 1"
    SetIndexDrawBegin(0, StartBar); //设置画线的起始点
    SetIndexStyle(1, DRAW_LINE, STYLE_DOT); //设定指标线1的样式,为画虚线,默认宽度为一
    SetIndexBuffer(1, TrLevelSlow);   //指标线对应的数组
    SetIndexLabel(1, "Value 2");  //设定指标线的名称为"value 2"
    SetIndexDrawBegin(1, StartBar); //设定画指标线的起始的位置
    SetIndexBuffer(2, AtrRsi);      //设定第2个指标线对应的数组
    SetIndexBuffer(3, MaAtrRsi);    //设定第3个指标线对应的数组
    SetIndexBuffer(4, Rsi);         //设定第4个指标线对应的数组
    IndicatorShortName(StringConcatenate("QQE(", SF, ")"));//指标的简称
    return(0);
}


int start()
{
    int counted, i;
    double rsi0, rsi1, dar, tr, dv;
   
    if(Bars <= StartBar) //Bars是当前的Bar数量,序号为从右向左0.....N
        return (0);

    counted = IndicatorCounted(); //返回缓存的数量,也就是已经计算了多少的Bar了
    if(counted < 1) //如果还没有计算过,所有的数组初始值附值为0

        for(i = Bars - StartBar; i < Bars; i++)
        {
            TrLevelSlow[i] = 0.0;
            AtrRsi[i] = 0.0;
            MaAtrRsi[i] = 0.0;
            Rsi[i] = 0.0;
            RsiMa[i] = 0.0;
        }
   

    //计算出需要计算的Bar的数字

    counted = Bars - counted - 1;
       

    //在刚开始还未计算出任何bar的情况下,计算出从左边第一个bar一直到右边第零个bar的值.在已经计算出n个值的情况下,就不在计算了.也就是只计算出新出现Bar位置的参数值
    for (i = counted; i >= 0; i--)
        Rsi[i] = iRSI(NULL, 0, RSI_Period, PRICE_CLOSE, i); //求RSI的值

    for (i = counted; i >= 0; i--)
    {
        RsiMa[i] = iMAOnArray(Rsi, 0, SF, 0, MODE_EMA, i); //计算RSI的移动平均值
        AtrRsi[i] = MathAbs(RsiMa[i + 1] - RsiMa[i]);      //计算出RSI移动平均值的波动幅度
    }

    for (i = counted; i >= 0; i--)
        MaAtrRsi[i] = iMAOnArray(AtrRsi, 0, Wilders_Period, 0, MODE_EMA, i); //在Wilders_Period周期内计算波动幅度的移动平均值

 

    //计算真实波动水平 TrLevelSlow

    //先分析Counted = Bars情况下,其他的依次循环

    i = counted + 1;      
    tr = TrLevelSlow[i];    //先把当前位置的真实波动水平记录到tr中
    rsi1 = iMAOnArray(Rsi, 0, SF, 0, MODE_EMA, i);  //记录当前的Rsi相对强弱指数到rsi1中去
    while (i > 0)
    {
        i--;
        rsi0 = iMAOnArray(Rsi, 0, SF, 0, MODE_EMA, i); //依次计算次第个序列位置上的ris值
        dar = iMAOnArray(MaAtrRsi, 0, Wilders_Period, 0, MODE_EMA, i) * DARFACTOR; //计算次第位置上的dar值,也就是平滑过的AtrRsi的值.

        dv = tr;
        if (rsi0 < tr)  //如果次第位置上的rsi0值小于上一个位置的真实波动水平
        {
            tr = rsi0 + dar;
            if (rsi1 < dv)
                if (tr > dv)
                    tr = dv;
        }
        else if (rsi0 > tr)
        {
            tr = rsi0 - dar;
            if (rsi1 > dv)
                if (tr < dv)
                    tr = dv;
        }
        TrLevelSlow[i] = tr;
        rsi1 = rsi0;
    }
   
    return(0);
}

该指标有两条线,一条为RSI的移动平均线周期比较短,另外一条为MaAtrRsi求移动平均,周期为Wilders_Period,为慢线. 第一条线,反映的是价格运行的相对强弱的指数平均,就是RSI的均线.另外的一条反映的是RSI的振幅的变化情况. 第一条向上反映的是价格走高,向下的话,反映的是价格走低,对整个的K线起到了平滑作用.第二条线反映了RSI的变化情况,对于其蕴涵的意义还需要进一步的了解.

 


 回到顶部
美女呀,离线,留言给我吧!
annbi
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:黑侠 帖子:841 积分:0 威望:0 精华:0 注册:2014/4/22 15:41:41
  发帖心情 Post By:2014/7/16 21:01:09    Post IP:112.118.81.36[显示全部帖子]

RogarZ兄:

什麽用户码呢? (我不懂編程的)

我找到比較简化(那人未能完成的部份)的版本,
你或其他編写高手能改成金字塔句語嗎?

 tr := 0;
   for i := front(dar) + 1 to back(dar) do begin
      dv := tr;
      if rsi_ma[i] < tr then begin
         tr := rsi_ma[i] + dar[i];
         if rsi_ma[i-1] < dv and tr > dv then tr := dv;
      end else if rsi_ma[i] > tr then begin
         tr := rsi_ma[i] - dar[i];
         if rsi_ma[i-1] > dv and tr < dv then tr := dv;
      end;
      line[i] := rsi_ma[i];
      line_signal[i] := tr;
   end;
end.

 回到顶部
美女呀,离线,留言给我吧!
annbi
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:黑侠 帖子:841 积分:0 威望:0 精华:0 注册:2014/4/22 15:41:41
  发帖心情 Post By:2014/7/17 15:28:36    Post IP:112.118.81.36[显示全部帖子]

那這指标只能在我国国產平台和股市市塲绝跡了(老外平台看不到我国股市的), 多可惜呵

 回到顶部