【トレステ】いろんな分析テクニックを自作、アレンジしてみよう-【中級編】ーPart5ー決算日からの銘柄の動きを調べるインジケーターを作る!findbar関数



決算日からの銘柄の動きを調べるインジケーターを作る。このインジケーターは、決算が発表された翌日に、どのくらいギャップアップしたとか、もし寄付きに買ったとしてそのままもち続けてどのくらいまで上がったかを調べるために作ったインジケーターです。

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

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

決算日からの銘柄の動きを調べていきます。

では、まず自分が決算日からのどのような変化を知りたいか書き出していきます。

  1. 決算日翌日どのくらいギャップアップギャップダウンしたか。
  2. 決算日翌日の高値
  3. 決算日翌日の安値
  4. 決算日翌日の終値
  5. 決算日翌日の始値から高値までの騰落率(決算日翌日に寄りで買った場合から当日にどのくらい上がったか知りたい。)
  6. 決算日翌日の始値から安値までの騰落率(決算日翌日に寄りで買った場合から当日にどのくらい下がったか知りたい。)

  7. 決算日翌日の始値から今までの最高値(決算日翌日に寄りで買った場合、今までで最大どのくらいまで高く上がったか知りたい。)

  8. 決算日翌日の始値から今までの最高値までの値幅(決算日翌日に寄りで買った場合、今までで最大どのくらいの値幅がとれたか知りたい。)
  9. 決算日翌日の始値から今までの最高値の騰落率(決算日翌日に寄りで買った場合、今までで最大どのくらいの上がったかを騰落率で知りたい。)

  10. 決算日翌日の始値から今までの最安値(決算日翌日に寄りで買った場合、今までで最大どのくらいまで低く下がったか知りたい。)

  11. 決算日翌日の始値から今までの最安値までの値幅(決算日翌日に寄りで買った場合、今までで最大どのくらいの値幅をとって下がったか知りたい。)
  12. 決算日翌日の始値から今までの最安値の騰落率(決算日翌日に寄りで買った場合、今までで最大どのくらいの下がったかを騰落率で知りたい。)

  13. 決算日終値から今までの最高値の騰落率(決算日から持ち越した場合に今日までどのくらい上がったかを騰落率で知りたい。)

これらが、決算日翌日からどのように動いたか知りたいことで、調べたいことです。
3つに構成要素を分けてます。

◎決算日翌日の各要素
◎決算日翌日からの今日までの最高値に関する要素
◎決算日翌日から今日までの最安値に関する要素

では、各要素プログラムしていきます。

決算日翌日の各要素

まず、決算日を入力する入力を作る。入力はInput 日付をjdateとします。日付は、20180620 の YYYYMMDD形式でいれて下さい。
YはYearのY, MはMonthのM, DはDayのD

Input:jdate(0);

  1. 決算日翌日どのくらいギャップアップギャップダウンしたか。

決算日のギャップアップギャップダウンは、(決算日翌日の始値ー決算日の終値)÷ 決算日の終値 になる。
その要素、決算日翌日の始値は、どうプログラムすればいいだろう。
一日前の始値は、open[1] なので、決算日翌日の始値は、open[決算翌日までのバーの本数] になる。
なので、決算日翌日までのバーの本数を調べなくてはならない。

これを調べるために、findbar関数を使う。

findbar関数の登場

トレステのEasyLanguageのヘルプでfindbar関数を調べると

findbar(TargetDate,TargetTime)
findbar 関数は、入力 TargetDate および TargetTime によって指定された日時に一致する最初のバーをさかのぼって検索します。
TargetDateは、検索対象とするバーの日付を、YYYMMDD 形式で入力して設定します。2006 年 1 月の場合は、1060115 と入力します。
TargetTimeは、検索対象とするバーの時間を、24 時間表示形式で入力して設定します。午後 1:00 時であれば、1300 と入力します。

謎なYYYMMDD形式が登場。このYYYMMDDは、EasyLanguageの日付形式なのです。ここで便利な関数があります。
入力した日付 YYYYMMDD形式 を YYYMMDD形式 に変換してくれる関数があります。

ELDate_Consol関数の登場

トレステのEasyLanguageのヘルプでELDate_Consol関数を調べると

ELDate_Consol(YYYYMMDD)
ELDate_Consol関数は、YYYYMMDD 日付を EasyLanguage 形式 (YYYMMDD) に変換します。
YYYYMMDDは、変換される YYYYMMDD 日付を設定します。2006 年 7 月 14 日の場合は 20060714 と入力します。

ということで、流れ的に、決算日翌日の日付をYYYMMDD形式にELDate_Consol関数で変換し、findbar関数の値に代入して、決算日翌日までのバーの本数を調べるのですが、
入力する日付は決算日なので、求める決算翌日までのバーの本数  決算日までのバーの本数からバーを1本引いた数 で表示することにします。

