HHR’s diary

日記は無理でも週記…いや、月記でがんばろう。

OANDAのデモ口座でFIX APIを使えるまでの手順が難解

前回↓から2週間、とりあえずデモ口座APIの疎通確認まで出来ました。

hhr.hatenablog.com

なかなか分かりづらい点が有ったので、そのことも含めて書き残そうかと思います。

先にまとめ。

  • APIは3種類でSDKは今回スルー
    1. REST
    2. OANDA独自SDK(Java)
    3. FIX(FX業界デファクトプロトコルらしい)
  • デモ口座REST APIは本番口座開設不要(たぶん)
  • SDK(Java)とFIXは口座開設必須
    • なおかつデモ口座も必要
  • 本番&デモ口座でRESTで動作確認
  • 本番&デモ口座でFIXのサンプルで動作確認

以下、自分が行ったことを時系列で記します。

ではでは。

口座開設

特筆すべきことは無いです。

今年からマイナンバーが増えて面倒臭くなりました。が、これに限った話ではないです。

本人確認書類、マイナンバーの提出は、最近よくある画像ファイルアップロード形式でした。
自分はスマホでパシャリと両方ともに表裏を撮影してアップしました。

不備は生じなかったようで、翌日には「簡易書留でID&パス送付しましたー」的なメールを受信、その週のうちに受け取れてログインまで出来ました。

最近は早くて良いンゴねぇ。

余談ですが、よく見かける「◯分で完了」をOANDAさんも謳うのですが、ご多分に漏れず、無理っす。入力、早すぎんだろ。

OANDA Japan

入金

API紹介ページ↓に「API使うなら25万入金してねっ」とあるのでログイン後の入金画面から入金手続きをします。

www.oanda.jp

他のFX業者と同じく即時入金が可能です。
そのため、すぐさまAPI利用手続きに進むことが出来ます。

API利用手続き

ログイン後のトップ画面にAPI関連の項目があるので、そこを辿って行くと以下の2つが表示されます。

1つずつやっていきます。

REST API

こちらは簡単。

アクセスするとおもむろにアクセストークンの発行、と出るのでクリック。

アクセストークンが即時、発行されます。

ドキュメント通りに叩いてみます。

$ curl -H "Authorization: Bearer アクセストークン" \
    https://api-fxtrade.oanda.com/v1/accounts
{
        "accounts" : [
                {
                        "accountId" : ****,
                        "accountName" : "hogehoge",
                        "accountCurrency" : "JPY",
                        "marginRate" : 0.04
                }
        ]
}

やっほい。

ちなみに、本番口座のアクセストークンがバレると/(^o^)\です。どこかの誰かに口座の残高が溶かされます。たぶん。
そんなリスクを抱え込むOANDAはやっぱり攻めてるなぁ。

FIX、Java API

こちらはやっかい。

アクセスするとまず、FIX or Javaの選択があります。

JavaとあるのはおそらくOANDA独自SDKのことです。
こちらは日本語ドキュメントが無い、かつ、英語ドキュメント内にあるJavaDocのコピーライトが2005と不安を煽るので今回はスルー。

ということで、FIXを選択。

次に、OANDA fxTrade PracticeのIDの入力欄があります。

※デモにてAPIをご利用になられる場合は、下記にご利用になるデモのログインIDを記載してください。 後程弊社からご連絡いたします。

とあるので、適当なIDを入力すれば後で連絡が来るのかな、と思って適当な文字列を入力しました。

これ、間違いでした。

後述します。

入力完了後、すぐにメールを受信します。おおよそ以下の旨が記載されています。

  • 本番口座のAPI設定が完了したよ
  • デモ口座は設定後にまた連絡すんね
  • サンプルはココね(URL)

ふむふむ。

待てとのことなのでデモ口座は置いといて、とりま、本番口座でサンプルを試してみます。

サンプルを提示されたURLからダウンロードして、zipだったので展開して、READMEは無くlogファイルを見るも何も書いてない…

batファイルがあるので起動するとサッと落ちる…

仕方がないのでbatファイルをテキストエディタで開いて、絶対パスでCドライブ直下にzip展開想定ってマジかよなんか別のbat呼んでるあっ設定ファイルっぽいの指定してるlogファイルって実行時ログファイルかよ設定ファイルの説明がねぇJavaかよshell実行ファイルあるのに使われてねぇーetc…

