M.trading チャートシステム
- バックテストで算出した指標を、チャートにします。
- チャート描画は、Excelの機能を利用します。
- ボタン一つで指定した日付から描画します。
- ワークシート[g1] [g2] [g3] [g4] [g5]にあるチャートを区別して扱います。
- 選択した日時のデータを数値で表示できます。
- 2つの日時のデータを数値で比較できます。
- パラメータを動的に変更して、チャートの変化を観察できます。
- 表示できるチャートの数は、Excelの機能の限界までです。
- VBAのプログラムは、データ更新、データソースの変更などを行いやすくするものです。
- チャート用のデータは、M.trading システムトレード開発(Excel)などで算出したものを利用します。
- 開発したオリジナルの指標のデータもチャートにすることが出来ます。
動作条件など
Version 0.26 β版です。
ユーザの方は、フォーラムにログイン後、ダウンロードできます。
Excel 2007 + Windows XP, VISTA, 7で開発・確認しています。Excel XP(2002),2003では動作しません。
スクリーンショット
ワークシート
- g1, g2, g3, g4, g5
- チャートを配置するワークシート。gは、グラフの略です。
[設定]>[描画]で行うデータソースの変更は、表示しているワークシート[g1] [g2]・・・上のチャートに対して行われます。 - DataA, DataB, DataC, DataD, DataE
- M.trading システムトレード開発(Excel)で計算された指標の数値が転記されるワークシート。
- 設定
- 主要な設定と、コントロールボタンがあります。
- 設定2
- [データ貼付]を実行した時に、ワークシート[DataA] [DataB] [DataC] [DataD] [DataE]に貼り付けるデータを、指定します。
設定

- データ貼付
- [データ元ワークブック]で設定したファイル名のワークブックの、
- ワークシート[設定2]で指定したワークシートの列のデータを、
- [貼付開始行]~[貼付最大行番号]で設定した行番号まで、
- [DataA] [DataB] [DataC] [DataD] [DataE]に貼り付けます。
- 設定フォームを表示
- 設定フォームを表示します。
- 自動で設定フォームを表示する。
- チェックすると、ワークシート[g1] [g2] [g3] [g4] [g5]を表示したときに、設定フォームを表示します。
- クリックしてデータ欄を表示する。
- チェックすると、マスターのチャート上のデータ系列をクリックした時に、データを表示します。
- Data領域クリア
- ワークシート[DataA] [DataB] [DataC] [DataD] [DataE]の2行目~最終行、1列目~[Data領域最終列]までのセルをクリアします。
チャートの軸・大きさ

- チャート名・第2軸を主軸と同じにしない場合TRUEにする
- チャート名(グラフ名)を指定しTRUEとしておくと、そのチャートの第2軸を、主軸に合わせた最大値・最小値としません。
第2軸の最小値・最大値を自動にしておいたり、あるいは固定で数値を独自に設定する場合に利用します。 - 主軸をマスターチャートの主軸と同じにする場合は、TRUEにする
- 主軸をマスターチャートの主軸の最大値・最小値と同じにします。
- 常にマスターチャートに重ねる場合は、TRUEにする
- マスターチャートの高さ・幅・上端・左端に常に合わせます。
設定欄

- データ元ワークブック
- 貼り付け元のデータのあるファイル名を設定します。
例えばMtrading.xlsbで各種指標のデータを算出しておき、そのデータを貼り付けることになります。
ファイルの拡張子には、.xls, xlsm, xlsb等があるのに注意して下さい。
[データ貼付]を行う時には、このファイルも開いておきます。 - 貼付開始行・貼付最大行番号
- 貼り付け元のワークシートの、[貼付開始行]から[貼付最大行番号]までを、貼り付けます。
例えば、貼付開始行を1001、貼付最大行番号を5000に設定しておくと、1001行~5000行までを、DataAの2行~4001行までに貼り付けます。 - Data領域最終列
- [Data領域クリア]で領域をクリアする最終の列を指定します。
DataForm書式

- DataFormColor
- テーブルで色分けする背景色を指定します。htmlのスタイルシートと同じ方法を利用します。
#CCFFFF や、yellow など。 - DataFormFontSize
- 文字の大きさを指定します。htmlのスタイルシートと同じ方法を利用します。
9pt や、1emや、12px など。 - DataFormFontName
- フォント名を指定します。htmlのスタイルシートと同じ方法を利用します。
MS Pゴシック や、メイリオ など。 - 四捨五入桁数
- 四捨五入を行う桁数を指定します。ExcelのRound関数と桁指定と同じです。
2は、小数点第2位に四捨五入します
0は、数値は最も近い整数に四捨五入されます。 - DataForm幅
- ユーザフォームの幅を指定します。
縦棒書式

2つの図の書式が、縦棒にそのまま利用されます。直接、ここの2つの図を変更します。
パラメータ

