2006年09月05日

OANDAのログインをより堅牢に。

2chのoandaスレに書き込まれていた
ブラウザで開くだけですぐoandaのデモ口座にログインできるjava appletを
リアル口座に対応させてみました。
oandaユーザーの方で、普段のログインがめんどくさい方や、oandaで無理やり自動売買したいけど再ログインが安定しなくて困ってる方はどうぞ。

■参考にした2chの「OANDA 2」スレのデモ口座ログインアプレットの書き込み

414 名前:Trader@Live![sage] 投稿日:2006/01/04(水) 14:06:29.07 ID:QYOaJGG1

<applet codebase=https://fx2.oanda.com/java/ code=com.oanda.platform.Platform.class archive=TradeStation.jar width=700 height=30>
<param name=host value="fx2.oanda.com">
<param name=webpage value="http://fxtrade.oanda.com/fxgame">
<param name=securepage value="https://fx2.oanda.com">
<param name=servertype value="trial">
<param name=port value=9700>
<param name=proxyport value=80>
<param name=allowsocket value=true>
<param name=allowproxy value=true>
<param name=debug value=true>
<param name=debugnet value=true>
<param name="username" value="">
<param name="password" value=>
<param name=endian value=big>
<param name=splashApplet value=splashApplet>
<param name=leftImage value="images/titleleft_fxgame.gif">
<param name=leftLink value="http://fxtrade.oanda.com/fxgame">
<param name=rightImage value="images/titleright.gif">
<param name=rightLink value="http://www.oanda.com">
<param name=newsAppletURL value="https://news.oanda.com">
</applet>

これをhtmlファイルに保存してusernameとpasswordを予めいれて開けば
毎回ユーザー名とログイン名を入れる必要がなくなるよ。
これはデモ用だから、リアル用はパラメータがちょっと違うけど

で、これをリアルアカウントにログインできるように変えました。
■リアルアカウント用

<applet codebase=https://fx1.oanda.com/java/ code=com.oanda.platform.Platform.class archive=TradeStation.jar width=700 height=30>
<param name=host value="fx1.oanda.com">
<param name=webpage value="http://fxtrade.oanda.com/fxtrade">
<param name=securepage value="https://fx1.oanda.com">
<param name=servertype value="real">
<param name=port value=9700>
<param name=proxyport value=80>
<param name=allowsocket value=true>
<param name=allowproxy value=true>
<param name=debug value=true>
<param name=debugnet value=true>
<param name="username" value="">
<param name="password" value=>
<param name=endian value=big>
<param name=splashApplet value=splashApplet>
<param name=leftImage value="images/titleleft_fxgame.gif">
<param name=leftLink value="http://fxtrade.oanda.com/fxgame">
<param name=rightImage value="images/titleright.gif">
<param name=rightLink value="http://www.oanda.com">
<param name=newsAppletURL value="https://news.oanda.com">
</applet>

これに、自分のusername 、password を入れればOKです。
一応分かりやすく書いて置くと、例えばusernameがabcdefで、passが12345だった場合
<param name="username" value="abcdef">
<param name="password" value=12345>
とこうなるわけですね。
上のコードは、メモ帳にでもコピペして保存し、そのファイルの拡張子を.htmlにするだけです。
あとはそれを開くだけでログインできます。
名無し414さん凄い。(自分はjavaさっぱりなんで、余計にそう思う)

--

ちなみに応用テクとしては、FirefoxやLunascapeなどのブラウザのショートカットを作って、
そのショートカットの引数に今回作ったhtmlファイルのアドレスを指定して起動時に渡す、という方法もあります。そうすれば、そのショートカット一発で起動します。
おまけに、消す時もそのブラウザを閉じるだけで、一発で消えます。終了が確実なのがいいです。

--

以下ちょっとプログラムの話なんですが、今までOANDAにはCOMでIE操作してログインしてたんです。その方が簡単だし安全かと思って。
ただ、今まで何度かこのブログでも不具合出てたように、どうもIEはoandaのアプリとは相性がよろしくないっぽい。
具体的には、1度閉じてからです。
oandaのアプリはちょっと特殊な立ち上がり方しますけど、そのせいか終了時のメモリの解放が上手くいかない時があるんです。用意されてる「logout」用のウィンドウのボタンを使ってもたまに上手く行かない(見た目は消えるけど、メモリ上に残ってたりする)
で、いったんそうなると、次はCOMからIE立ち上げようとしてももう作動しない。しかも、エラーが出ないので例外も拾えない。まるっきり何の反応もしなくなってしまう。

という訳で、IEの操作にはいろいろと紛れが存在するので、oandaには向いてないっぽい。
ただ、他のブラウザを立ち上げてハンドル取得して操作するのも、やっぱり不安なので
もっと何か自動売買に向いた単純明快で確実な方法はないかなーと考え、
あぁそういえばjava applet使ったログインの書き込みがoandaスレにあったなーと思い出して、これに落ち着きました。
上のhtmlファイルを作れば、例えばFirefoxを起動する時、そのアドレスを引数として渡すだけでoandaログインOKです。かなり確実です。
それに何よりいいのが、例えばFirefox使った場合、プロセス上ではoandaがFirefoxから派生して動作する事です。だから、Firefoxを終了させればきれいにメモリも解放されます。oandaが独自フォームを作ってようがなんだろうが、関係ないです。
これで、かなり動作が単純・確実になります。再起動が多い時も安心。
自分は更に、指定回数超えてもどうしてもダメな時はPC自体を再起動するようにしました。…おかげで、かなり磐石に。バグ要因一つ排除できました。

名無し414さんに感謝。


« 8/28 - 9/1 の成績 | メイン | 9/4 - 9/8 の成績 »

posted at 2006年09月05日 08:46

トラックバック

このエントリーのトラックバックURL:
http://kasege.sakura.ne.jp/mt/mt-tb.cgi/80

コメント

投稿者 Anonymous : 2007年09月14日 10:32

oandaへ自動ログインする方法
■demoの場合
https://fx2.oanda.com/mod_perl/login/window.pl?username=○○&password=□□
■realの場合
https://fx1.oanda.com/mod_perl/login/window.pl?username=○○&password=□□

○○と□□にはuidとpassをいれる。

投稿者 otk : 2007年10月07日 07:03

あ、そっちの方がずっと簡単ですね
情報thnx.です