と、奮闘します。(割愛)

そして…

C:\fix_sample\fix-client>java -Xmx32m -Djava.util.logging.config.file=etc/logging.properties -jar fix-client.jar etc/client.cfg

Created session FIX.4.2:****->OANDA/TEST:testusr1-Session1

IN:
========
+-HEADER
|    8  BeginString               = FIX.4.2
|    9  BodyLength                = 82
|   34  MsgSeqNum                 = 1
|   35  MsgType                   = A
|   49  SenderCompID              = OANDA
|   50  SenderSubID               = TEST
|   52  SendingTime               = 20160716-14:41:54.350
|   56  TargetCompID              = ****
+-BODY
|   98  EncryptMethod             = NONE_OTHER (0)
|  108  HeartBtInt                = 60
|  141  ResetSeqNumFlag           = YES_RESET_SEQUENCE_NUMBERS (Y)
+-TRAILER
|   10  CheckSum                  = 129
+-END OF MESSAGE

IN:
========
+-HEADER
|    8  BeginString               = FIX.4.2
|    9  BodyLength                = 425
|   34  MsgSeqNum                 = 2
|   35  MsgType                   = B
|   49  SenderCompID              = OANDA
|   50  SenderSubID               = TEST
|   52  SendingTime               = 20160716-14:41:54.350
|   56  TargetCompID              = ****
+-BODY
|   33  LinesOfText               = 4
|  148  Headline                  = OANDA FIX Server Information
|   33  LinesOfText (count = 4)
|   58  Text                      = version: 2.4.21 (fxTrade Practice order server [3,45] 1468680114 ***.***.***.***)
|   58  Text                      = notice: Market Data Request now supports new MarketDepth and MDUpdateType settings
|   58  Text                      = notice: halted pairs are now marked QuoteCondition=B Text=Halted
|   58  Text                      = notice: please include the complete server version string in all support requests
+-TRAILER
|   10  CheckSum                  = 040
+-END OF MESSAGE

Operations will be executed as **** with FIX.4.2 command

[M]: Market Data Request
[O]: Market Order
[E]: Entry Order
[L]: Limit Order
[T]: Stop Order
[C]: Cancel Order
[F]: Modify Order
[S]: Order Status
[R]: Enter Raw Text Message
[D]: Delay
[U]: Choose FIX User

---------------------------

[Q]: Quit

Choose Command >

キタ━━━━(゚∀゚)━━━━!!

[M]: Market Data Requestのコマンドから為替レート取得等、動作確認が出来ました。

しかし早いです。簡易書留を受け取ったら当日中にAPI使えます。
デモ口座じゃなくて本番口座ですが。

デモ口座API利用手続き

さて、目的はデモ口座でのAPI利用です。

前回も書きましたが、本番口座でAPI利用とか怖すぎるので、目的であるデモ口座でのAPI利用手続きを進めます。

さきほど、本番口座のFIX利用手続きと一緒にデモ口座利用の手続きをして「設定後にまた連絡すんね」と有りましたが、しばらく経っても連絡が有りませんでした。

ということでサポートに問合せます。

以下、意訳。

僕「まだっすか?」

サ「お前の言うデモ口座IDなんて存在しねぇよ。デモ口座開設してね♡」

衝撃の事実。

ということで、デモ口座を開設します。
こちらは開設フォーム入力後すぐにログイン出来ました。やったー。

デモ口座にログインして本番口座同様トップ画面からAPI関連の項目を辿って行きますが、本番口座にはあったFIXの利用手続き画面が有りません…

むむむ。

僕「デモ口座ID取ってログインしたけど見っかんねーんだけど。どうすればいいかおせーて?」

と、ここで本番口座FIX API利用手続き時のOANDA fxTrade PracticeのID入力欄を思い出します。

まさかと思い、本番口座にログインしてFIX API利用手続き画面のOANDA fxTrade PracticeのIDに取得したデモ口座IDを入力して決定します。

僕「本番口座のFIX利用手続きでデモ口座ID入れて送ったけど、あってる?」

サ「おk」

fxTrade Practiceってデモ口座かーい!

サ「あと、デモ口座のFIX利用、設定したンゴ」

はやっ