ということで、まず、変数宣言から。
ここまで必要となる変数は、YYYMMDD形式の日付(YYYMMDD)、決算日までのバーの本数(n)、あとのギャップアップ率、騰落率等は、事前宣言変数のvalueを使います。

では、以上をふまえて各要素は、下記のようになる。

  • 決算日のYYYMMDD形式の日付 ELDate_Consol(jdate)
  • 決算日まで何本バーが有るか findbar(YYYMMDD,1501)*時間は1501と入力。これで日足参照
  • 決算日翌日のギャップ率  (Open[n-1]-close[n])/close[n]
  • 決算日翌日の高値 high[n-1]
  • 決算日翌日の安値  low[n-1]
  • 決算日翌日の終値  close[n-1]
  • 決算日翌日の始値から高値までの騰落率   (high[n-1]-Open[n-1])/Open[n-1];
  • 決算日翌日の始値から安値までの騰落率   (low[n-1]-Open[n-1])/Open[n-1];

まとめてをプログラムします。

Input:jdate(0); //決算日(YYYYMMDD形式)

Var:YYYMMDD(0),n(0);  //YYYMMDD形式の日付とバーの本数

YYYMMDD = ELDate_Consol(jdate);  //決算日をYYYMMDD形式に変換

n = findbar(YYYMMDD,1501); //決算日まで何本バーが有るか*時間は1501と入力。これで日足参照

Value1 = (Open[n-1]-close[n])/close[n]; //決算日翌日のギャップ率
Value2 = (high[n-1]-Open[n-1])/Open[n-1]; //決算日翌日の始値から高値までの騰落率
Value3 = (low[n-1]-Open[n-1])/Open[n-1]; //決算日翌日の始値から安値までの騰落率

Plot1(YYYMMDD,”決算日”);
Plot2(close[n],”決算日の終値”);
Plot3(open[n-1],”【決算日翌日】–始値”);
Plot4(Value1,”【決算日翌日】–ギャップアップ率”);
Plot5(high[n-1],”【決算日翌日】–高値”);
Plot6(low[n-1],”【決算日翌日】–安値”);
Plot7(Close[n-1],”【決算日翌日】–終値”);
Plot8(Value2,”【決算日翌日】–始値から高値までの騰落率”);
Plot9(Value3,”【決算日翌日】–始値から安値までの騰落率”);

では、次の要素を検証します。

決算日翌日からの今日までの最高値に関する要素

1.決算日翌日の始値から今までの最高値(決算日翌日に寄りで買った場合、今までで最大どのくらいまで高く上がったか知りたい。)

ある日までの最高値を調べる為に新しい関数を使います。highest関数です。

highest関数の登場

トレステのEasyLanguageのヘルプでhighest関数を調べると

highest(Price,Length)
highest関数は、一定範囲のバーについて、最高値を返します。
Priceは、close,high,low,openなどどの値を参照するか
Lengthは、考慮するバーの本数

決算日までのバーの本数は、先程出したn本なので、それをhighest関数の期間内に入れて、参照する値をhigh。
つまり翌日までのすべての高値の中で一番高い値を出します。

highest(high,n)ででます。

では、以上をふまえて各要素は、下記のようになる。

  • 決算日翌日の始値から今までの最高値 highest(high,n)
  • 決算日翌日の始値から今までの最高値までの値幅 highest(high,n)-open[n-1]
  • 決算日翌日の始値から今までの最高値の騰落率  (highest(high,n)-open[n-1])/open[n-1]

まとめてをプログラムします。

Value4 = highest(high,n);  //決算日翌日の始値から今までの最高値
Value5 = highest(high,n)-open[n-1]; //決算日翌日の始値から今までの最高値までの値幅
Value6 = (highest(high,n)-open[n-1])/open[n-1]; //決算日翌日の始値から今までの最高値の騰落率

Plot10(Value4,”現在まで最高値【決算日翌日の始値から】”);
Plot11(Value5,”現在までの最高値値幅【決算日翌日の始値から】”);
Plot12(Value6,”現在までの最高値騰落率【決算日翌日の始値から】”);

決算日翌日から今日までの最安値に関する要素

1.決算日翌日の始値から今までの最安値(決算日翌日に寄りで買った場合、今までで最大どのくらいまで低く下がったか知りたい。)

ある日までの最安値を調べる為に新しい関数を使います。lowest関数です。

lowest関数の登場

トレステのEasyLanguageのヘルプでlowest関数を調べると

lowest(Price,Length)
lowest関数は、一定範囲のバーについて、最高値を返します。
Priceは、close,high,low,openなどどの値を参照するか
Lengthは、考慮するバーの本数

決算日までのバーの本数は、先程出したn本なので、それをlow関数の期間内に入れて、参照する値をlow。
つまり翌日までのすべての高値の中で一番高い値を出します。

lowest(low,n)ででます。

