パンローリング トップバー パンローリング Top 相場データCD-ROM オプション倶楽部 トレーダーズショップ/書籍、DVD販売 株式コーナー Pan発行書籍 セミナー 相場アプリケーション パンレポート 掲示板 相場リンク集
メールはこちらまで

発行書籍一覧 > 現代の錬金術師シリーズ一覧 > /


自動売買ロボット作成マニュアル〜エクセルで理想のシステムトレード

自動売買ロボット作成マニュアル

〜エクセルで理想のシステムトレード

『自動売買ロボット
作成マニュアル初級編』


著者 森田佳佑
A5判 389頁
定価 本体2,800円+税
2006年09月15日発売
ISBN4-7759-9039-X C0033

トレーダーズショップから送料無料でお届け



目次 | エクセル活用例 | 正誤表 | よくあるご質問と回答 | 関連書籍 | サンプルシートをダウンロード (Ver.1.13 2009/07/24)

あなたのパソコンのExcelが強力なトレードツールになる!

VBAで自分の売買ルールを理想通りに検証・実践できる
  1. インターネットやPan Active Market Databaseからデータを自動取得
  2. テクニカルチャートの自動表示と自動最適化
  3. 売買手法の構築と自動検証
  4. リアルタイム売買シグナルの自動表示
  5. 自動売買システムの完成

「テクニカル分析に興味があり、一通りの知識を身につけた。
しかし、実際のところ、どのように利用してよいか分からない」

「テクニカル分析を活用したいと思っている。
しかし、手作業で検証するには膨大な時間と労力がかかる。
かといって、そのような作業を自動的にしてくれるソフトウェアは見当たらない」

「テクニカル分析をルール化し、売買を機械的に執行したいと考えている。
しかし、具体的にどうすればよいか分からない」

 このような疑問を持ち、せっかく学んだ売買手法の知識を生かしきれていないと感じたことはないだろうか? 「そのとおり!」と思われた方には、ぜひ本書をひもといてもらいたい。  本書は「マイクロソフト社の表計算ソフト、エクセルを利用して、テクニカル分析に関する各工程を自動化させること」を目的にした指南書である。自分の理想のトレードを実現させる強力なツールとしてエクセルを利用してみようというわけだ。

◎エクセルで「投資ツール」を作ろう

 エクセルは、多くのパソコンに装備されているので、実際に利用された経験がある人は多いように思う。しかし、ほとんどの方はエクセルのセルに文字や計算式、関数を直接入力して利用されていらっしゃるのではないだろうか。  エクセルには「VBA=Visual Basic for Application」と呼ばれるプログラミング言語が搭載されている。このVBAこそ、エクセルの大きな特徴に挙げられる。さまざまな作業を自動化したり、ソフトウェア自体に機能を追加したりすることができる強力なツールだ。このVBAを活用してエクセルを強力な投資ツールに変えてしまおう、というのが本書の方針である。

 本書では、

  1. インターネット経由での株価データの自動取得、
  2. テクニカル指標の自動計算とチャート描画、
  3. テクニカル分析による売買シグナルの確認と手法の検証、
  4. そして最終的にはブローカーの売買プラットフォームにつないで自動発注
ができるように解説している。

 これらを具現化するのに一部の人しか手にはいらないような高価なソフトウェアを用いるのではない。パソコンを利用している多くの方がすでにお持ちのエクセルを利用するのである。  皆さんは本書のコードを模写するだけで、システム構築のロジックを会得し、非常に強力な投資環境を手に入れることができるだろう。


■目次

エクセルで「投資ツール」を作ろう
本書を読み解くうえでの注意点

第1章 エクセルとVBAの基本

  1-1 実際に自分で記述する意味

  1-2 VBAの基本概念
      VBA
      マクロ
      マクロの記録
      関数・引数
      変数
      イコール(=)の考え方
      アンド(&)の使い方
      定数
      オブジェクト
      メソッド
      プロパティ

