« 2007年12月 | トップページ | 2008年2月 »

2008年1月31日 (木)

ツールの不具合報告

為替ヒストリカルデータを収集するツール「HistoricalDataGetter」の不具合を改修しましたのでお知らせします。(ツールの詳細はこちら

※ツールは昨日から専用サイトで配布していますので、適宜アップデートをお願いします。なおアップデートはツールの起動時に次のような画面がでて、自動的にアップデートされるようになっています。

Version_4

不具合内容は以下です。

(1)アップデートの際に設定が引き継がれない

ツールはClickOnce(MicrosoftのNET Framework 2.0以降の機能)という技術を用いて配布していますので、ツールがバージョンアップした際は自動的にアップデートされるようになっています。

このアップデートの際に、「ツールのオプション画面で設定する各種設定が新しいバージョンに引き継がれない」という不具合がありましたので改修しました。

なお、設定の引継ぎは次回のアップデートから有効になりますので、今回は設定が初期化されてします(初期化されないように検討したのですが仕組み上どうしてもできませんでした(^^;)。

申し訳ありませんが、オプション画面の再設定をお願いします。

(2)スケジューラ機能(週単位)を利用するとエラーになる

スケジューラ機能で毎週の設定を利用してスケジュールすると特定の条件化でエラーになるという不具合を改修しました。

よろしくお願いします。m(_ _)m

| | コメント (2)

2008年1月26日 (土)

ChartStudio入門 (10) 数学関数一覧

ChartStudio入門(10)です。
※ChartStudioをもっていない方はDealbook360(サザインベストメント)を入手してください。

今回は数学関数をまとめてみました。

数学関数はシステムによっては多用すると思います。例えば、atan関数を使って直線の傾きを求めることもできますし、使い方次第で色々なアルゴリズムができると思います。(用例については次回に触れたいと思います。)

■abs
概要:絶対値を求める
入力引数: (1)数値
出力結果: 絶対値
内容:指定した数値の絶対値を返す

■max
概要:最大値を求める
入力引数: (1)数値1、(2)数値2
出力結果: 最大値
内容:指定した二つの数値1、2のうち、大きい数値を返す

■min
概要:最小値を求める
入力引数: (1)数値1、(2)数値2
出力結果: 最小値
内容:指定した二つの数値1、2のうち、小さい数値を返す

■sin
概要:正弦(サイン)を求める
入力引数: (1)数値
出力結果: 正弦値
内容:指定した数値の正弦(サイン)を返す

■cos
概要:余弦(コサイン)を求める
入力引数: (1)数値
出力結果: 余弦値
内容:指定した数値の余弦(コサイン)を返す

■tan
概要:正接(タンジェント)を求める
入力引数: (1)数値
出力結果: 正接値
内容:指定した数値の正接(タンジェント)を返す

■atan
概要:逆正接 (アークタンジェント)を求める
入力引数: (1)数値
出力結果: 逆正接
内容:指定した数値の逆正接 (アークタンジェント)を返す

■sqrt
概要:平方根を求める
入力引数: (1)数値
出力結果: 平方根
内容:指定した数値の平方根(√)を返す

■pow
概要:べき乗を求める
入力引数: (1)数値、(2)べき乗
出力結果: べき乗
内容:指定した数値のべき乗を返す

■exp
概要:指数関数を求める
入力引数: (1)数値
出力結果: 指数関数
内容:指定した数値の指数関数 (e を底とする数式のべき乗) を返す

■ln
概要:自然対数を求める
入力引数: (1)数値
出力結果: 自然対数
内容:指定した数値の自然対数(定数 e (2.71828182845904) を底とする対数)を返す

■log
概要:対数を求める
入力引数: (1)数値
出力結果: 対数
内容:指定した数値の対数(10を底とする対数)を返す

■round
概要:正数値に丸める
入力引数: (1)数値
出力結果: 正数値
内容:指定された数値を少数点0桁を切り捨てた数値を返す(平たくいえば整数値に丸める)

■int
概要:整数部を求める
入力引数: (1)数値
出力結果: 正数部
内容:指定された数値の整数部を返す

■frac
概要:少数部を求める
入力引数: (1)数値
出力結果: 少数部
内容:指定された数値の少数部を返す

| | コメント (3)

2008年1月20日 (日)

株シミュレーター・カブロフ

FXではなく、株専用のサイトなのですが面白いサイトをご紹介します。

ウェブ上でテクニカル分析を用いたバックテストの行えるサービスを提供されているサイトです。なんと無料で利用できてしまいます。

Kabu Graph (株シミュレータ カブロフ)

私も実際に利用してみたのですが、非常に良く出来たバックテストサービスでした。

まずウィザード方式で銘柄選定や、利用するテクニカル分析の手法、利益確定や損切りのタイミングなどを決めるのですが、直感的に簡単に操作できるようになっています。

利用できる売買ルールもクロスや、ブレイクアウトを始め、各種テクニカル分析などが利用できます。かなり数が多かったので、とても全部見切れませんでした(笑)。

テストも非常に簡単で、2000年からのテストができるようになっていますし、また結果も見やすく整理されているので結果が一目瞭然です。

次は適当に作ってみたルールでしたが、244%のパフォーマンスがでました。

Kabu

もし良いパフォーマンスの売買戦略ができれば、FXでも応用が利くかもしれませんね。売買ルールも多彩なので、良いアイデアが生まれうかもしません。もしよろしければ一度試して見てはいかがでしょうか。

>>Kabu Graph (株シミュレータ カブロフ)

| | コメント (0)

2008年1月15日 (火)

Webサービス入門 レート一覧アプリの作成(4)

クリック証券Webサービスを用いたFX向け完全自動売買システム構築入門(4)です。
※Webサービス開発キットをもっていない方はクリック証券から入手してください。

前回の記事では、共通的に利用するメソッドを作成しましたが、今回はそれらを利用してログイン、ログアウトの処理を実装します。今回でログイン画面は完了です。

(1)まず、最初にフォームのクラス内にメンバ変数を記述します。次のprivateメンバ変数を定義しておいてください。このメンバ変数はクッキーを保持するためのオブジェクトになります。ログイン時に取得して、その後のWebサービスアクセス時に利用します。

CookieContainer cookie = new CookieContainer();

(2)それでは、ログインボタンをクリックした時のClickイベントに、次のように記述してください。

private void loginButton_Click(object sender, EventArgs e)
{
  string url = this.baseUrlTextBox.Text
    + "ws-login?j_username=" + this.userIdTextBox.Text + "&"
    + "j_password=" + this.passwordTextBox.Text;
  XmlDocument retval = WebServiceRequest(url, cookie);
  this.messageTextBox.Text = GetMessage(retval);
  if (IsSuccess(retval) == false)
  {
    MessageBox.Show("ログインに失敗しました");
    return;
  }
}

url変数にログインするためのURLを格納しています。このときにGETパラメータでユーザ名とパスワードを指定するようにします。※URLの詳細はWebサービスのマニュアルを参照してください。

作成したURLにWebServiceRequest()メソッドでアクセスします。同時にクッキー(Cookie)も渡していますが、ログインに成功するとこのクッキーが取得できます。

戻り値として受け取ったXMLレスポンスからGetMessage()メソッドを使ってメッセージを表示すると同時に、IsSuccess()でログインの可否を判定します。もちろん、ユーザ名やパスワードが間違っているとログインに失敗します。

(3)最後にログアウトボタンをクリックした時のClickイベントは次のように記述します。

private void logoutButton_Click(object sender, EventArgs e)
{
  string url = this.baseUrlTextBox.Text + "ws-logout";
  XmlDocument retval = WebServiceRequest(url, cookie);
  this.messageTextBox.Text = GetMessage(retval);
  if (IsSuccess(retval) == false)
  {
    MessageBox.Show("ログアウトに失敗しました");
    return;
  }
}

url変数にログアウトするためのURLを格納しています。その後の処理はログイン処理と同じになります。

このように利用するWebサービスのURLを変更するだけで処理を変える事ができるのが、このシステムの特徴です。

では、実際に動かして見ましょう。(事前にサーバを起動させておいてください)

(1)URL、ユーザID、パスワードを入力して、ログインします。Authentication Successとメッセージが戻りましたのでログインに成功しました。

Login

(2)ログアウトボタンを押してログアウトします。今度はLogout Success.とメッセージが戻りましたのでログアウトに成功しました。

Logout

どうでしょうか。上手く動いたでしょうか?

前回で共通的なメソッドを作成していたため、ログイン/ログアウトの処理が非常にシンプルになりましたね。これらのメソッドはレートを取得したり注文を行うときにも共通的に使うことが出来ます。上手く利用してください。

作成したプログラムはこちらからダウンロードできるようにしておきました。もし、わからない方はこちらを使って見てください。「login-sample.lzh」をダウンロード

さて、基本的なログイン/ログアウトの処理はできましたので、次回からはレート一覧を取得できるように改造していきたいと思います。お楽しみに^^。

| | コメント (2)

2008年1月11日 (金)

Webサービス入門 レート一覧アプリの作成(3)

クリック証券Webサービスを用いたFX向け完全自動売買システム構築入門(3)です。
※Webサービス開発キットをもっていない方はクリック証券から入手してください。

前回の記事では、ログイン画面を作成しましたので、今回からログイン処理を作成したいと思います。かなり難しくなりますのでわからない場合はWeb等で調査してください^^。

ログイン処理に限らず、全てのWebサービス処理では、まずサーバに対してhttpリクエストを行います。応答がXMLで返されるため、XMLを解析してリクエストが成功したか失敗したかを判断します。

またリクエスト時にはログイン処理で取得したセッション(実体はCookie)を保持しておき、httpリクエストする際にセッションを示す必要があります。

このあたりの処理は共通的なので、次のような汎用的なメソッドを作成しておきます。なお事前にSystem.Net、System.Xml、System.IO名前空間をusingして置いてください。

(1)サーバに対してWebサービスをhttpリクエストし、結果をXMLで受け取る。

private XmlDocument WebServiceRequest(string url, CookieContainer cc)
{
  HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
  req.CookieContainer = cc;
  using (StreamReader sr =
          
new StreamReader(req.GetResponse().GetResponseStream()))
  {
    XmlDocument xmldoc = new XmlDocument();
    xmldoc.LoadXml(sr.ReadToEnd());
    return xmldoc;
  }
}

引数はURLと、クッキーオブジェクト(CookieContainer)です。

HttpWebRequestクラスを利用するとURLとクッキーオブジェクトを渡してHTTPリクエストすることができます。結果はGetResponseStream()メソッドでストリームとして取得できるので、XMLオブジェクト(XmlDocument)に格納して戻り値として返しています。

※エラー処理等は省略しています。実際にロジックを組む場合は考慮してください。

(2)結果のXMLを解析し、処理が成功か、失敗かを判定する。

private bool IsSuccess(XmlDocument xml)
{
  XmlNodeList nodes = xml.SelectNodes("/*/responseStatus");
  if (nodes.Count > 0) {
    if (nodes[0].InnerText.Equals("OK"))
    {
      return true;
    }
  }
  return false;
}

引数に結果として取得したXMLを与えます。成功ならtrue、失敗ならfalseを返します。

成功か、失敗かというのはXML内のresponseStatusに格納されており、成功ならOKが入ります。SelectNodes()メソッドでXPathを指定できますので、XMLノードを取得してOKかどうかを判断しています。

XMLに慣れていないとちょっと難しいかも知れませんね(^^;

(3)結果のXMLを解析し、処理結果のメッセージを取得する

private string GetMessage(XmlDocument xml)
{
  XmlNodeList nodes = xml.SelectNodes("/*/message");
  if (nodes.Count > 0)
  {
    return nodes[0].InnerText;
  }
  return "";
}

引数に結果として取得したXMLを与えます。戻り値にはサーバから返された処理内容を示すメッセージが返ります。

メッセージはXML内のmessageに格納されていますので、(2)のメソッドと同じようにXPathを使って値を取得します。

このメッセージは必ず取得する必要はないのですが、常にアプリケーションで表示するようにしておけばユーザにも処理内容がわかりやすくなるので、少しユーザビリティが向上するようになります。

さて、これらの3つのメソッドを使ってログイン処理を実装していきます。
基本的な流れは、
(1)のメソッドでサーバにリクエストを行い、XMLレスポンスを取得し、
(2)でリクエストの成功可否をチェック、成功ならば
(3)でメッセージを取得してアプリケーションに表示、その後XMLレスポンスに応じた処理を実施する。となります。

では次回実際にそのような処理を組んでみます。
次回をお楽しみに^^。

| | コメント (0)

2008年1月 8日 (火)

Webサービス入門 レート一覧アプリの作成(2)

クリック証券Webサービスを用いたFX向け完全自動売買システム構築入門(2)です。
※Webサービス開発キットをもっていない方はクリック証券から入手してください。

為替のレート情報を取得したり、注文を発注したりするためには事前にサーバにログインする必要があります。もちろんログインにはクリック証券のアカウントが必要です。

ログインを実行した後に、セッションをアプリケーション側で保持しておき、セッションを利用してWebサービスを実行するという流れになります。事前にログインしておかなければ、全てのWebサービス要求はエラーとなりますので注意ください。

では、まずは今回からログイン処理を実装してみたいと思います。

Microsoft Visual C# 2008を起動して、プロジェクトを作成してください。プロジェクトには「Windowsフォームアプリケーション」を選択します。

Newproject

次にログインに必要なコントロールをフォームに並べて行きます。今回は必要最小限の次の4つを配置しました。(後述のサンプルプログラムのためにNameプロパティも記載しますが、もちろんどのような名称にしても構いません。)

Form1

(1)ベースURL入力用のテキストボックス
 アクセス先のURL(ベースアドレス)を入力するためのテキストボックスです。
 Name:baseUrlTextBox

(2)ユーザID 入力用のテキストボックス
 ユーザIDを入力するためのテキストボックスです。
 Name:userIdTextBox

(3)パスワード 入力用のテキストボックス
 パスワードを入力するためのテキストボックスです。PasswordCharプロパティで*を設定しています。
 Name:passwordTextBox

(4)ログイン ボタン
 ボタンを押下すると、(1)(2)の情報をもとに、ログインを行います。
 Name:loginButton

(5)ログアウト ボタン
 ボタンを押下すると、ログアウトを行います。 
 Name:logoutButton

(6)メッセージ表示エリア
 Webサービス要求後の応答メッセージ(文字列)を表示するためのテキストボックスです。
 Name:messageTextBox

これでログインに必要なパーツが揃いました。次回は実際にログイン処理を実装したいと思います。ちなみに実装については、Httpリクエスト、XMLの知識が必要になりますので、もしわからない場合は事前に勉強しておいてください(^^;

では次回をお楽しみに^^。

| | コメント (2)

2008年1月 4日 (金)

Webサービス入門 レート一覧アプリの作成(1)

年明け早々ですが、クリック証券Webサービスを使ったFX向け完全自動売買システムの構築方法についての連載を開始したいと思います。

まずは参照系のアプリケーションとして、Webサービスを使ったレート一覧取得アプリケーションを作成しましたので、作成方法を順に説明して行きます(年末年始の時間を利用して作りましたw)。

それなりに複雑なアプリケーションになったので、何回かにわけて少しづつ説明していきたいと思います。完成系はこのような感じです。

Webapl

「ログインボタン」でサーバにログインを行い、その後「レート一覧取得ボタン」でレート一覧をサーバから取得して、アプリケーションで表示します。典型的なWindowsアプリケーションです。

とりあえずこのくらいのアプリケーションが作れれば、Webサービスの利用方法が理解できるかと思います。

Webサービスは汎用的なので、アプリケーションの構築にはどのようなプログラミング言語を利用しても良いのですが、せっかくですので最近リリースされたばかりのVisual Studio 2008(.NET Framework 3.5)を使っています。

まずは、次のページからMicrosoftからVisual Studio 2008 Express Editionをインストールしてください。利用する開発言語は「C#」を使いますので、Visual C# 2008を選んでください。

http://www.microsoft.com/japan/msdn/vstudio/express/

※Express Editionは無料なので商用利用できるかはわかりませんが、とりあえず個人的に利用する分には自由に使えると思います。

それでは次回からアプリケーションの作成を具体的に説明していきます。乞うご期待ください^^

| | コメント (0)

2008年1月 1日 (火)

新年明けましておめでとうございます。

新年明けましておめでとうございます。

皆様、お正月はいかがお過ごしでしょうか。
私の方は本日初詣に行き、しっかりと今年の幸せを祈って参りました^^。初詣は明治神宮に行ったのですが、人が多くて疲れました・・(^^;

さて、昨年を振り返って見ますと、ChartStudio(サザインベストメント)の完全自動売買対応関連記事)や、クリック証券のWebサービスを使った完全自動売買サービス関連記事)など、徐々に個人の投資家が自動売買を行える環境が整備されてきたように感じました。

また、私のメルマガ「FX完全自動売買への道」の購読者数も昨年初め600人だったのが1年間で1350人に増加していることや、ミクシィの完全自動売買コミュニティもどんどん人数が増えており、投資家の間でも自動売買の人気は上がってきているようにも感じています。

今から思えば、去年は「FX完全自動売買元年」ともいうべき年だったのかもしれませんね。

またその中で、個人的にはFX完全自動売買のマニュアル本関連記事)の発行も行う事ができ、上手く時勢に乗れたようにも思っております。マニュアル本の発行には、かなりのパワーを使いましたが、今年も引き続きがんばって行きたいと思います^^。

本ブログでは、より良い完全自動売買環境を目指して、今年も良質な情報を発信できればと思っています。

今年もよろしくお願い申し上げます。m(_ _)m

| | コメント (2)

« 2007年12月 | トップページ | 2008年2月 »