何はともあれ、無事にデモ口座でFIXが使えるとの事なので、早速、さきほどのサンプルで設定ファイルを書き換えて実行してみます。

C:\fix_sample\fix-client>java -Xmx32m -Djava.util.logging.config.file=etc/logging.properties -jar fix-client.jar etc/client.cfg

Created session FIX.4.2:****->OANDA/TEST:testusr1-Session1
Session FIX.4.2:****->OANDA/TEST:testusr1-Session1 disconnected
Could not logon to FIX server; Exiting.

ファッ

接続できんとな。

僕「接続できん」

サ「デモ口座はドメイン違うンゴ。これな。っfxgame-fix.oanda.com」

どこにも書いてないやんけ…

fxgame site:www.oanda.jp - Google 検索

サ「あと、APIはサポ外な。海外事業部に聞いて。あ、英語な」

サーセン

気を取り直して、設定ファイルを修正して実行します。

C:\fix_sample\fix-client>java -Xmx32m -Djava.util.logging.config.file=etc/logging.properties -jar fix-client.jar etc/client.cfg

Created session FIX.4.2:****->OANDA/TEST:testusr1-Session1

IN:
========
+-HEADER
|    8  BeginString               = FIX.4.2
|    9  BodyLength                = 82
|   34  MsgSeqNum                 = 1
|   35  MsgType                   = A
|   49  SenderCompID              = OANDA
|   50  SenderSubID               = TEST
|   52  SendingTime               = 20160716-15:21:22.904
|   56  TargetCompID              = ****
+-BODY
|   98  EncryptMethod             = NONE_OTHER (0)
|  108  HeartBtInt                = 60
|  141  ResetSeqNumFlag           = YES_RESET_SEQUENCE_NUMBERS (Y)
+-TRAILER
|   10  CheckSum                  = 126
+-END OF MESSAGE

IN:
========
+-HEADER
|    8  BeginString               = FIX.4.2
|    9  BodyLength                = 416
|   34  MsgSeqNum                 = 2
|   35  MsgType                   = B
|   49  SenderCompID              = OANDA
|   50  SenderSubID               = TEST
|   52  SendingTime               = 20160716-15:21:22.904
|   56  TargetCompID              = ****
+-BODY
|   33  LinesOfText               = 4
|  148  Headline                  = OANDA FIX Server Information
|   33  LinesOfText (count = 4)
|   58  Text                      = version: 2.4.21 (fxTrade order server [2,53] 1468682482 ***.***.***.***)
|   58  Text                      = notice: Market Data Request now supports new MarketDepth and MDUpdateType settings
|   58  Text                      = notice: halted pairs are now marked QuoteCondition=B Text=Halted
|   58  Text                      = notice: please include the complete server version string in all support requests
+-TRAILER
|   10  CheckSum                  = 226
+-END OF MESSAGE

Operations will be executed as **** with FIX.4.2 command

[M]: Market Data Request
[O]: Market Order
[E]: Entry Order
[L]: Limit Order
[T]: Stop Order
[C]: Cancel Order
[F]: Modify Order
[S]: Order Status
[R]: Enter Raw Text Message
[D]: Delay
[U]: Choose FIX User

---------------------------

[Q]: Quit

Choose Command >

キタ━━━━(゚∀゚)━━━━!!

さいごに

やっていて気が付いたのですが、デモ口座でRESTは口座開設しなくても利用できますね。たぶん。

あと、後で気が付きましたが、API紹介ページのドメインはwww.oanda.jpであるのに対し、APIドキュメントページのドメインはdeveloper.oanda.comですね。
もしやと思ってググるfxgame site:developer.oanda.com - Google 検索)とTroubleshootingのページが引っかかり、見てみるとProblems with Connectingの項目(一番上)にデモ口座のドメインが書いてありました。

/(^o^)\

サーセン

しかし、サポートのレスが早いです。休日でもレスが来ます。とっても助かりました。

いやぁ~、もっぱらデモ口座APIのために口座開設したけれど、手動トレードでも使ってみるンゴ!

しかし、FIXのSEO最悪ですね。RESTにもストリーミングがあるので悩みます。

ちなみにですが、Brexitの傷はほとんど癒えました。ありがとう参院選
だが、改憲かぁ…

OANDA Japan MT4

つづき

hhr.hatenablog.com