こんにちは、rockyです。
今回はTradingViewのアラートで送信されたメールの内容をGoogleAppsScript(GAS)で取得して、確認するところまで行いたいと思います。
全体図だと以下となります。
前回の振り返り
前回、TradingViewのアラートを設定し、移動平均線がゴールデンクロスした場合、以下の件名のメールが届くようになったと思います。
※デッドクロスの場合はunits=-10000
アラートの設定ができていない人は前回の記事を参考にしてください。
この件名が注文内容になりますので、件名が想定外の場合は確認してください。
何を言っているかというと、OANDAで裁量トレードする場合は注文内容(新規・決済等)・通貨ペア・ロット(枚数)・注文方法(成行・指値等)を決めていると思います。
自動売買する場合でも、OANDA APIに以下のようなパラメータを渡すことで、どのような注文をするのかを決めることができます。
OANDA APIパラメータ
代表的なパラメータを記載しておきます。詳細はOANDAサイトで確認してください。
OANDA開発者サイト
- 注文内容(request)
- ORDER:(新規)注文
- CLOSE:決済注文
- 通貨ペア(instrument)
- EUR_USD:ユーロドル
- USD_JPY:ドル円
- EUR_JPY:ユーロ円
- AUD_JPY:豪ドル円
- GBP_JPY:ポンド円
- ロット(units)
- 10000:10000通貨買い
- -10000:10000通貨売り※マイナスで売り
- 注文方法(type)
- MARKET:成行
- LIMIT:指値
- STOP:逆指値
改めて件名を見ると、以下の注文内容がわかると思います。
(新規)注文・ユーロドル・10000通貨買い・成行
request=ORDER,instrument=EUR_USD,units=10000,type=MARKET
つまり、アラートのメッセージ内容を変えれば、注文内容も変わるということです。
アラート設定をしたことで、メッセージ内容がメールの件名として届くので、今回はその件名の内容を取得していきたいと思います。
取得方法としてはGoogleAppsScript(GAS)を使います。メールはGmailを前提としているので、別のメールサービスを利用している人はGmailを利用してください。
GoogleAppsScriptを実際に書いてみよう
Googleにログインして、スプレッドシートを開いてください。
[ツール]ー>[スクリプトエディタ]をクリックするとGoogleAppsScriptのエディタ画面が開きます。
[無題のプロジェクト]に[コード.gs]が作られていると思います。
以下のコードをコピペして、保存してください。保存する際にプロジェクト名の入力を求められますが、何でもいいです。
//定数定義
var searchWord = "subject:(TradingViewアラート) OR subject:(TradingView Alert) from:noreply@tradingview.com";
/*
* Tradingviewのアラートから届いたGmailの件名を取得して、最新メールの件名をログに出力する
*/
function getGmailSubject() {
/* Tradingviewからのメール検索 */
var threads = GmailApp.search(searchWord);//検索ヒット上限:50,000件
Logger.log("searchWord:"+searchWord);
/* 対象がなかったら、終了する */
if(threads.length == 0){
return false;
}
/*** Gmailから注文内容を取得 ***/
for(var n in threads){
var thread = threads[n];
var msgs = thread.getMessages();
var msg = msgs[msgs.length-1]; //最後(最新)のメールのみ取得
var msgId = msg.getId(); //メッセージIDを取得
var dt = Utilities.formatDate(msg.getDate(), 'JST', 'yyyy/MM/dd HH:mm:ss');
var subject = msg.getSubject();
Logger.log("subject:"+subject);
/* 正規表現:[^,]は,以外の文字の一文字で、*で直前の文字の0回以上の繰り返し */
request = subject.match(/request=[^,]*/).toString().replace(/request=/, "");
instrument = subject.match(/instrument=[^,]*/).toString().replace(/instrument=/, "");
units = subject.match(/units=[^,]*/).toString().replace(/units=/, "");
type = subject.match(/type=[^,]*/).toString().replace(/type=/, "");
Logger.log("request:"+request);
Logger.log("instrument:"+instrument);
Logger.log("units:"+units);
Logger.log("type:"+type);
}
}
保存ができたら早速スクリプトを実行してみます。
[実行]ー>[関数を実行]ー>「getGmailSubject」をクリックしてください。
以下のように「承認が必要です」と出てきますが、「許可を確認」さらに「許可」をクリックして実行します。今回はメールを取得するスクリプトを書いているのでメールについての確認内容が表示されます。
実行後、特にエラーが出なければ正常終了しています。想定通り、件名からそれぞれの情報が取得できたか確認してみましょう。
[表示]ー>[ログ]をクリックします。以下のように、request,instrument,units,typeに値が入っていれば問題ないです。
今回はここまでです。次回はOANDA APIを使って実際に注文してみたいと思います。
OANDAのデモ口座を申し込んでない人は準備しておいてください。
それではまた~
コメントを残す