【トレステ】いろんな分析テクニックを自作、アレンジしてみよう-【中級編】ーPart1ー外部データを読み込む事でメモを銘柄コードと紐付ける。これでレーダースクリーンがパワーアップ。



『超簡単な分析テクニックを自作してみよう【超初級編】ーPart7ー銘柄のテーマ、事業内容、決算日など説明(メモ)を表示する分析テクニックを作る。文字入力をする。』

で、作った説明を表示する分析テクニックですが、違うレーザースクリーンにこのメモを表示する分析テクニックを入れて銘柄を入力して、最初に入力したメモは表示されません。
銘柄にメモは紐づけされないのです。
ですので、ウィンドウが変わる度にメモに新しく同じメモの内容を入力しないといけません。
これはかなり手間なのです。それを打破するために、外部ファイルにメモの内容などのデータを格納してトレステでそのデータを読み込む方法(トレステが外部データを取り込む事が出来るようにする方法)で、全てのウィンドウに銘柄と外部に保存したメモを紐づけたいと思います!これはものすごく便利なのです!

この分析テクニックは、僕がもっとも尊敬するイージランゲージプログラムの師匠『ぽぬきちさん』のプログラムを参考、アレンジして作成します。

最高です!有難うございます!!

ぽぬきちさんのサイトイージーランゲージを勉強する/Study Easylanguage

参考にしたプログラムは、僕にはとっても難しかったので、部分的にわかった部分を変化さして新しくつくりました。

今回は、超初級編のPart7で作った様に、テーマ、事業内容、備考のメモをつくります。

決算日を表示するプログラムは、ぽぬきちさんのサイトの決算日を表示を御覧ください。このぽぬきちさんのプログラムは、マストです!

先程説明したように部分的な理解で、部分的に変化さしたので、
今回はいつもの手順でなく、実際のプログラムから紹介した後、理解が必要なところは赤い文字にしています、そこだけ説明します。
それ以外の部分は、まるまる使用して頂く形で良いと思います。

これをマスターし、今回下記で指定した箇所を自由に変化させれば、かなり応用が効くので、これは超重要です!
必ず、マスターしましょう!

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

実際のプログラム

using elsystem.io;
using elsystem.collections;

Inputs: string iFile(“D:\bcomisann.txt”) [DisplayName=”フォルダまでのパス”];

vars: StreamReader SR(null),
StreamWriter SW(null),

Dictionary dRead(null),
Vector vRead(null);

Method Void CreateSR()
Begin

SR = StreamReader.Create(iFile,elsystem.text.Encoding.UTF8 );

While SR.EndOfStream = false
Begin
vRead = SR.ReadLine().Split(” “);
if vRead.at(0) asType string = Symbolroot Then
Begin
dRead.Add(symbolroot, DicSR() );
Break;
End;
End;
SR.Close();

if vRead.at(0) asType string = Symbolroot Then
Begin
Plot1 ( vRead.at(2) asType string, “テーマ” );

Plot2 ( vRead.at(3) asType string, “事業内容” );
Plot3 ( vRead.at(4) asType string, “備考” );

End
Else Begin
Plot1 ( “-“, “テーマ” );
Plot2 ( “-“, “事業内容” );
Plot3 ( “-“, “備考” );
End;
End;

Method Dictionary DicSR()
Vars: Dictionary d1;
Begin
d1 = new Dictionary();
d1.Add(“コード”, vRead.at(0) asType string );
d1.Add(“銘柄名”, vRead.at(1) asType string );
d1.Add(“テーマ”,vRead.at(2) asType string );
d1.Add(“事業内容”,vRead.at(3) asType string );
d1.Add(“備考”,vRead.at(4) asType string );
Return d1;
End;

Once Begin
Clearprintlog;
dRead = new Dictionary;
vRead = new Vector;
CreateSR();
End;

では、プログラムを順をおって説明しますが、その前に読み込むデータファイルの準備方法から説明します。

読み込むデータファイルの準備。

