~みんな株ってる?~

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

原因不明のエラー~続報1~VBAからIEを操作~

2008年05月31日 15時28分29秒 | シストレ-開発編
今まで、VBAからIEを操作する際にNaviate2関数を使用して、
以下のような流れで処理をしていました。

-----------------------------------------------------------
Sub main()  '株価データ取得処理
  Dim objIE as Object         '変数定義
  Dim a as Integer
  Dim code as String

  ret = IE_open(objIE)         'IE初期処理
  For a = 1 to 100 step 1       'メイン処理ループ
    code = cells(a , 1).value
    Call data_get(objIE , code)   'データ取得処理
    Call ホニャホニャ        '以降必要に応じて処理
  Next a
  ret = IE_close(objIE)        'IE終了処理
End sub
-----------------------------------------------------------
Sub data_get(objIE , code)  '個別データ取得処理
  Dim URL as String          '変数定義

  URL = "http://table.yahoo.co.jp/ホニャホニャ" & code
  objIE.Navigate2 URL

  Call IE表示待ち(objIE)
  Call ホニャホニャ    'IE操作してデータ処理
End sub
-----------------------------------------------------------
Function IE_open(objIE)  'IEオブジェクトの作成
  Set objIE = CreateObject("InternetExplorer.Application")
  objIE.Visible = False 'IEウィンドウを非表示
End Function
-----------------------------------------------------------
Function IE_close(objIE)
  objIE.Visible = True         'IEウィンドウを表示
  objIE.Quit              'IEオブジェクトの開放
  Set objIE = Nothing
End Function
-----------------------------------------------------------

要するに、objIEオブジェクトを使い回していたのですが、
Vista SP1のタイミングか?これがエラーになるようになりました。

腑に落ちない点が多々ありますが、とりあえずシステム復旧を最優先に考え、
以下のように変更しております。

変更点は以下の3点です
  ①objIEオブジェクトを再利用しない
    何が悪かったのかイマイチはっきりしないバグですが、これでエラー回避出来ます。

  ②Navigate2をNavigateに変更
    初期のIE7ではNavigate関数が全く使えなかったが、フとしたことからNavigate関数が
    使えるようになっていることを発見。下位互換や使い易さからNavigateに戻した。

  ③暫定WAIT処理の追加
    これは①の副作用とも言うべきものです。メインループの各回でIEオブジェクトの
    生成と開放をしているのですが、ループ処理が早すぎるとIEプロセスが落ちる前に
    次のIEが生成されるためか、IEのプロセスがメモリをどんどん消費しながら成長して、
    最終的にエラーで落ちる現象が発生しました。



これを暫定で回避するためのWAIT処理です。

-----------------------------------------------------------
Sub main()  '株価データ取得処理
  Dim a as Integer           '変数定義
  Dim code as String

  For a = 1 to 100 step 1       'メイン処理ループ
    code = cells(a , 1).value
    Call data_get(objIE , code)   'データ取得処理
    Call ホニャホニャ        '以降必要に応じて処理
  Next a
End sub
-----------------------------------------------------------
Sub data_get(objIE , code)  '個別データ取得処理
  Dim URL as String          '変数定義
  Dim objIE as Object

  ret = IE_open(objIE)         'IE初期処理
  URL = "http://table.yahoo.co.jp/ホニャホニャ" & code
  objIE.Navigate URL

  Call IE表示待ち(objIE)
  Call ホニャホニャ          'IE操作してデータ処理
  ret = IE_close(objIE)        'IE終了処理
  timeup = DateAdd("s", 1, Now())   '暫定WAIT処理
  Do While timeup > Now()
    DoEvents
  Loop
End sub
-----------------------------------------------------------
Function IE_open(objIE)  'IEオブジェクトの作成
  Set objIE = CreateObject("InternetExplorer.Application")
  objIE.Visible = False        'IEウィンドウを非表示
End Function
-----------------------------------------------------------
Function IE_close(objIE)  'IEオブジェクトの開放
  objIE.Visible = True         'IEウィンドウを表示
  objIE.Quit              'IEオブジェクトの開放
  Set objIE = Nothing
End Function
-----------------------------------------------------------



Mercedes Bentz から GLK公開

2008年05月31日 11時29分31秒 | くるま関連
メルセデスからいくつかのショーでGLクラスのSUVが展示されてます。

見た目がワイルドで私的にはかなりGoodだと思います。




