かきくけこうもりのよろず投資日記(旧サイト)
 
このサイトは移転しました。サイト右側のリンクから、新しいブログに移動できます。
 


2006年6月を表示

知恵熱発生

実際に証券会社に発注したりする前にとりあえず売買シミュレーションを出来るようにしようと思っているのですが、シミュレーションと実際の発注で出来る限り同じような実装になるように工夫しようと考えていたら、知恵熱が発生してしまいました。頭がフリーズして全然進まないorz
  ワケ     ワカ       ラン
  ∧_∧   ∧_∧    ∧_∧
 ( ・∀・)  ( ・∀・)   ( ・∀・)
⊂ ⊂  )  ( U  つ  ⊂__へ つ
 < < <    ) ) )     (_)|
 (_(_)  (__)_)    彡(__)
実際に証券会社に発注する場合は、発注の際にWEBにアクセスする専用のスレッドを作ってやったり、余力状況を確認したりする必要が出てきます。例えば成り行き売買の場合は、発注してから約定するまでの間に余力状況がかなり変化するはずです。その結果、厳密に資産を管理したい場合には毎回のように余力を確認しなければならなくなってしまいます(このあたりは、余力を使いすぎさえしなければ、適当でも良いのですが)。
それに対して売買シミュレーションをする場合は、わざわざスレッドを作ってやる必要も無く、また非同期だと返される結果に違いが生じる場合もあるので、スレッドを作るのはシミュレーションにはあまり適していないと思います。この辺りの違いをカバーするのが面倒くさそう。
あと、シミュレーションの方を考えも無しに作ってしまうと、いざ実際にWEB経由で発注するプログラムを書こうとしたときに問題にぶつかりそうな気がして、ちょっと怖いです。並行してプログラムを組んでいくとすると、バグった状態で発注してしまいそうな気がしてこれもまたちょっと怖い(売買シミュレーションを動かしたらその場で大量の注文を発注してしまったー!!なんてことがありそう)。証券取引のゲームサイトとかがあるのでそれをWEB発注のテスト用に使ってみようかとも思うのですが、わざわざそこまでやる必要もないような気もしますし……
UWSCとか使って発注している人ってどういう実装の仕方をしてるのかな~?前受け金までしか売買できないことを利用して兎に角余力全開で投資するとか?信用取引でそういうことやっても大丈夫なのかなあ……



6月25日(日) | トラックバック(0) | コメント(0) | 日記 | 管理

CSngよりもValの方が滅茶苦茶速い件について

23日の日記で、文字列型のデータを数値型に変換する操作が遅いと書きましたが、劇的に速くなる解決策を見つけました。
今まで私は、
dim hoge as single=csng(文字列)
という風にして文字列型を数値に変換していたのですが、これを
dim hoge as single=csng(Val(文字列))
とすると、かなり速くなるようです。
試しに、以下のようなコードを実行してみました。

Dim i As Integer
Dim j As Single
Debug.Print("CSng(Str(i / 10)) Start " & Environment.TickCount.ToString)
For i = 0 To 100000
j = CSng(Str(i / 10))
Next
Debug.Print("CSng(Str(i / 10)) End " & Environment.TickCount.ToString)
Debug.Print("CSng(Val(Str(i / 10))) Start " & Environment.TickCount.ToString)
For i = 0 To 100000
j = CSng(Val(Str(i / 10)))
Next
Debug.Print("CSng(Val(Str(i / 10))) End " & Environment.TickCount.ToString)

すると、

CSng(Str(i / 10)) Start 24127673
CSng(Str(i / 10)) End 24131849
CSng(Val(Str(i / 10))) Start 24131859
CSng(Val(Str(i / 10))) End 24132110