【手順1】windowsメモ帳にデータを書いていく。エクセルをお持ちの方は、手順2にデータはエクセル管理がオススメ

  1. windowsのメモ帳に一番左から順に『銘柄コード』『銘柄名』『テーマ』『事業内容』『備考』を入力していきます。その時、各項目の間にスペースを入れます。
    銘柄コードと銘柄名に関しては、トレステのレーダースクリーンからコピーしてペーストしたほうが楽なので、
    最初に『テーマ』『事業内容』『備考』をメモしたい銘柄の銘柄コードをまずレーダースクリーンに入力、
  2. その後、レーダースクリーン上でで銘柄コードとや銘柄名コピーしてメモにペーストします。
    これで、まずメモに『銘柄コード』と『銘柄名』が記入されました。*しかし、銘柄コードは数字のみの表記でしか認識しないので、銘柄コードの後にある『-TS』を消さないといけません。『7203-TS』なら『7203』にしなければいけません。
  3. 次に、『銘柄名』の後にスペースを入れて、『テーマ』を書き、その後にスペースを入れて、『事業内容』を書き、その後にスペースを入れて、『備考』を書きます。その後はスペースは要りません。*スペースは半角で入力。*注意、もし書くことがない場合、『ー』などを入力して下さい。データが無いとエラーが出ます。
  4. 全ての銘柄を書き終えたら、ファイルを名前をつけて保存し、保存場所をボリューム(D:)にファイルの種類はテキスト文書、文字コードはUTF-8で保存します。
  5. ファイル名はローマ字であれば何でも良いです。これで準備完了です。

【手順2】エクセルにデータを書いていく

  1. エクセルに一番左から順に『銘柄コード』『銘柄名』『テーマ』『事業内容』『備考』を入力していきます。
    銘柄コードと銘柄名に関しては、トレステのレーダースクリーンからコピーしてペーストしたほうが楽なので、
    最初に『テーマ』『事業内容』『備考』をメモしたい銘柄の銘柄コードをまずレーダースクリーンに入力、
  2. その後、レーダースクリーン上で銘柄コードとや銘柄名コピーしてエクセルにペーストします。
    これで、エクセルに『銘柄コード』と『銘柄名』が記入されました。*しかし、銘柄コードは数字のみの表記でしか認識しないので、銘柄コードの後にある『-TS』を消さないといけません。エクセルは便利な機能があって『Ctrl+H』で検索と置換という機能があり、文字列から指定した文字を消す機能があります。それを使います。銘柄コードを全選択した状態で、『Ctrl + H』 を押して検索と置換ウィンドゥをだして、置換のタブをクリックして検索する文字列に要らない部分『-TS』を入力して、すべて置換をおせば、銘柄コードは数字だけになります。おそらく『-JQ』などもあるので同じ手順で消して下さい。
  3. 次に、『銘柄名』の後に『テーマ』を書き、『事業内容』を書き、『備考』を書きます。
    *注意、もし書くことがない場合、『ー』などを入力して下さい。データが無いとエラーが出ます。
  4. 全ての銘柄を書き終えたら、全ての行の要素を半角スペースをあけてつなげます。
    F2=CONCATENATE(A2,” “,B2,” “,C2,” “,D2,” “,E2)。つなげたら、その部分をコピーして、windowsメモ帳にペーストします。
    *全ての行の要素を半角スペースをあけてつないだモノをペーストせず、そのままペーストすると、各要素の間に余計なスペースが入り、ファイルをちゃんと読み込まないのです。
  5. ペーストしてできた、メモファイルを名前をつけて保存し、保存場所をボリューム(D:)にファイルの種類はテキスト文書、文字コードはUTF-8で保存します。
  6. ファイル名はローマ字であれば何でも良いです。これで準備完了です。

元データをエクセルで作り、そのデータをコピーしてメモに貼り付ける。これで管理もしやすく超時間短縮になりますので手順2がおすすめです!

だったら、エクセルを読み込めばイイじゃん。と思われる方もちらほら。これはおそらくですが、メモファイルのほうがファイル的に軽く、読み込みがスムーズだと思います。これはたぶんです。僕自身エクセルのデータを以前読み込んでたのですが、重すぎたのもあったので止めました。

データファイルの準備ができました。

プログラムを順をおって説明します。

Inputs: string iFile(“D:\bcomisann.txt“) [DisplayName=”フォルダまでのパス”];

この部分は、読み込むデータファイルの場所を書き込む場所です。プログラムの黒い部分が先程準備したメモファイルの保存場所になります。
僕は、ファイル名をbcomisann.txtで格納場所がボリュームD、Dドライブのトップに保存しました。

if vRead.at(0) asType string = Symbolroot Then  //この部分は『vRead.at(0)で下のディクショナリー(辞書)の名前を読む。symbolroot は銘柄コードです。ですので、この意味は、ディクショナリーの名前が銘柄コードと一致したらという意味です。ディクショナリーの意味は考え方的に、データを格納したメモ帳をディクショナリー(辞書)としてプログラム上で使うという意味な感じだと思います。ディクショナリーの名前が銘柄コードで、辞書の中身が銘柄名であったり、テーマな感じですかね

