こんにちは、rockyです。
今回はOANDA APIコールの最終回、ポジションの決済(クローズ)をについて紹介したいと思います。
全体図でいうと赤枠のところです。
ポジション決済について
今回、ご紹介するポジション決済のスクリプトは、通貨ペアとLONGかSHORTを指定して、対象を全決済します。
以下のポジションを持っているとして、EUR_USDを5万通貨のみ決済(一部決済)、EUR_USD・USD_JPYを両方とも同時に決済は今回のスクリプトではできませんので、ご理解いただければと思います。
- 通貨ペア:EUR_USD
- 枚数:10万通貨
- 通貨ペア:USD_JPY
- 枚数:5万通貨
もちろん、一部決済はスクリプトを書けばできますし、保有通貨ペア全決済は調べてないですが、できるかもしれませんので、各々確認してみてください。
GoogleAppsScriptを書いてみよう
以下のサンプルスクリプトではLONGポジションを決済しています。SHORTを決済する場合はコメントアウトに記載の通り、指定してください。
7,8行目のxxxを自分用に払い出された値に、11行目を決済する対象の通貨ペアに変更してください。
12,20行目はLONGを決済するように記入されていますが、SHORTを決済する場合は変更してください。
また、GoogleAppsScript(GAS)エディタの使い方やOANDA APIの(初期)設定については以前の記事で紹介しているので、参考にしてください。
/*
* putPositionsClose
*/
function putPositionsClose(){
/** 変数定義 **/
//APIトークン
var Authorization = 'Bearer xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
var accountID = 'xxx-xxx-xxxxxxxx-xxx';
var FQDN = 'api-fxpractice.oanda.com'; //デモFQDN
//APIパラメータ
var instrument = "xxx_xxx" ; //通貨ペア
var closePositions = "LONG" ; //LONGを決済(SHORTを決済する場合は"SHORT")
/** close用URL **/
var url = "https://" + FQDN + "/v3/accounts/"+ accountID +"/positions/" + instrument + "/close";
/** close(LONG)情報 **/
//SHORTの場合は"shortUnits"
var data = {
"longUnits": "ALL"
};
/** header情報 **/
var headers = {
'Content-Type': 'application/json',
'Authorization': Authorization
};
/** POSTするためのOPTIONを設定 **/
var options = {
"method": "PUT",
"payload": JSON.stringify(data),
"headers": headers,
"muteHttpExceptions": true
};
/* LONG決済(PUT) */
var response = UrlFetchApp.fetch(url, options);
var responseCode = response.getResponseCode();
var responseText = response.getContentText();
var responseData = JSON.parse(responseText);
Logger.log("responseCode:"+responseCode);//正常:200 データなし:404 異常:
Logger.log("responseText:"+responseText);//
if(responseCode == 200){
Logger.log("【正常終了】");
}else{
Logger.log("【異常終了】" + responseText);
}
}
ログを確認してみよう
[表示]ー>[ログ]からログを確認してみます。以下のように【正常終了】していれば問題ないです。
あとはOANDA取引画面でちゃんと決済されているかを確認して、決済されていれば問題ないです。
【異常終了】していた場合は以前の記事でトラブルシュートについて書いているので、確認してみてください。
次回
次回はGoogleAppsScriptのトリガー設定について書きたいと思います。
メール取得・注文・ポジション取得・決済とそれぞれやってきましたが、毎回手作業で実行するのは無理です。
トリガー設定すればどの処理をどのタイミングで実行させるという設定ができるので、メールチェックを1分間隔で行い、対象のメールが来たら、それ以降の注文・ポジション取得・決済等の処理をの流れを自動化できます。
FX自動売買において重要な箇所なので、次回も是非見に来てください。
初めてメールします。やりたいことがたくさん載っていたので見させていただいております。
本当は、APIを作りこみたいのですが、年齢の余裕がないので確認させていただきます。
TradingViewの公開ストラテジーを、webhookを介して自動売買したいと思っております。
10000円のやつを購入すれば、TradingView → webhook → oanda にて、open/closeは問題ないですよね。
よろしくお願いいたします。
秋山様、コメントありがとうございます。
以下のnoteの導入手順を見て導入できそうで、あとは記事を購入していただければ、ご認識通り、TradingViewのアラートで自動売買は可能です。
https://note.mu/rocky_fx/n/n44160053ba53
※ストラテジーではアラートが出せないため、Pineスクリプトでアラートを出す場合は[alertcondition]を使用する必要があります。その辺はこのブログの[アラート設定編]で書いています。
https://rocky-fx.com/tv-gas-oanda_alert/
ご購入後、問い合わせフォームやTwitterDM、メール等でサポートさせていただきますので、ご検討よろしくお願いいたします。