では、以上をふまえて各要素は、下記のようになる。

  • 決算日翌日の始値から今までの最高値 lowest(low,n)
  • 決算日翌日の始値から今までの最高値までの値幅 lowest(low,n)-open[n-1]
  • 決算日翌日の始値から今までの最高値の騰落率  (lowest(low,n)-open[n-1])/open[n-1]

まとめてをプログラムします。

Value7 = lowest(low,n);  //決算日翌日の始値から今までの最高値
Value8 = lowest(low,n)-open[n-1]; //決算日翌日の始値から今までの最高値までの値幅*わざとマイナスにしてます。
Value9 = (lowest(low,n)-open[n-1])/open[n-1]; //決算日翌日の始値から今までの最高値の騰落率

Plot13(Value7,”現在まで最安値【決算日翌日の始値から】”);
Plot14(Value8,”現在までの最安値値幅【決算日翌日の始値から】”);
Plot15(Value9,”現在までの最安値騰落率【決算日翌日の始値から】”);

これで終わりです。

最後に、決算日終値から今までの最高値の騰落率(決算日から持ち越した場合に今日までどのくらい上がったかを騰落率で知りたい。)は、

  • 決算日終値から今までの最高値の騰落率 (highest(high,n)-close[n])/close[n]

まとめてをプログラムします。

Value10 = (highest(high,n)-close[n])/close[n];  //決算日終値から今までの最高値の騰落率

Plot16(Value10,”現在まで最高値騰落率【決算日の終値から】”);

ということで、すべてをまとめると

実際のプログラム

Input:jdate(0); //決算日(YYYYMMDD形式)

Var:YYYMMDD(0),n(0); //YYYMMDD形式の日付とバーの本数

YYYMMDD = ELDate_Consol(jdate); //決算日をYYYMMDD形式に変換

n = findbar(YYYMMDD,1501); //決算日まで何本バーが有るか*時間は1501と入力。これで日足参照

Value1 = (Open[n-1]-close[n])/close[n]; //決算日翌日のギャップ率
Value2 = (high[n-1]-Open[n-1])/Open[n-1]; //決算日翌日の始値から高値までの騰落率
Value3 = (low[n-1]-Open[n-1])/Open[n-1]; //決算日翌日の始値から安値までの騰落率

Plot1(YYYMMDD,”決算日”);
Plot2(close[n],”決算日の終値”);
Plot3(open[n-1],”【決算日翌日】–始値”);
Plot4(Value1,”【決算日翌日】–ギャップアップ率”);
Plot5(high[n-1],”【決算日翌日】–高値”);
Plot6(low[n-1],”【決算日翌日】–安値”);
Plot7(Close[n-1],”【決算日翌日】–終値”);
Plot8(Value2,”【決算日翌日】–始値から高値までの騰落率”);
Plot9(Value3,”【決算日翌日】–始値から安値までの騰落率”);

Value4 = highest(high,n); //決算日翌日の始値から今までの最高値
Value5 = highest(high,n)-open[n-1]; //決算日翌日の始値から今までの最高値までの値幅
Value6 = (highest(high,n)-open[n-1])/open[n-1]; //決算日翌日の始値から今までの最高値の騰落率

Plot10(Value4,”現在まで最高値【決算日翌日の始値から】”);
Plot11(Value5,”現在までの最高値値幅【決算日翌日の始値から】”);
Plot12(Value6,”現在までの最高値騰落率【決算日翌日の始値から】”);

Value7 = lowest(low,n); //決算日翌日の始値から今までの最高値
Value8 = lowest(low,n)-open[n-1]; //決算日翌日の始値から今までの最高値までの値幅*わざとマイナスにしてます。
Value9 = (lowest(low,n)-open[n-1])/open[n-1]; //決算日翌日の始値から今までの最高値の騰落率

Plot13(Value7,”現在まで最安値【決算日翌日の始値から】”);
Plot14(Value8,”現在までの最安値値幅【決算日翌日の始値から】”);
Plot15(Value9,”現在までの最安値騰落率【決算日翌日の始値から】”);

Value10 = (highest(high,n)-close[n])/close[n]; //決算日終値から今までの最高値の騰落率

Plot16(Value10,”現在まで最高値騰落率【決算日の終値から】”);


*ご注意:インジケータをレーダースクリーンに入れた後、すべての銘柄のインジケーター設定のスタイルで、決算日は、カテゴリーを日付に。各騰落率は、カテゴリーをパーセントにして下さい。後カラー設定を適当に変更して下さい。

後、インジケーターをレーダースクリーンに入れた時、プロットの表示が見にくい可能性がありますので、プロット名をお好みで変更して下さい。

また、SetPlotColorやSetPlotBGColorなどで、条件で文字の色を変えたり、枠の色を変えたり見やすくアレンジすると良いかもしれません。

【トレステ】超簡単な分析テクニックを自作してみよう【超初級編】ーPart6ーもし前日比がプラスなら文字を赤く、マイナスなら文字を青く。If文を使う。


Follow me!