oanda APIを使って、成行注文ができるようにPythonで実装します。


※ API Tokenの発行がまだ出来ていない方は、こちらを参考にして、発行してください。


from oandapyV20 import API
from oandapyV20.endpoints import orders


def order_processing(account_id: str, access_token: str, trade_mode: str, order_type: str, unit: int, instrument: str) -> None:
    api = API(access_token=access_token, environment=trade_mode)
    units = "0"

    if order_type == 'buy':
        print(f"[INFO] {unit} Unit Buy Order.")
        units = f"+{unit}"
    elif order_type == 'sell':
        print(f"[INFO] {unit} Unit Sell Order.")
        units = f"-{unit}"  # 売り注文時のunitsは、「-」を付ける
    else:
        print(f"[WARNING] Invalid order_type!!")

    order_data = {
        "order": {
            "instrument": instrument,
            "units": units,
            "type": "MARKET",
            "positionFill": "DEFAULT"
        }
    }

    r = orders.OrderCreate(account_id, data=order_data)
    api.request(r)


if __name__ == '__main__':
    order_processing(
        account_id='自分のAccount ID',
        access_token='自分のpersonal access token',
        trade_mode='practice',
        order_type='buy',  # buy or shell
        unit=10000,
        instrument='GBP_JPY'  # お好きな通貨ペア
    )

注意点

注意点がいくつかあります。

  • 必要証拠金以上の注文をしてしまうと「注文取消」になってしまう
    • unitを小さくして、必要証拠金以内に収まる注文にする
  • 取引所が閉まっている時間に注文しても「注文取消」になってしまう
    • 取引所が開いている時間に注文処理を実行する

これらの「注文取消」の情報は、 api.request() のレスポンスに入っているので、必要があれば、条件分岐して、処理を追加してみてください。


MT4スプレッド