と出力されます。
デバッグモードだから適正な測定結果ではありませんが、文字列型を直接CSngに変換する場合は約4.2秒、それに対して間にValを挟むと約0.25秒。実に16倍も違います。なんじゃこりゃああああ!!
CSngは様々な数値の表現型に対応できるような機能があって、その結果、文字列を直接CSngで変換しようとすると時間がかかる→ということは、実装が古くて単純な処理をするであろうValを間に挟み込めば速くなるのではないか?と勘を働かせたらうまくいきました。
なっちゃんのプログラミングTips 文字列から数値への変換によりますと、CSngは\記号やカンマを含んだ文字列にも対応できるようです。知らなかった。
多分こんなの.NET使ってる人たちにとっては常識なんだろうなあ……無知な部分があまりにも多すぎて遠回りしすぎてる_| ̄|○

      _   (⌒Y´ ̄ヽ  ∧_/( ̄))∧_∧
    γ´  `ヽ_`と.__   )( ゚ ∩( 《 (  ゚∀゚)  ゴロン
     )) ,、 , ) <、_,.ノ  ヽ、.__,ノ l  つ つ
    ((_/し∪V              ヽ.__ノ!__)) ゴロン
  ∧__∧     出してよ、ウワァァァン!!    ∧_∧
 (    )       ヽ(`Д´)ノ         ( ゚∀゚ ) アヒャ
 (    つ       (    )        (つ  と)
 ヽ___ノj        ∪∪         (⌒Y⌒)
    ∧__∧                 /´ ̄ヽ ̄
   (゚    )           __   ( __  ) (  ゴロン
    と   ヽ ( ̄))∧_∧  /´ `Y⌒)VUVJ_)
    (__ト、__丿 〉 》∩ _) (   .__つ´
          ヽ、.__,ノ   ヽ、__,.>



6月24日(土) | トラックバック(0) | コメント(0) | 日記 | 管理

\(^o^)/資産報告ヤメタ\(^o^)/

SMBCフレンド証券から全額出金したので、来月分の月額固定手数料は払っていません。そのため、来月からは1約定ごとの手数料という形になってしまい、スイングはかなり不利になります。現状はほぼノーポジだし、当分取引することも無さそうな感じです。そういうわけで今週からしばらく2ちゃんねるに資産報告するのやめることにしました\(^o^)/
マケスピRSSを使ったアプリのログファイルの出力については、CSVの出力を一括でやるようにしたら滅茶苦茶早くなりました。昨日は前場の分だけで35分もかかっていたのが、今日はたったの15秒でした。やっぱり手抜きは良くないですね。
でも、ファイルの読み込みがちょっと遅い感じです。これはファイルへのアクセスが遅いわけではなくて、読み込んだファイルの文字列型を自分が要求するデータ型に変換する作業が遅いようです。多分文字列型に変換して保存したDate型の値を、もとのDate型に戻すのに時間がかかっているのではないかと思います。作業内容から考えてこれに時間がかかるというのは正直納得がいかないのですが、時間を実際に計ってみるとそういう結果が得られています。なんでだろ?
私が保有しているPCは現在2台あって、そのうちの1台はCeleron500の古いノートPCで、Excelを使って日経225採用銘柄のリアルタイム株価と気配値とSQ値を調べるのに使っています(あんまり利用価値は無いのですが、以前オプション取引をやっていた頃の名残みたいなものです)。もう一台の比較的新しいPCでプログラムを組んでいて、昼間のログもこのPCでとっているのですが、そうすると、昼間他にやることがなくなってしまい、作業も進みません_| ̄|○il|||li。古いPCの方で今のアプリがちゃんと動くかどうかを確認したほうが良さそう。開発を急がねば。
それにしても、気温が上がってきているせいもあるのか、新しい方のPCの発熱が酷い。ノートPCの裏側に貼ってあるゴムの土台の接着剤が溶けて剥がれてきた。ちなみにDELL製。大丈夫かなあ?

                /;;;;;;;;;;;;;;;;;;;;;;;;;;`);:'∵   `;:';:し' ,;;;;;;;;;
          ,.,;:'(;:,,(.;:;,.,⌒;:;):;:⌒;:,.,,、;;;;;;;;` り;:;'’    ;:;人_,ィ ;;;
    ど   (;:,.⌒;:,.;:';:(;:,.;:(;;:⌒;:,.;:(;:,.´;::,.,;;;;;ソ;;:;:,.   ,.;:∴;:(´;;;;
  明 う     (;:,.,⌒;:ソ,,.,.;:(;:,.;:(;;:⌒;:.;:;),.':, ̄"~⌒`=':;ー:;':;;⌒~ ̄
  る だ      (;:,.(;,.';:⌒:;,.;:';:⌒;:,`);:,;:.,.      ` ヾ;、 ’,.:;(;:
  く   ,、-ー-、    ー''(:,.;:('⌒;:,.';:(´;;, ̄ ̄ ̄ ̄| |l ̄ノ;:(、,.;l
  な  ,r'"´ ̄`ヾ、..    |  |l  、:;ト从[il      | |l ソ;:;''"゛';:(
ろ つ  リ ,,, ニ ,,,_ ヾト、.   |  |l  ヾJ;;':' l|,;:';,.゛;;:,   | |l从;:,’ ;:て
う た ,ハ ^7 ,^   !.:..\  |  |l  り∴; l| ;:,.:;;:' O .| ` ̄ ̄ ̄
?  /.:.:.V,r''''''ゞyイ.:.:.:.:..ヽ |  |l ソ;:';:;’ [il      |
  ノ.:!:.:.:.:`ゞ-<7.:〉.:.:.:i.:.:} |_|l从';;;、_l|_____|_____



6月23日(金) | トラックバック(0) | コメント(0) | 日記 | 管理

手抜きのファイル出力で大失敗

何か日経平均が爆上げ。その前の安いところで買っておけばかなりの利益になったのでしょうが、こういうことが出来ないから去年も今年も儲けられないという状況。まあ全額出金している状態なので、手出しすることは無理なのですが。でも今日の高く寄り付いたところで買いから入るのって結構難しいような感じがします。この水準で買った銘柄をどれだけの上昇と損切りルールで保有するのかという計画性が思いつきません。
マケスピRSSのアプリの方は、昨日は5秒ごとに現在値を取得していたら時間が飛び飛びになってしまったのですが、原因を色々調べた結果、どうも5秒ごとにファイルを出力するのにかかる時間が長いらしいことがわかりました。その間にRSSのイベントが沢山やってくると、こなせないイベントが蓄積してしまってさらに時間がかかるようになってしまいます。イベントが増えれば増えるほどますます時間がかかってしまうような状況です。
そこで5秒ごとにファイルを出力するのをやめて、一定の時刻になったらファイルを出力するようにプログラムを書き換えてみました。もとのプログラムは5秒ごとに追記モードでオープンしてファイルを1行出力してクローズという形をとっていたのですが、これを改造するのが面倒くさいと思って、まとめてファイルに出力するときにも1行ずつ追記モードでオープン、出力、クローズという形をとりました。ちょっと効率が悪そうだとは思っていたのですが、既に夜中だったので、テストもろくにせずに寝てしまいました。
ところがこれが大失敗。今日やってみたら、あまりにも時間がかかりすぎで、前場の全280銘柄のデータを保存するだけで35分もかかってしまいました。一括で出力するように完全にプログラムを書き換えるべきだったのですが、今日の分のデータは後場もとっておきたいと考えたので、現在後場のデータを出力しています。いつ終わることやら_| ̄|○
あと、5秒ごとの処理で、現在値の価格を画面に表示するのにメインのスレッドに対してInvokeメソッドを使って送信していたのですが、どうもこのInvokeが遅いなあと思っていたら、それもそのはずで、Invokeって同期的なんですね。スレッドの返却値を取得できないから、てっきり非同期なのだと勘違いしていました。ザラ場中はアプリのウィンドウを半透明にして、マケスピの値と比較しやすいように作っているのですが、アプリのウィンドウを半透明にしてしまうとコントロールの描画速度が落ちるので、Invokeの同期的な挙動が尚更全体のパフォーマンス低下に繋がってしまうという有様。
  (;><)
  ( つ□ )
 ◇● □▲○◆ ◇■▲○
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|

           ?
      (;><)
    ●と   つ□
 ◇   □▲○◆ ◇■▲○
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|

        ○
       ◆ ▲  ???
      ○(;><)◇
     ●と   つ□
 ◇   □    ◆     ▲
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|

         □ ●
       ▲    □
       ○ (;><)▲ よくわかんないんです!!
       ◆と   つ○
        ::ι:: ::ヽ)::  ⌒◇
         ::◇   ◆::
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|



6月22日(木) | トラックバック(0) | コメント(0) | 日記 | 管理

色々問題発見

市場を問わず売買が活発そうな銘柄を280銘柄ほど探してきて、その値動きのログをとってみた。5秒ごとに現在値を取得してファイルに追記、という作業をさせていたのですが、ザラ場開始直後から遅延が起こるようになってしまいました。最初はファイルサイズが増えることによって速度が落ちているのか?と思っていたのですが、暫く待機してみると、どうも売買が活発だと遅延するみたいです。どうやらただでさえファイルへの出力などで時間をとられている上に、マケスピRSSのイベント発生が大量に起こることによって、処理が十分に賄えない状況に陥っているようです。ファイルに出力するだけで遅延が発生しているのだとすれば、ファイルに出力しないようにすればよいのですが、RSSのイベントも関わってくるとなると、ちょっとややこしいです。具体的にどういう箇所の処理に時間がかかっているのかをもう少しきちんと把握しないとダメなようです。デバッグモードで動かしていたのでスピードが遅いのだとしても、もう少しはやく動作するようにしないと、これ以上機能を追加できません。まだチャートの表示すらやっていないのに……マケスピの遅延でやられるのならまだしも、自分の書いたプログラムの遅延にやられるようなことがあったらいかん。

 \もうね、アボカド/ \バナナかと/
                     ┌┐
      ヽ           / /
     γ⌒^ヽ       / / i
     /:::::::::::::ヽ      | (,,゚Д゚)
     /::::::::(,,゚Д゚)       |(ノi  |)
    i:::::(ノDole|)     |  i  i
     ゙、:::::::::::::ノ      \_ヽ_,ゝ
      U"U         U" U



6月21日(水) | トラックバック(0) | コメント(0) | 日記 | 管理


(2/6ページ)
最初 1 >2< 3 4 5 6 最後