2008年2月10日

Windows FormからWPFを起動

路線変更したので、タイトルのような事を行う必要が出てきた。

[実装方法]
例えばWindows Form上のボタンからWPF画面を起動する場合。

  • Windows Form ProjectとWPF Projectをそれぞれ作る。
  • Windows Form Projectに参照設定を追加。
    • 作成したWPF Project
    • PresentationFramework
    • PresentationCore
    • WindowBase
  • Windwos Form上のボタンイベントに以下追記。
    private void button1_Click(object sender, EventArgs e) {
    WpfProject.Window1 win = new WpfProject.Window1();
    win.Visibility = System.Windows.Visibility.Visible;
    }

設計変更

全てのUIをWPFで作ることに疑問を感じた為、路線変更。

[WPFの問題点]

  • Windows FormにあるコントロールがWPFに無い場合がある。
    (ex. DataGrid, DatePicker etc.)
  • 開発速度が落ちる。
    (参考資料が乏しい、開発環境が貧弱、個人的な不慣れの為)

WPFの利点が活かせるところにのみWPF利用することとする。

2008年2月2日

Web為替チャートサイト

為替相場の動きをリアルタイムで見る時にお薦めのサイト。

Forex Directory
http://www.forexdirectory.net/

[使い方]
  • サイト開いてから少し放置。(急ぐとjavaのエラーが出る)

  • 見たい通貨の国旗をクリック。(java runtimeが古いとインストールが必要。IEのアドオンの許可でJava Consoleを有効にする必要がある)

  • 正常起動すると以下の画面になる。チャートはブラウザから取り外せる。
    取り外すには赤丸で囲ってある画鋲ボタンを押す。

  • Insutrumentメニューより表示したい通貨を選択。各メニューで出来ること。
    • Instrument (通貨選択。株式選択)
    • Chart Type (チャートのタイプを選択。OHLC、ローソクなど)
    • Time Scale (1分足、日足、週足など選択)
    • View (表示数選択、マーケット情報の詳細を表示)
    • Line (チャート上に線を引く)
    • Studies (テクニカル分析を表示)
    • Zoom (ズーム)

WPF参考書籍

2007年購入。当時ろくな本が無かった。
英語が読めれば選択肢は広がったが、生粋の日本人なので和書を探した。

「XAMLプログラミング WPFアプリケーションの概要と開発 (大型本) 」
http://www.amazon.co.jp/XAML%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0-WPF%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AE%E6%A6%82%E8%A6%81%E3%81%A8%E9%96%8B%E7%99%BA-%E9%AB%98%E6%A9%8B-%E5%BF%8D/dp/4797339160

[感想]
少し物足りない気もするが、まったく役に立たないことは無い。
説明は初心者向けに書かれていて、WPFについて広く浅く網羅している。

WPFプロジェクトの作成

  1. Visual Studio起動。

  2. メニューバーより「ファイル>新しいプロジェクト 」。
    ダイアログよりWPFアプリを選び、適当なプロジェクト名をつけOK。


  3. プロジェクトができる 。
    ソリューションエクスプローラは見慣れたものだが、レイアウトデザイナーの下にXMLファイルが表示されている。
    WPFアプリのGUIはこのXMLで定義するとのこと。
    このXMLファイルはXAML(Extensible Application Markup Language)というもの。
    書き方分からないので困りました。
  4. コントロールのせたり、コントロールのプロパティいじる位ならXAMLは自動で書かれる。
    ただ、データバインディングするとか、コントロールの動作をアニメーションにするなどの場合は、
    いよいよXAMLを編集しなければならない。

アプリケーションにWPFを選んだ理由

  • 勉強の為。
  • 従来のWindowsアプリより表現方法が多彩な為。
  • ベクトルグラフィックだから。
    (ベクトルグラフィックとは描画位置や描画方法を計算式によって割り出す。
    画面を大きくしたり、画素数のことなるディスプレイにも柔軟に対応できる。
    対してラスタグラフィックが従来のwinアプリの描画方法。
    これは点描画なので絵を引き伸ばしたりすると輪郭がギザギザしたりする。)

