*

Trend Intensity Index という指標(2) シグナルを付加

公開日: : 最終更新日:2015/02/24 日記

以前の記事『Trend Intensity Index という指標』で紹介したインディケーターもシグナルを表示するように改変してみました。

シグナルというのは指標の移動平均をとったもので、平滑されている分、遅れて動くので、指標とのクロスで売買のシグナルにすることができるのです。

 

サブウィンドウの上が TII_RLH.ex4(オリジナル)で、下が私の改良したシグナル付加版。

下のシグナル付加版で赤と水色の線のクロスしたところ(平行して重なったところではない)が買いまたは売りとなります。

シグナルがないと指標の反転を判断するのに数値で比べないといけないのですが、シグナルがあるとクロスの有無で判定でき、より簡単にプログラムできるという裏事情があるのです。

関連記事

プログラムソース

#property  copyright "Copyright ゥ 2006, Robert Hill "
#property  link      "http://www.metaquotes.net/"
//---- indicator settings
#property  indicator_separate_window
#property  indicator_buffers 2
#property  indicator_color1  Red
#property  indicator_color2  Aqua
#property  indicator_width1  2
#property  indicator_width2  1

//----
extern int Major_Period=60;
extern int Major_MaMode=1; //0=sma, 1=ema, 2=smma, 3=lwma, 4=lsma
extern int Major_PriceMode=0;//0=close, 1=open, 2=high, 3=low, 4=median(high+low)/2, 5=typical(high+low+close)/3, 6=weighted(high+low+close+close)/4
extern int Minor_Period=30;
extern color LevelColor=Silver;
extern int BuyLevel=20;
extern int MidLevel=50;
extern int SellLevel=80;

extern int SigPeriod = 8;

//---- buffers
double ma[];
double ma_dev[];
double tii[];

double tiis[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- drawing settings
   IndicatorBuffers(4);
   SetIndexStyle(0,DRAW_LINE);
   SetIndexDrawBegin(0,Major_Period);
   IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)+2);
//---- 3 indicator buffers mapping
   SetIndexBuffer(0,tii);
   SetIndexBuffer(1,tiis);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexDrawBegin(1,Major_Period);

   SetIndexBuffer(2,ma_dev);
   SetIndexBuffer(3,ma);

//---- name for DataWindow and indicator subwindow label
   IndicatorShortName(" TII  ,  Major_Period ( "+Major_Period+" )  ,  Minor_Period  ( "+Minor_Period+" ), ");
   SetLevelStyle(STYLE_DASH,1,LevelColor);
   SetLevelValue(0,BuyLevel);
   SetLevelValue(1,MidLevel);
   SetLevelValue(2,SellLevel);
//---- initialization done
   return(0);
  }
