プログラミング

ボリンジャーバンドで考えるテクニカル投資戦略でFX自動トレードを作ってみた

FX自動トレードシステム

こんにちは!不労所得を目指す管理人です。

投資の鉄則は「ルールを決めて感情に流されず冷静に取引を行うこと」ですが、人間はそれが簡単にできるほどうまく出来ていません。訓練を積んでそのような能力を身に付けることも大切ですが、今の時代、もっと簡単に完璧な仕事を行ってくれる頼もしい相棒「コンピューターがいます。

実際に、金融の実務の世界においてもコンピューターによる自動処理が多くを占める傾向にあります。

と、いうわけで今回は「自動トレードシステムで儲けられるのか?」ということを検証するために、FXの自動トレードシステムを作りました

自動化のメリット

わざわざ人間が一日中PCの画面に張り付いて取引をするのではなく、あらかじめ決めておいたルールに基づいてコンピューター自身に自動で取引を行わせる方法のことをシステムトレード、シストレ、自動トレードなどと言います。自動トレードを導入することによって人間のトレードに対する業務は大幅に減少します。その空いた時間を使ってファンダメンタルズを分析してもいいし、本業に割ける時間も大幅に増えます。むしろコンピューターは感情を持たないので、我々があれほど捨て去りたかった不安や欲望といった投資において邪魔になるものも自動的に捨て去ることができます。

損失回避

人間は無意識のうちに損失回避的な行動をとってしまい、リスクに対して中立的になれないという行動経済学の実験結果があります。同じ100万円に対しても、100万円儲ける喜びよりも100万円損した時の悲しみの方が大きいということです。これは投資の世界に当てはめると小さい利益で利確をし、損失が膨らんでも塩漬けにしても放っておいてしまうということを表しています。

このことから自動トレードを導入することによってこのような人間独特の負の要素を排除できるということがわかります。

自動化のデメリット

自動化のデメリットは、完全にコンピューターに処理を任せるので、人間の勘で何かやりたいことがあっても手を加えられないということです。人間の勘は根拠のない適当なものが大半ですが、中には感が当たるパターンも存在します。また長年の経験からなる判断や、コンピューターに組み込まれていない判断基準による判断も一時的に適応させたい場合があるかもしれません。別にそのようなルールの中身は自由に変更していっていいと思うのですが、その時点で当初決めたルールによる純粋な検証結果が得られなくなります。よって自動トレードをすると決めた場合は、重大な問題がない限り一度決めたルールで目標の期間運用し続けることが必要になります。

ボリンジャーバンド

テクニカル指標の一種。移動平均+-標準偏差の位置に上下それぞれ引かれた線のこと。

自動取引の環境

今回の実験では、Oandaというネット証券会社のWebAPIを利用して実際のお金のやり取りは発生しないデモ口座で運用を行いました。

https://www.oanda.jp/trade/practice/openaccountv20.do?p=0

  • デモ口座資金 = 3,000,000円

自動トレードシステム

設定

  • ゲームの目的: デモ口座資金3,000,000円をどれだけ増やせるか。
  • 一回のエントリーに投げる金額は100,000円
  • 一度にポジションは一つしか持たない。買い増しもしない。
  • 前のポジションの決済が終わってから新規ポジションをとる。
  • ボリンジャーバンドの基づいた逆張りの取引を行う。

取引ルール

買いのルール

  1. 価格が上方2σボリンジャーバンドより高かったらショートポジションでエントリーする。
  2. 価格が下方2σボリンジャーバンドより低かったらロングポジションでエントリーする。

売りのルール

  1. エントリーしたタイミングから8pips利益が出たら利確する。
  2. エントリーしたタイミングから5pips損失が出たら損切りする。

※ 1pip = 0.01円

まとめ

1pipあたり約1,000円の損益が発生すると考えられます。

要は、当たったら8,000円増えて、外れたら5,000円減るように設計された単純なゲームだと考えられます。

自動トレードのソースコードはこちらです

https://github.com/gitackt/tsubaki/tree/master/trading/lib

結果

以上の設定で実際に3日程度運用して見ました。結果は、

プラス90,000円

でした。結果だけ見れば儲かってます笑

