1分足から任意の分足を生成するユーティリティ

画面

1分足のCSVを読み込んで、指定した任意の分足時刻で分足の生成を行います。

  • 運用中のシステム用に、正確な任意の分足の四本値を生成しシステムのワークシートに貼り付けます。設定項目は数多くありますが、一旦設定すれば日々のシステム用の四本値作成は自動化できます。
  • バックテストのシステム開発用に、任意の分足の四本値を生成します。ワークシート[貼付]に1分足を貼り付けることで、四本値を生成できます。

機能

  • チャートから分足を保存(先物)チャートから分足を保存(複数銘柄対応)で保存したCSVのデータを読み込み整形して、より処理を行いやすい1分足を生成します。
  • あるいは、ワークシート[貼付]に貼り付けた四本値から処理を行いやすい1分足を生成します。
  • 生成した1分足から、指定した時刻の分足を生成します。
  • 生成した分足を、指定したExcel ワークシート(例:M.tradingのワークシート)に貼り付けます。
  • 株・先物以外にも、小数点も利用できるためFXの分足作成も可能です。

サンプルファイルで動作確認

フォルダには3つのファイルが入っています。

  • Funasi.xls
  • 四本値サンプル 1.CSV
  • Mtrading1.xls

動作確認方法

  1. Funasi.xlsを開きます。
  2. 四本値サンプル 1.CSVを開き、[分足生成]ボタンを押し分足を生成します
  3. Mtrading1.xlsを開き、[分足貼付]ボタンを押し、分足をMtrading1.xlsに貼り付けます。

ボタン

サンプルの四本値は実際の銘柄のものでは無く、また日付も実際の営業日とは異なります。

使い方

[分足貼付]ボタン
分足貼付を実行します。
[分足生成]ボタン
分足生成を実行します。

分足生成

チャートから分足を保存チャートから分足を保存(複数銘柄対応)で保存したCSVのデータのファイルを、「* 1.CSV」とここでは表記しています。*は日付で変わります。

  • *1.CSVが開かれている場合、*1.CSVよりデータを読み込んでから分足を生成します。
  • ワークシート[貼付]の既存のデータは変更せず、*1.CSVよりデータから必要な分を読み込んで追加してゆきます。
  • ワークシート[貼付]の最後の行の日付が、*1.CSVに含まれている必要があります。その日付の次の日付以後を読み取り追加します。
  • ワークシート[貼付]の最後の行の日付より後の日付の行が*1.CSVに無い場合、分足生成を中止します。
初日(半日)
半日しか営業しない1年の最初の営業日を年月日で記載します。2010年年初より廃止予定です。
最終日(半日)
半日しか営業しない1年の最後の営業日を年月日で記載します。2009年年末より廃止予定です。
営業日数
最大この日数分(初日と最終日の2日分は含めない)を生成します。初日と最終日との半日のみの営業日の日数は含めない1年の営業日数を記載します。営業日数が判らなければ、260ぐらいの値を指定しておけば問題ありません。
寄せ時刻
I2,I3,I4・・・に記載します。利用するワークシート[A][A2][A3][A4][A9]の最初の行の時刻は自動的に寄せの時刻になるので、それ以外の後場寄せ・夕場寄せの時刻などを指定します。
例えば、日経225先物の場合で、ジョイエクスプレス(野村ジョイ)・松井証券のチャートのCSVなら、12:30,16:30、オリックス証券のチャートのCSVなら、12:31,16:31になります。

ジョイエクスプレス(野村ジョイ)・松井証券のチャートから保存した1分足のCSVでは、9:00,9:01・・・と通常の時刻の分足です。しかし、オリックス・マーケットステーションのチャートから保存した1分足のCSVでは、9:01,9:02・・・と1分進んだ時刻になっています。

CSVファイル名(右部分)
チャートから分足を保存チャートから分足を保存(複数銘柄対応)で保存したCSVのデータのファイル名の右部分を設定します。
チャートから分足を保存でのスクリプトは、例:20080819 1.CSVのようなファイル名になるので、" 1.CSV"を記載します。セルの中の、'は、これは文字だとExcelに示すための文法です。
* 1.CSVが通常の時刻の分足
ジョイエクスプレス(野村ジョイ)・松井証券のチャートのCSVなら選択します。
* 1.CSVが1分進んだ時刻の分足
オリックス証券のチャートのCSVなら選択します。
* 1.CSVが15:00(15:01)まで有る
東証の株の場合選択します。
* 1.CSVが15:10(15:11)まで有る
大証の株、あるいは、夕場が始まる前の日経225先物の場合選択します。
* 1.CSVが19:00(19:01)まで有る
夕場(19:00まで)が始まって以降の日経225先物の場合選択します。
* 1.CSVが20:00(20:01)まで有る
夕場が20時まで延長された以降の日経225先物の場合選択します。
ユーザ設定ワークシート[A9]
ワークシート[A9]に設定した時刻で1分足を生成する場合、選択します。これを選択した場合、[* 1.CSVが通常の時刻の分足]のみ利用できます。
ワークシート[A9]設定 通常日行数
通常、ワークシート[A9]のG列の行数を記入して下さい。
ワークシート[A9]設定 半日日行数
通常、ワークシート[A9]のH列の行数を記入して下さい。
開いた時に、*1.CSVがあったら、分足生成を実行する。
このワークブックを開いた時に、*1.CSVも開かれていたら、[分足生成]を実行します。
*1.CSVから分足生成後、このワークブックを保存する。
*1.CSVを開いておき、分足生成を実行すると、*1.CSVからデータをワークシート[貼付]に追加してから、分足を生成します。この時、このワークブックを確認無しに保存します。
閉じる時に、確認をせずまた保存をせず閉じる。
変更があった場合、閉じる前に表示されるダイアログを表示せず保存をせずに閉じます。
分足貼付後、閉じる。
[分足貼付]を実行した後に、このワークブックを閉じます。
ワークシート[貼付]クリア
ワークシート[貼付]にあるデータをクリアします。
生成された分足のあるワークシート
生成した場合、最新の1日分の四本値を灰色にします。

