BBBです。
皆さんはトレードで重要なことと聞いて何をイメージしますか?
この質問でよくある回答が「精神力(メンタル)だ」というものです。なるほど、精神力は確かに重要だとは思います。しかし私はそれ以上に、「トレードルールを作成し、そのルール通りにトレードを行うこと」が重要であると思っています。
トレードルールが明確に定まっていれば、そのルールが求める取引可能なロット(=資金力)が決まってきます。また、そのルールがどの程度機能するのか、効果的に機能する条件が何なのかわかっていれば、ルールが機能し続ける限り回し続ければよいだけです。精神力に頼ってトレードする必要はありません。
極論ですが、精神力に頼らなくてはいけないのは、自分で決めたトレードのルールが自分でわかっていないからです。Aという条件になったときにはこのルールは終わり、という条件があらかじめ決まっていてそのルールに納得できているのであれば、あとはルールに従うだけなので強靭な精神力は不要ですよね。
そこで今日は、具体的なトレードルール作成(売買戦略、ストラテジー作成)について、
- どのように着想を得て
- どのようにそれを検証し
- どのように改善していくのか
という一連のステップをすべてお見せいたします。
これが日本で一番わかりやすい具体的なトレードルール作成に関する記事です。
仮説を立てる
今回は仮説検証型のアプローチを用いて売買ルール作成を行います。
仮説検証型って何?という方はこちらをご覧ください。
今回の仮説は「BTCは00分のタイミングで出来高が増えて一方方向に価格が動くことが多いのではないか?」です。
1時間足や4時間足の確定タイミング(時計の長針が00分を指すときのタイミング)で価格が大きく動いている状況を目にしたことがある人は多いと思います。これはbotトレードを行う人の影響が大きいためではないかと思われています。
そこでBTCの00分時に発生する一方方向への値動きを利益に変える戦略を考えてみましょう。
パッと思いつくのは、00分の前にエントリーを行い、00分をまたいで価格が動いた後で決済を行う戦略です。00分をまたぐタイミングでどちらに動くのかを予測することができれば機能しそうですね。
仮想通貨Botで取引する人は順張りの人が多いと思われるので、取引の方向は1時間足の順張り方向にしましょうか。
ではさっそく具体的な形にしてみます。
ベース作りを行う
このレベルの戦略であればTradingViewのみで作成することができます。
必要なロジックは以下の3つです。
- 指定の時間でエントリーするロジック
- 指定の時間経過で決済するロジック
- トレンドの方向を判定するロジック
このベースに好みで味付けとして利確損切ロジックを追加するのが良さそうです。
この戦略の肝になるのはトレンドの方向をいかに判定するのか、でしょうか。利益の源泉は「00足のタイミングで順張り方向の取引を行い、相場を短期的に動かす集団」なので、彼らがどのようにトレンド判定を行っているのか考えて、思考をトレースしましょう。
※余談ですが、利益の源泉になる集団がイコールで養分トレーダーかというと必ずしもそういうわけではありません。戦っているフィールドが異なるためです。この話は長くなるのでまたいずれ。
利益の源泉がこの特定集団であることを考えると、マニアックなオリジナル指標を使うのではなく、できるだけ多くの人が見ている指標をベースにしたほうが良いことは明白です。これが因果に基づくトレードルール作成の考え方です。
まずは最大限シンプルに4時間足ベース&前の足が陽線なのか陰線なのかでロジックを作成してみます。前の4時間足が陽線のときはロング方向、陰線のときはショート方向と判断します。
エントリーのタイミングは4時間足が確定する5分前、決済タイミングは4時間足確定後15分、合計20分ポジションを保有させることにしてみます。
ここら辺は後で変えればいいのでテキトーで構いません。
さっそくバックテスト結果を確認したいところですが、ここでの注意点として直近の結果を表示させるのではなく、直近を除いた結果を表示させるようにします。その理由についてはこちらの記事を見てください。
今回はロジックの特性上5分足か1分足でないと実現できないため5分足で結果を見てみます。
TradingViewでは5分足ですと標準で見ることのできるバックテスト期間が短くなるので、バーのリプレイ機能を使って過去に遡って結果を見てみます。
過去に遡ってバックテスト結果を見る理由とその方法については、以下の記事をご覧ください。
『なぜTradinhViewでバックテスト結果を遡って見る必要があるのか?』
はい。ということで、バックテスト結果はこんな感じになりました。
うーん、普通!
ですがベースとなるものは出来ました。あとはこれを改善していきます。
改善を行う
結果が微妙だったので、どこに問題点があったのかを考えてみます。
考えられるものとして、以下のいずれか、もしくはこれらの組み合わせが挙げられます。
- そもそもの仮説が間違っている
- 仮説はあっているがトレンド判定が上手くいっていない
- 仮説はあっているが仮説の継続時間の判定が間違っている
今回の仮説をもう一度確認します。
仮説は、「BTCは00分のタイミングで出来高が増えて一方方向に価格が動くことが多いのではないか?」でした。この仮説を前提にしたものである以上、仮説が間違っていたらこの戦略は成り立ちません。
仮説を立てるフェーズでは敢えて省きましたが、本来であれば本当に00分足のタイミングで価格が一方方向に動くのか?をまず検証します。何となくこんな気がする、という感覚が合っているかどうかは数値を見てはじめて確認できるものです。
さらに仮説の検証ができていれば、どのタイミングでエントリーしてどのタイミングで決済するのが良いのかにもアタリがつけられます。トレンド判定をどのようにして行うのかのヒントも得られるでしょう。
このように仮説の検証を行う前に慌ててロジック作成を行うと時間を無駄にしてしまうことがあるので注意が必要です。もし偶然の産物で良いバックテスト結果になってしまったのであれば、それは決して幸運ではなく、むしろ悲劇のはじまりです。カーブフィッティングの可能性が濃厚であり、結果はトレードの損失となって現れてしまいます。
今日の例では、仮説の検証なしにいきなりロジックを作成してバックテスト結果を見ようとしてしまいました。これは非常にあるあるな過ちです。要注意!
まとめ
ということで、トレードルール(売買戦略、ストラテジー)作成の一連の流れや改善点を躓きポイントも含めてみていただきました。
ルール作成の工程は、仮説検証型のアプローチで行う場合は、
- 仮説を思いつく
- 仮説を検証する
- 検証結果を元に戦略のベースを作る
- 改善を行う
というプロセスで行うことをオススメいたします。
また、ここまで読んでいただいた方であればわかるように、この一連のルール作成のやり方は裁量トレードでもシステムトレードでも有効です。
ルールがあり、それを手動でやったほうが楽であれば裁量トレード、自動でやったほうが楽であればシステムトレードを行えばよいだけです。
「なるほど、わかった。ところで仮説の検証ってどうやればよいの?」
「戦略を形にするためのコードをどうやって書けばいいのかわからない!」
という方に向けた記事はどこに需要があるかどうかを見つつ後日書こうと思います。
今日はここまでです!
お疲れさまでした。