OANDA APIで注文を出そう!2 – Python言語に触れよう⑥

FX自動売買

1億貯めてリーマン辞めるのが夢です。
皆さんこんにちは。 落ちるナイフを全力で掴みに行くchibamaxです。

今回はOANDAデモ口座APIで注文を出してみようというテーマです。

資金管理の計算でもう頭が痛いわ…

計算式ばかりで頭が痛くなってしまいますよね。

しかしながら計算式さえ作ってしまえば計算は全てプログラムが自動で行ってくれます。

今回はAPIを利用した発注方法を紹介していきます。

★前回記事

オーダーの種類を学ぼう

注文するためにはまず発注するオーダーの種類を知る必要があります。

・注文の種類

指値(リミット) – 指定した価格で約定させるための注文(逆張り)
成行(マーケット) – 現在の価格で約定させるための注文
逆指値(ストップ) – 指定した価格で逆方向に約定させるための注文 (順張り)
MIT(イフタッチ) – 指定した価格に到達したら成行で約定させる注文

OANDA注文
OANDA FX Lab-education

もしイメージが沸かない場合、実際にデモトレードで実行してみるとよいでしょう。

新規注文

為替FXは基本固定スプレッドのため、すぐにエントリーしたい場合は簡単な成行注文でよいと思っています。
※ただし注文が殺到すると注文が大幅に滑ってしまう場合があります。

注文方法にも種類があって、成行注文ならすぐ約定してくれるのね。

セット注文

オーダーを出すと同時に細かいセット注文も出すことができます。
セット注文とは、利確・損切ポイントの設定です。

指値(リミット)– 利確するために使う(損切に使う場合もあり)
逆指値(ストップ)
– 損切するために使う(利確に使う場合もあり)
トレーリングストップ – 相場の動きに合わせてストップロスオーダーを自動で動かすもの
スリッページ上限 – 成立を許容できる上限

注文を出すと同時に利確や損切の注文を出すこともできるのね。

注文するコード

まずは約定しないところでの指値注文を出してみましょう。

ドル円にて100円で1lotの買い注文を出すコードです。

from oandapyV20 import API
import oandapyV20.endpoints.instruments as instruments
import oandapyV20.endpoints.orders as orders
import oandapyV20.endpoints.trades as trades
import oandapyV20.endpoints.positions as positions
import oandapyV20.endpoints.accounts as accounts

#アクセストークンと口座ID
accountID = ""
access_token = ""

#デモ用へ接続
api = API(access_token=access_token, environment="practice")

#オーダーボディ
data = {
    "order": {
        "price": "100.000",
        "instrument": "USD_JPY",
        "units": 1,
        "type": "LIMIT",
        "positionFill": "DEFAULT"
        }
    }

#注文
order = orders.OrderCreate(accountID, data=data)
api.request(order)

実行すると

指値注文結果

はい、Webのトレード画面上にしっかり買い注文が入っていますね。
注文をキャンセルするコードもありますが、今回は右の×ボタンで注文を取り消しましょう。

意外と短いコードで注文することができるのね。

実行結果を表示させよう

上記の注文コードで発注することはできますが、実行してもPython上では何も分かりません。

注文実行結果

実行結果を画面に出力させることもできます。
実行した注文内容を表示させるコードです。

from oandapyV20 import API
import oandapyV20.endpoints.instruments as instruments
import oandapyV20.endpoints.orders as orders
import oandapyV20.endpoints.trades as trades
import oandapyV20.endpoints.positions as positions
import oandapyV20.endpoints.accounts as accounts

#アクセストークンと口座ID
accountID = ""
access_token = ""

#デモ用へ接続
api = API(access_token=access_token, environment="practice")

data = {
    "order": {
        "price": "100.000",
        "instrument": "USD_JPY",
        "units": 1,
        "type": "LIMIT",
        "positionFill": "DEFAULT"
        }
    }

order = orders.OrderCreate(accountID, data=data)
api.request(order)

print(order.response['orderCreateTransaction'])

分かりにくいですが、実行するオーダーの内容が細かく書かれています。

注文実行結果

しかしながら上記コードの場合、オーダーを出すと同時にしか見ることができません。

なので約定前の注文を見るコードを紹介します。

from oandapyV20 import API
import oandapyV20.endpoints.instruments as instruments
import oandapyV20.endpoints.orders as orders
import oandapyV20.endpoints.trades as trades
import oandapyV20.endpoints.positions as positions
import oandapyV20.endpoints.accounts as accounts

#アクセストークンと口座ID
accountID = ""
access_token = ""

# OANDA APIのデモ用へ接続
api = API(access_token=access_token, environment="practice")

#ペンディング注文
pend = orders.OrdersPending(accountID)
api.request(pend)

print(pend.response['orders'])

上記コードは何度でも実行して確認することができます。

ペンディング結果

はい、これで注文と注文状況を見るコードを学ぶことができましたね。

今回は指値注文だから、まだ約定するまでの注文は行っていないのね。

まとめ

いかがでしたでしょうか?

今回は指値注文のコードのみでしたが、実際の環境だと成行注文のほうが簡単でプログラムを組みやすいという利点があります。
しかしながら短期売買botなら指値注文のほうが有利となります。
その分プログラム自体は複雑になってしまいます。
自分の理想のトレード方法に合った注文方法を見つけていくのが一番だと言えます。
次回以降で他の注文方法やパラメータについて紹介していきたいと思います。

にほんブログ村 投資ブログへ
投資の素晴らしさを皆さんに知ってもらいたいので、ブログ村の応援クリックよろしくお願い致します。

コメント

タイトルとURLをコピーしました