分足貼付

  • B2セル以下、2行,3行,4行・・・と貼り付けられるExcel ファイル名・ワークシート名などを指定します。
  • 貼り付けられるExcel ワークブックを開いてから、[分足貼付]ボタンを押します。
  • 対象のワークブックが開かれていない場合、その行の処理は飛ばされます。
  • VBAの処理では、貼り付けられるExcel ワークシートで、四本値の始値が記入されていない最初の行を検索し、その日付を調べます。更に、その日付を、(サンプルの例では、ワークシート[10d分足]に)生成した分足の日付の列から検索します。その日付以後の四本値を、Excel ワークシートに貼り付けます。
ファイル名
貼り付けられるExcelワークブックのファイル名(例 M.trading Excel ワークブック)を設定します。
ワークシート名
貼り付けられるExcelワークブックの中のワークシート名(例 M.trading Excel ワークブックでは通常「A」)を設定します。
日付開始セル
四本値の日付のある列で最初のセルを記載します。
始値開始セル
四本値の始値のある列で最初のセルを記載します。
貼付ワークシート名
貼り付けられるワークシート名を設定します。
ワークシートに貼り付けた四本値
貼り付けられた四本値のセルは灰色になります。灰色になることで、このユーティリティで生成した四本値だということが判ります。

ワークシート[Main]

分足生成に利用する設定です。

メイン画面

  • 分足時刻を設定します。自由に分足を設定できます。
  • 既存の分足の設定を変更してもいいですし、2列分で1セットの分足を右の列に追加していってもいいです。
TRUEとFALSE
名称の上のセルがTRUEだと、その分足時刻を生成します。
名称
ワークシート名になります。ワークシートが無い場合、[分足貼付]を実行した際、新規に作成されます。
分足
数字は利用する1分足の行数を示します。左列は通常の営業日用、右列は半日営業日用です。
例えば、10分足なら、10,10,10・・・で、10行分毎に、始値・高値・安値・終値を算出します。また、11:00,15:00などの引けのみの四本値を算出するには、1にします。
15:00(15:01)まで有る* 1.CSVから生成した1分足
1日分の行数の合計が必ず272行、分足(半日)は合計が121行有ります。前場は9:00~11:00までで必ず121行、後場は12:30~15:00までで必ず151行あります。従って、1日分の行数は121+151=272行です。
15:10(15:11)まで有る* 1.CSVから生成した1分足
1日分の行数の合計が必ず282行、分足(半日)は合計が131行有ります。前場は9:00~11:00までで必ず121行、後場は12:30~15:10までで必ず161行あります。従って、1日分の行数は121+161=282行です。
19:00(19:01)まで有る* 1.CSVから生成した1分足
1日分の行数の合計が必ず433行、分足(半日)は合計が131行有ります。前場は9:00~11:00までで必ず121行、後場は12:30~15:10までで必ず161行、夕場は16:30~19:00までで必ず151行あります。従って、1日分の行数は121+161+151=433行です。
20:00(20:01)まで有る* 1.CSVから生成した1分足
1日分の行数の合計が必ず493行、分足(半日)は合計が131行有ります。前場は9:00~11:00までで必ず121行、後場は12:30~15:10までで必ず161行、夕場は16:30~20:00までで必ず211行あります。従って、1日分の行数は121+161+211=493行です。
これらの数字を割り振って任意の分足を指定できます。
ワークシート[A9]を選択した場合
1日分の行数はワークシート[A9]のG列の行数、半日分はH列の行数で割り振って下さい。
*を数字の後につける。
データはあってもその時刻の分足を生成しないようできます。
[19:00(19:01)まで有る]* 1.CSVを利用していた場合、生成される1分足は、9:00~11:00、12:30~15:10、16:30~19:00までの433行が必ず生成されます。しかし、夕場の四本値をM.tradingで利用しない場合は、夕場を除いて分足を生成しなければなりません。この場合、夕場の151行分には*を付けることで、生成しないようにできます。