Para1~Para10まで10個のパラメータを数式で利用できます。
ここでは、
- Para1,Para2
- ワークシート[DataB]の、LA列~LB列の[移動平均(動的)] [移動平均2(動的)]
- Para3~Para8
- ワークシート[DataC]の、LA列~LE列の[基準線] [転換線] [先行スパン1] [先行スパン2] [遅行線]
に利用しています。
設定2
- 設定する行
- [DataA]用 3, 4行目
[DataB]用 13, 14行目
[DataC]用 23, 24行目
[DataD]用 33, 34行目
[DataE]用 43, 44行目
1, 2, 11, 12, 21, 22, 31, 32, 41, 42行目は、判りやすくするために書いてあるだけで、プログラム上では利用していません。 - 3, 13, 23, 33, 43行目
- [データ元ワークブック]のワークシート名を記入します。
- 4, 14, 24, 34, 44行目
- [データ元ワークブック]の列番号をアルファベットで記入します。その列にデータを貼り付けない場合は、空白にします。
- 例
- ワークシート[設定2]のN列の3行目が「モメンタム」、4行目が「A」の場合、貼り付け元のワークブックにあるワークシート[モメンタム]のA列を、DataAのN列に貼り付けます。
描画

- 日付
- 日付を入力します。ワークシート[g1] [g2]・・・毎に設定が保存されます。
- 今日
- 今日と同じ日付の開始行番号が検索されます。
- 日付用の ▲▼
- 日付を1日ずつ変更し、その日付の開始行番号が検索されます。
- 検索
-
- [g1]を表示している時は、 [DataA]のA2:A65536(またはA1048576)
- [g2]を表示している時は、 [DataB]のA2:A65536(またはA1048576)
- [g3]を表示している時は、 [DataC]のA2:A65536(またはA1048576)
- [g4]を表示している時は、 [DataD]のA2:A65536(またはA1048576)
- [g5]を表示している時は、 [DataE]のA2:A65536(またはA1048576)
65536:ファイルが、Excel 97-2003の形式の場合。
1048576:ファイルが、Excel 2007用の形式の場合。 - 開始行番号
- 描画するデータソースの開始行番号になります。ワークシート[g1] [g2]・・・毎に設定が保存されます。
- 描画行数
- 描画するデータソースの行数になります。ワークシート[g1] [g2]・・・毎に設定が保存されます。
- 開始行番号用の ▲▼
- 開始行番号を1ずつ変更します。
- 描画
-
- 表示しているワークシート[g1] [g2] [g3] [g4] [g5]上のチャートのデータソースを開始行番号から描画行数分に変更します。
- グラフ名[chartAmaster]のチャートのサイズに合わせて、[chartA1] [chartA2]・・・
グラフ名[chartBmaster]のチャートのサイズに合わせて、[chartB1] [chartB2]・・・
グラフ名[chartCmaster]のチャートのサイズに合わせて、[chartC1] [chartC2]・・・
グラフ名[chartDmaster]のチャートのサイズに合わせて、[chartD1] [chartD2]・・・
グラフ名[chartEmaster]のチャートのサイズに合わせて、[chartE1] [chartE2]・・・
などのチャートのサイズを変更します。 - チャートに第2軸があれば、第2軸の最大値・最小値を主軸の数値に変更します。
追加

- 追加ワークシート・追加列・追加
- 選択しているチャート上に、指定したワークシートの列のデータソースを追加します。
チャート名分類・データ範囲 設定
選択しているグラフに対して、2つの処理を行います。
グラフ名を変更
[chartAmaster] [chartBmaster] [chartCmaster] [chartDmaster] [chartEmaster]以外の、選択しているチャートを、A, B, C, D, Eの指定した分類の名前(グラフ名)に変更します。
例えば、グラフ名[chartA1]は、A分類になります。
最後の数字は任意でつけられます。
データ範囲の変更
グラフデータの範囲を、[DataA] [DataB] [DataC] [DataD] [DataE]に変更します。
例えば、他のワークブック・ワークシートにあるグラフをコピーして貼り付けると、そのグラフのデータ範囲は元のワークブック・ワークシートのデータ範囲を参照しています。[MtradingChart.xlsb]DataE! のような文字列が利用されています。[MtradingChart.xlsb]を削除し、DataEの部分を、指定したDataA, DataB, DataC, DataD, DataEのいずれかに変更します。この場合、元のワークシート名は、DataAのように、Data(英数字1字)でなければなりません。
幅・高さ

チェックすると、[描画]を行う時に、マスターのチャートの高さ・幅・上端・左端に、他のグラフを合わせる処理を行います。ただし、表示していないチャートに対しては、処理を行いません。
グラフツール>書式>オブジェクトの選択と表示から、チャートの表示を制御できます。あるチャートはマスターチャートに合わせて、あるチャートはサイズを変更したくない時など、に利用できます。
パラメータ

