goo blog サービス終了のお知らせ 

~みんな株ってる?~

~目指せ!あと5年でセミリタイヤ~   ※ブラウザのフォントを等幅にすると快適に参照ができます。

VBAとIE7でのWEBクエリーエラーの解消?

2008年05月30日 16時25分27秒 | シストレ-開発編
昨年、10月にVistaマシンを購入しVBAのWEBクエリー機能を使ってIE7経由で
データを取得しようとしたところ、実行時エラー(1004)※詳しくはこちらでデータ取得できなかったが、
ひょんなことから本日システムを稼動させたところ正常動作が確認できた。

ちなみに本日の実行環境
 OS :Vista Home premium 6.0.6001 SP1 ビルド6001
 IE :IE7 7.0.6001.18000
 VBA:Execl2000 9.0.8961 SP3
 ※Vista上でのExcel2000はサポート対象外

まだ、詳しく検証した訳ではないので、とりあえずの報告までに。。。
他に情報お持ちの方はお気軽にコメント下さい。


XXXX/XX/XX 本日のシストレ(自動売買)結果報告 一部変更

2008年05月30日 14時06分36秒 | シストレ-開発編
株の取引記録の表示を一部変更しました。
来週以降は以下の表示に変更されます。

<エントリ>
  銘柄コード/銘柄名      購入単価    購入株数
  2149 アジアメデ       181円 1,000株
  4296 ゼンテック    79,100円     2株

<保有中>
  銘柄コード/銘柄名      評価損益    評価損益率  保有期間
  2149 アジアメデ    +3,760円   2.1%   3日

<利確/損切>
  銘柄コード/銘柄名      確定損益    確定損益率  保有期間
  4296 ゼンテック   +18,590円  11.7%   0日



金融業界特有の用語(業界用語)

2008年05月30日 13時07分01秒 | シストレ-開発編
いろいろな、金融商品のパンフレットやWEBを見ていると
しばしば、金融業界特有の用語(業界用語)を目にすることがあります。

ここでは、シストレの性能評価に関係しそうな用語を備忘のために、記録しておきます。


■シャープレシオ
リスクに見合ったリターンを得ているかを表す指標です。
リスク尺度にリターンのブレの大きさ(標準偏差)を使用します。数値が大きい方が高い評価となり、多くの投信評価会社がパフォーマンス評価として採用しています。

           (ポートフォリオの収益率 - 無リスク証券の収益率)
シャープレシオ = ―――――――――――――――――――――――――――――――――――――
                ポートフォリオの収益率の標準偏差

※無リスク証券の収益率とは、国債や銀行預貯金のような元本保証された無リスクの収益です。


■リスク
投資収益の変動の大きさのことです。
投資収益がプラスにもマイナスにも大きく動くことを「リスクが大きい」といい、期待収益率の不確実性が大きいことを意味します。

※結果が良かった場合も、リスクが大きいと評します。
これは、期待計算に対して何か不測の事態が発生したことを意味し、将来の投資への不確定要素になるためです。


■アルファ値(α)
個別銘柄に投資を行う場合にベンチマークを上回る収益率を得るための源泉のうち、その銘柄固有の特性に基づく部分をいいます。

※超過リターンを得るための源泉のうち、市場全体の変動に基づく部分はベータ値と呼ばれます。


■ベータ値(β)
個別銘柄の株価変動の大きさが市場指数(例えば日経225やTOPIX)の価格変動に比べ大きいか小さいかを表す指標です。

指標が1%上下する時に1%上下した場合   β=1
指標が1%上下する時に1%以上上下した場合 β>1
指標が1%上下する時に1%未満上下した場合 β<1

要するに、値動きの荒さを表す指標であり、β>1を高リスク、β<1を低リスクと判断する。


■ボラティリティ
有価証券の価格や金利の変動性を表す指標です。一般に投資リターンの平均からの乖離の程度を表すのに標準偏差を用いますが、この標準偏差のことをボラティリティと呼びます。


■最大ドローダウン(MDD)
システム運用における最大損失率を表す資料です。これが大きければ大きいほどシステム運用中に発生する損失が大きいということになります。

最大ドローダウン = MAX(損失額 ÷ 運用資産額 × 100) %

この数値は小さければ小さいほうがより安定しているシステムであるということになりますので、システムの組成時には注目する指標となります。


■プロフィットファクター(PF)
どれだけ利益を出せるかを表す指標です。

プロフィットファクター = 総利益額 ÷ 総損失額

