【トレステ】簡単な分析テクニックを自作してみよう【初級編】ーPart1ー現在値と5日移動平均、20日移動平均、60日移動平均の乖離率を表示する分析テクニックを作る。Begin文、事前宣言済み変数Condition



では、超簡単な分析テクニックを自作してみようで学んだ事を使って、

現在値と5日移動平均、20日移動平均、60日移動平均の乖離率を表示する分析テクニックを作ってみます。

それでは、トレステ EasyLanguage(イージーランゲージ)でプログラムを作っていきましょう。

これらの言葉をプログラムでどう表現すれば良いか調べます。

『現在値と5日移動平均、20日移動平均、60日移動平均の乖離率を表示する』を調べていきます。

  • 『現在値』は、プログラムでは『close』。
  • 『5日移動平均』は、『Average(close,5);』。
  • 『20日移動平均』は、『Average(close,20);』。
  • 『60日移動平均』は、『Average(close,60);』。
  • 『5日移動平均乖離率』は、(現在値ー5日移動平均)÷ 5日移動平均。
    『(close-Average(close,5))/Average(close,5);』。
  • 『20日移動平均乖離率』は、(現在値ー20日移動平均)÷ 20日移動平均。
    『(close-Average(close,20))/Average(close,20);』。
  • 『60日移動平均乖離率』は、(現在値ー60日移動平均)÷ 60日移動平均。
    『(close-Average(close,60))/Average(close,60);』。
  • 『5日移動平均乖離率を表示する』は、
    『Plot1((close-Average(close,5))/Average(close,5),”5日移動平均乖離率”);』。
  • 『20日移動平均乖離率を表示する』は、
    『Plot2((close-Average(close,5))/Average(close,5),”20日移動平均乖離率”);』
  • 『60日移動平均乖離率を表示する』は、
    『Plot3((close-Average(close,5))/Average(close,5),”60日移動平均乖離率”);』

では、プログラムを書きます。

Plot1((close-Average(close,5))/Average(close,5),”5日移動平均乖離率”);
Plot2((close-Average(close,20))/Average(close,20),”20日移動平均乖離率”);
Plot3((close-Average(close,60))/Average(close,60),”60日移動平均乖離率”);

*移動平均Average関数の使い方は、『超簡単な分析テクニックを自作してみようーPart4ー移動平均を表示する。Average関数を使用する。』を参照して下さい。

事前宣言変数 Value を使ってもう少し見やすくプログラムを書き換えます。

Value1 = (close-Average(close,5))/Average(close,5);
Value2 = (close-Average(close,20))/Average(close,20);
Value3 = (close-Average(close,60))/Average(close,60); 

Plot1(Value1,”5日移動平均乖離率”);
Plot2(Value2,”20日移動平均乖離率”);
Plot3(Value3,”60日移動平均乖離率”);

*事前宣言変数の使い方は、『超簡単な分析テクニックを自作してみようーPart3ー前日比を表示する。変数を使う。』を参照して下さい。

各平均乖離率と各平均値も表示するようにプログラムを書き換えてみる。

Value1 = (close-Average(close,5))/Average(close,5);
Value2 = (close-Average(close,20))/Average(close,20);
Value3 = (close-Average(close,60))/Average(close,60); 

Plot1(Average(close,5),”5日移動平均”);
Plot2(Value1,”5日移動平均乖離率”);
Plot3(Average(close,20),”20日移動平均”);
Plot4(Value2,”20日移動平均乖離率”);

Plot5(Average(close,60),”60日移動平均”);
Plot6(Value3,”60日移動平均乖離率”);

事前宣言変数 Value を使ってもう少し見やすくプログラムを書き換えます。

Value1 = Average(close,5); //5日移動平均値
Value2 = Average(close,20); //20日移動平均値 
Value3 = Average(close,60); //60日移動平均値 

Value4 = (close-Value1)/Value1; //5日移動平均乖離率 
Value5 = (close-Value2)/Value2; //20日移動平均乖離率
Value6 = (close-Value3)/Value3; //60日移動平均乖離率 

