こんにちは、rockyです。
今回はGoogleAppsScriptのトリガー設定方法について書いていきたいと思います。

全体図でいうと、図の下の方の赤枠になります。
トリガーとは
IT業界にいない人のために説明しておくと、トリガーとはその名の通り、何かの引き金のことです。
例えば、目覚まし時計をセットすることで指定した時間にアラームを鳴らすことができます。この目覚まし時計に時間を設定するということがトリガーの設定するというのと同じ意味です。
前回までで紹介しているFX自動売買の方法では、TradingViewからメールが届いて、そのメールをきっかけに後続処理(注文・ポジション取得・決済)を動かすという仕組みでした。
TradingViewからのメールは売買条件に合致すれば自動で送信されますが、そのメールを受信したかどうかは何もしなければわかりません。
そこで、メールを確認するトリガーの設定をすることで、メールが来たことを見逃さず、メールが来たタイミングで後続処理を実行させてあげることができます。
トリガーの設定をやってみよう

GASエディタ画面からだと[編集]ー>[現在のプロジェクトのトリガー]をクリックするか、以下の時計アイコンをクリックするでも設定画面が表示されます。


すると、以下のようなトリガー設定画面が表示されると思います。
トリガー設定の例

以下は1分間隔でスクリプトを動かし、エラーが発生した場合はすぐに通知するトリガーの設定例です。
トリガー項目の説明
トリガー設定のそれぞれの項目について簡単に説明していきます。
ここでは実行させたい関数(function)を選択します。前回までの記事ではメール取得・発注・ポジション取得・決済、それぞれの関数を作って実行させていました。
それぞれの関数を呼ぶ関数を作って、その関数をトリガーに設定してあげれば、一連の処理をさせることができます。
【実行するデプロイを選択】
[Head]以外出てこないと思うので、あまり気にしなくていいです。
【イベントのソースを選択】
以下が選べます。今回は定期的にメールの受信を確認したいので、[時間主導型]を選びます。
- スプレッドシートから
- 時間主導型
- カレンダーから
【時間ベースのトリガーのタイプを選択】※時間主導型の場合のみ
[時間主導型]を選択した場合は表示されます。なるべく短いサイクルでメールを確認したいので、[分]を選択します。
- 特定の日時
- 分・時間・日・週・月ベースのタイマー
【時間の間隔を選択(分)】※時間主導型の場合のみ
最短サイクルの1分間隔を選びます。
- 1・5・10・15・30分間隔
【エラー通知設定】
スクリプトが何かしらの原因で失敗した場合にどのくらいの頻度で通知するかを設定できます。
スクリプトが失敗した場合、自動売買ができなくなっているかもしれないので、[今すぐ通知]がおすすめです。
- 今すぐ通知
- 時間・日・週ごとに通知
実行結果の確認
基本的には実行履歴([前回の実行]に日時)が表示されていて、[エラー率]が0%であれば問題ないです。
実行間隔にもよりますが、1分間隔で画面を更新しても実行履歴が出てこない場合は、もう一度設定を確認してみてください。設定ミスの可能性があります。
実行履歴がエラー率が0%じゃない場合もエラーが発生しているということなので、確認してみてください。

画面右端のボタンから[実行数]や[失敗した実行]で詳細を見ることができます。
トリガー設定をGoogleAppsScriptでやってみる
先程は画面からトリガーの設定をしましたが、GoogleAppsScriptでもトリガーの設定できます。
“autoTrade”箇所をトリガー設定したい関数名に変更して、以下のスクリプトを実行してみてください。
/*
* setTrigger
* "autoTrade"箇所を任意のfunctionを指定
*/
function setTrigger(){
var trigger = ScriptApp.newTrigger("autoTrade")
.timeBased()
.everyMinutes(1)
.create();
}
トリガーの設定画面を見ると、先程とほぼ同じ設定になっていることがわかります。

ただ、エラー通知の指定がGoogleAppsScriptでできないため、「毎日通知を受け取る」になっているのがわかります。ここに関しては任意で変更してください。
次回
今回まででTradingViewをトリガーにして、1分間隔でFX自動売買をするパーツがすべてできました。あとはそれぞれを組み合わせれば、簡易的な自動売買システムが完成します。
私自身はメールを受信してから2,3秒ほどで注文をできるように改善していますが、[G suite](有料)を利用する必要があるなど、説明するのが難しいので、特に紹介はしない予定です。(たぶん)
その代わりに、数日前にTradingViewで実装されたWebhookを使った自動売買システムの紹介がいつかできればいいなと思っています。
あとは、注文結果をスプレッドシートに自動的に反映して注文の管理を簡単にしているので、それは次くらいに紹介してもいいかなと思っています。
それではまた。
コメントを残す