システムの損益分岐点は「総利益 = 総損失」すなわち「1」となります。このことから1より大きいことがトレーディングシステムとして存続できる条件となり、プロフィットファクターは大きければ大きいほど利益を出せるシステムとなります。





原因不明のエラー

2008年05月27日 08時02分54秒 | シストレ-開発編
先日シストレマシンのVistaにSP1を当てた。
その後、しばらく株をやってなかったので気がつかなかったが、
IE7を操作してのデータ取得部分でエラーが出ることが発覚しました。

それも毎回ではなく、でもたまにでもなくと微妙な頻度。

メッセージとしてはVBAとIEの両方から出力されます。

■VBA側:実行時エラー'-2147024726 (800700aa)'
    'Navigate2'メソッドは失敗しました:'IWeb Browser2'オブジェクト




■IE側:インターネットサイト
    http://table.yahoo.co.jp/t?c~ を開けません。
    操作は中断されました。



該当のURLを直接IEに貼り付けると問題なく表示可能なのに・・・

はてはて、いったい何の問題なのか?
調査を開始します。


シストレツールの一部修正(2)

2008年03月10日 15時43分38秒 | シストレ-開発編
日本人にはあまりなじみがないのですが、カナダでは3月9日0時から
サマータイムがスタートするため時計を1時間進めます。
これにより、日本との時差はさらに1時間広がって18時間となりました。

日本で稼動させていれば、サマータイムなど無関係なのですが、
カナダにノートPCを持ち込んで稼動させているため、ノートPCと日本時間を
吸収する仕組み(計算判定文)が必要なのですが、その部分(全10箇所)を修正しました。

このような感じで・・・

 (1) proc_date = DateAdd("h", 18, Now())
 (2) Day(Now() + TimeValue("18:00:00"))

時間が出来たらカレンダーと時刻の設定から
 ①日本かカナダか?
 ②カナダであればサマータイム期間中か?
を判定し自動補正する仕組みを導入予定です。



シストレツールの一部修正

2008年02月26日 12時30分21秒 | シストレ-開発編
カナダに移住したことにより、私のシストレツールに多少の不具合が
出ているのに気づいた。

ほとんどの原因が、日本とカナダの時差によるもので、
日付や時間の判定部分を修正する作業になった。

日本はGMT-9Hに対し、カナダ(西海岸)はGMT+8H
カナダは日本より17時間遅く時間が流れていることになる。

一通り修正が完了し、昨日から本格実行中である。
乞うご期待。



株価データ提供サイト(2007/12/18版)

2007年12月19日 01時00分07秒 | シストレ-開発編
現在運用している、シストレをバージョンアップ(高速化&高機能化)すべく、
改善点などを洗い出したりと、いろいろ検討を重ねている中で、
いつも思った時にデータを取得できるように、日頃からお世話になっている
各種データを公開しているサイトを備忘のためにまとめました。

■PanRolling
 URL      :http://www.panrolling.com/data/
 FILE名(例)  :http://www.panrolling.com/data/daily/s20071218.txt
 データ更新時間:
 データ種類  :株式データ(日足)、商品データ(日足)
 コメント   :すべて直近5日分のデータのみ公開

■IT-SUNTEC
 URL      :http://www.it-suntec.com/kabu/kabu1/index.html
 FILE名(例)  :http://www.it-suntec.com:880/kabu/kabu1/v2_src/kabuka/2007/data_d/20071218.csv
 データ更新時間:翌朝7時ごろ
 データ種類  :株式データ(日足、時系列)、株式分割データ
 コメント   :1999年以降のデータを公開

■ソフトウェア工房REED
 URL      :http://homepage1.nifty.com/hdatelier/data.htm
 FILE名(例)  :http://homepage1.nifty.com/hdatelier/data/20071218.lzh
 データ更新時間:翌日
 データ種類  :株式データ(日足)
 コメント   :2006年5月以降のデータを公開

■Rain-Net
 URL      :http://www.rain-net.com/kabu/
 FILE名(例)  :http://www.rain-net.com/kabu/kabudata/20071218hb.lzh
 データ更新時間:
 データ種類  :
 コメント   :2004年1月以降のデータを公開
         データファイル名が日付+英数2文字(規則性なしか?)になっているため、自動DLには不向きか?

■edatalab
 URL      :http://www.edatalab.net/kabu/index.htm
 FILE名(例)  :http://www.edatalab.net/kabu/data2007/D071218.LZH
 データ更新時間:
 データ種類  :株式データ(日足)、銘柄名データ
 コメント   :2000年1月以降のデータを公開
         データフォーマットも丁寧に公開されている