Para1~Para10までのパラメータの数値を変更できます。
計算方法が自動になっている場合は、数値を変更するとグラフも同時に変わります。
手動になっている場合は、数値を変更後、[再計算実行]をすると、グラフも変わります。
Data表示

マスターのチャート上のデータ系列をクリックすると、その軸上のデータを表示します。
ワークブックを開いた後、別のワークシートを一端表示して下さい。例えば、開いた直後ワークシート[g1]が表示されていたら、ワークシート[g2]を表示してからワークシート[g1]を再度表示します。これで、データ系列をクリックする処理が有効になります。
- [chartAmaster]は、 [DataA]のデータ
- [chartBmaster]は、 [DataB]のデータ
- [chartCmaster]は、 [DataC]のデータ
- [chartDmaster]は、 [DataD]のデータ
- [chartEmaster]は、 [DataE]のデータ
を表示します。
- ← →
- 第1縦棒・第2縦棒を移動させます。
- 第1縦
- 青色の縦棒を表示します。
- 第2縦
- 赤色の縦棒を表示します。
- 比較
- 第1縦棒と第2縦棒とのあるワークシート[DataA] [DataB]・・・の行のデータを比較し、差と、差÷第1のデータ(%)とを表示します。
- 遷移
- 別のワークシート[g1] [g2] [g3] [g4] [g5]に移動した時に、それぞれのワークシートで表示していたデータを自動的に表示します。
マスターのチャート
マスターのチャートは、
- グラフの高さ・幅の基準
- グラフの上端・左端の基準
- チャートの線をクリックした際のデータ表示
に利用されます。
- [g1]に、[chartAmaster]
- [g2]に、[chartBmaster]
- [g3]に、[chartCmaster]
- [g4]に、[chartDmaster]
- [g5]に、[chartEmaster]
マスターのチャートがあります。これらのグラフは、消去しないようにして下さい。
グラフのテンプレート
一目均衡表の雲を描画する方法
雲の描画
Excel 2007の機能を最大限利用した方法です。
雲を表示するには、Excelのグラフの種類の変更>面>積み上げ面を利用します。しかし、積み上げ面と、グラフの種類の変更>株価>株価チャートとは、同じチャートに描画することができません。(ローソク足を、Excelの機能では無い方法で描画する方法もありますが、データ量が増えるのでここでは利用しない方法を考えます。)
雲を描画したグラフの上に、ローソク足を描画した別のグラフを重ね合わせます。ローソク足を描画したグラフの、グラフエリアの書式設定>塗りつぶし>塗りつぶしなしを選択すると、下にあるグラフも見えます。
正確に重ねるために、下のグラフを、
- [常にマスターチャートに重ねる場合は、TRUEにする]でTRUEにし、マスターチャートに常に重ねます。
- [主軸をマスターチャートの主軸と同じにする場合は、TRUEにする]でTRUEにし、主軸も一致させます。

例では、[chartC2]が、雲を描画したグラフです。従って、ワークシート[設定]で、このような設定にしてあります。
また、下にある[chartC2]のグラフの主軸を消さずに表示しておいて、上にあるグラフとずれた場合すぐに判るようにしてあります。
積み上げグラフを利用した雲の描画
- 雲は、ワークシート[DataC]のLG,LH列の[雲厚] [雲下限]をデータ範囲にしています。
[雲厚]は、[先行スパン1]と[先行スパン2]との差の絶対値です。
LG2のセルの数式は、=IFERROR(ABS(LD2-LE2),"")
絶対値は、ABS([先行スパン1] - [先行スパン2])
IFERRORは、計算にエラーが発生した場合、""を返すようにしています。[雲下限]は、[先行スパン1]と[先行スパン2]とのうちの小さい方です。
LH2のセルの数式は、=MIN(LD2:LE2)
最小値は、MIN([先行スパン1]のセル~[先行スパン2]のセル範囲)
となります。- [雲下限]は、塗りつぶしなしか白にして、[雲厚]には色をつけます。
データ表示のユーザフォーム
VBE(Visual Basic Editor)の画面を開きます。
開発タブ(リボンに開発タブが無い場合は、Excelのオプション>基本設定から表示します)から、Visual Basic Editorをクリックします。
フォームの高さの変更
- DataForm
- WebBrowserDataForm
の両方のHightを変更します。
トラブルシューティング
- 描画に失敗しました、というエラーが発生する
- [描画]をする前に、ウインドウをスクロールしてそのワークシート上にある全てのグラフを画面上に一度表示するようにして下さい。エラーが発生しなくなります。
- チャートのデータ系列をクリックして、縦棒・データ欄を表示しようとした時に、Excelが強制終了する
- クリックする前に、ウインドウをスクロールしてそのワークシート上にある全てのグラフを画面上に一度表示するようにして下さい。