2008年1月27日

システム構成

自宅のPC一台で稼動させるシステム。
凝った造りは無用。

図 2階層 為替自動売買システム


突っ込みどころのあるシステムだが、まずは完成第一。
[懸念事項]
  • リアルタイム為替データをどこから取ってくるか。
  • TCP/IP、もしくはWebサービスなどで自動売買を受け付けてくれるFX業者はあるか。
  • システムのリモート操作はメール!?

2008年1月26日

Visual Studio から SQL Serverに接続できない

Visual Studioのプロジェクトにデータベースファイルを追加しようとしたら、
変なエラーが出て作れなかった。

(図1) Visual Studioでプロジェクトにデータベースファイル追加


[発生現象]
以下エラー内容。
SQL Server ファイル (*.mdf) への接続では、適切に機能するために SQL Server Express 2005 が必要です。このコンポーネントがインストールされているかを確認するか、または http://go.microsoft.com/fwlink/?LinkId=49251 からダウンロードしてください

[解決策]
SQL Serverは確かにインストールしてあるのに、なぜ認識しない??
この不思議な現象を解決する為、Visual Studio とSQL Serverを10回ぐらい再インストールしなおしたり、
設定をいろいろと変えたりで1ヶ月ぐらいを要した。

原因はVisual Studioの設定不足。
ツールメニュー>オプションからオプションダイアログを開き、SQL Server インスタンス名の設定を空にする必要があった。


そんなくだらない理由で1ヶ月間開発が止まるとは。。。
あーいやだ。(←棒読み)

SQL Serverのインストール・設定の注意点

SQL Server 2005 Express Editionのインストール・設定の注意点

■インストール について

  • 以前SQL Serverをインストールしたことがある場合は、インスタンス名がSQLEXPRESSではなくなる。

■設定 について
  • Visual StudioやSQL Server Management StudioからSQL Serverを参照するには、
    SQL Serverセキュリティ構成ツールにて、許可する接続方法を変更。
    「TCP/IPのみ使用する」にチェック。

2008年1月17日

FX 書籍紹介 ①

今日は残業しすぎてヘロヘロなので、軽めの投稿。
システムトレードを始めようと思ったきっかけになった本の紹介。

FX始めた頃はド素人狙いの悪書に引っかかって、何の根拠も無く相場に勝てる気になっていた。
良き指南者的な本を見つけることは、大切だなと痛感。


パンローリング出版 ウィザードブックシリーズ 123
「実践FXトレーディング 勝てる相場パターンの見極め法」
http://www.7andy.jp/books/detail?accd=31936748&pg_from=rcmd_detail_1

見た感じ、厚いし、ハードカバーだし、安くないし、小難しそうだが、
じっくり読めばふむふむなるほどと思うこと必然。
内容は実践的な売買手法としてイグロックメソッドという売買方法について書いている。
確率によって支配された相場で、如何にして損を限定し、確実に利を喰うかを教えてくれる。

2008年1月15日

開発環境について ①

やっとこ具体的な話です。
さて、ロボを開発する環境ですが、Microsoft系にしました。
[理由]

  • Visual StudioとSQL Serverがタダになったから
  • SQL Serverと.Netの組み合わせは作るのが楽
  • 実行するOSがWindowsだから
  • GUIの作成が楽
  • UI部品が多い
  • デリゲートあるから
  • WPF使ってみたいから
  • Linq使ってみたいから
まあ、数え上げたら枚挙の暇がありません。
JavaはフリーのIDE(統合開発環境)がある点が有利だったのだけど、
VS(Visual Studio)が完全にフリーになった時点で.Netを選ばない理由がなくなりました。

では、以下に環境を