■無尽蔵
 URL      :http://souba-data.com/data_day/2007_day_data.htm
 FILE名(例)  :http://souba-data.com/data_day/2007d/07_12d/T071218.lzh
 データ更新時間:18~19時ごろ
 データ種類  :株式データ(日足)、先物データ(ミニ含む)
 コメント   :1996年1月以降のデータを公開
         この中では一番安定している



データ取得機能を一新

2007年12月15日 02時38分12秒 | シストレ-開発編
今年夏ごろにOSをVistaにしてから、Vista上に作成したVirtualPC 2007で
自作のシストレアプリ(EXCEL VBA)を動かしていましたが、毎回VirtualPCを
上げるのがメンドくさくなってきたため、データ取得機能とブログ更新機能
をVista用に一新しました。

今まではデータ取得がWEBクエリ、ブログ更新がIE操作だったのですが、
WEBクエリをIE操作&ソース(HTML)編集に変更、
そしてIE操作はNavigateをNavigate2に変更しました。

IE7のNavigate2操作は結構手間取りました。色々なサイトで情報集めながら、
何とか完成し、今月から実運用で使用しております。

↓ここら辺を参考にさせてもらいました。感謝。
 IEオブジェクトを作る(IE7編)

以前のWEBクエリよりも若干早くなって更に使い勝手がUPしました。



EXCELと楽天MarcketSpeedの連携

2007年11月14日 00時30分06秒 | シストレ-開発編
今まで(Windows2000+Office2000)の環境と時は、
EXCELと楽天MarcketSpeedの連携にマーケットスピードライブラリを使用していたのですが、
Vistaに変更したことにより、使えなくなりました。

使っていた機能としては↓ですが、
 rmsc.Market関数:銘柄コードを指定すると市況情報を表示する関数
 rmsc.Market関数:銘柄コードを指定すると個別チャートを表示する関数

単純に言うと、MSの見たいページに株式コードを自動で入力する関数。

代わりにVBAのsendkey関数を使用したところ、Office2000/2003のバグ(?)で
実行時エラー(70)が出るようです。
 ※詳しくはココ
色々調べましたが、Office2000での回避策は無いようです。

何とか別の機能で実現できないかを調べた結果、
VBAからWin32API(USER32.DLL)のkeybd_eventメソッドを使用することで
sendkeyの代用が出来そうだとわかりました。

こんな時間なので、枝葉の機能実装は後回しにするとして、
骨組み処理を作成してみました。

---
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, _
  ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)

Private Const KEYEVENTF_EXTENDEDKEY As Long = &H1
Private Const KEYEVENTF_KEYUP As Long = &H2
Private Const fKEYDOWN = KEYEVENTF_EXTENDEDKEY
Private Const fKEYUP = KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP

Sub Sample()
  AppActivate "Market Speed Ver6.2"
  Call keybd_event(49, 0, 0, 0)      --数字の1を押す
  Call keybd_event(50, 0, 0, 0)      --数字の2を押す
  Call keybd_event(51, 0, 0, 0)      --数字の3を押す
  Call keybd_event(52, 0, 0, 0)      --数字の4を押す
  Call keybd_event(vbKeyReturn, 0, 0, 0)  --RETURNを押す
End Sub
---

株式コードを入力する部分は、本実装ではもう少しスマートに書くとして、
とりあえず機能的には、これでOKです。



環境復活

2007年10月27日 14時02分58秒 | シストレ-開発編
とりあえず、VirtualPC上にWin2000の環境を作成し、
IE6+VBAで株の分析ソフトを稼動させております。

数ヶ月ぶりですが、そのソフトを使って金曜日の結果をブログにUPしました。

まだ、ホストOSとのファイルやり取りで問題が残るっているので、
分析に時間が掛かっているのですが、とりあえず復活です。

nLiteでWindows2000ProにIE6とSP4と各種Hotfix適用し、不要機能を削除した
便利Diskを作成するつもりでしたが、うまくいかず
SP+メーカーというソフトで、Windows2000Pro+SP4+各種Hotfixまではできました。



nLiteでの原因を追究するとともに、無人インストール方面も調べていこうと思います。



環境作成

2007年10月26日 00時56分01秒 | シストレ-開発編
前回、挙げた2つの回避方法を検討していますが、Vista上ではIE6がまったく
動かないようなので、VirtualPCを使う方向で進めております。