しかし、今回はボリンジャーバンドで逆張りをし続ける戦略をとったので、トレンドが発生した時にもひたすら逆張りを繰り返す場面が多く見られました。人間の目で見れば明らかにエントリーするべきではないということは分かるのですが、機械的な単純な設定で行ったことにより無駄な取引が増えてしまいました。よって次の改善策としては、トレンドによる要因を考慮して効率的な取引をする必要があると言えます。

今回の実験はここまでです。次回は今回の実験によって明らかになった改善点を修正して、より優れたモデルを作ります。

後日修正案を考えた記事がこちらです。

運用成績

全ての取引記録を載せると膨大な量になってしまうので、ここでは1日の間に取引されたものの結果を表示します。

決済日時結果ポジション損益pips取得価格決済時価格
2018年3月1日23:35goodsell8200.0円8.2Pips107.035円106.953円
2018年3月1日23:31badsell-5100.0円-5.1Pips106.966円107.017円
2018年3月1日22:52badsell-5100.0円-5.1Pips106.911円106.962円
2018年3月1日22:49badsell-5300.0円-5.3Pips106.854円106.907円
2018年3月1日22:42goodsell8100.0円8.1Pips106.887円106.806円
2018年3月1日22:34badsell-5400.0円-5.4Pips106.829円106.883円
2018年3月1日22:32badsell-5100.0円-5.1Pips106.774円106.825円
2018年3月1日21:30goodbuy8100.0円8.1Pips106.685円106.766円
2018年3月1日20:50badbuy-5600.0円-5.6Pips106.737円106.681円
2018年3月1日20:34goodsell8200.0円8.2Pips106.815円106.733円
2018年3月1日19:12goodbuy8100.0円8.1Pips106.73円106.811円
2018年3月1日18:04badbuy-5100.0円-5.1Pips106.777円106.726円
2018年3月1日17:27goodsell8100.0円8.1Pips106.898円106.817円
2018年3月1日17:03badsell-5100.0円-5.1Pips106.843円106.894円
2018年3月1日16:18goodbuy8100.0円8.1Pips106.736円106.817円
2018年3月1日15:52goodsell8100.0円8.1Pips106.821円106.74円
2018年3月1日13:21badsell-5200.0円-5.2Pips106.765円106.817円
2018年3月1日11:44badsell-5300.0円-5.3Pips106.708円106.761円
2018年3月1日10:13goodsell8300.0円8.3Pips106.719円106.636円
2018年3月1日9:55goodsell8100.0円8.1Pips106.752円106.671円
2018年3月1日9:52badsell-5200.0円-5.2Pips106.696円106.748円
2018年3月1日9:47goodbuy8100.0円8.1Pips106.59円106.671円
2018年3月1日8:41goodbuy8200.0円8.2Pips106.601円106.683円
2018年3月1日8:26badbuy-5100.0円-5.1Pips106.648円106.597円
2018年3月1日6:59goodsell8500.0円8.5Pips106.739円106.654円
2018年3月1日6:21goodbuy8100.0円8.1Pips106.654円106.735円
2018年3月1日4:59badbuy-5200.0円-5.2Pips106.702円106.65円
2018年3月1日4:39goodsell8100.0円8.1Pips106.791円106.71円
2018年3月1日4:27badsell-5100.0円-5.1Pips106.736円106.787円
2018年3月1日2:48badsell-5300.0円-5.3Pips106.679円106.732円
2018年3月1日2:07goodbuy8200.0円8.2Pips106.577円106.659円
2018年3月1日1:12badbuy-5100.0円-5.1Pips106.681円106.63円
2018年3月1日0:58badbuy-5100.0円-5.1Pips106.728円106.677円
2018年3月1日0:56badbuy-5200.0円-5.2Pips106.776円106.724円
2018年3月1日0:50badbuy-5100.0円-5.1Pips106.823円106.772円
2018年3月1日0:41badbuy-5200.0円-5.2Pips106.871円106.819円
2018年3月1日0:41badbuy-5300.0円-5.3Pips106.92円106.867円
2018年3月1日0:41badbuy-5100.0円-5.1Pips106.967円106.916円
2018年3月1日0:10goodsell8400.0円8.4Pips107.097円107.013円
ABOUT ME
gitackt
お金をかけないサバイバル術の記事を書きます。温泉と餃子が好きです。プログラミングが得意です。趣味はメルカリです。