かずきち。の日記

サーバサイドエンジニアのつぶやき

GoogleAppsScriptとFORECAST関数で日経平均売買予測を1ヶ月してみた!詳細アルゴリズムは除きます

Googleスプレッドシート日経平均や為替データを取れます

エクセルで証券会社などに発注をかけるにはパソコンの電源をつけっぱなしにしないといけません。
でもGoogleスプレッドシートなら、常に株価のデータを取りに行ってくれるので、

=GOOGLEFINANCE("INDEXNIKKEI:NI225","price",TODAY(),TODAY()-30)

まず手始めにGoogleの用意してくれたINDEXNIKKEIのデータを過去30日間取得します。
するとまず30日間の日経平均が取れます。

//セルの移動をする
var sheet=SpreadsheetApp.openById('自分スプレッドシートのIDを入れてね');
sheet.getRange("B2:I10000").moveTo(sheet.getRange("B3:I10001"));
sheet.getRange("T20:U10000").moveTo(sheet.getRange("T21:U10001"));

適当に過去10万日分の為替の終値を日時トリガーで取得をして、毎日0:00にセルを移動させます。
ここで実際の終値とpredictionの乖離率がでるので、σ値が閾値を超えた場合に売買を行います。

予想値、実際の終値、分散値をごにゃごにゃ計算してみます。
今の所

勝率79%

なので、トレードのアプリに実際にデモ発注をかけるところまでGoogleで完成させたので、1ヶ月の成績を見てみようと思います。
とりあえず、私が死んでもサーバ上でプログラムが自動で動くようにしたので、資金が尽きるまで売買をしてくれます。
暇な時間で数ヶ月かけて作ってみて思ったのは、エントリー時と手仕舞い時の判定が難しいなと。
これがうまく行ったら、30日版、90日版を作って自分専用のiPhoneアプリにしよう。

2020/9/1追記

σ値を売買シグナルに変更します。

シグナル値の条件付き書式がクリアされるので、formatOnly:trueに変更します。

function onOpen(){
var sheet = SpreadsheetApp.getActiveSheet();
var rangeToCopy = sheet.getRange('A:A');
var targetToCopy = sheet.getRange('B1');
rangeToCopy.copyTo(targetToCopy, {formatOnly:true});
}