Vistaの前に数年間使っていたWin2000をベースに、最低限のマクロ実行環境を
作成しております。

VirtualPCをインストールし、各種初期設定を行った上で、
ノートPC用に作成しておいた、Win2k ProのISOイメージからインストール。

以前に失敗した初期のオンラインUPDATEを避ける為、Netに接続するタイミングを
調整しながらServicePackやHotfixを適用する流れでした、
が、どうしてもオンラインでUPDATEしなければならないHotfixを取得するだけで
大量のウイルスに侵食されているようです。

といことから、SP4やHotfixを適用したWin2000を作成すべく、
nLiteを使ってISOファイルをカスタマイズしてみました。

nLite
   ダウンロード:http://www.nliteos.com/
    使い方:http://www4.zero.ad.jp/Angel.Omega/nLite.htm
 




IE7のエラー

2007年10月26日 00時39分41秒 | シストレ-開発編
Vistaに上げてのマクロエラーですが、VBAとIE7の組み合わせで発生することは
判っていたのですが、それがIE7側のバグであることが判りました。

VBA側からWebクエリーを使用する場合のURLの中に「?」が含まれていて、
連続実行した際に実行時エラー(1004)が発生します。

詳細な発生状況はわかっておりませんが、他の方も同様の現象を体験されているようです。
http://www.panrolling.com/books/gr/gr45.html

とりあえずIE7はNGなので、Vista+IE6を使うか、VirtualPCで暫定環境を作る予定です。




マクロ環境の不具合

2007年10月20日 15時08分13秒 | シストレ-開発編
Vistaにしてから、株分析に使用していた、自作マクロが使用できなくなり、
暫定でVirtualPC2007上にWin2000環境を構築してましたが、
常用環境をNotePCにしてから株をお休みしてました。

現在は、マクロが出来なくなった原因を本格的に探るべく、
VBAでIEオブジェクト関連の資料を読み漁っています。

新しいNotePCにはメモリが4GBも載せたこともあり、
古いデスクトップよりもマクロも快適に動くはずなのですが、
とにもかくにも、Vista+Office2000が正式サポートされていない事もあり、
試行錯誤の状況です。

Vista化に伴い、IEが6から7になったのが大きなネックになっております。
タブが使えるようになって普段使いは快適になりましたが、
株(データ取得/分析/注文/証券会社ツール連携)やブログ更新などVBAを多用していたので、
改修作業に時間が掛かっております。

困った時は、ネット上で色々なサイトからネタ集めしてますが、
その一部をご紹介。

 http://www.moug.net/
 http://www.happy2-island.com/
 http://www.sigoto.co.jp/excel/
 http://www.geocities.jp/happy_ngi/
 http://www.ken3.org/



EXCELでエラー発生

2007年08月18日 21時48分47秒 | シストレ-開発編
OSをVistaに上げたのをきっかけに、自作投資ツール(EXCEL VBA)でエラーが出るようになった。

具体的には、コードを元にWEBクエリー機能を使ってYahooのサイトから過去株価を取得する部分。
そもそも、MSはVista上ではoffice2003以降しか保障していないため、
2000を使用している私としては何も文句を言えない立場だが、
それ以外の機能は普通に動いていることから、何とかならないかいろいろ情報を集めてます。

Vista上に作ったVirtualPC(Win2000Pro)上では今まで通りすんなり動いてます。

Vistaになってメリット多いけど細かいところで結構ヤキモキさせられてます。



タイマー機能

2007年06月14日 22時54分50秒 | シストレ-開発編
分足データ取得や株価監視、定期メール送信などに使用する目的で、
マクロのタイマー機能を作成してみました。

■XX秒後に起動するとか、XX秒間隔で起動するなどの場合

 Dim a As Date

 '20秒間処理を停止する場合
 a = DateAdd("s", 20, Now())

 Do
  If (Now() > a) Then
   Exit Do
  endif
 Loop

 処理1
 ・・・・


■XX時XX分に起動するなどの場合

 Sub TimerSet()

  '午前9時に「起動マクロ名」という処理を起動する場合
  Application.OnTime TimeValue("9:00:00"), "起動マクロ名"

 End Sub


ちなみに、タイマー設定の解除は

 Sub TimerSet()

  '午前9時に「起動マクロ名」という処理を起動解除する場合
  Application.OnTime EarliestTime:=TimeValue("9:00:00"), Procedure:="起動マクロ名", Schedule:=False

 End Sub


意外と便利でいろいろな場面で使ってます。