【シストレ開発#12】仲値&ゴトー日を自作のデータ解析ツールで徹底分析!

 ※ 本記事は広告・プロモーションを含みます。
シストレ開発

「仲値&ゴトー日」の傾向を徹底的に調査するためのツールがやっと完成しました! たっきん(Twitter)です!

現在開発中の自動売買システム(システムトレード)ですが、第2のアプリケーションとして「仲値&ゴトー日」をがっつり作り込んでいます。

そして自動売買アルゴリズムを考えるために、ヒストリカルデータ(過去のローソク足情報)から「仲値&ゴトー日」の傾向を調べるためのツールを作っていたのですが、先日やっと完成しましたので紹介していきたいと思います。

「仲値&ゴトー日」解析は以前にBokehというグラフ描画ライブラリを使った統計解析を紹介しましたが、今回作成したツールは時系列毎のローソク足の傾向を解析できたりなど、さらに詳細な統計解析ができるようになっており、自作ながら自慢できるツールに仕上がっています!

自作「仲値&ゴトー日」解析ツールの紹介

自作のツールは「窓埋め解析」のときと同じく、Qtを使用してます。

基本的には、

  1. OANDA APIでヒストリカルデータ(過去のローソク足情報)を取得
  2. QtのChart Viewで解析結果の可視化

といった流れで解析結果を見える化しています。

それでは各機能を紹介していきたいと思います。

ヒストリカルデータ集約&ローソク足チャート表示機能

まずはメイン画面から紹介していきたいと思います。

「仲値&ゴトー日」解析ツールのメイン画面は以下の2項目で構成されています。

  1. OANDA APIで集約したヒストリカルデータのテーブル
  2. 仲値(9:55)付近のローソク足チャートの表示

画面構成の詳細を説明する前に動画を見てツールの雰囲気を掴んでみてください。

雰囲気は掴めましたかな?

ではメイン画面の構成を説明していきたいと思います。

まず、ヒストリカルデータのテーブル構成は以下の表の通りとなります。

カラム名説明備考
Date日付
Weekday曜日Mon:月
Thu:火
Wed:水
Thu:木
Fri:金
Gotodayゴトー日10:10日
15:15日
20:20日
25:25日
L/D:月末日(平日)
Is-Gotodayゴトー日 or 非ゴトー日Yes:ゴトー日
No:非ゴトー日
CL-OP:9:305分足での終値-始値(9:30)
CL-OP:9:505分足での終値-始値(9:50)
CL-OP:9:555分足での終値-始値(9:55)

OANDA APIで得られたヒストリカルデータをテーブルで一覧化することで、日付毎の傾向を比較しやすくしています。

そして、テーブル上のデータを選択することにより、対象日付のヒストリカルデータをローソク足チャートで表示させることができるため、チャートの比較も簡単に行えるようになってます。

また後述しますが、このテーブルはカラム毎にフィルタソートをかけることもできます。

そうすることで金曜日のみのデータを表示させたり、「終値-始値」の項目を昇順や降順に並び替えたりすることができ、より詳細な解析ができるようになります。

統計データ解析機能

次は統計データ解析画面の紹介をしていきます。

統計データ解析は①各曜日(月、火、水、・・・)毎②各ゴトー日(5日、10日、15日、・・・)毎に解析ができるようになってます。

こちらも動画があるので、まずはざっくりと流れをご覧ください。

では1つずつ説明していきます。

①統計データ解析(曜日)

各曜日毎の統計データ解析を行う場合はメイン画面上の「analyze Weekday」ボタンを押します。

すると以下の解析画面が立ち上がります。

この解析画面では、

  • 曜日:月、火、水、木、金
  • ゴトー日:Yes(ゴトー日), No(非ゴトー日)

の10パターンの組み合わせにおける、統計データを「為替変動量統計チャート」「終値平均変動量チャート」の2チャートで可視化させてみました。

画面に表示されているテーブル項目は以下のようになってます。

