株価分析にエクセルを活用していますか?
エクセルを使った株価分析を実践している方の多くは、次の手順で分析を進めていると思います。
- 証券会社のHPや、トレードツールから株価データーをダウンロード
- エクセルに取り込んで、データーを整形(区切り位置やデータ形式の調整)
- 株価分析
やりたいのは3番目の株価分析です。
1番目2番目の手順が面倒で、分析まで手を出せていない方も多いのでは?
「9割の個人投資家が損をしている」のが株式投資の世界です。
※関連記事はこちら ついに事実判明! 株式投資をしている何割の人が損をしているか? [株式投資で勝つ確率]
厳しい株式投資の世界で生き残るためには、他の投資家の1歩先を進む必要があるでしょう。
マネックス証券のトレードツール「トレードステーション(トレステ)」なら、エクセルに直接データーを書き込んだり、エクセルで計算した結果をトレードステーションに戻すことも出来ます。
「トレードステーション(トレステ)」と、「エクセル」を完全連携させて株価分析を効率化させましょう。
この記事で紹介する内容は、「手順が複雑だなぁ」と感じる方も多いと思います。
たしかに複雑かも知れません。
ただし、1度設定してしまえば繰り返し作業が自動化されますので、次回からは大幅に株価分析までの時間が短縮されます。
とくに株価分析に充てる時間が少ない、個人投資家のあなたにオススメします。
なお、サイト管理者とマネックス証券との間にスポンサー契約等の利害関係はありません。
1人のユーザーとして、「個人投資家の方々に広く知ってもらいたい」この思いで、記事を作成・公開しています。
スポンサーリンク
トレードステーションとは
マネックス証券が提供する、高機能トレーディングツールです。
アメリカの証券会社「TradeStation社」トレーディングツールの日本株版となります。
画像の出所:マネックス証券HP https://info.monex.co.jp/tradestation/about/
TradeStation社は、アメリカで最も権威のある金融メディアの一つである「バロンズ」紙において、2011年から8年連続で最高評価を獲得しています(オンライン証券会社アクティブトレーダー部門)。
またアクティブトレーダーへの調査においても、最も優れた株式取引ツールと評価されています。出所:マネックス証券HP https://info.monex.co.jp/tradestation/about/
トレードステーションとエクセルのデーター連携
トレードステーションとエクセルのデーター連携はどのように行うか?
それは、トレードステーションの「Easy Languageオブジェクト」という機能を使います。
プログラムコードを書く必要があるので、ハードルが高い印象を持っている方も多いでしょう。
「えっ!プログラム?」「ムリムリ!」
このように思う方が大半かも知れません。
でも、思い出してください。
株式投資の世界では「9割の個人投資家が損をしている」のです。
あなたは大半のなかに埋もれる事を望みますか?
1割の勝者に成るために、少しの間お付き合いください。
Easy Languageオブジェクト
「Easy Languageオブジェクト」を使いこなすには、プログラミングの知識が必要になります。
あなたの目的は「良い投資を行う」ことで、「良いプログラマー」になる事ではありませんよね。
このページの記事では、プログラミングの知識が無くても、わかるように手順を解説してゆきます。
しっかり「Easy Languageオブジェクト」について勉強をしたい方は、マネックス証券のホームページからガイドブックがダウンロード出来ますので、参照してください。
Easy Languageオブジェクトガイドブックは こちら。 https://info.monex.co.jp/tradestation-support/manual.html#01
※このページの記事では、Easy LanguageオブジェクトガイドブックP78~P83ページまでの内容を参考にしています。
エクセルの準備
データーを書き込むエクセルを先に準備しておきます。
Cドライブの直下に「TSlink」フォルダを作り
C:¥TSlink
エクセルを次の名前を付けて保存します。
linkBook1.xlsx
※保存フォルダや、ファイル名は任意に変更可能ですが、始めての方は同じ条件で作成してください。
Trade station開発環境の起動
トレードステーションを起動したら、画面左端の「トレーディングアプリ」タブをクリックし、「Easy Languageプログラム開発」アイコンをクリックします。
Trade station開発環境のエディターが起動したら、「ファイル」-「新規作成」ー「インジケーター」と進みます。
任意のファイル名を付けましょう。
私は「20140526Excel連携」としました。
本当は作成時が2019年05月26日なので、20190526とするべきでしたが、タイプミスで20140526になってしまいました。
動作には影響がないのでこのまま進めます。
Trade station開発環境のエディター左上の、「ツールボックスタブ」にマウスポインターを移動します。
すると「ツールボックスパネル」が現れますので、エクセルコンポーネントをダブルクリックしてください。
エディターの下部にエクセルコンポーネントが表示されます。
- Trade station開発環境のエディター右上の、「プロパティタブ」にマウスポインターを移動します。
- すると「プロパティパネル」が現れますので、エクセルコンポーネントをクリックしてください。
- 事前に準備したエクセルの保存フォルダと、ファイル名を入力します。 ( ” を忘れずに)
- エクセルコンポーネントのプロパティ名を「WkBk」に変更してください。
ここまでで、事前準備は完了です。
プログラムコードお試し
いよいよ、プログラムコードを書いてゆきましょう。
まずは動作を確認する為に、お試しのプログラムです。
Trade station開発環境のエディターに、下のプログラムコードを書き込みます。
ご自分の手で直接入力する事をオススメしますが、下のコードをコピーアンドペーストしてもOKです。
プログラムコード ここから====
WkBk[“Sheet1”].Cells[1,1] = “aaa” ;
WkBk[“Sheet1”].Cells[2,2] = “bbb” ;
WkBk[“Sheet1”].Cells[3,3] = “ccc” ;
プログラムコード ここまで====
コピーアンドペーストで貼り付ける場合、 ” が全角で張り付く場合がありますので、その際は手で修正してください。
入力が終わったら、エディターのチエックボタンを押して、プログラムに間違いが無いか確認します。
エディター左下のアウトプットウインドウに「0エラー、0警告」と表示されていればOKです。
別のエラーメッセージが出ていれば、どこかに間違えがありますので、修正してください。
プログラムコードの意味
プログラムコードの意味を解説します。
WkBk[“Sheet1”].Cells[1,1] = “aaa” ;
◇WkBk
先の手順でエクセルコンポーネントのプロパティ名を「WkBk」に変更したのを覚えていますか?
このプロパティ名を指定しています。
◇[“Sheet1”]
エクセルのシート名を指定しています。
ここでは、標準のシート名 Sheet1 を指定しています。
◇Cells[1,1]
セルの場所を指定しています。
Cells[1,1]は1列目、1行目の意味です。
Cells[2,2]になると2列目、2行目の意味に変わります。
◇Cells[1,1] = “aaa” ;
Cells[1,1] 1列目、1行目 に 文字列 aaa を入力するという意味です。
最後の ; は プログラムの終わりを意味しています。
プログラムコードを適応
お試しで作成した、プログラムコードを動かしてみましょう。
トレードステーションのチャートを表示させてください。
チャート上で右クリック。
分析テクニックを挿入を選びます。
今回作成したプログラム「20140526Excel連携」を選んでOKボタンを押します。
設定ウインドウが開きますが、変更せずにそのままOKボタンを押します。
すると間もなく、エクセルが起動します。
プログラムコードと比較してみましょう。
WkBk[“Sheet1”].Cells[1,1] = “aaa” ;
WkBk[“Sheet1”].Cells[2,2] = “bbb” ;
WkBk[“Sheet1”].Cells[3,3] = “ccc” ;
エクセルのシート名”Sheet1″のセルCells[1,1](1列、1行)に “aaa”が入力されています。
エクセルのシート名”Sheet1″のセルCells[2,2](2列、2行)に “bbb”が入力されています。
エクセルのシート名”Sheet1″のセルCells[3,3](3列、3行)に “ccc”が入力されています。
ココで注意。
先の手順でエクセルコンポーネントのプロパティ名を「WkBk」に変更しましたね。
プログラムコード先頭の「WkBk」でエクセルコンポーネントのプロパティ名を指定しています。
WkBk[“Sheet1”].Cells[1,1] = “aaa” ;
上の図③で指定した場所にあるエクセルファイルが起動しています。
事前に準備しておいた、「linkBook1.xlsx」ですね。
ひょっとすると、エクセルが自動的に立ち上がらなかった方もいるかも知れません。
エクセルコンポーネントのプロパティ設定が違っている可能性があります。
エクセルコンポーネントのプロパティ設定
少しわかりにくい、エクセルコンポーネントのプロパティ設定について、解説します。
今回設定したプロパティウインドウはこちらです。
◇FileName
コンピューター上の Excel スプレッドシートのパスおよびファイル名。
◇Shared
真の場合、複数の Workbook オブジェクト全体で 1 つの Excel スプレッドシートを共有します。共有されない場合は偽です。
◇Visible
真の場合は接続時にスプレッドシートを表示し、偽の場合は表示せずにスプレッドシートをアップデートします。
◇Load
真の場合、スプレッドシートへの接続を読み込んで開きます。
◇SaveOnClose
真の場合、接続を閉じたときにスプレッドシートに加えた変更を保存します。
◇Name
エクセルコンポーネントのプロパティ名
※各プロパティの解説文はTrade station開発環境のヘルプから抜粋しました。
スポンサーリンク
株価の取得
それでは、株価を取得してみましょう。
今まで使用していた、プログラムを発展させます。
ファイル名を変えて保存します。
「ファイル」ー「名前を付けて保存」を選びます。
任意のファイル名を付けましょう。
私は「20190602Excel連携」としました。
Trade station開発環境のエディターに、下のプログラムコードを書き込みます。
入力が終わったら、エディターのチエックボタンを押して、プログラムに間違いが無いか確認してください。
エディター左下のアウトプットウインドウに「0エラー、0警告」と表示されていればOKです。
別のエラーメッセージが出ていれば、どこかに間違えがありますので、修正してください。
ご自分の手で直接入力する事をオススメしますが、下のコードをコピーアンドペーストしてもOKです。
プログラムコード ここから====
Vars:
WBTab(“Sheet1”),Cnt(11);
WkBk[WBTab].Cells[1,Cnt] = date;
WkBk[WBTab].Cells[2,Cnt] = time;
WkBk[WBTab].Cells[3,Cnt] = open;
WkBk[WBTab].Cells[4,Cnt] = close;
Cnt = Cnt + 1
プログラムコード ここまで====
コピーアンドペーストで貼り付ける場合、 ” が全角で張り付く場合がありますので、その際は手で修正してください。
プログラムコードの意味
プログラムコードの意味を解説します。
◇Vars:
変数を宣言します。 変数は : の後に記載します。
◇WBTab(“Sheet1”),Cnt(11);
変数名 WBTab 、 初期値 Sheet1
変数名 Cnt 、 初期値 11(数字の11)
◇WkBk[WBTab].Cells[1,Cnt] = date;
変数:WBTabには、初期値の ”Sheet1“ が入っています。
変数:Cntには、最初に初期値の11(数字の11)が入っていますが、ローソク足毎に Cnt に1増えた数値が入ります。
これによって、ローソク足毎に1行下のセルに数値が入ることになります。
予約語 date : ローソク足の日付を取得します。
◇WkBk[WBTab].Cells[2,Cnt] = time;
予約語 time : ローソク足の時間を取得します。
◇WkBk[WBTab].Cells[3,Cnt] = open;
予約語 open : ローソク足の始値を取得します。
◇WkBk[WBTab].Cells[4,Cnt] = close;
予約語 close : ローソク足の終値を取得します。
◇Cnt = Cnt + 1
プログラムコードはチャートのローソク足毎に計算されます。
計算順順序はローソク足の古い順です。(過去から始まって、一番新しい足まで計算して終わり)
ローソク足毎に計算が終わったら、Cntを1つ増やします。
チャートに適応して株価を取得
チャートに適応して株価を取得します。
トレードステーションのチャートを表示させてください。
チャート上で右クリック。
分析テクニックを挿入を選びます。
作成したプログラム「20190602Excel連携」を選んで適応します。
エクセルが立ち上がり株価データーがエクセルシートに登録されました。
適応したチャートが、日経平均株価の30分足だったので、30分ごとの株価が登録されています。
A列のDateのデータを見てください。
A列11行の値は「1190507」になっています。
「1190507」は2019年05月07日を表しています。
これは、Easy Language独特の日付表記で、「1190507」先頭の数字1が西暦2000を表しています。
Date は、日付が 2000 年 1 月 7 日の場合、1000107 を返します。
Date は、日付が 1999 年 4 月 12 日の場合、990412 を返します。
出所:Easy Languageヘルプ
エクセルシートの情報をトレードステーションに取得
これまでとは逆に、エクセルシートの情報をトレードステーションに取得する事も出来ます。
実用的ではありませんが、試しにエクセルで「日経平均株価始値の平均値」を求めて、トレードステーションで表示させてみます。
C8セルに平均値を求める関数を入力します。(Open/始値の平均値)
ファイルを上書き保存してください。
Trade station開発環境のエディターに、追加のプログラムコードを書き込みます。
追加した部分は、2行目の ,AVG(0) と 13行目以降です。
入力が終わったら、エディターのチエックボタンを押して、プログラムに間違いが無いか確認してください。
エディター左下のアウトプットウインドウに「0エラー、0警告」と表示されていればOKです。
別のエラーメッセージが出ていれば、どこかに間違えがありますので、修正してください。
エラーが無ければ次のように、印刷ログウインドにエクセルで計算した平均値が表示されます。
初期設定では、印刷ログウインドはチャートの下部に表示されるように設定されています。
表示されない場合は、次の手順を実行してください。
・print文で指示したデーターを確認するには、印刷ログウインドを表示させます。
追加したプログラムコードの意味
追加したプログラムコードの意味を解説します。
◇,AVG(0);(2行目右端に追加)
変数を宣言します。
変数名 AVG 、 初期値 0(数字のゼロ)
エクセルで計算した、平均値を入れる変数です。
◇Once (LastBarOnChartEx) Begin
Easy Languageのプログラムコードはチャートのローソク足毎に計算されます。
計算順順序はローソク足の古い順です。(過去から始まって、一番新しい足まで計算して終わり)
ただし、最後の足のときだけ計算させたいときには、このプログラムコードを使います。
最後のローソク足になったら、Begin と End; の間に書かれたプログラムコードを1度だけ実行します。
◇ClearPrintLog;
過去に出力された、プリントログを消去します。
◇AVG = WkBk[WBTab].CellsAsDouble[3,8];
エクセルシートの、3列目、8行目の値を AVG変数に入れます。
CellsAsDouble については下の表を参照願います。
出所:Easy Language ヘルプ
◇Print(“OpenAVG=”,AVG);
AVG変数の値を印刷ログウインドに表示します。
◇End;
Once (LastBarOnChartEx) Begin の終わりです。
株価の取得順序を変更する
エクセルで株価分析をする為に、「新しいデーターを一番上に表示して、順次古いデーターを下の行に表示させたい」
このように思うのは私だけでしょうか?
「エクセルに取り込んだのだから、ソートすれば良いじゃん」
まさにその通りです。
でも、毎回ソートさせるのも面倒ですよねぇ。
ここまでに解説した手順で、株価をエクセルに取得することが出来るようになりました。
下の例は適応したチャートが、日経平均株価の30分足だったので、30分ごとの株価が登録されています。
B列のTimeがローソク足の時間です。
データーは、1番古いローソク足のデーターから新しい順に取得されているのが分かります。
※Easy Language独特の日付表示の、おさらいをしましょう。
A列のDateのデータを見てください。
A列11行の値は「1190507」になっています。
「1190507」は2019年05月07日を表しています。
これは、Easy Language独特の日付表記で、「1190507」先頭の数字1が西暦2000を表しています。
Date は、日付が 2000 年 1 月 7 日の場合、1000107 を返します。
Date は、日付が 1999 年 4 月 12 日の場合、990412 を返します。
出所:Easy Languageヘルプ
上の例では、
Date:1190507 は 2019年05月07日
Time:1000 は 10時00分
Time:1030 は 10時30分
となります。
データーを取得するプログラムEasy Languageは、ローソク足の単位で実行されます。
計算の順番は、チャートに表示された一番古いローソク足(1番左)から、新しいローソク足(右側)に向かって、実行されます。
このため、古いデータが一番上に取得され、新しいデーターが一番下に取得されることになります。
下のように、プログラムコードを書き換えました。
プログラムコードの意味
◇CntBarN(0);(2行目右端に追加)
変数を宣言します。
変数名 CntBarN 、 初期値 0(数字のゼロ)
何本目のローソク足情報を取得するか、指定する数値を入れる変数です。
◇Once (LastBarOnChartEx) Begin
Easy Languageのプログラムコードはチャートのローソク足毎に計算されます。
計算順順序はローソク足の古い順です。(過去から始まって、一番新しい足まで計算して終わり)
ただし、最後の足のときだけ計算させたいときには、このプログラムコードを使います。
最後のローソク足になったら、Begin と End; の間に書かれたプログラムコードを1度だけ実行します。
◇For CntBarN = 0 to MaxBarsBack+CurrentBar-1 Begin
CntBarN:何本目のローソク足情報を取得するか、指定する数値を入れる変数
CntBarN 変数の中身は、”0”からスタートして、1番古いローソク足の数まで増えます。
MaxBarsBackとCurrentBarは少々分かりにくいので、Easy Languageヘルプを見てください。
意味を追求せずに、「おまじない」だと思って使うのも1つの手だと思います。
○MaxBarsBack
過去のデータを参照するすべての取引ストラテジー、分析テクニックおよび関数は、計算の実行を開始するまで一定数の足を待機する必要があります。この待機期間は、分析テクニックについて調整でき、スタディが参照する足の最大本数、すなわち、MaxBarsBack と呼ばれます。たとえば、10 本の移動平均を求めるには、MaxBarsBack を 10 に設定する必要があり、すなわち、9 個の足履歴と現在の足が計算に必要です。
出所:Easy Languageヘルプ
○CurrentBar
現在評価されている足の数を返します。
チャートの (スタディによって参照される最大本数である MaxBarsBack によって指定された足数の後の) 各バーに番号が割り当てられ、番号は後続の足のそれぞれについて 1 ずつ増分されます。たとえば、MaxBarsBack が 10 に設定された場合、11 番目の足は CurrentBar 番号 1 であり、12 番目の足は CurrentBar 番号 2 であり、以下同様です。
出所:Easy Languageヘルプ
◇WkBk[WBTab].Cells[1,CntBarN+11] = date[CntBarN];
変数 WBTab には、エクセルのシート名 ”Sheet1″ が入っています。
シート名 Sheet1 の 1列目、(CntBarN+11)行目 に date[CntBarN] が登録されます。
変数 CntBarN は、 ”0” から順に チャートに表示されているローソク足の最大数まで増えます。
”0” は1番新しいローソク足を示していて、 ”1” は1つ古いローソク足を示します。
この変更したプログラムにより取得された、エクセルシートの例です。(ローソク足は30分足)
複数の株価を取得する
トレードステーションのチャートには、複数の銘柄を同時に表示することが出来ます。
どうせなら一緒にダウンロードするプログラムに変更しましょう。
チャートを準備します。
下のチャートは上から、米ドル/円、日経平均株価、NYダウ平均を表示させました。
プログラムコードを下のように変更しました。
変更したプログラムコードの意味
◇For CntBarN = 0 to 100 Begin(6行目)
変更前はこちらです: For CntBarN = 0 to MaxBarsBack+CurrentBar-1 Begin
ローソク足のデーターを取得する本数を ”100” に固定しました。
これは、データー取得後にエクセルで株価を自動集計する際に、手間を省くためです。
チャートにローソク足データーが200足以上表示されていれば、150でも200でも構いません。
◇WkBk[WBTab].Cells[11,CntBarN+11] = date[CntBarN] of Data2;(14行目)
プログラムコードの最後に ”of Data2” を追加しています。
これで、2番目に表示されているチャートの情報が取得出来ます。
エクセルに取得する列を変更しています。 Cells[11,
◇ WkBk[WBTab].Cells[21,CntBarN+11] = date[CntBarN] of Data3;(19行目)
プログラムコードの最後に ”of Data3” を追加しています。
これで、2番目に表示されているチャートの情報が取得出来ます。
エクセルに取得する列を変更しています。 Cells[21,
複数銘柄データーの注意点
エクセルに3銘柄のデーターが取得されました。
ここで注意が必要です。
上の例では、米ドル/円、日経平均株価、NYダウ平均の情報を取得しました。
チャートをもう一度見てみましょう。
中段のローソク足が、日経平均株価です。
中央付近にローソク足が表示されていない期間があります。
なぜだか分かりますか?
表示されていない期間は4月末から5月の前半にかけて。
そうです。 「10連休!」と話題になった2019年のゴールデンウィーク期間です。
日本取引所は休場していても、為替やNY証券取引所では取引をしています。
エクセルに取得されたデーターを見てみましょう。
A列に取得しているのが為替なので、日曜日以外はデーターが取得されています。
K列に取得しているのが日経平均株価なので、休場の日はデーターが取得されていません。
U列に取得しているのがNYダウ平均なので、休場の日はデーターが取得されていません。
さらに注意点がもうひとつ。
日経平均株価の日付をよく見てください、2019年4月27日の次が2019年5月8日です。
2019年のゴールデンウィークは4月27日からのはず!
なぜでしょう?
L列のTimeを見てください。”559″となっています。
これはEasy Languageの時刻の表現方法で、朝の5時59分を表しています。
チャートで、為替やNY取引所のデーターを合わせて表示させているため、ローソク足の終わりの時間が翌日の朝になっているのです。
このため、日経平均株価の日付が翌日になっています。
まとめ
いかがでしょうか。
この記事では、チャートの株価データーのエクセル連携について解説しました。
実は株価以外にも、ファンダメンタルズ情報や、売買している建玉のポジション情報、口座情報などとも連携させることが出来ます。
トレードステーションとエクセルを完全連携させる事により、より高度な投資戦略を構築する事が可能になります。
冒頭でも述べました。
「トレードステーション(トレステ)」と、「エクセル」を完全連携させて株価分析を効率化させませんか。
この記事で紹介した内容は、「手順が複雑だなぁ」と感じ他かも知れません。
ただし、1度設定してしまえば繰り返し作業が自動化されますので、次回からは大幅に株価分析までの時間が短縮されます。
とくに株価分析に充てる時間が少ない、個人投資家のあなたにオススメします。
なお、サイト管理者とマネックス証券との間にスポンサー契約等の利害関係はありません。
1人のユーザーとして、「個人投資家の方々に広く知ってもらいたい」この思いで、記事を作成・公開しています。
機会があれば、より実践的な「トレードステーション(トレステ)」と「エクセル」連携についても、記事にしたいと思います。
それでは、失礼いたします。
参考文賢
この記事を作成するにあたり、参考にさせていただいた、Webサイトです。
マネックス証券 様
トレードステーションを提供している証券会社です。
https://info.monex.co.jp/tradestation/about/
Easy Languageオブジェクトガイドブック
https://info.monex.co.jp/tradestation-support/manual.html#01
EasyLanguage研究所 様
Easy Languageの情報が非常にわかりやすく、まとめられたサイトです。
※サイトアドレスは、管理者様に承諾を頂いてから、掲載する予定です。
関連記事はこちら。 よろしければどうぞご覧下さい。
初心者向け。株価予報をトレードステーションとエクセルで作る。[トレードステーションの使い方やEasy Languageも学べます][自動売買・システムトレード]
この記事を書いた人
ゆたかドットらいふ編集部
あしおゆたか
投資歴21年の個人投資家
机上の理論ではなく、実体験に基づいた記事作りをモットーにしています。
スポーツクラブに毎週2日~3日通い、サウナ後の暴飲暴食が趣味。
◇主な投資対象
日本株式
株式ETF(上場投資信託)
日経225先物
日経225先物オプション
◇運営者情報はこちら