第2章 データの取得

  2-1 Yahooファイナンスから取得
      マクロを始める前の設定
      マクロの記録
      アドレス取得のコツ
      データの取り込み
      記録したマクロをVBEで編集する
      約10年分の日次データを取得する
      データ編集マクロを作成する
      データ取得マクロを変更する
      データ編集マクロの作成に戻る
      取得したデータを整理する
      ステップイン機能

  2-2 Pan Active Databaseから取得する
      参照設定を選択する
      モジュールの作成
      定数と変数を宣言・代入する
      データに見出しを入れる
      For構文とIf構文
      データを並び替える

第3章 テクニカル指標の算出

  3-1 移動平均の算出
      移動平均のマクロ
      移動平均を算出する
      2つ目の移動平均を求める

  3-2 EMAとMACDの算出
      MACDのマクロを作る
      EMAを算出する
      MACDとMACDシグナル

  3-3 RSIの算出
      マクロの作成
      値上がり幅と値下がり幅
      RSIを算出する
      いらないコラムを隠す

  3-4 ストキャスティックスの算出
      ストキャスティックスのマクロ
      Fast%Kの計算
      Fast%Kと%Dの計算
      Fast%Kと%DとSlow%Dの計算
      セルと値の整理

  3-5 DMIとADXの算出
      DMIのマクロを作る
      pDI、mDI、TrueRangeを算出する
      4つの条件
      +DI、-DI、DXを算出する
      +DI、-DI、DX、ADXの算出
      +DI、-DI、DX、ADX、ADXRの算出
      書式の整理

第4章 チャートの作成

  4-1 チャートの準備
      チャートを作成する
      移動平均線を追加する
      MACDとMACDシグナルを表示する
      RSIを表示させる
      ストキャスティックスとDMIを表示させる
      チャート表示の便利な機能

  4-2 各指標の期間変更
      移動平均の期間を変える
      宣言した変数の変更
      MAのマクロを修正する
      チャートシートのコード作成
      ほかのテクニカル指標のボックスとボタン
      便利な設定

  4-3 銘柄コード・取得期間を変更する
      銘柄コードと取得期間のボックスを作る
      データ編集ボタンマクロの作成
      チャート保護マクロの作成
      指標のチャートも保護する
      データ編集ボタンマクロの作成を再開
      各指数のマクロを呼ぶ
      チャートの中身を元に戻す
      チャートを再描画する

  4-4 チャートにスクロール・拡大縮小機能を追加
      ボックスとボタンの設定
      チャートの表示期間の設定
      チャートの右スクロール機能
      チャートの左スクロール機能
      データ取得ボタンマクロの修正

第5章 売買手法のプログラム

  5-1 分析の前に
      リスクマネジメント
      マネーマネジメント
      手数料・税金・消費税
      スリッページ
      自作関数を作成する
      変数を宣言する
      時系列データをコピー
      手数料関数
      Long_Entry関数
      Short_Entry関数
      Long_StopLoss関数
      Short_StopLoss関数
      Long_Exit関数
      Short_Exit関数

  5-2 3本足の高値安値
      3本足の高値安値マクロを作る
      変数を仮の設定にする
      エントリーするかの条件式
      ストップロスかエグジットのシグナル確認

  5-3 アンチ
      アンチのマクロを作る

  5-4 ADXギャッパー
      ADXギャッパーのマクロを作る