その他

  • 上記の解説では、M.tradingのExcelワークシートに貼り付けることを前提にしていますが、M.tradingでなくても、日付+時刻+四本値の列のあるワークシートに対して貼り付けることができます。
  • 毎日のザラ場終了後、チャートから分足を保存とこのユーティリティとを利用することで、かなり正確な四本値をシステムに追加することができます。

必要なCSVの条件

四本値サンプル 1.CSV

  • 四本値はCSVの3行目以降に記載されていなければなりません。
  • 出来高の列も必要です。利用する1分足に出来高の列が無い場合、列を追加して1などを記入して下さい。その行の分足で出来高が無かった場合は0にします。出来高の列が無い場合、生成された分足は不正確なものになります。
  • チャートから分足を保存で、毎日、CSVを保存するのを自動化できます。
  • * 1.CSVのワークブックのワークシートを、3行目から最終行までの間で、Date列(1列目)とTime列(2列目)とでソートするので、Date,Time列は昇順・降順のどちらでも構いません。

必要な四本値の条件

ワークシート[貼付]に1分足の四本値を記入しておき、[分足生成]を行うことで、任意の分足を生成できます。システムトレードのバックテスト用の分足を生成するのに利用できます。

  • ワークシート[貼付]には、2行目から記入します
  • 出来高の列も必要です。利用する1分足に出来高の列が無い場合、列を追加して1などを記入して下さい。その行の分足で出来高が無かった場合は0にします。出来高の列が無い場合、生成された分足は不正確なものになります。
  • ワークシート[貼付]での1分足は、9:05の次が9:07のように途中の1分足が無くても構いません。ワークシート[1分足]にその間の1分足が出来高0として生成されます。

マーケットステーションの分足との違い

1分足では違いはありませんが、1分足から生成する分足(例えば10分足など)には違いが発生します。

日付      時刻      始値 高値 安値 終値 出来高
2009/1/8 18:47:00  5906 5906 5906 5906 1
2009/1/8 18:48:00  5906 5906 5906 5906 16
2009/1/8 18:49:00  5906 5906 5906 5906 22
2009/1/8 18:50:00  5906 5906 5906 5906 0
2009/1/8 18:51:00  5913 5913 5913 5913 15
2009/1/8 18:52:00  5913 5913 5913 5913 150
2009/1/8 18:53:00  5913 5913 5913 5913 76
2009/1/8 18:54:00  5913 5913 5913 5913 49

四本値サンプル 1.CSVからこのユーティリティで生成した1分足は上記のようになる行があります。
この1分足から10分足(18:50,19:00,・・・)を生成すると、1分足の18:50:00の出来高は0なので、10分足の18:50の始値は5913になるようにしています。
しかし、オリックス・マーケットステーションで10分足にしてCSV保存をしたと仮定すると、18:50の始値は5906になるようです。

2008-8-20時点で確認(2009-01-09再度確認)。ただし、マーケットステーションのCSV保存の仕様はたまに変わるようなので、この状態がいつまで続くかは判りません。2008-08-21 ジョインベスト・エクスプレスでも同様。

メモ

2006年7月18日(火)
日経225miniの取引開始
2007年9月18日(火)~2008年10月10日(金)
日経225先物夕場が16時30分から19時まで
2008年10月14日(火)~
日経225先物夕場が20時までに延長

トラブルシューティング

処理が長引く場合
VBAの処理を途中で抜けるには、ESCキーを押します。

参考リンク

東証 : 半休日の廃止に伴う年末年始の立会日程について


配布

無料でご利用いただけますが、このユーティリティはリンクウェアです。ホームページやブログなどに、

<a href="http://www.m-trader.net/" target="_blank">システムトレード M.trader</a>

などのように、リンクを貼って下さい。http://www.m-trader.net/ へのリンクならどのような形でもOKです。

お問い合わせフォームから、リンクしていただいたURLとメールアドレスをお知らせ下さい。折り返し、ダウンロード先のURLをメール致します。

動作条件

Excel 2007で開発・確認しています。
Excel XP, 2003での動作確認をしました。


使用規約

  • 作者 mikihiro
  • このソフトウェアはリンクウェアです。
  • 著作権は作者にあります。
  • このソフトウェアを使用したことによる一切の損害について作者は責任を負いません。
  • 使用規約は変更される場合があります。
  • 他、M.tradingのソフトウェア使用許諾契約書(PDF)(第6条と第9条とを除き、第1条から第17条まで)を適用します。

履歴

  • 2009-01-10 Version 6.8。サンプルファイルの更新など。
  • 2008-12-11 追記
  • 2008-10-15 Version 6.6。ユーザ設定ワークシート[A4]→[A9]に変更。20時までに延長された夕場に対応。特定の条件で発生するバグを修正。
  • 2008-08-24 Version 6.1掲載
  • 2008-08-20 Version 6.0掲載