WeekdayGotoTypeChart
Mon(月)YesStats為替変動量統計チャート
Mon(月)YesCumSum終値平均変動量チャート
Mon(月)NoStats為替変動量統計チャート
Mon(月)NoCumSum終値平均変動量チャート
Tue(火)YesStats為替変動量統計チャート
Tue(火)YesCumSum終値平均変動量チャート
Tue(火)NoStats為替変動量統計チャート
Tue(火)NoCumSum終値平均変動量チャート
Wed(水)YesStats為替変動量統計チャート
Wed(水)YesCumSum終値平均変動量チャート
Wed(水)NoStats為替変動量統計チャート
Wed(水)NoCumSum終値平均変動量チャート
Thu(木)YesStats為替変動量統計チャート
Thu(木)YesCumSum終値平均変動量チャート
Thu(木)NoStats為替変動量統計チャート
Thu(木)NoCumSum終値平均変動量チャート
Fri(金)YesStats為替変動量統計チャート
Fri(金)YesCumSum終値平均変動量チャート
Fri(金)NoStats為替変動量統計チャート
Fri(金)NoCumSum終値平均変動量チャート
≪為替変動量統計チャート≫

為替変動量統計チャートは各時刻(5分)毎の統計量を表したチャートになります。(縦軸:統計量、横軸:時間軸)

チャートに表示されている統計量は以下の4種類になります。

線グラフの種類と色統計量
点線(緑)[終値-始値]の標準偏差
実線(ピンク)[高値-始値]の平均値
実線(緑)[終値-始値]の平均値
実線(水色)[安値-始値]の平均値

このチャートからは各時刻における、為替の平均的な変動量を把握することができるため、実際にトレードするときに「この時刻に買いでエントリーした場合、平均で〇〇pips利確することができる」といった方針を立てることができます。

≪終値平均変動量チャート≫

終値平均変動量チャートは各時刻(5分)毎の終値平均値を表したチャートになります。(縦軸:統計量、横軸:時間軸)
このチャートからは各時刻における、平均的な終値(ローソク足の平均的なトレンド)を把握することができます。

②統計データ解析(ゴトー日)

各ゴトー日毎の統計データ解析を行う場合はメイン画面上の「analyze Gotoday」ボタンを押します。

すると以下の解析画面が立ち上がります。

この解析画面では、

  • ゴトー日:非ゴトー日、ゴトー日(5日、10日、15日、20日、25日、月末日)

の7パターンの組み合わせにおける、統計データを「為替変動量統計チャート」「終値平均変動量チャート」の2チャートで可視化させてみました。

画面に表示されているテーブルの各項目は以下のようになってます。

GotodayTypeChart
Not(非ゴトー日)Stats為替変動量統計チャート
Not(非ゴトー日)CumSum終値平均変動量チャート
5Day(ゴトー日:5日)Stats為替変動量統計チャート
5Day(ゴトー日:5日)CumSum終値平均変動量チャート
10Day(ゴトー日:10日)Stats為替変動量統計チャート
10Day(ゴトー日:10日)CumSum終値平均変動量チャート
15Day(ゴトー日:15日)Stats為替変動量統計チャート
15Day(ゴトー日:15日)CumSum終値平均変動量チャート
20Day(ゴトー日:20日)Stats為替変動量統計チャート
20Day(ゴトー日:20日)CumSum終値平均変動量チャート
25Day(ゴトー日:25日)Stats為替変動量統計チャート
25Day(ゴトー日:25日)CumSum終値平均変動量チャート
LstDay(ゴトー日:月末日)Stats為替変動量統計チャート
LstDay(ゴトー日:月末日)CumSum終値平均変動量チャート

「為替変動量統計チャート」「終値平均変動量チャート」統計データ解析(曜日)の項で説明した内容と同じです。

移動統計量(時系列分析)

統計データ解析(曜日)統計データ解析(ゴトー日)の共通機能として、移動統計量(時系列分析)を算出する機能があります。

デフォルトではOANDA APIから取得したヒストリカルデータの全データを使って統計量を計算しチャートへ反映していますが、指定したデータ区間の統計量も算出し、チャートへ反映することができます。

データ区間を変更するには「Data Range」の項目を変更します。

以下の例ではデータ区間をデフォルトの258日から30日に変更し、スライドバーを操作してデータ区間を移動させることで随時チャートへ統計量を反映させています。

データ区間を30日分に変更するため、Stepのspin Boxに30を入力します。

すると日付の区間も適切な日に自動で変更されます。

あとはスライドバーを操作し、データ区間を移動させることでその区間の統計量がチャートに反映されていきます。

時系列での度数分布解析機能

統計データ解析によって各時刻での為替変動の統計量(平均値、標準偏差)を把握できるようになりましたが、為替変動の分布状況ばらつき具合も確認できるとさらに勝率を上げられそうですよね!

なので、各時刻毎にヒストグラムを使って為替変動の分布状況やばらつき具合を確認できる機能も盛り込みました。