第6章 売買手法を検証

  6-1 手法の検証
      サマリーシートを作成する
      サマリーマクロを作成する
      買いトレードで勝った場合
      買いトレードで負けた場合
      最大ドローダウン額と総手数料額
      売りトレードの場合
      For構文を用いなくても一度で算出できる値
      買いトレードの残りの項目
      売りトレードの残りの項目

  6-2 分析項目の変更
      資金の変化を表すグラフを作成
      変数の修正
      分析ボタンのマクロ
      「3本足の高値安値」を選択した場合
      「アンチ」を選択した場合
      「ADXギャッパー」を選択した場合
      資金曲線グラフを更新する
      各手法のマクロを修正する

  6-3 手法の最適化
      テキストボックスとボタンを作成する
      最適化マクロの作成
      最適化ボタンマクロの作成
      繰り返し処理
      最適化の注意点
      処理の流れ
      アンチの最適化
      ADXギャッパーの最適化
      諸刃の剣

  6-4 銘柄スクリーニングの方法
      Chart Gallery Proの検索機能
      肥大化したエクセルブックを最適化する
      モジュールをコピーしたときの注意点

第7章 エクセルデイトレード

  7-1 10銘柄を同時に確認する
      マーケットスピードとRSSの準備
      ブックの構築
      銘柄監視シートの設定
      参考指標の表示設定
      設定と設定値エリアの作成
      監視銘柄設定エリアの作成
      ボタンとオプションボックスを配置
      変数の修正
      銘柄設定ボタンのマクロ作成
      選択された市場のコードを代入する

  7-2 シグナルの発生を確認
      手法適応ボタンのマクロ作成
      単元株数を代入
      RSIマクロの修正
      新たに3本足の高値安値のマクロを作成
      買いエントリーシグナルを出す
      売りエントリーシグナルを出す
      アンチを適応する場合
      ストキャスティックスマクロの修正
      買いエントリーシグナルの設定
      売りエントリーシグナルの設定
      ADXギャッパーの場合
      DMIマクロの修正
      新たなADXギャッパーマクロの作成
      買いエントリーシグナルの設定
      手法適応ボタンのマクロの完成

  7-3 シグナルの発生を監視し、注文を処理
      値動きの監視処理
      監視開始ボタンのマクロ作成
      監視を実行するマクロ
      エントリーの実行
      売りエントリーの場合
      エグジットの処理
      売りのエグジットの処理
      定期的にマクロを実行させる
      監視を中止する場合を指定
      完全自動売買
      APIを用いた自動売買

おわりに



■著者紹介

森田佳佑(もりた・けいすけ)
1983年、愛知県春日井市生まれ。名古屋大学教育学部附属高等学校を卒業、上智 大学経済学部経済学科に進学。学業の傍らテクニカル分析と資金管理を融合させ たシステム売買に関心をもち、2003年よりトレードを実践。以来「完全自動売 買」による「着実」なリターンを求めて研究を重ねている。市場の変動性が高 く、完全自動売買の環境が日本よりも整っており、レバレッジを有効利用できる という理由から、主に米国先物市場でトレードを実践する。

ウェブサイト:自動売買研究所 | Email
   補足コラム:
     ・Excel2000でのWebクエリ
     ・Webテーブル番号ランダム化対応



■エクセル活用例

手法の最適化もエクセルで可能。変数を変更して手法を検証できる



移動平均(10日、20日)とMACD(5、20、5)をチャートに適用した例



楽天証券のRSSを活用したリアルタイムシステム




■本書に寄せられたご質問と著者の回答

Q:エクセル2000でも利用できますか?
A:エクセルのバージョンですが、基本的には2003で作成・動作確認を行っています。
2000でも動作確認済みです。

Q:Excel2000ではWebクエリの画面が異なります。
A:著者サイトでExcel2000でのWebクエリの補足説明をしておりますので、 ご参照ください。
http://oaive.com/columns/excel2000_webquery

Q:本書は日経225先物にも有効でしょうか? 対象市場を教えてください。
A:対象市場ですが、システム検証は国内すべての市場、自動売買は東証・JASDAQ・大証・ヘラクレスに対応しています。

先物に関しては、データ取得にPanActiveDatabaseを使用する場合に限り対応 しています。データ取得にYahooファイナンスを使用する場合、現在のところ 先物の時系列データをYahooファイナンスが扱っていないため未対応です。 為替に関しては、基本的にPanActiveDatabase、Yahooファイナンスのいずれ も対応しています。