if vRead.at(0) asType string = Symbolroot Then  //ここも上の説明と同じです
Begin
Plot1 ( vRead.at(2) asType string, “テーマ” );  //Plot文なのでこれは、辞書の2番目のデータ(メモ帳の3番目のデータ)を表示する。項目はテーマ
Plot2 ( vRead.at(3) asType string, “事業内容” ); //Plot文なのでこれは、辞書の3番目のデータ(メモ帳の4番目のデータ)を表示する。項目は事業内容
Plot3 ( vRead.at(4) asType string, “備考” );  //Plot文なのでこれは、辞書の4番目のデータ(メモ帳の5番目のデータ)を表示する。項目は備考

End
Else Begin                     //メモ帳のデータファイルにその銘柄コードがなければ、
Plot1 ( “-“, “テーマ” );              // -を表示して下さい。
Plot2 ( “-“, “事業内容” );
Plot3 ( “-“, “備考” );
End;
End;

Method Dictionary DicSR()
Vars: Dictionary d1;
Begin
d1 = new Dictionary();
d1.Add(“コード”, vRead.at(0) asType string );  //この部分で辞書を作っています。辞書の名前、ラベルになる。(銘柄コード)
d1.Add(“銘柄名”, vRead.at(1) asType string );  //メモ帳の2番目のデータは銘柄名とする
d1.Add(“テーマ”,vRead.at(2) asType string );       //メモ帳の3番目のデータはテーマとする
d1.Add(“事業内容”,vRead.at(3) asType string ); //メモ帳の4番目のデータは事業内容とする
d1.Add(“備考”,vRead.at(4) asType string );  //メモ帳の5番目のデータは備考とする
Return d1;
End;

Once Begin
Clearprintlog;
dRead = new Dictionary;
vRead = new Vector;
CreateSR();
End;


整理すると

vRead.at(0) asType string:windowsメモ帳の左から1番目のデータを文字データとして読む
vRead.at(1) asType string:windowsメモ帳の左から2番目のデータを文字データとして読む
vRead.at(2) asType string:windowsメモ帳の左から3番目のデータを文字データとして読む
vRead.at(3) asType string:windowsメモ帳の左から4番目のデータを文字データとして読む
vRead.at(4) asType string:windowsメモ帳の左から5番目のデータを文字データとして読む

ですので、もし更にテーマを増やしたいならこの行を増やしていけばいいだけなのです!

では、読み込むデータを増やして『テーマ1』『テーマ2』を足して、
表示する項目を『テーマ1』『テーマ2』『事業内容』『備考』と増やしてみましょう!

読み込むファイルのデータもこの順で書き換えます。

下のように書き換えます。増やした部分だけ赤くします

using elsystem.io;
using elsystem.collections;

Inputs: string iFile(“D:\bcomisann.txt”) [DisplayName=”フォルダまでのパス”];

vars: StreamReader SR(null),
StreamWriter SW(null),

Dictionary dRead(null),
Vector vRead(null);

Method Void CreateSR()
Begin

SR = StreamReader.Create(iFile,elsystem.text.Encoding.UTF8 );
While SR.EndOfStream = false
Begin
vRead = SR.ReadLine().Split(” “);
if vRead.at(0) asType string = Symbolroot Then
Begin
dRead.Add(symbolroot, DicSR() );
Break;
End;
End;
SR.Close();

if vRead.at(0) asType string = Symbolroot Then
Begin
Plot1 ( vRead.at(2) asType string, “テーマ1” );
Plot2 ( vRead.at(3) asType string, “テーマ2” );

Plot3( vRead.at(4) asType string, “事業内容” );
Plot4 ( vRead.at(5) asType string, “備考” );

End
Else Begin
Plot1 ( “-“, “テーマ1” );
Plot2 ( “-“, “テーマ2” );

Plot3 ( “-“, “事業内容” );
Plot4 ( “-“, “備考” );
End;
End;

Method Dictionary DicSR()
Vars: Dictionary d1;
Begin
d1 = new Dictionary();
d1.Add(“コード”, vRead.at(0) asType string );
d1.Add(“銘柄名”, vRead.at(1) asType string );
d1.Add(“テーマ1”,vRead.at(2) asType string );
d1.Add(“テーマ2”,vRead.at(3) asType string );

d1.Add(“事業内容”,vRead.at(4) asType string );
d1.Add(“備考”,vRead.at(5) asType string );
Return d1;
End;

Once Begin
Clearprintlog;
dRead = new Dictionary;
vRead = new Vector;
CreateSR();
End;

 

これで終わりです。

Follow me!