//+------------------------------------------------------------------+
//| LSMA with PriceMode                                              |
//| PrMode  0=close, 1=open, 2=high, 3=low, 4=median(high+low)/2,    |
//| 5=typical(high+low+close)/3, 6=weighted(high+low+close+close)/4  |
//+------------------------------------------------------------------+
double LSMA(int Rperiod,int prMode,int shift)
  {
   int i;
   double sum,pr;
   int length;
   double lengthvar;
   double tmp;
   double wt;
//----
   length=Rperiod;
   sum=0;
   for(i=length; i>=1;i--)
     {
      lengthvar=length+1;
      lengthvar/=3;
      tmp=0;
      switch(prMode)
        {
         case 0: pr=Close[length-i+shift];break;
         case 1: pr=Open[length-i+shift];break;
         case 2: pr=High[length-i+shift];break;
         case 3: pr=Low[length-i+shift];break;
         case 4: pr=(High[length-i+shift] + Low[length-i+shift])/2;break;
         case 5: pr=(High[length-i+shift] + Low[length-i+shift] + Close[length-i+shift])/3;break;
         case 6: pr=(High[length-i+shift] + Low[length-i+shift] + Close[length-i+shift] + Close[length-i+shift])/4;break;
        }
      tmp =(i - lengthvar)*pr;
      sum+=tmp;
     }
   wt=sum*6/(length*(length+1));
//----
   return(wt);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
  {
   int i,j,limit;
   double sdPos,sdNeg;

   int counted_bars=IndicatorCounted();
   if(counted_bars<0) return(-1);
   if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;
   if(counted_bars==0) limit-=1+MathMax(Major_Period,Minor_Period);

//----
   for(i=limit; i>=0; i--)
     {
      if(Major_MaMode==4)
        {
         ma[i]=LSMA(Major_Period,Major_PriceMode,i);
        }
      else
        {
         ma[i]=iMA(NULL,0,Major_Period,0,Major_MaMode,Major_PriceMode,i);
        }
      ma_dev[i]=Close[i]-ma[i];
     }
//========== COLOR CODING ===========================================               
   for(i=0; i<=limit; i++)
     {
      sdPos=0;
      sdNeg=0;
      for(j=i;j<i+Minor_Period;j++)
        {
         if(ma_dev[j]>=0) sdPos=sdPos+ma_dev[j];
         if(ma_dev[j]<0) sdNeg=sdNeg+ma_dev[j];
        }
      tii[i]=100*sdPos/(sdPos-sdNeg);
     } 
   for(i=0; i<=limit; i++)
     {
      tiis[i] = iMAOnArray(tii,0,SigPeriod,0,MODE_EMA,i); 
     }
//----
   return(0);
  }
//+------------------------------------------------------------------+<>

###

関連記事

no image

過去の日記のリライト

 過去の日記のリライトです。  この頃はオーディオに凝っていたころですね。  タンノイ

記事を読む

【ふるさと納税】安和文旦10kg

安和文旦10kg を高知県須崎市から送ってもらいました。 10000円の寄付でもらえます。

記事を読む

no image

過去の日記のリライト

 過去の日記のリライトです。  無視してもいいですよ。   05.0

記事を読む

金箔は食べちゃダメ

年が明けてしまいました。今年もよろしくお願いします。 自宅と実家のおせち料理を昨日食べましたが

記事を読む

【ふるさと納税】下津蔵出しみかん6.5kg・ちょっと訳ありご家庭用 / 和歌山県 海南市

【ふるさと納税】下津蔵出しみかん6.5kg・ちょっと訳ありご

記事を読む

【ふるさと納税】国産牛モモすき焼き用約500gと山形県産豚しゃぶしゃぶ約1.0kg

山形県河北町に 1万円に寄付するともらえます。 国産牛モモすき焼き用約500g と 山

記事を読む

no image

過去の日記のリライト

 過去の日記のリライトです。  無視しても結構です。 06.03.31

記事を読む

テラーク忘年会

テラーク忘年会 ということで大阪梅田に行ってきました。 大阪駅に新しくできたルクアの10Fの居

記事を読む

【ふるさと納税】梨「王秋(おうしゅう)」5kg 鳥取県米子市

米子市に 10000円寄付するともらえます。今は品切れです。 5kg ですが、巨大です

記事を読む

【万年筆】 Yongsheng 3008A 万年筆 細字 Fine 透明軸 シルバートリム スクリュー式 2018アップグレード版(4個色セット)

Yongsheng(永生)というブランドは上海にある会社(永生金筆廠)のブランド。 4

記事を読む

Message

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

【ヤフオク】NEC PC-MKL39EZG1 Mate ME-1 到着

この前落札した NEC の中古パソコン PC-MKL39EZG1 の

Core i3-8100 について

昨日うちにやってきた第8世代 Core i プロセッサーの i3-81

【ヤフオク】NEC PC-MKL36BZG4 Mate MB-4 到着

本日帰宅したら、先日落札した NEC のデスクトップ PC-MKL36

【ヤフオク】NEC PC-MKL39EZG1 Mate ME-1 落札

さらにもう一台ヤフオクで落札できました。 2,477円(税込)+

【ヤフオク】DELL OptiPlex 3050 落札

もう一台ヤフオクで落札しました。3,097円(税込)+送料 1

→もっと見る

  • 2025年4月
     123456
    78910111213
    14151617181920
    21222324252627
    282930  
  • アクセスカウンター
PAGE TOP ↑