Plot1(Value1,”5日移動平均”); //5日移動平均値を表示する。
Plot2(Value4,”5日移動平均乖離率”); //5日移動平均乖離率を表示する。 
Plot3(Value2,”20日移動平均”); //20日移動平均値を表示する。
Plot4(Value5,”20日移動平均乖離率”); //20日移動平均乖離率を表示する。
Plot5(Value3,”60日移動平均”); //60日移動平均値を表示する。
Plot6(Value6,”60日移動平均乖離率”); //60日移動平均乖離率を表示する。

これで終わりです。

プログラムの各行の右側に緑色で書かれた部分は、その行のプログラムが何をするか説明しています。
プログラムが長くなるとこの行が何をするプログラムかすぐわかるように説明文をつけるとわかりやすいです。
『/』スラッシュを2本書いてからから説明文を初めて下さい。スラッシュを2本書くと文字の色が緑に変わります。そうなるとプログラムがここは説明文と認識してくれます。

If 文を使って各移動平均乖離率がプラスなら文字を赤く、マイナスなら文字を青く、プログラムを足してみます。

  • 『もしも』は、プログラムでは『If』になり、それに続く『だったら』が『then』になります。
  • 『乖離率』は、先程作った5日移動平均乖離率『Value4』、20日移動平均乖離率『Value5』、60日移動平均乖離率『Value6』
  • 『よりプラス』は、『>0』。AはBより大きいは、A>B。AはBより小さいは、A<B。以上は『>=』以下は『<=』。
  • 『文字の色を変える』は、関数『SerPlotColor』を使います。SetPlotColor(プロット番号,色);
  • 『マイナスなら』は、『もしも』なになに『だったら』何何する、『そうでないなら』何何する。の『そうでないなら』になり、『else』になります。

プログラムで『もしも、移動平均乖離率がプラスだったら、文字を赤くする、マイナスなら、文字を青くする。』を日本語を交えて書いてみると、

If【もしも】Value4【5日移動平均乖離率】 >0【プラス】then【だったら】SetPlotColor(2,Red)【プロット2の文字の色を赤にする】
else【そうでないなら】SetPlotColor(2,Blue)【プロット2の文字を青にする】
If【もしも】Value5【20日移動平均乖離率】 >0【プラス】then【だったら】SetPlotColor(4,Red)【プロット4の文字の色を赤にする】
else【そうでないなら】SetPlotColor(4,Blue)【プロット4の文字を青にする】
If【もしも】Value6【60日移動平均乖離率】 >0【プラス】then【だったら】SetPlotColor(6,Red)【プロット6の文字の色を赤にする】
else【そうでないなら】SetPlotColor(6,Blue)【プロット4の文字を青にする】

になります。

5日移動平均乖離率は、Plot2で表示させてるので、
SetPlotColorのプロット番号はあわせて2になります。

20日移動平均乖離率は、Plot4で表示させてるので、
SetPlotColorのプロット番号はあわせて4になります。

60日移動平均乖離率は、Plot6で表示させてるので、
SetPlotColorのプロット番号はあわせて6になります。

*If文の使い方、文字の色のかえ方は、『超簡単な分析テクニックを自作してみようーPart6ーもし前日比がプラスなら文字を赤く、マイナスなら文字を青く。If文を使う。』を参照して下さい。

では、実際のプログラムは、どうなるかといいますと。

Value1 = Average(close,5); //5日移動平均値
Value2 = Average(close,20); //20日移動平均値 
Value3 = Average(close,60); //60日移動平均値 

Value4 = (close-Value1)/Value1; //5日移動平均乖離率 
Value5 = (close-Value2)/Value2; //20日移動平均乖離率
Value6 = (close-Value3)/Value3; //60日移動平均乖離率 

Plot1(Value1,”5日移動平均”); //5日移動平均値を表示する。
Plot2(Value4,”5日移動平均乖離率”); //5日移動平均乖離率を表示する。 
Plot3(Value2,”20日移動平均”); //20日移動平均値を表示する。
Plot4(Value5,”20日移動平均乖離率”); //20日移動平均乖離率を表示する。
Plot5(Value3,”60日移動平均”); //60日移動平均値を表示する。
Plot6(Value6,”60日移動平均乖離率”); //60日移動平均乖離率を表示する。

