Ads by Google
新しい記事を書く事で広告が消せます。
Interactive Brokers についてのあれこれ Part7 JavaProgram ちまちまと作ってます
ずっと、プログラムに掛かりっきりで、あまりネタがありません。
ただ、TWSのAPIを使用する上で課題(?)になるであろう部分をちょっとまとめて見ます。
まず、基本的なTWSのJavaApiの考え方ですが、
・同期的に使用する命令用のメソッド (EClientSocketのメソッド)
・非同期(コールバック)で呼ばれる回答受け取り用のメソッド (EWrapperのメソッド)
の二系統に分かれます。
ただ、プログラムにするときは、この両者を適切に
組み合わせて使用しないといけません。
例えば、現在のマーケット価格を知ろうとするだけでも
1. EClientSocket.reqMktData ()を呼ぶ
2. 別スレッドで、EWrapper.tickPrice() が値がそれぞれが更新されるごとによばれる。
(ちなみに、それぞれというのは、bid 、ask とかの単位です。)
3. EClientSocket.reqMktData を呼んだスレッドからは、
別スレッドのEWrapper.tickPrice が呼ばれたことを確認してから値を取得する。
といったコーディングが必要になります。
個人的には、このようなAPIをそのまま使用するのは、
かなり嫌なため、ラッパクラスをつくって、もうちょっと使いやすくしないと
厳しいかなと思っております。
手に負えないことはないのですが、J2EEでの基幹系の仕事が中心ですので、
スレッドプログラミングは正直あまり得意ではありません。
まあ、ちまちまとラッパーを作って行きたいと思います。
できましたら、下記の協力お願いいたします。
お客さんにもっときてほしいのでちょっとは宣伝しようと思っております。
FC2 Blog Ranking
ただ、TWSのAPIを使用する上で課題(?)になるであろう部分をちょっとまとめて見ます。
まず、基本的なTWSのJavaApiの考え方ですが、
・同期的に使用する命令用のメソッド (EClientSocketのメソッド)
・非同期(コールバック)で呼ばれる回答受け取り用のメソッド (EWrapperのメソッド)
の二系統に分かれます。
ただ、プログラムにするときは、この両者を適切に
組み合わせて使用しないといけません。
例えば、現在のマーケット価格を知ろうとするだけでも
1. EClientSocket.reqMktData ()を呼ぶ
2. 別スレッドで、EWrapper.tickPrice() が値がそれぞれが更新されるごとによばれる。
(ちなみに、それぞれというのは、bid 、ask とかの単位です。)
3. EClientSocket.reqMktData を呼んだスレッドからは、
別スレッドのEWrapper.tickPrice が呼ばれたことを確認してから値を取得する。
といったコーディングが必要になります。
個人的には、このようなAPIをそのまま使用するのは、
かなり嫌なため、ラッパクラスをつくって、もうちょっと使いやすくしないと
厳しいかなと思っております。
手に負えないことはないのですが、J2EEでの基幹系の仕事が中心ですので、
スレッドプログラミングは正直あまり得意ではありません。
まあ、ちまちまとラッパーを作って行きたいと思います。
できましたら、下記の協力お願いいたします。
お客さんにもっときてほしいのでちょっとは宣伝しようと思っております。
Interactive Brokers のTips APIで参考になるページ
今週末もちまちまと自動発注用の仕組みを作っています。
ただ、土日はTWSが動かないので、どうしても周辺系の整備になってします。
で、そんな私が参考にしているページをいくつか紹介します。
本家のマニュアル Application Program Interface > Java
http://individuals.interactivebrokers.com/php/webhelp/webhelp.htm#Interoperability/DDE_Configure_TWS.htm
IB Bulletin Board > TWS API
http://www.interactivebrokers.com/cgi-bin/discus/discus.pl
InteractiveBrokers.API.Discussion.Forum
http://finance.groups.yahoo.com/group/TWSAPI/
IB Bulletin Board > TWS API
はかなりお勧めです。
単純な発注はできるようになったので、CallBack系を使いやすくするための
ラッパの開発をちまちま続けてます。
もうちょっとで、MetaTraderのほうの戦略を考えるほうに戻れそうです。
できましたら、下記の協力お願いいたします。
お客さんにもっときてほしいのでちょっとは宣伝しようと思っております。
FC2 Blog Ranking
ただ、土日はTWSが動かないので、どうしても周辺系の整備になってします。
で、そんな私が参考にしているページをいくつか紹介します。
本家のマニュアル Application Program Interface > Java
http://individuals.interactivebrokers.com/php/webhelp/webhelp.htm#Interoperability/DDE_Configure_TWS.htm
IB Bulletin Board > TWS API
http://www.interactivebrokers.com/cgi-bin/discus/discus.pl
InteractiveBrokers.API.Discussion.Forum
http://finance.groups.yahoo.com/group/TWSAPI/
IB Bulletin Board > TWS API
はかなりお勧めです。
単純な発注はできるようになったので、CallBack系を使いやすくするための
ラッパの開発をちまちま続けてます。
もうちょっとで、MetaTraderのほうの戦略を考えるほうに戻れそうです。
できましたら、下記の協力お願いいたします。
お客さんにもっときてほしいのでちょっとは宣伝しようと思っております。
Interactive Brokers についてのあれこれ Part6 JavaProgram中間発表
結構、悶絶していたコーディングですが、ようやく、一番簡単なレベルは
実行できるようになりました。
Contract と Order というオブジェクトにどのようなパラメータを設定するべきか
ずっとわからず困っていたのですが、某所よりサンプルをコピルことによって解決。
参考にしたサイトはのちほどアップします。
とりあえず、参考にしたソースは下記のような感じ。
Contract contract; //銘柄を現す
contract.m_symbol = "AUD";
contract.m_secType = "CASH";
contract.m_expiry = null;
contract.m_strike = 0.0;
contract.m_right = null;
contract.m_multiplier = null;
contract.m_exchange = "IDEALPRO";
contract.m_currency = "JPY";
contract.m_localSymbol = "AUD.JPY" ;
contract.m_comboLegs = null;
contract.m_primaryExch = null;
Order order = new Order(); //注文を表す。とりあえず、簡単な成り行きから
//ちゃんと発番しないといけない感じ。
//DBのシーケンスを使うか悩み中
order.m_orderId = createID();
order.m_clientId = 1;
order.m_permId = 0;
order.m_action = buy ? "BUY" : "SELL";
order.m_totalQuantity = totalQuantity10000 * 10000;
order.m_orderType = "MKT";
order.m_lmtPrice = 0.0;
order.m_auxPrice = 0.0;
order.m_sharesAllocation = "";
order.m_tif = "GTC";
order.m_ocaGroup = null;
order.m_account = null;
order.m_openClose = "O";
order.m_origin = 0;
order.m_orderRef = null;
order.m_transmit = true;
ここまでできれば、あとは、
package com.ib.client;
の
EClientSocket
の
void placeOrder( int id, Contract contract, Order order)
を呼ぶだけです。
あー、結構長かった。
最初に実装したときは、
「symbol」も、「secType」も、「exchange」も、「currency」も、「localSymbol」も、
何を入れたらいいか、はっきりとはわからずに困っていたのですが、
これでとりあえず、一息ついた感じです。
あとは、コンボ系の発注と、OCAをやって、とりあえず、
一息かなって感じです。
まだ、コールバック系をどう使うかとかは見えてないところがありますが、
すぐに調べる必要はなさそうなので、とりあえず、ペーパーアカウント用の
プロトをさくっと仕上げてしまおうと思ってます。
できましたら、下記の協力お願いいたします。
お客さんにもっときてほしいのでちょっとは宣伝しようと思っております。
FC2 Blog Ranking
実行できるようになりました。
Contract と Order というオブジェクトにどのようなパラメータを設定するべきか
ずっとわからず困っていたのですが、某所よりサンプルをコピルことによって解決。
参考にしたサイトはのちほどアップします。
とりあえず、参考にしたソースは下記のような感じ。
Contract contract; //銘柄を現す
contract.m_symbol = "AUD";
contract.m_secType = "CASH";
contract.m_expiry = null;
contract.m_strike = 0.0;
contract.m_right = null;
contract.m_multiplier = null;
contract.m_exchange = "IDEALPRO";
contract.m_currency = "JPY";
contract.m_localSymbol = "AUD.JPY" ;
contract.m_comboLegs = null;
contract.m_primaryExch = null;
Order order = new Order(); //注文を表す。とりあえず、簡単な成り行きから
//ちゃんと発番しないといけない感じ。
//DBのシーケンスを使うか悩み中
order.m_orderId = createID();
order.m_clientId = 1;
order.m_permId = 0;
order.m_action = buy ? "BUY" : "SELL";
order.m_totalQuantity = totalQuantity10000 * 10000;
order.m_orderType = "MKT";
order.m_lmtPrice = 0.0;
order.m_auxPrice = 0.0;
order.m_sharesAllocation = "";
order.m_tif = "GTC";
order.m_ocaGroup = null;
order.m_account = null;
order.m_openClose = "O";
order.m_origin = 0;
order.m_orderRef = null;
order.m_transmit = true;
ここまでできれば、あとは、
package com.ib.client;
の
EClientSocket
の
void placeOrder( int id, Contract contract, Order order)
を呼ぶだけです。
あー、結構長かった。
最初に実装したときは、
「symbol」も、「secType」も、「exchange」も、「currency」も、「localSymbol」も、
何を入れたらいいか、はっきりとはわからずに困っていたのですが、
これでとりあえず、一息ついた感じです。
あとは、コンボ系の発注と、OCAをやって、とりあえず、
一息かなって感じです。
まだ、コールバック系をどう使うかとかは見えてないところがありますが、
すぐに調べる必要はなさそうなので、とりあえず、ペーパーアカウント用の
プロトをさくっと仕上げてしまおうと思ってます。
できましたら、下記の協力お願いいたします。
お客さんにもっときてほしいのでちょっとは宣伝しようと思っております。
MetaTrader 小物Tips4 メールの送信について
ちょっと役に立つ情報を紹介します。
MetaTrader は下記メソッドでメールの送信が可能ですが、
実際には、外部のサーバ等を使用するとうまくいかない場合があります。
SendMail(sub,body);
で、下記ページを見つけました。
http://puu.blog.bai.ne.jp/?eid=87218
上記にしたがって、自宅にサーバーを立てれば簡単にメールが送信できました。
できましたら、下記の協力お願いいたします。
お客さん来ないんでちょっとは宣伝しようと思っております。
FC2 Blog Ranking
MetaTrader は下記メソッドでメールの送信が可能ですが、
実際には、外部のサーバ等を使用するとうまくいかない場合があります。
SendMail(sub,body);
で、下記ページを見つけました。
http://puu.blog.bai.ne.jp/?eid=87218
上記にしたがって、自宅にサーバーを立てれば簡単にメールが送信できました。
できましたら、下記の協力お願いいたします。
お客さん来ないんでちょっとは宣伝しようと思っております。
Interactive Brokers のTips(口座開設詳細)
以前、Interactive Brokers の口座開設をする際に、参考になるサイトを紹介しましたが、それよりも、情報が新しいサイトの情報が入ってまいりましたので紹介いたします。
【IB口座開設】
http://autorich-fx.nm-mky.com/ib.html
APIのほうは色々調べているのですが、なかなか厳しいです。
できましたら、下記の協力お願いいたします。
お客さん来ないんでちょっとは宣伝しようと思っております。
FC2 Blog Ranking
【IB口座開設】
http://autorich-fx.nm-mky.com/ib.html
APIのほうは色々調べているのですが、なかなか厳しいです。
できましたら、下記の協力お願いいたします。
お客さん来ないんでちょっとは宣伝しようと思っております。

