砌砖交易指标代码:TTM Bricks

Discussion in 'General Topics on Software and Data' started by g555, Oct 16, 2013.

  1. 《驾驭交易》中文版,第261页,(TTM Bricks)砌砖交易-让市场叠罗汉。

    我根据书上说的,编制了这个指标。用在金字塔软件上,其他软件请自己修改。
    下面的指标为主图指标,序列计算
    Code:
    VARIABLE:a=0,hh=0,n=0;//变量申明 
    H1:=CLOSE;   
    L1:=CLOSE;
    O1:=cLOSE;
    C1:=cLOSE;
    UPorDOWN:=CLOSE;  //=1上涨 =0下跌
    
    FOR j=1 TO DATACOUNT DO 
    BEGIN 
       if j=1 then    //第一天特殊处理
       begin
          if close[1]>=open[1] then  //上涨
          begin
             O1[1]:=o[1];
             L1[1]:=o[1];
             H1[1]:=c[1];
             C1[1]:=c[1];
             UPorDOWN[1]:=1;
          end;
          else
          begin
             O1[1]:=o[1];
             H1[1]:=o[1];
             L1[1]:=c[1];
             C1[1]:=c[1];
             UPorDOWN[1]:=0;
          end;
          CONTINUE FOR;
       end;
       
       //暂时把今天的数值 设置为昨天的数值
       O1[j]:=O1[j-1];
       H1[j]:=H1[j-1];
       L1[j]:=L1[j-1];
       C1[j]:=C1[j-1];
       UPorDOWN[j]:=UPorDOWN[j-1];
       //昨天是上涨
       if UPorDOWN[j-1]=1  then
       begin
          //第一种情况,上涨:今天的收盘价超过前一个柱子的最高价
          if Close[j] > H1[j-1] then
          begin
             //提升柱子的数值
             O1[j]:=H1[j-1];
             L1[j]:=H1[j-1];
             H1[j]:=close[j];
             C1[j]:=close[j];
             UPorDOWN[j]:=1; //表示上涨
          end;
          //第二种情况,下跌:今天的收盘价,下跌超过 前三条柱子的最低价
          if Close[j] < L1[j-1] then  //低过前天的最低价,才开始计算
          begin
             //找到前三个柱子的最低价
             a:=j-1;     //前天
             hh:=L1[a];  //前天最低价
             n:=1;        //柱子计数
             a:=a-1;
             while a>0 do
             begin
                if UPorDOWN[a]=0 then  BREAK WHILE;  //这一天为下跌,退出
                if H1[a] <> H1[a+1] then           //不是一个柱子
                begin
                   n:=n+1;                     //找到了一根,计数器加1
                   hh:=L1[a];
                end;
                if n=3 then  BREAK WHILE;       //已经找到了三根柱子
                a:=a-1;
             end;
             
             //比第三个柱子,还低
             if Close[j]<hh then
             begin
                //下降柱子的数值
                O1[j]:=L1[j-1];
                H1[j]:=L1[j-1];
                L1[j]:=close[j];
                C1[j]:=close[j];
                UPorDOWN[j]:=0; //表示跌了
             end;
          end;
       end;
       //昨天是上涨,结束
       
       //昨天是下跌
       if UPorDOWN[j-1]=0  then
       begin
          //第一种情况,下跌:今天的收盘价超过前一个柱子的最低价
          if Close[j] < L1[j-1] then
          begin
             //下降柱子的数值
             O1[j]:=L1[j-1];
             H1[j]:=L1[j-1];
             L1[j]:=close[j];
             C1[j]:=close[j];
             UPorDOWN[j]:=0; //表示下跌
          end;
          //第二种情况,上涨:今天的收盘价,上涨超过 前三条柱子的最高价
          if Close[j] > H1[j-1] then  //高过前天最高价,才计算
          begin
             //找到前三个柱子的最低价
             a:=j-1;     //前天
             hh:=H1[a];  //前天最低价
             n:=1;        //柱子计数器
             a:=a-1;
             while a>0 do
             begin
                if UPorDOWN[a]=1 then  BREAK WHILE;  //这一天为上涨,退出
                if H1[a] <> H1[a+1] then           //不是一个柱子
                begin
                     n:=n+1;                         //找到了一根,计数器加1
                   hh:=H1[a];
                end;
                if n=3 then  BREAK WHILE;  //已经找到了三根柱子
             a:=a-1;
             end;
             
             //比第三个柱子的最高价,还高
             if Close[j] > hh then
             begin
                //提升柱子的数值
             O1[j]:=H1[j-1];
                L1[j]:=H1[j-1];
                H1[j]:=close[j];
                C1[j]:=close[j];
                UPorDOWN[j]:=1; //表示上涨
             end;
          end;
       end;
      
    end;
    
    KLINE(O1,H1,L1,C1,0);
     
  2. 3031 金字塔编译不过去
     
  3. 带if的应该是逐k模式吧?