If Value4 > 0 then SetPlotColor(2,Red) else SetPlotColor(2,Blue);//もし5日移動平均乖離率がプラスなら文字の色を赤くする、それ以外は文字の色を青くする。
If Value5 > 0 then SetPlotColor(4,Red) else SetPlotColor(4,Blue);//もし20日移動平均乖離率がプラスなら文字の色を赤くする、それ以外は文字の色を青くする。
If Value6 > 0 then SetPlotColor(6,Red) else SetPlotColor(6,Blue);//もし60日移動平均乖離率がプラスなら文字の色を赤くする、それ以外は文字の色を青くする。

これで終わりです。

各移動平均乖離率がプラスなら各移動平均値も文字を赤く、マイナスなら各移動平均値も文字を青く、プログラムを足してみます。

重複しますが、移動平均乖離率の時と同じ様に手順をふんできます。

  • 『もしも』は、プログラムでは『If』になり、それに続く『だったら』が『then』になります。
  • 『平均値』は、先程作った5日移動平均『Value1』、20日移動平均『Value2』、60日移動平均『Value3』
  • 『よりプラス』は、『>0』。AはBより大きいは、A>B。AはBより小さいは、A<B。以上は『>=』以下は『<=』。
  • 『文字の色を変える』は、関数『SerPlotColor』を使います。SetPlotColor(プロット番号,色);
  • 『マイナスなら』は、『もしも』なになに『だったら』何何する、『そうでないなら』何何する。の『そうでないなら』になり、『else』になります。

プログラムで『もしも、移動平均乖離率がプラスだったら、移動平均値の文字を赤くする、マイナスなら、移動平均値の文字を青くする。』を日本語を交えて書いてみると、

If【もしも】Value4【5日移動平均乖離率】 >0【プラス】then【だったら】SetPlotColor(2,Red)【プロット1の文字の色を赤にする:5日移動平均値を表示しているプロットは1なので】
else【そうでないなら】SetPlotColor(2,Blue)【プロット2の文字を青にする】
If【もしも】Value5【20日移動平均乖離率】 >0【プラス】then【だったら】SetPlotColor(4,Red)【プロット3の文字の色を赤にする:20日移動平均値を表示しているプロットは3なので】
else【そうでないなら】SetPlotColor(4,Blue)【プロット4の文字を青にする】
If【もしも】Value6【60日移動平均乖離率】 >0【プラス】then【だったら】SetPlotColor(6,Red)【プロット5の文字の色を赤にする:60日移動平均値を表示しているプロットは5なので】
else【そうでないなら】SetPlotColor(6,Blue)【プロット4の文字を青にする】

になります。

では、実際のプログラムは、どうなるかといいますと。

Value1 = Average(close,5); //5日移動平均値
Value2 = Average(close,20); //20日移動平均値 
Value3 = Average(close,60); //60日移動平均値 

Value4 = (close-Value1)/Value1; //5日移動平均乖離率 
Value5 = (close-Value2)/Value2; //20日移動平均乖離率
Value6 = (close-Value3)/Value3; //60日移動平均乖離率 

Plot1(Value1,”5日移動平均”); //5日移動平均値を表示する。
Plot2(Value4,”5日移動平均乖離率”); //5日移動平均乖離率を表示する。 
Plot3(Value2,”20日移動平均”); //20日移動平均値を表示する。
Plot4(Value5,”20日移動平均乖離率”); //20日移動平均乖離率を表示する。
Plot5(Value3,”60日移動平均”); //60日移動平均値を表示する。
Plot6(Value6,”60日移動平均乖離率”); //60日移動平均乖離率を表示する。

If Value4 > 0 then SetPlotColor(1,Red) else SetPlotColor(1,Blue);//もし5日移動平均乖離率がプラスなら5日移動平均値の文字の色を赤くする、それ以外は文字の色を青くする
If Value4 > 0 then SetPlotColor(2,Red) else SetPlotColor(2,Blue);//もし5日移動平均乖離率がプラスなら文字の色を赤くする、それ以外は文字の色を青くする。
If Value5 > 0 then SetPlotColor(3,Red) else SetPlotColor(3,Blue);//もし20日移動平均乖離率がプラスなら20日移動平均値の文字の色を赤くする、それ以外は文字の色を青くする。
If Value5 > 0 then SetPlotColor(4,Red) else SetPlotColor(4,Blue);//もし20日移動平均乖離率がプラスなら文字の色を赤くする、それ以外は文字の色を青くする。