VSのインストール方法は以下参照(VB.Netの例だけどC#も同じ、
古いVSとかSQLServerが入っている場合は事前にアンインストールが必要)
http://www.microsoft.com/japan/msdn/vstudio/express/beginners/2008/default.aspx

ちなみにVS2008はかなり進化していた。
VS2002しか使ったこと無かったので、かなりうろたえた。

ロボット機能概要

大まかにこんなロボにしようと思う。
  • 過去データの格納(DBへ格納)
  • リアルタイム為替データ受信(HTMLかWebサービスより受信)
  • チャート描画(Barチャートの表示)
  • テクニカル解析(MACDとかRSIとか)
  • ポジション管理
  • シミュレーション機能
  • 自動発注(相場が登録してあるパターンにマッチした時に売買)
  • 状態、アクション通知機能(遠くに居てもメールで教えてほしい)
  • 統計表示(平均値幅、連続上昇下降日数とか)
欲張りすぎだが、将来的にはこのぐらいの機能を載せたい。
今までの経験よりただ作るだけなら24人月ぐらいかな?
道のりは長い。。。

2008年1月14日

もしロボットが期待通りに働いたら

ロボを作ろうと思ったのだから、希望をもってないわけが無い。
ロボが期待通りに利益を生んだときの話。
まあ、夢物語だと思って聞いてくだされ。

一日2円の平均値幅を持つ為替相場があるとする。(多分珍しくは無いと思う)
もし、最安値で買って、最高値で売ったら1通貨あたり2円の儲けとなる。

現実の取引に当てはめると、証拠金として20万円を元手に
USD/JPY=108円の時点でUSDを$10,000買い、
USD/JPY=110円の時点でUSDを$10,000売ると2万円の儲けとなる。
これを1ヶ月当たり20日繰り返すと、
20日×2万円=40万円
1ヶ月で資産が3倍になったことになる。

これはさすがに出来すぎでした。。。
じゃあ最安、最高を捉えられなかったとして1円の変動幅で売買できたとする。
それから、毎日勝つのは無理だろうから16日買って、4日間は負けたとすると
16日×1万円 - 4日×1万円 = 12万円
1ヶ月で資産が約1.5倍になったことになる。

1口($10,000)当たり15万の証拠金が必要とした場合、
1年間の資産の推移は
スタート 20万  1口売買
1月目 32万  2口売買
2月目 56万  3口売買
3月目 92万  6口売買
4月目 164万 10口売買
5月目 284万 18口売買
6月目 500万 33口売買
7月目 896万 59口売買
     ・
     ・
     ・

以上が実現されるには、
過去データのシミュレーションによって如何に勝率を上げるかと
相場が過去の動きをどれだけ忠実に繰り返してくれるかに掛かっているかと思う。
この話をにんじんとして必死に追いかけてみるとする。

ロボットの意義

まずはロボットの良し悪し
良いところ


  1. 相場に惑わされない。感情に左右されると相場に負けやすいようだ。
  2. 放っておいても利益を生む。もしくは、損失を限定してくれる。
  3. 特定の相場パターンを逃さず売買してくれる。

悪いところ

  1. 融通が利かない。機械だから。
  2. 作るのが大変。
ロボットの最大の利点は感情に流されず確実にトレードしてくれるところにある。
経済ニュース、損益の大小、疲労、日常生活によって人の感情は変化してしまう。
これはトレードするに当たって最も良くないことの一つと思うので、ロボのメリットは大きいと言える。
また、過去データにて売買パターンを入念にシミュレーションすることで、勝率をある程度確保できる。

デメリット2の作成の苦労は時間と努力で補えると思う。
融通が利かない部分は人力で補うとする。

結果、為替取引にロボは有効だと考える。

はじめに

2007年にFXを始めて、1ヶ月でマーケットアウトした。
なぜ負けた?勝つには?を探求していくうちにFX自動売買ロボットに可能性を感じるようになる。
ロボットを作る過程の覚書をここに綴る事とした。