http://www.mbusa.com/models/future/glk/index.do
http://en.wikipedia.org/wiki/Mercedes-Benz_GLK-Class
http://jalopnik.com/cars/glk/
http://www.autoblog.com/2008/01/13/detroit-2008-mercedes-benz-has-double-vision-with-glk-townside/
http://www.autoblog.com/tag/glk/
http://www.motorauthority.com/news/concept-cars/official-pics-mercedes-glk-revealed-ahead-of-detroit-show/


ブログのタイムスタンプ

2008年05月31日 08時21分05秒 | シストレ-開発編
本日、何本か立て続けにブログに投稿した時に気づいたのですが、
新規投稿時のタイムスタンプは、サーバ側のタイム(日本時間)であるのに対し、
編集等で「現在日時をセット」ボタンを押した場合は、クライアント側の
タイム(カナダ時間)が自動的にセットされることに気づきました。

日本で更新していた時は、常にNTPサーバと同期しておりタイムスタンプ源泉を
意識したことは無かったのですが、海外からの更新なので気づきました。

カナダ時間を基準に見ると、未来の時間が設定されている事になり、
日本時間を基準に見ると、最新記事なのに昨日日付で表示される可能性があります。
(ちなみに、投稿時現在 5月30日(金) 16時21分)

これにより、最新記事が過去記事に埋もれてしまう危険性がありますね。
注意してご覧ください。


IEのバージョンチェック機能

2008年05月31日 07時04分58秒 | シストレ-開発編
IEのバージョンがIE6→IE7→IE8βと変わるごとに、シストレの動作に何かしらの
不具合が出てきてさすがにムカついてきた今日この頃。

しかし、新バージョンにはそれなりのメリットもあることから、
バージョンアップを避けられない人もいる事でしょう。

そんな悩みを解決ではなく、回避する方法のひとつとして、
システム側でIEのバージョンを事前に把握し、バージョンにあった処理を
させることで回避を狙います。

その手始めとして、VBAでIEのバージョンをチェックする方法です。

---------------------------------------------------------------
Sub IE_VerCK()
'InternetExplorerのバージョンを調べる

 'オブジェクトの定義
 Dim IE_Ver As String
 Dim FsObj As Object

 Set FsObj = CreateObject("Scripting.FileSystemObject")

 'GetFileVersion関数を使用
 IE_Ver = FsObj.GetFileVersion("C:Program FilesInternet ExplorerIEXPLORE.EXE ")

 '結果を表示
 MsgBox "Internet Explorer" & Chr(13) & _
  " Majar Version : " & Left(IE_Ver, InStr(IE_Ver, ".") - 1) & Chr(13) & _
  " Minor Version : " & IE_Ver

 '後処理
 Set FsObj = Nothing

End Sub
---------------------------------------------------------------


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月29日 15時38分00秒 | シストレ-運用編
本日、株の売買を再開しました。
3月11日以来なので約2ヶ月の沈黙を破っての再開です。

たまたま、今週は休みだったので取引出来てますが、
また来週からは、忙しい毎日を送る予定なので、日本にいた時のように
毎日デイトレをするのは厳しい状況ではあります。

なかなか時間がとれず、システム改良や機能追加など出来てません。
しばらくは、スローペースでトレード予定です。


2008/05/29 本日の結果報告

2008年05月29日 15時01分06秒 | シストレ-運用編
<エントリ>
  2149 アジアメディ            181円 1,000株
  4296 ゼンテックテ         79,100円     2株
<保有中>
  2149 アジアメディ         +9,000円   5.0%
<利確/損切>
  4296 ゼンテックテ        +18,800円  11.9%



原因不明のエラー

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に貼り付けると問題なく表示可能なのに・・・

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


Super Talent「FTM20GK25H」の登場

2008年05月26日 11時44分12秒 | PC関連(記事紹介)
Super Talentから「FTM20GK25H」というSSD Diskが発売されました。
聞いたことない会社ですが、価格面で他のSSDの群を抜いた安さが魅力です。

下記ページにHDD(5,400rpm)との比較記事が掲載されています。
要約すると、書き込みに関して、若干の差はあるもののHDDと同等。
読み込みに関しては、1.5~2倍程度と推測されます。

http://pc.watch.impress.co.jp/docs/2008/0526/ssd.htm

このベンチ結果の「2倍」がそのまま普段の動作の短縮にはならないものの、
OSや各種アプリの起動の短縮になる事は間違いない。

10~20万という値段に二の足を踏んでいた方にとっては「買い」かと思われます。