If Value6 > 0 then SetPlotColor(5,Red) else SetPlotColor(5,Blue);//もし60日移動平均乖離率がプラスなら60日移動平均値の文字の色を赤くする、それ以外は文字の色を青くする。
If Value6 > 0 then SetPlotColor(6,Red) else SetPlotColor(6,Blue);//もし60日移動平均乖離率がプラスなら文字の色を赤くする、それ以外は文字の色を青くする。

これで終わりです。

If 文のプログラムを見ると移動平均値と移動平均乖離率の文字の色を変える条件が同じです。この重複を無くし、更にわかりやすく、プログラムを書き換えるために、
新しい『Begin』文を使います。同じ条件下で複数の事をしたい場合に使います。同じ条件の場合は、Begin文を使ってプログラムを簡単にしよう。

Begin 文は、
Begin 文章1;
         文章2;
         文章3; 
End;
となります。各文章(プログラム)の後にその文章が終わったことを示すセミコロン『;』を必ず書き、最後『end』で終わります。

先程のIf 文を Beginを使って書き換えてみよう。

If Value4 > 0 then//もし5日移動平均乖離率がプラスなら
Begin
SetPlotColor(1,Red);//5日移動平均値の文字の色を赤くする。
SetPlotColor(2,Red);//5日移動平均乖離率の文字の色を赤くする。
End
else Begin//それ以外は
SetPlotColor(1,Blue);//5日移動平均値の文字の色を青くする。
SetPlotColor(2,Blue);//5日移動平均乖離率の文字の色を青くする。
End;

If Value5 > 0 then//もし20日移動平均乖離率がプラスなら20日移動平均値と乖離率の文字の色を赤くする、それ以外は文字の色を青くする
Begin
SetPlotColor(3,Red);
SetPlotColor(4,Red);
End
else Begin SetPlotColor(3,Blue);
SetPlotColor(4,Blue);
End;

If Value6 > 0 then//もし60日移動平均乖離率がプラスなら60日移動平均値と乖離率の文字の色を赤くする、それ以外は文字の色を青くする
Begin
SetPlotColor(5,Red);
SetPlotColor(6,Red);
End
else Begin
SetPlotColor(5,Blue);
SetPlotColor(6,Blue);
End;

実際のプログラム

Value1 = Average(close,5); //5日移動平均値
Value2 = Average(close,20); //20日移動平均値 
Value3 = Average(close,60); //60日移動平均値 

Value4 = (close-Value1)/Value1; //5日移動平均乖離率 
Value5 = (close-Value2)/Value2; //20日移動平均乖離率
Value6 = (close-Value3)/Value3; //60日移動平均乖離率 

Plot1(Value1,”5日移動平均”); //5日移動平均値を表示する。
Plot2(Value4,”5日移動平均乖離率”); //5日移動平均乖離率を表示する。 
Plot3(Value2,”20日移動平均”); //20日移動平均値を表示する。
Plot4(Value5,”20日移動平均乖離率”); //20日移動平均乖離率を表示する。
Plot5(Value3,”60日移動平均”); //60日移動平均値を表示する。
Plot6(Value6,”60日移動平均乖離率”); //60日移動平均乖離率を表示する。

If Value4 > 0 then//もし5日移動平均乖離率がプラスなら
Begin
SetPlotColor(1,Red);//5日移動平均値の文字の色を赤くする。
SetPlotColor(2,Red);//5日移動平均乖離率の文字の色を赤くする。
End
else Begin//それ以外は
SetPlotColor(1,Blue);//5日移動平均値の文字の色を青くする。
SetPlotColor(2,Blue);//5日移動平均乖離率の文字の色を青くする。
End;