こちらも動画を用意したので一通りの流れをご覧ください。

ではツール画面のほうを説明していきましょう!

ここでは例として下記条件における、9:00時点の度数分布を確認する流れを示します。

≪条件≫

  • 統計データ解析タイプ:ゴトー日
  • データ区間:2020/1/6 ~ 2020/11/31
  • 対象チャート:非ゴトー日

「統計データ解析」画面内の為替変動量統計チャート上で確認したい時刻にカーソルを合わせ、右クリックします。

今回の例だと9:00の時間軸上でクリックします。

すると下記のような別画面が立ち上がります。

この画面は以下3つの要素で構成されています。

  1. 統計データテーブル
  2. ヒストグラム
    1. [高値-始値]
    2. [終値-始値]
    3. [安値-始値]
  3. タイムラインチャート

統計データテーブル

統計データテーブルには時系列度数分布解析する際に使用した統計データ一覧を表示させています。

テーブル構成要素は以下の通りとなっています。

カラム名説明
Date日付
high gap price対象時間軸上の[高値-始値]
close gap price対象時間軸上の[終値-始値]
low gap price対象時間軸上の[安値-始値]

ヒストグラム

統計データテーブルの各データを度数分布で表したヒストグラムチャートになります。

ヒストグラムチャートは左から[高値-始値][終値-始値][安値-始値]となっています。

ヒストグラムの各軸は以下となります。

  • 横軸:度数
  • 縦軸:price

タイムラインチャート

タイムラインチャートは統計データテーブルの要素をグラフ化したチャートになります。

各軸は以下となっており、priceは[高値-始値][終値-始値][安値-始値]の3つの値を色別で描写しています。

  • 横軸:日付
  • 縦軸:price

より高度な解析方法

ここまで作り込んできた機能を使うだけでも十分に解析できそうですが、より高度な解析を実践するための機能も盛り込んでますでさいごに紹介したいと思います。

冒頭で紹介したメイン画面のヒストリカルテーブルはフィルタソートをかけることができるようになっています。

この機能を駆使することで「金曜日かつ、ゴトー日の9:55分の[終値-始値]が-0.25以下のデータ」のみを使って統計解析を実施するといったようなこともできるようになります。

このように条件をさらに絞ることで普通では気づけなかったような傾向を知ることができるかもしれませんね!

では、上記の例にならい、「金曜日かつ、ゴトー日の9:55分の[終値-始値]が-0.25以下のデータ」に絞り込むまでの手順を紹介していきます。

まず始めに、金曜日でフィルタをかけてみましょう。

カラムのWeekdayを右クリックし、表示されたメニューの中から「Fri(金)」を選択します。

金曜日でフィルタがかかりました。

次はゴトー日でフィルタをかけます。

カラムのIs-Gotodayを右クリックし、表示されたメニューの中から「Yes(ゴトー日)」を選択します。

金曜日に続いてゴトー日でフィルタがかかりました。

では次に「9:55分の[終値-始値]が-0.25以下のデータ」に絞り込めるように「9:55分の[終値-始値]」昇順にソートしてみましょう。

カラムの「CL-OP:9:55」を右クリックし、表示されたメニューの中から「Order Asc」を選択します。

対象のカラムが昇順にソートされました。

あとは9:55分の[終値-始値]が-0.25以下のデータを選択し、「analyze Weekday」か「analyze Gotoday」ボタンをクリックすると選択されたデータのみをつかって統計データ解析が実行されます。

さいごに

「仲値&ゴトー日」自動売買トレードのアルゴリズムを考えるにあたり、統計データを把握するために「仲値&ゴトー日」の統計解析ツールを作ってみました。

統計データ解析時系列度数分布解析など盛りだくさんの機能を実装したため、あらゆる側面から「仲値&ゴトー日」の解析ができそうです!

このツールを使って傾向が掴めたら、自動売買アルゴリズムを実装し、OANDA本番口座で実践投入していこうと思います。

また、今回はツールだけの紹介記事になりましたが、このツールを使って実際に得られた統計情を基に「仲値&ゴトー日にはどのような傾向があるのか?」「仲値&ゴトー日トレードは本当に有用なのか?」を調査した結果の記事も公開できたらなと考えています。

それでは、次回の更新まで。

今回作成したツールのソースコードはGitHubで公開しています。

takkin-fx-autotrader/trade_monitor

スポンサーリンク

コメント

タイトルとURLをコピーしました