ただし、先物に関してPanActiveDatabaseを使用する場合でも、限月の設定な どが必要であり、その部分に関しては本書で言及していません。同様に、為替 に関しても為替特有の設定などに関しては言及していません。そのため、 本書の内容を理解した上である程度応用していただく必要があります。

本書の内容を前提とした為替や先物の具体的な対応に関しては、今後私の 運営するウェブサイト (http://oaive.com) で追加コラムという形で紹介したいと考えています。

Q:コードの入力ミスを防ぐコツはありますか?
A:VBEでコードを記述する場合、「Ctrl+スペース」でコードの候補を表示する ことが出来ます。これは入力ミスを防ぐだけでなく、入力効率を高めることが できるため、非常に有効な機能といえます。また、入力ミス後の対処法として、 「F8」でコードを1行ずつ実行していくステップインという機能があります。 これで1行1行がそれぞれどのような処理を行っているのかを確認していくこと によって、どこに入力ミスがあるかを速やかに調べることが出来ます。これら の機能を活用していくことが、入力ミスを減らすことにつながると思います。

Q:最後のUWSCについて、あまり著されていなかった理由は?
A:UWSCはキーボードやマウスの操作を自動化するソフトウェアです。
そのため、例えば利用する発注ソフトの操作性などが変化すれば書いたスク リプトは使えなくなります。よって、将来的に使えなくなるような不確定要素 が大きいことから書籍という形で深く言及するのを避けました。もちろん、注 文の自動化は自動売買の重要な部分のひとつで、気になる方も多いと思います ので、それは私のウェブサイト (http://oaive.com) に追加コラムという形で掲載させていただきました。既にご覧になれますので、本書を読み終えた人は是非注文の自動化に挑戦してみてください。

Q:システムトレードに向いているのはどういう人だと思われますか?
A:入念に調査・研究を繰り返すことができるこだわりを持った人だと思います。 システムトレードの場合、事前の研究がほぼすべてです。十分に検証されてい ないシステムを実践で扱うことは、うまく動作しないどころか大きな損失を被 る危険性をはらんでいます。抜け目なく何度も検証を繰り返すことの出来る入 念さが重要です。
 そして何より、システムトレードや自動売買が「楽して儲ける方法」だと考 えていない人だと思います。


【本書の訂正】

本文377ページ、380ページに記載されている、監視を実行するマクロのコードに誤りがありました。 正しくは以下の通りです。
[377ページ]

×
If a.Cells(ii + 11, 7).Value > a.Cells(ii + 11, 18).Value _
Or a.Cells(ii + 30, 7).Value < a.Cells(ii + 30, 19).Value Then
longexit:

○
If a.Cells(ii + 11, 7).Value > a.Cells(ii + 11, 18).Value _
Or a.Cells(ii + 11, 7).Value < a.Cells(ii + 11, 19).Value Then
longexit:

----------------------------------

[380ページ]

×
If a.Cells(ii + 11, 7).Value < a.Cells(ii + 11, 18).Value _
Or a.Cells(ii + 30, 7).Value > a.Cells(ii + 30, 19).Value Then
shortexit:

○
If a.Cells(ii + 11, 7).Value < a.Cells(ii + 11, 18).Value _
Or a.Cells(ii + 11, 7).Value > a.Cells(ii + 11, 19).Value Then
shortexit:

----------------------------------

本文197ページの1行目に記載されているコードは

「Public Equity As Long, Contracts As Long, Profit As Long」ではなく
「Public Equity As Double, Contracts As Double, Profit As Double」でした。

Long型で宣言すると、一部の場合においてオーバーフローを起こす可能性があるため、
Double型での宣言に変更しました。

----------------------------------

本文84ページの14行以降に記載されている
範囲指定の方法は

「length(1) - 1」ではなく
「length(1) + 1」でした。

また、それ以降の範囲指定方法についても同様です。

----------------------------------

本文91(93)ページの「マル14、15」のコードが
サンプルシートのものと異なります。
正しくはサンプルシートのコードですが、
本書に記載されているコードでも動作自体には支障ありません。

○[サンプルにあるコード]

For i = length_temp + 4 To lastrow
 If i >= length(3) + length_temp Then
  Cells(i, 16) = Cells(i, 14) - Cells(i, 15)
  Cells(i, 17) = WorksheetFunction.Average(Range("P" & i, "P" & i - length(3) + 1))
 Else
  Cells(i, 16) = Cells(i, 14) - Cells(i, 15)
 End If
Next

×[本文にあるコード]

For i = length_temp + 4 To lastrow
 If i = length_temp + 4 Then
  Cells (i, 16) = Cells (i, 14) - Cells (i, 15)
 ElseIf i >= length(3) + length_temp + 4 Then
  Cells (i, 16) = Cells (i, 14) - Cells (i, 15)
  Cells (i, 17) = WorksheetFunction .Average (Range ("P" & i , "P" & i - length (3) + 1) )
 Else
  Cells(i, 16) = Cells(i, 14) - Cells(i, 15)
 End If
Next

----------------------------------

本文116ページの10〜11行目に記載されている内容は
「pDI > 0 かつ mDI > 0」ではなく、
「pDI < 0 かつ mDI < 0」でした。

なお、これによるコードの修正はございません。

----------------------------------

本文197ページ 図表5-4 におけるコードの一部は

「Public s_price(4) as Integer」ではなく、
「Public s_price(4) as Long」でした。

----------------------------------

本文349ページに記載されている、
ストキャスティクスマクロの修正における変更は

「length(1) = input_temp(6)」ではなく
「length(1) = input_temp(4)」でした。

----------------------------------

本文367ページに記載されている、
「Result」シートの書き込み位置の指定は以下の通りです。

○
If b.Range("B3") = "" Then
endrow = 3
Else
endrow = b.Range("B2").End(xlDown).Row + 1
End If

×
endrow = b.Range("B2").End(xlDown).Row + 1

----------------------------------

本文219、231、241、345、351、359ページに記載されている、売買枚数を算出するためのコードは以下の通りです。

○
Contracts = WorksheetFunction.RoundDown(((Equity * Risk_Ratio) / (StopLoss)), Unit_Degits)

×
Contracts = WorksheetFunction.RoundDown(((Equity * Risk_Ratio) / (StopLoss * Units)), Unit_Degits)

----------------------------------

サンプルシートでは上記の問題が訂正されています。
詳細に関しましてはそちらをご覧ください。

お詫びして訂正いたします。

【改良】

■Yahooファイナンス版において、YahooファイナンスのWebページ構造の変更による問題を修正しました。(2009年7月24日)

■Yahooファイナンス版において、YahooファイナンスのWebページ構造による Webテーブル番号のランダム変更に対応しました。 詳細はサンプルシートで確認してください(2007年3月5日)

■第5章〜第7章において、建玉数を建てるだけの資金残高が不足している場合、強制的に建玉数を「0」としていましたが、これを「資金残高で建てられるだけの枚数」に変更しました。

詳しくは、該当箇所をサンプルシートで確認してください。


関連書籍・DVD


自動売買ロボット作成マニュアル初級編

DVD パソコンで株を始めよう!

コンピュータトレーディング入門

株はチャートでわかる! 増補改訂版

マーケットのテクニカル秘録

バーンスタインのデイトレード入門

バーンスタインのデイトレード実践

魔術師リンダ・ラリーの短期売買入門

売買システム入門

トレーディングシステム入門

トレーディングシステム徹底比較

アルゴリズムトレーディング入門

究極のトレーディングガイド

ワイルダーのテクニカル分析入門

マーケットの魔術師 システムトレーダー編
トレーダーズショップから送料無料でお届け

Topへ