If Value5 > 0 then//もし20日移動平均乖離率がプラスなら20日移動平均値と乖離率の文字の色を赤くする、それ以外は文字の色を青くする
Begin
SetPlotColor(3,Red);
SetPlotColor(4,Red);
End
else Begin SetPlotColor(3,Blue);
SetPlotColor(4,Blue);
End;

If Value6 > 0 then//もし60日移動平均乖離率がプラスなら60日移動平均値と乖離率の文字の色を赤くする、それ以外は文字の色を青くする
Begin
SetPlotColor(5,Red);
SetPlotColor(6,Red);
End
else Begin
SetPlotColor(5,Blue);
SetPlotColor(6,Blue);
End;

次に20日移動平均乖離率が2%以上になったらアラートを鳴らしてみよう。

20日移動平均乖離率が2%以上になったらアラートを鳴らすプログラムを足す。

アラート文は、
If AlertEnabled then でスタートする。
20日移動平均乖離率は、Value5なので、アラートを鳴らすプログラムは、

If AlertEnabled then If Value5 > 0.02 then Alert(“20日移動平均乖離率2%以上” + Description);
*アラート文の作り方は、『超簡単な分析テクニックを自作してみようーPart8ーアラートを鳴らす分析テクニックを作る。もし前日比が10%以上ならアラートを鳴らす。』を参照して下さい。

実際のプログラム

Value1 = Average(close,5); //5日移動平均値
Value2 = Average(close,20); //20日移動平均値
Value3 = Average(close,60); //60日移動平均値

Value4 = (close-Value1)/Value1; //5日移動平均乖離率
Value5 = (close-Value2)/Value2; //20日移動平均乖離率
Value6 = (close-Value3)/Value3; //60日移動平均乖離率

Plot1(Value1,”5日移動平均”); //5日移動平均値を表示する。
Plot2(Value4,”5日移動平均乖離率”); //5日移動平均乖離率を表示する。 
Plot3(Value2,”20日移動平均”); //20日移動平均値を表示する。
Plot4(Value5,”20日移動平均乖離率”); //20日移動平均乖離率を表示する。
Plot5(Value3,”60日移動平均”); //60日移動平均値を表示する。
Plot6(Value6,”60日移動平均乖離率”); //60日移動平均乖離率を表示する。

If Value4 > 0 then//もし5日移動平均乖離率がプラスなら
Begin
SetPlotColor(1,Red);//5日移動平均値の文字の色を赤くする。
SetPlotColor(2,Red);//5日移動平均乖離率の文字の色を赤くする。
End
else Begin//それ以外は
SetPlotColor(1,Blue);//5日移動平均値の文字の色を青くする。
SetPlotColor(2,Blue);//5日移動平均乖離率の文字の色を青くする。
End;

If Value5 > 0 then//もし20日移動平均乖離率がプラスなら20日移動平均値と乖離率の文字の色を赤くする、それ以外は文字の色を青くする
Begin
SetPlotColor(3,Red);
SetPlotColor(4,Red);
End
else Begin SetPlotColor(3,Blue);
SetPlotColor(4,Blue);
End;

If Value6 > 0 then//もし60日移動平均乖離率がプラスなら60日移動平均値と乖離率の文字の色を赤くする、それ以外は文字の色を青くする
Begin
SetPlotColor(5,Red);
SetPlotColor(6,Red);
End
else Begin
SetPlotColor(5,Blue);
SetPlotColor(6,Blue);
End;

If AlertEnabled then If Value5 > 0.02 then Alert(“20日移動平均乖離率2%以上”+ Description);//もし20日移動平均乖離率が2%以上ならアラートを鳴らす。

これで終わりです。

最後に、条件が多いので、計算や式からの真偽条件の格納に使用できる 事前宣言済み変数 Condition を使って条件を全て Condition で書き換えてみます。

事前宣言済み変数 Condition を使ってずべての条件を書き換えます。

今現在プログラムで使用してる条件は、
Value4 > 0 //5日移動平均乖離率がプラス
Value5 > 0 //20日移動平均乖離率がプラス
Value6 > 0 //60日移動平均乖離率がプラス
Value5 > 0.02 //20日移動平均乖離率が2%以上

