FC2ブログ
現役プログラマー村健の、投資に役立つプログラムを作るための勉強ブログです。 自動売買、システムトレードに挑戦!します。 勉強と習得の成果を記録です。
本ブログについて
本ブログは、プログラマー観点で投資への対費用効果を上げるために何ができるか?を考えていくブログです。
基本的には、ツール作成・公開、投資に関わるプログラム情報、最終的には 完全なる自動売買を目指しています。

現在、HPの方で現在作成中のツールや発注ロジックなどを公開中です。
現在開発している、VBA発注ロジックの進捗です。

とりあえず、現物の買い注文まで完成しました。
ソースは、左の投資情報の発注のページにあります。
あと、使用例のサンプルを乗せたページを作成しました。

簡単にしか試験してませんので、バグとかあるかもしれません。


ブログランキングのクリックにご協力お願いします<(__)>
FC2ブログランキング
blogRanking
くる株・株ブログランキング
株・投資ランキング
スポンサーサイト



前日、POSTデータが見たいと思いつき、さっそく作ってみました。

たった数行でできました。。。
(調査には数時間かかりましたが)

証券会社のWebでいろいろやったデータもちゃんとのってそうなので、
たぶんうまくできていると思います。

これで株発注ツールやポイントサイト巡回ツールの開発も
スムーズに進みやすくなりますかね。

それにしてもこんなツールを数千円でシェアで売るなんて・・・
ぼったくりでは・・・

まぁホームページネタができたので良しとしますか。

ブログランキングのクリックにご協力お願いします<(__)>
FC2ブログランキング
blogRanking
くる株・株ブログランキング
株・投資ランキング
最近はWebとのやりとりを行うツールを作っているのですが、
情報の取得に困っています。

ツールでWebサイトへのアクセス(データ入力&クリック)を擬似的に行う方法として、
・フォームのテキストボックスに値を入れ、ボタンをクリックする動作を
 ツールで実行
・テキストボックスにデータが入った状態でボタンがクリックされたら
 送信される情報自体を、ツールで疑似データを作成して送信
の方法があると思います。

ただ、最初の方法だとページによってはうまくいかない場合があり、
(私の技術が未熟なだけ?)
後の方法だと、データを調べる方法がよくわからないのです。
(たぶんこんな感じだ!とはわかるのですが、
やっぱり実際のデータが見たい)

フリーウェアの、横取り君、Fiddlerといったツールによって、
ブラウザからWebへのアクセスデータを見ることはできるのですが、
これらツールはセキュリティのサイトへのアクセスデータは
表示させないように作ってあるため、
欲しい情報が見ることができません。

