|
![]() |
発行書籍一覧 > 現代の錬金術師シリーズ一覧 > ← / →
自動売買ロボット作成マニュアル
〜エクセルで理想のシステムトレード
著者 森田佳佑
A5判 389頁
定価 2,940円 (本体2,800円+税5%)
2006年09月15日発売
ISBN4-7759-9039-X C0033
■目次 | 正誤表 | よくあるご質問と回答 | サンプルシートをダウンロード (2007年7月20日 Ver 1.12 更新)
|
本書の続編
著者ウェブサイト 自動売買研究所 補足コラム |
「テクニカル分析に興味があり、一通りの知識を身につけた。
しかし、実際のところ、どのように利用してよいか分からない」
「テクニカル分析を活用したいと思っている。
しかし、手作業で検証するには膨大な時間と労力がかかる。
かといって、そのような作業を自動的にしてくれるソフトウェアは見当たらない」
「テクニカル分析をルール化し、売買を機械的に執行したいと考えている。
しかし、具体的にどうすればよいか分からない」
このような疑問を持ち、せっかく学んだ売買手法の知識を生かしきれていないと感じたことはないだろうか? 「そのとおり!」と思われた方には、ぜひ本書をひもといてもらいたい。 本書は「マイクロソフト社の表計算ソフト、エクセルを利用して、テクニカル分析に関する各工程を自動化させること」を目的にした指南書である。自分の理想のトレードを実現させる強力なツールとしてエクセルを利用してみようというわけだ。
エクセルで「投資ツール」を作ろう
エクセルは、多くのパソコンに装備されているので、実際に利用された経験がある人は多いように思う。しかし、ほとんどの方はエクセルのセルに文字や計算式、関数を直接入力して利用されていらっしゃるのではないだろうか。 エクセルには「VBA=Visual Basic for Application」と呼ばれるプログラミング言語が搭載されている。このVBAこそ、エクセルの大きな特徴に挙げられる。さまざまな作業を自動化したり、ソフトウェア自体に機能を追加したりすることができる強力なツールだ。このVBAを活用してエクセルを強力な投資ツールに変えてしまおう、というのが本書の方針である。
本書では、
これらを具現化するのに一部の人しか手にはいらないような高価なソフトウェアを用いるのではない。パソコンを利用している多くの方がすでにお持ちのエクセルを利用するのである。 皆さんは本書のコードを模写するだけで、システム構築のロジックを会得し、非常に強力な投資環境を手に入れることができるだろう。
|
エクセルで「投資ツール」を作ろう 本書を読み解くうえでの注意点 第1章 エクセルとVBAの基本 1-1 実際に自分で記述する意味
1-2 VBAの基本概念 第2章 データの取得
2-1 Yahooファイナンスから取得
2-2 Pan Active Databaseから取得する 第3章 テクニカル指標の算出
3-1 移動平均の算出
3-2 EMAとMACDの算出
3-3 RSIの算出
3-4 ストキャスティックスの算出
3-5 DMIとADXの算出 第4章 チャートの作成
4-1 チャートの準備
4-2 各指標の期間変更
4-3 銘柄コード・取得期間を変更する
4-4 チャートにスクロール・拡大縮小機能を追加
|
第5章 売買手法のプログラム
5-1 分析の前に
5-2 3本足の高値安値
5-3 アンチ
5-4 ADXギャッパー 第6章 売買手法を検証
6-1 手法の検証
6-2 分析項目の変更
6-3 手法の最適化
6-4 銘柄スクリーニングの方法 第7章 エクセルデイトレード
7-1 10銘柄を同時に確認する
7-2 シグナルの発生を確認
7-3 シグナルの発生を監視し、注文を処理 おわりに |
ウェブサイト : 自動売買研究所 http://oaive.com
エクセル2000でも利用できますか?
エクセルのバージョンですが、基本的には2003で作成・動作確認を行ってい ます。
2000でも動作確認済みです。
Excel2000ではWebクエリの画面が異なります。著者サイトでExcel2000でのWebクエリの補足説明をしておりますので、 ご参照ください。http://oaive.com/columns/excel2000_webquery
本書は日経225先物にも有効でしょうか? 対象市場を教えてください。対象市場ですが、システム検証は国内すべての市場、 自動売買は東証・JASDAQ・大証・ヘラクレスに対応しています。
先物に関しては、データ取得にPanActiveDatabaseを使用する場合に限り対応 しています。データ取得にYahooファイナンスを使用する場合、現在のところ 先物の時系列データをYahooファイナンスが扱っていないため未対応です。 為替に関しては、基本的にPanActiveDatabase、Yahooファイナンスのいずれ も対応しています。
ただし、先物に関してPanActiveDatabaseを使用する場合でも、限月の設定な どが必要であり、その部分に関しては本書で言及していません。同様に、為替 に関しても為替特有の設定などに関しては言及していません。そのため、 本書の内容を理解した上である程度応用していただく必要があります。
本書の内容を前提とした為替や先物の具体的な対応に関しては、今後私の 運営するウェブサイト (http://oaive.com) で追加コラムという形で紹介したいと考えています。
コードの入力ミスを防ぐコツはありますか?VBEでコードを記述する場合、「Ctrl+スペース」でコードの候補を表示する ことが出来ます。これは入力ミスを防ぐだけでなく、入力効率を高めることが できるため、非常に有効な機能といえます。また、入力ミス後の対処法として、 「F8」でコードを1行ずつ実行していくステップインという機能があります。 これで1行1行がそれぞれどのような処理を行っているのかを確認していくこと によって、どこに入力ミスがあるかを速やかに調べることが出来ます。これら の機能を活用していくことが、入力ミスを減らすことにつながると思います。
最後のUWSCについて、あまり著されていなかった理由は?UWSCはキーボードやマウスの操作を自動化するソフトウェアです。
そのため、例えば利用する発注ソフトの操作性などが変化すれば書いたスク リプトは使えなくなります。よって、将来的に使えなくなるような不確定要素 が大きいことから書籍という形で深く言及するのを避けました。もちろん、注 文の自動化は自動売買の重要な部分のひとつで、気になる方も多いと思います ので、それは私のウェブサイト (http://oaive.com) に追加コラムという形で掲載させていただきました。既にご覧になれますので、本書を読み終えた人は是非注文の自動化に挑戦してみてください。
システムトレードに向いているのはどういう人だと思われますか?入念に調査・研究を繰り返すことができるこだわりを持った人だと思います。 システムトレードの場合、事前の研究がほぼすべてです。十分に検証されてい ないシステムを実践で扱うことは、うまく動作しないどころか大きな損失を被 る危険性をはらんでいます。抜け目なく何度も検証を繰り返すことの出来る入 念さが重要です。
そして何より、システムトレードや自動売買が「楽して儲ける方法」だと考 えていない人だと思います。
本文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)
----------------------------------
サンプルシートでは上記の問題が訂正されています。
詳細に関しましてはそちらをご覧ください。
お詫びして訂正いたします。
■第5章〜第7章において、建玉数を建てるだけの資金残高が不足している場合、強制的に建玉数を「0」としていましたが、これを「資金残高で建てられるだけの枚数」に変更しました。
詳しくは該当箇所をサンプルシートで確認してください。