Condition変数を使い代入すると。
Condition1 = Value4> 0;//5日移動平均乖離率がプラス
Condition2 = Value5> 0;//20日移動平均乖離率がプラス
Condition3 = Value6> 0;//20日移動平均乖離率がプラス
Condition4 = Value5> 0.02;//20日移動平均乖離率がプラス

プログラムのIf文に使用すると

If Condition1 then//もし5日移動平均乖離率がプラスなら
Begin
SetPlotColor(1,Red);//5日移動平均値の文字の色を赤くする。
SetPlotColor(2,Red);//5日移動平均乖離率の文字の色を赤くする。
End
else Begin//それ以外は
SetPlotColor(1,Blue);//5日移動平均値の文字の色を青くする。
SetPlotColor(2,Blue);//5日移動平均乖離率の文字の色を青くする。
End;

If Condition2 then//もし20日移動平均乖離率がプラスなら20日移動平均値と乖離率の文字の色を赤くする、それ以外は文字の色を青くする
Begin
SetPlotColor(3,Red);
SetPlotColor(4,Red);
End
else Begin SetPlotColor(3,Blue);
SetPlotColor(4,Blue);
End;

If Condition3 then//もし60日移動平均乖離率がプラスなら60日移動平均値と乖離率の文字の色を赤くする、それ以外は文字の色を青くする
Begin
SetPlotColor(5,Red);
SetPlotColor(6,Red);
End
else Begin
SetPlotColor(5,Blue);
SetPlotColor(6,Blue);
End;

If AlertEnabled then If Condition4 then Alert(“20日移動平均乖離率2%以上”+ Description);//もし20日移動平均乖離率が2%以上ならアラートを鳴らす。

となります。

実際のプログラム

Value1 = Average(close,5); //5日移動平均値
Value2 = Average(close,20); //20日移動平均値
Value3 = Average(close,60); //60日移動平均値

Value4 = (close-Value1)/Value1; //5日移動平均乖離率
Value5 = (close-Value2)/Value2; //20日移動平均乖離率
Value6 = (close-Value3)/Value3; //60日移動平均乖離率

Condition1 = Value4> 0;//5日移動平均乖離率がプラス
Condition2 = Value5> 0;//20日移動平均乖離率がプラス
Condition3 = Value6> 0;//20日移動平均乖離率がプラス
Condition4 = Value5> 0.02;//20日移動平均乖離率がプラス

Plot1(Value1,”5日移動平均”); //5日移動平均値を表示する。
Plot2(Value4,”5日移動平均乖離率”); //5日移動平均乖離率を表示する。 
Plot3(Value2,”20日移動平均”); //20日移動平均値を表示する。
Plot4(Value5,”20日移動平均乖離率”); //20日移動平均乖離率を表示する。
Plot5(Value3,”60日移動平均”); //60日移動平均値を表示する。
Plot6(Value6,”60日移動平均乖離率”); //60日移動平均乖離率を表示する。

If Condition1 then//もし5日移動平均乖離率がプラスなら
Begin
SetPlotColor(1,Red);//5日移動平均値の文字の色を赤くする。
SetPlotColor(2,Red);//5日移動平均乖離率の文字の色を赤くする。
End
else Begin//それ以外は
SetPlotColor(1,Blue);//5日移動平均値の文字の色を青くする。
SetPlotColor(2,Blue);//5日移動平均乖離率の文字の色を青くする。
End;

If Condition2 then//もし20日移動平均乖離率がプラスなら20日移動平均値と乖離率の文字の色を赤くする、それ以外は文字の色を青くする
Begin
SetPlotColor(3,Red);
SetPlotColor(4,Red);
End
else Begin SetPlotColor(3,Blue);
SetPlotColor(4,Blue);
End;

If Condition3 then//もし60日移動平均乖離率がプラスなら60日移動平均値と乖離率の文字の色を赤くする、それ以外は文字の色を青くする
Begin
SetPlotColor(5,Red);
SetPlotColor(6,Red);
End
else Begin
SetPlotColor(5,Blue);
SetPlotColor(6,Blue);
End;

If AlertEnabled then If Condition4 then Alert(“20日移動平均乖離率2%以上”+ Description);//もし20日移動平均乖離率が2%以上ならアラートを鳴らす。

Follow me!