シェアではあったのですが、そんなにお金を払う余裕もありません(T_T

それなので、ないものは作ればいい、ということでちょっと調査中です。


良いツールを知っている方がいれば教えてください。。。

ブログランキングのクリックにご協力お願いします<(__)>
FC2ブログランキング
blogRanking
くる株・株ブログランキング
株・投資ランキング
自動株式売買ロボット・コンテストのスーパーカブロボ大会が開催されますね。

このコンテストは、
設定(もしくは開発)した株の自動売買ロボットで、
運用成績を競うものです。

なんと!
優秀なロボットには、総額5億円の実運用をお願いし、
利益に対して報酬が支払われるそうです。

金銭的リスクが全くなく、お金が稼げる・・・
(時間的リスクは大ですが)
こんなチャンスを逃してたまるものか。

といっても開催期間は7-11月なので、私はとても間に合いそうには
ありませんな。


システムトレードの勉強には必ずなるので、
志している方は挑戦だけでもしてみてはどうでしょうか。

第一歩を踏み出す、よいきっかけになると思います。

ブログランキングのクリックにご協力お願いします<(__)>
FC2ブログランキング
blogRanking
くる株・株ブログランキング
株・投資ランキング
現在開発している、VBA発注ロジックの進捗です。

発注で、買い銘柄を選択したところまでできています。
もうしばらくしたら、現物買いはできそうな感じです。
ここまでで完成したらまたアップします。

ユーザー(機能関数群を使う人)の視点で、
使いやすいようなプログラムを組もうと思うと、
なかなか手こずります(汗

今までのソースコードはこちら
注意と使い方を簡単に追記してます。

現在私は楽天証券と松井証券しか口座を
持っていないので、それ以外の証券会社はおいおいになりますか。
しかも楽天は信用口座つくってないですし。。。
以前、口座作ってすぐに申し込んだら却下されました^^;)

他の証券会社も、信用口座解説が無料なら開いていきたいですねw


来週からしばらくVB.NET2005の研修です。
朝から晩までみっちり・・・
時間があまりとれそうにありませんな・・・

それなので、イートレード証券の作成は友人プログラマーの「ブラック」に依頼しました。
きっと彼の暇な時間もつぶせることでしょう。。。

ブログランキングのクリックにご協力お願いします<(__)>
FC2ブログランキング
blogRanking
くる株・株ブログランキング
株・投資ランキング
最近は(仕事以外に)やりたい事が多く、
どんどんキューイングして(溜まって)ます。

優先度高いのにしても、
・自動発注ロジック作成
・ポイントサイト巡回ツール作成
・ツール公開用HP作成
これだけあります。

それなので来月から仕事が本格的に始まったら、
とれる時間が全然なくなるのではなかろうか。

こうなったら知り合いのプログラマー達にも依頼しますか。。。
彼らもプログラムを作るのが趣味な人たちなのでw

ブログランキングのクリックにご協力お願いします<(__)>
FC2ブログランキング
blogRanking
くる株・株ブログランキング
株・投資ランキング
POSTによるログイン関数の追加と、
ページの移動関数(まだ取引ページのみ)を実装しました。

ログインはクリックによる方法を実装していたのですが、
後々のためにPOSTでのやり方にも対応した次第です。(Stock_Login2)
機能的には一緒ですが、こういうやり方もあると言うことで。

Webアクセス用標準モジュールには、POSTが行える関数を作成しました。
(Web_Post)

ページの移動関数も、まだ取引ページのみですが実装しました。
(Stock_PageMove)


ソースは、左のフリーページが最新です。

ブログランキングのクリックにご協力お願いします<(__)>
FC2ブログランキング
blogRanking
くる株・株ブログランキング
株・投資ランキング
現在、VBAでいろいろ遊んでいるのですが、
自動売買プログラムを作る人の手間が省けるような
仕組みを考えてみたりしました。

自動売買のロジックは各人の手法があると思いますが、
各証券会社へのWebによるやりとりはほぼ同じロジックになるので、
共通な処理として提供しよう、というものです。
(プログラマーにはあたりまえの事ですが^^;)

誰かこういったソースを配布していないものでしょうか。
と思いつつ、暇つぶしに考えて作っています。

・自動銘柄選定ロジック
 リアルタイムデータを分析して買い・売りを判別する、
 各人ごとのオリジナルなロジック

・各証券会社アクセス用標準モジュール
 証券会社へのWebを使ったアクセス機能をまとめたもの

・共通Webアクセス処理群の標準モジュール
 Webにアクセスする為の機能をまとめたもの

「各証券会社アクセス用標準モジュール」と
「共通Webアクセス処理群の標準モジュール」を
公開・提供します。

使い方としては、「自動銘柄選定ロジック」で証券会社へのWebアクセス
を行いたい場合は、
「各証券会社アクセス用標準モジュール」の関数に
いくつかの条件を渡してコールします。

例えば、
この銘柄が買い!と判断した場合は、
「各証券会社アクセス用標準モジュール」のOrder関数に
銘柄番号、現物、買い、成り行き、株数、を渡してコールすれば完了。

その他に、ログイン、確認、取り消し等、ほとんどの機能を
関数コールで実現します。

「各証券会社アクセス用標準モジュール」は、証券会社毎に
ファイルを作成する必要があります。
それを補助するために、テンプレートと、「共通Webアクセス処理群」
の標準モジュールを用意します。


こういった共通処理を部品化できれば、以下の恩赦を受けることができそうです。

・証券会社へのアクセス(ログイン、発注、確認等)は関数コールだけでよくなり、
 「自動銘柄選定ロジック」のみに注力できる。

・もし証券会社のHP構成が変わっても、
 「各証券会社アクセス用標準モジュール」を新しいものに入れ替えるだけで、
 「自動銘柄選定ロジック」に手を加える必要がない。
 また、新たな証券会社が増えても同様である。

・複数人でもみくちゃにされれば、高機能なものが出来上がる。
 (バグがない、多機能、高速)

デメリットもあるとは思いますが

 ・「各証券会社アクセス用標準モジュール」を新規作成・更新は誰がするか

 ・場合によっては、「自動銘柄選定ロジック」にも手を加える必要があるかも

 ・処理速度と安定動作のトレードオフ



その他にも、売買判定用のロジック、資金管理等、
共通化できる部品があるなら共通化したいですね。

最終的には、他言語で作成したDLLでの提供ですね。

そうすれば、VBAユーザは処理速度が速くなりますし、
他言語でプログラムしている人も使うことができます。
VB.NETならVBAからの移植も簡単ですしね。


以下、試しに作っているものです。
クラスを使えばもっときれいになったのかもしれませんが、
調べたらVBAのクラスは継承ができない?
のような事が書いてあったので、
とりあえず全部標準モジュールです・・・

ソースはここにのせてます。

ブログランキングのクリックにご協力お願いします<(__)>
FC2ブログランキング
blogRanking
くる株・株ブログランキング
株・投資ランキング
VBAでYahooにログインするマクロを組んでみました。
そんなに試験をしてないのでバグがあるかもしれませんが。

改造すれば証券会社のログインや発注もできると思います。

使い回しができやすいように、標準モジュールにいくつかの命令を
まとめました。

今後、色々な証券会社への発注できるものを作ったり、
標準モジュールを整備したりしたいですね。


'作成者:村健
'V0.01
'使い方
'このモジュールファイルをインポートしてください
'メニュー→ツール→参照設定で「Microsoft HTML Object Library」を追加してください。
Option Explicit

Public objIE As Object 'IEオブジェクト参照用

'=================================================
'名前   :初期設定
'機能概要 :IEオブジェクトの作成、可視設定など
'引数   :なし
'戻り値  :なし
'タイミング:IEオブジェクトを使用する前に必ず実行する
'=================================================
Sub SetInitialize()

    'インターネットエクスプローラーのオブジェクトを作る
    Set objIE = CreateObject("InternetExplorer.application")

    objIE.Visible = True '見えるようにする

End Sub

'=================================================
'名前   :Webアクセス
'機能概要 :指定したURLをオープンする。
'引数   :URL
'戻り値  :Webアクセス失敗。ページがない、タイムアウト等
'タイミング:IEオブジェクトを使用する前に必ず実行する
'=================================================
Function UrlAccess(url As String) As Boolean

    'URLを開く
    objIE.Navigate url
    
    '開けるまでまつ
    UrlAccess = UrlAccess_Wait
    
End Function

'=================================================
'名前   :Webアクセスを待つ
'機能概要 :現在OPENしているページの読み込みが完了するまで待つ
'      タイムアウト検出あり
'引数   :なし
'戻り値  :Webアクセス失敗。ページがない、タイムアウト等
'タイミング:ページをOPENしたら必ず実行する
'=================================================
Function UrlAccess_Wait() As Boolean

     Dim waitTime As Date

    '読みこみ完了まで待つ
    waitTime = DateAdd("s", 20, Now()) '20秒後を算出
    
    Do While objIE.Busy = True '読み込み中なら以下を繰り返す
     DoEvents
     If waitTime < Now() Then '指定時間経過したら
     Exit Do
     End If
    Loop

    'まだbusyなら
    If objIE.Busy = True Then
     UrlAccess_Wait = False 'アクセス失敗
    End If
    
    'もし404なら
    If CompTitle("サーバーが見つかりません") = True Then
     UrlAccess_Wait = False
    End If
    UrlAccess_Wait = True 'アクセス成功

End Function

'=================================================
'名前   :htmlのタイトルの文字列と比較
'機能概要 :指定した文字と、現在開いているHTMLのTITLEタグが一致するか
'引数   :比較したい文字列
'戻り値  :一致:true、不一致:false
'タイミング:タイトルを比較したいとき
'=================================================
Function CompTitle(ByVal title As String) As Boolean

    Dim doc As MSHTML.HTMLDocument
    Set doc = objIE.Document
    
    'タイトルを取得
    If title = doc.title Then
     CompTitle = True
    Else
     CompTitle = False
    End If

End Function
WebAccess.bas


Option Explicit

Private Sub CommandButton1_Click()
    'ログイン
    StockLogin
End Sub

Private Sub CommandButton2_Click()
    If objIE.Visible = True Then
     objIE.Visible = False
    Else
     objIE.Visible = True
    End If

End Sub


'ログイン実行処理
Private Sub StockLogin()
    
    SetInitialize

    If UrlAccess(Cells(2, 3).Value) <> True Then
     MsgBox ("アクセスエラー")
    End If
    
    objIE.Document.all.login.Value = Cells(3, 3).Value
    objIE.Document.all.passwd.Value = Cells(4, 3).Value
    objIE.Document.forms(0).Submit
    
    If UrlAccess_Wait <> True Then
     MsgBox ("アクセスエラー")
    End If
    
End Sub
Sheet1

VBA_LOGIN


ブログランキングのクリックにご協力お願いします<(__)>
FC2ブログランキング
blogRanking
くる株・株ブログランキング
株・投資ランキング
仕事中にいかに他の事をするか、がメインになりそうなブログですが、
職場でも堂々(?)とインターネットできるツールがありましたので
紹介です。
ほぼテキストブラウザ」といって、いわゆるテキストブラウザです。
HTMLを解析してテキストに落とすのではなく、
HTMLを編集して"テキストっぽく"表示するのです。

スクリプトや承認、POSTもほぼでき、
閲覧が難しかったサイトも大体閲覧可能だそうです。

それなので覗かれてもぱっと見はメモ帳w

メモ帳切り替え機能もあって、
閲覧中に瞬時に編集可能なメモ帳(もどき)に切り替わる機能
もあります。

私みたいなぐーたらリーマンにはぴったりですねw

今もばれてない(ハラハラ)

まぁネットワーク監視されてたら終わりなんですけどね。

ブログランキングのクリックにご協力お願いします<(__)>
FC2ブログランキング
blogRanking
くる株・株ブログランキング
株・投資ランキング