こんにちは、rockyです。
機能紹介編に引き続き、今回は導入手順編について書いていきたいと思います。
まだ、機能紹介編をご覧になっていない方はどんなことができるのかが書いてありますので、先に見ていただいたほうがわかりやすいと思います。
導入手順編ではTradingViewでFX自動売買が可能になるまでの手順を説明していきます。
2021年2月3日より条件付きで無料公開することとしました。以下の利用申請フォームに詳細を記載しておりますので、ご確認ください。
前提条件
- TradingViewの有料アカウント
- Gmailアカウント(無料)
- OANDA Japan[プロコース]の口座
TradingViewの有料アカウント
FX自動売買システムはTradingViewのWebhook(意味がわからなくても大丈夫です)を利用します。
有料プランでしかアラートのWebhookを利用できないため、まだ申込していない方は必ず以下のボタンから申込を進めてください。
Gmailアカウント(無料)
GoogleAppsScriptを利用するために必要になります。アカウントを持っていない方は「Gmail」で検索し、「アカウントを作成する」から作成してください。
OANDA Japan[プロコース]の口座
FX自動売買システムではOANDA APIを利用するため、OANDAの口座を申し込んでください。
OANDA APIはプロコースでのみ利用できるため、以下の記事を参考にしてください。
注意事項
稀にTradingViewのアラートが遅れることがありますが、その場合でも注文・決済が実行されますのでご理解ください。
雇用統計や急騰・急落等で数秒で数十pips変動がある場合は思わぬところで約定してしまう可能性がありますので、ご注意ください。
ルールを守らない方がいる場合、無料公開を停止する場合がありますので、ご了承ください。
サポートについて
無料ですので、サポートは基本的には行いません。導入が難しく、サポートが必要な場合は、状況によっては有料でサポートできる場合がありますので、「お問い合わせ」フォームよりお問い合わせください。
ただし、返信が遅くなるか、できない場合がありますので、ご了承ください。
導入手順概要
以下の流れで説明していきます。プログラミングができない方でも導入できるように、すでにプログラムが書かれた状態のスプレッドシートを配布しますのでご安心ください。
- OANDA API情報の取得
- Googleスプレッドシート操作
- TradingViewアラート設定
OANDA API情報の取得
OANDA APIを使って注文するには「Account ID」と「Access Token(アクセストークン)」が必要です。詳しい手順は以下のサイトに記載しましたのでご確認ください。
「Account ID」と「Access Token(アクセストークン)」は後ほど利用しますので、コピーしておいてください。
Googleスプレッドシート操作
Googleスプレッドシートのコピー
以下のスプレッドシートのリンクにアクセスし、ログインしていない場合は赤枠の[ログイン]をクリックし、ログインしてください。
※ ログインしている方は次へ進んでください。
Googleスプレッドシートのリンクは利用申請フォームより申請された方のみ限定公開としております。「前提条件」上のボタンより申請してください。
ログインできたら、右クリックから[コピーを作成]をクリックします。
画面下に以下のようなポップアップが表示されるので、[ファイルの場所を表示]をクリックします。ポップアップが消えてしまった場合は[マイドライブ]にコピーがありますので、[マイドライブ]をクリックします。
以下のような「OANDA-FX自動売買システム のコピー」ができていると思うので、赤枠の通り、[オーナー]が自分になっていることを確認します。
これで、他の人がアクセスできない、自分専用のスプレッドシートがコピーできたことになります。
必要事項の入力
スプレッドシートをクリックして、開きます。
スプレッドシートの[set]シートを開いて、それぞれ内容を記入していきます。
- Access Token:[1. OANDA API情報の取得]で取得したAccess Tokenを記入
- accountID:[1. OANDA API情報の取得]で取得したaccountIDを記入
- URL:以下のデモ口座か本番口座のURLを記入
- デモ:api-fxpractice.oanda.com
- 本番:api-fxtrade.oanda.com
- 発注上限(買い):初期設定値は10000000(買い1000万通貨)
例)30000と設定して、買い30000通貨持っていた状態で買い注文をした場合、上限に達しているため、注文されない。 - 発注上限(売り):初期設定値は-10000000(売り1000万通貨)
例)-30000と設定して、売り30000通貨持っていた状態で売り注文をした場合、上限に達しているため、注文されない。
※ 売りの場合は-(マイナス)を必ず入れてください。 - メールアドレス:エラー発生時のメール送付先
以下のように記入できたら次に進みます。
※ 以下はサンプルです
Webアプリケーション公開
[ツール]->[スクリプト エディタ]をクリックします。スクリプトエディタ画面で[公開]->[ウェブアプリケーションとして導入]をクリックします。
すると以下のようなポップアップが表示されるので、以下のように選択し、[更新]をクリックします。
ポップアップの表記が英語になる事象が発見されております。[]内に英語表記の場合の選択肢と以下に英語版キャプチャを記載しますので、英語表記の場合はご確認ください。
- プロジェクトバージョン[Project version]:
New(コメントは任意) - 次のユーザーとしてアプリケーションを実行[Execute the app as]:
自分[Me](自分のメールアドレス) - アプリケーションにアクセスできるユーザー[Who has access to the app]:
全員(匿名ユーザーを含む)[Anyone, even anonymous]
この後、GoogleAppsScriptの承認作業が続きますが、Chromeのタブ等を切り替えるとポップアップが消えてしまうのでご注意ください。
承認作業の最後にある「許可」まで通して実施してください。
実行するアカウントを選択します。現在ログインしているアカウントをクリックします。
以下の画面が出た場合は[詳細]をクリックします。
※ 出なかった場合は次に進んでください
さらに下の赤枠をクリックします。
※ 他者のアプリではなく、自分のみ利用するアプリのため問題ありません
次にスクリプトに許可する確認する内容が表示されます。
自動売買システムでは以下の内容を自動で実行するため、許可が必要になっています。
- スプレッドシートへ自動記入
- OANDAへ自動注文
- エラーメールの送信
画面下の[許可]をクリックします。
許可をクリックすると、公開されたURLが表示されますのでコピーしておきましょう。TradingViewのWebhookのURL欄に入力します。
表示されなかった場合は、[公開]->[ウェブアプリケーションとして導入]をクリックし、[現在のウェブアプリケーションのURL]から確認できます。
これでGoogleAppsScriptの設定が終了になります。お疲れさまでした。
TradingViewアラート設定
TradingViewアラートのアラート条件は大きく2つあります。
- プリセット:[交差],[より大きい],[チャネルに入る] 等
- Pineスクリプトで追加:Pineスクリプトで決めた条件
Webhook箇所については説明していきますが、それぞれのアラート設定方法については割愛させていただきます。②については以下で紹介していますので、任意で確認してください。
Webhookの設定
TradingViewのアラート設定画面を開いたら、以下の赤枠のように設定してください。詳細は画像下に記載しています。
アラートアクション
Webhook URL:チェックを入れる
Webhook URL入力欄:「Webアプリケーション公開」で取得したGoogleAppsScriptウェブアプリのURLを入力
メッセージ
カンマ区切りで注文内容を指定しています。詳しくは下記の「メッセージの例」を参考にしてください。
注文の場合
例1){“request”:”ORDER”,”instrument”:”EUR_USD”,”units”:”10000″,”type”:”MARKET”}
例2){“request”:”ORDER”,”instrument”:”EUR_USD”,”units”:”-100000″,”type”:”MARKET”,”takeProfitOnFill”:{“price”:”1.11″},”stopLossOnFill”:{“price”:”1.12″}}
例3){“request”:”ORDER”,”instrument”:”EUR_USD”,”units”:”-100000″,”type”:”MARKET”,”trailingStopLossOnFill”:{“distance”:”0.001″}}
決済の場合
例1){“request”:”CLOSE”,”instrument”:”EUR_USD”,”closePositions”:”SHORT”}
例2){“request”:”CLOSE”,”instrument”:”EUR_USD”,”closePositions”:”ALL”
各種パラメータ
- request:注文 or 決済リクエスト
- ORDER:注文
- CLOSE:決済
- instrument:通貨ペア
TradingViewに表示されている通貨ペアの間に_(アンダースコア)を入れた表示なります。代表的なものは例として以下に記載しています。- USD_JPY:ドル円
- EUR_USD:ユーロドル
- EUR_JPY:ユーロ円
- GBP_JPY:ポンド円
- AUD_JPY:豪ドル円
- units:注文枚数(※ マイナスで売り、マイナスなしで買い)
- 10000:1万通貨買い
- -10000:1万通貨売り
※その他、任意の枚数を指定できます。
- type:注文方法
- MARKET:成行
- takeProfitOnFill:利益確定注文
- price:価格指定
- distance:値幅(※pipsではありません)
- 例1)USD_JPYが100円の場合に買いエントリーでtakeProfitOnFillをdistance:0.1とした場合、利益確定が100.1(100+0.1)円となります。
- 例2)EUR_USDが1.1の場合に買いエントリーでtakeProfitOnFillをdistance:0.1とした場合、利益確定が1.2(1.1+0.1)となります。
- 例3)USD_JPYが100円の場合に売りエントリーでtakeProfitOnFillをdistance:0.1とした場合、利益確定が99.9(100-0.1)円となります。
- stopLossOnFill:ストップロス注文
- price:価格指定
- distance:値幅(※pipsではありません)
- 例1)USD_JPYが100円の場合に買いエントリーでstopLossOnFillをdistance:0.1とした場合、ストップロスが99.9(100-0.1)円となります。
- 例2)EUR_USDが1.1の場合に買いエントリーでstopLossOnFillをdistance:0.1とした場合、ストップロスが1.0(1.1-0.1)となります。
- 例3)USD_JPYが100円の場合に売りエントリーでstopLossOnFillをdistance:0.1とした場合、ストップロスが100.1(100+0.1)円となります。
- trailingStopLossOnFill:トレーリングストップ注文
- distance:値幅(※pipsではありません)
- 例1)USD_JPYが100円の場合に買いエントリーでtrailingStopLossOnFillをdistance:0.1とした場合、値幅0.1円のトレーリングストップとなります。
- 例2)EUR_USDが1.1の場合に買いエントリーでtrailingStopLossOnFillをdistance:0.1とした場合、値幅0.1のトレーリングストップとなります。
- closePositions:決済ポジション
- LONG:買いポジションを決済
- SHORT:売りポジションを決済
- ALL:買い売りポジションを決済
※ ALLは対象の通貨ペアの売買方向関係なく決済します
メッセージの例
注文の場合
- 例1)注文・ドル円・10000通貨(1万通貨買い)・成行{“request”:”ORDER”,”instrument”:”USD_JPY”,”units”:”10000″,”type”:”MARKET”}
- 例2)注文・ユーロドル・-100000通貨(10万通貨売り)・成行{“request”:”ORDER”,”instrument”:”EUR_USD”,”units”:”-100000″,”type”:”MARKET”}
- 例3)注文・ドル円・100000通貨(10万通貨買い)・成行・利益確定109.0
{“request”:”ORDER”,”instrument”:”USD_JPY”,”units”:”100000″,”type”:”MARKET”,”takeProfitOnFill”:{“price”:”109.0″}} - 例4)注文・ドル円・100000通貨(10万通貨買い)・成行・ストップロスの値幅0.1
{“request”:”ORDER”,”instrument”:”USD_JPY”,”units”:”100000″,”type”:”MARKET”,”stopLossOnFill”:{“distance”:”0.1″}} - 例5)注文・ドル円・100000通貨(10万通貨買い)・成行・トレーリングストップ値幅0.1
{“request”:”ORDER”,”instrument”:”USD_JPY”,”units”:”100000″,”type”:”MARKET”,”trailingStopLossOnFill”:{“distance”:”0.1″}} - 例6)注文・ユーロドル・-100000通貨(10万通貨売り)・成行・利益確定の値幅0.001・ストップロスの値幅0.001
{“request”:”ORDER”,”instrument”:”EUR_USD”,”units”:”-100000″,”type”:”MARKET”,”takeProfitOnFill”:{“distance”:”0.001″},”stopLossOnFill”:{“distance”:”0.001″}}
決済の場合
- 例1)決済・ドル円・買いポジション決済{“request”:”CLOSE”,”instrument”:”USD_JPY”,”closePositions”:”LONG”}
- 例2)決済・ユーロドル・売りポジション決済{“request”:”CLOSE”,”instrument”:”EUR_USD”,”closePositions”:”SHORT”}
- 例3)決済・ユーロドル・売り買いポジション決済{“request”:”CLOSE”,”instrument”:”EUR_USD”,”closePositions”:”ALL”}
メッセージの入力が完了して、[保存]したら、設定は完了です。お疲れさまでした。
Discord通知設定(任意)
Discord通知設定を行っていきます。不要の人は読み飛ばしてください。
Discordサーバが不安定なのか、たまに通知できないことがございますのでご了承ください。通知に失敗した場合のリトライ機能はついておりますが、それでも通知できないことが稀にございます。
大きく分けて、Discord側の設定とスプレッドシート側の設定があります。
Discord側の設定
スプレッドシート側の設定
コピーしたGoogleスプレッドシートの[discord]シートを開き、Discord側で取得したWebhookURLを入力します。
とりあえず、これでDiscord通知はされるようになりました。あとはモードや表示/非表示、本文などの設定なので任意で行ってください。
モードと表示名・表示/非表示
機能紹介編で説明したとおり、Discord通知にはtextモードとembed(埋め込みメッセージ)モードがあります。embedの方が情報量を多く付与できる、見栄えが良いという特徴がありますが、好みによると思いますので、プルダウンから選択してください。ちなみにデフォルトではtextモードが選択されています。
また、表示項目に対して表示/非表示を選択することができます。もちろん非表示にすれば、その項目は通知されない仕組みになっています。
グループ内に通知する場合、損益などは通知させたくないなどあれば、プルダウンから非表示を選択してください。
さらに表示名も変更することができます。例えば[通貨ペア]を[銘柄]に変更すれば、表示名が[銘柄]と通知されます。あくまで表示名が変わるだけですのでご注意ください。
embedと本文
embedモードを選択した場合はembedタイトル・説明・URLを利用することができます。
埋め込みメッセージ内にタイトルを追加でき、そのタイトルに対するURLが設定可能で、その下に説明がくるようになります。
embedタイトルなどを表示させたくない場合は空白にしていただければ消えます
本文についてはtext/embedモード共通の項目です。通知内容の一番下に表示される内容です。embed同様に不要な場合は空白にしていただければ消えます。
LINE通知設定(任意)
LINE通知設定を行っていきます。不要の人は読み飛ばしてください。
LINE通知で失敗したことがないため、リトライ機能は実装していません。通知されたり、されなかったりと不安定な場合はお問い合わせください。
大きく分けて、LINE側の設定とスプレッドシート側の設定があります。
LINE側の設定
スプレッドシート側の設定
とりあえず、これでLINE通知はされるようになりました。あとは表示/非表示、本文などの設定なので任意で行ってください。
表示項目に対して表示/非表示を選択することができます。もちろん非表示にすれば、その項目は通知されない仕組みになっています。
グループ内に通知する場合、損益などは通知させたくないなどあれば、プルダウンから非表示を選択してください。
さらに表示名も変更することができます。例えば[通貨ペア]を[銘柄]に変更すれば、表示名が[銘柄]と通知されます。あくまで表示名が変わるだけですのでご注意ください。
本文については通知内容の一番下に表示される内容です。
本文を表示させたくない場合は空白にしていただければ消えます。
動作確認
TradingViewアラートが発生し、注文・決済がなされ、エラーメールが出ていなければ、基本的に問題なく処理されている可能性が高いです。
スプレッドシートへの自動記入、OANDAの取引画面で実際に注文・決済されていない場合はエラーメールもしくはスプレッドシートの[log]シートを確認してください。
GoogleAppsScriptが分かる人のみ
アラートと同様のリクエストを変数に入れて、テストするスクリプトもスクリプトエディタ内に用意しています。「testProject.gs」を開いて任意のjsonのコメントアウトを外して、実行してください。
最後に
無料公開なので基本的にはサポートを行わない予定です。ただし、有料でもいいから導入したい方は「問い合わせ」からご連絡ください。
状況によっては返信できない場合もありますが、できる限り返信したいと思います。
TradingViewのアラートを使ったFX自動売買ができるようになる(条件付き)