最近は、Trading Viewでストラテジーのテストを繰り返しています。Trading ViewはMT4よりも、はるかに少ないソースコードで試せて、しかも早いです。そこで、まずは王道の移動平均線のブレイクアウトをTrading ViewのPineエディタでプログラミングしてバックテストしてみました。どうせ稼げないだろうと思ったら、面白い結果になりました。
移動平均線のブレイクアウトとは?
王道の手法で、抵抗となっている移動平均線をブレイクしたら(抜けたら)、エントリーするというものです。
問題は、上記のように、すんなりブレイクせずに、何度も騙しが発生することです。ここを考慮しないとこれだけで稼ぐのは難しい
PineEditaのソースコード
さっそく、バックテスト用でPineエディタ(Trading View)で作ってみました。ソースは超簡単です。
移動平均線ブレイクのソース
200本の移動平均線は、トレンド転換。そこをブレイクアウトしたときにエントリーするロジックです。利益幅もロスカットも上下1万円幅で。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
//@version=5 strategy('移動平均線ブレイク', overlay=true) //マジックナンバー MAGIC_LONG_ENTRY = '202202021906' MAGIC_LONG_EXIT = '202202021908' //入力 len = input(title='SMA本数', defval=200) profit_delta = input(title='利益確定値幅', defval=10000) losscut_delta = input(title='ロスカット', defval=10000) lot = input.float(title='ロット', defval=1) // // ストラテジー // //MAをクロスオーバー? True or False Entry_point1 = ta.crossover(close, ta.sma(close, len)) //エントリー strategy.entry(id=MAGIC_LONG_ENTRY, direction=strategy.long, qty=lot, when=Entry_point1) //クローズ strategy.exit(id=MAGIC_LONG_EXIT, from_entry=MAGIC_LONG_ENTRY, profit=profit_delta, loss=losscut_delta) |
入力で設定値を変えてテストが楽になるようにしました。
バックテスト
対象通貨
BTC/JPY
パラメーターの設定値
- 移動平均線は単純移動平均線
- 本数は200
- ブレイクした時の利益確定値幅=10000円
- 損切り=10000円
- ロット1枚
結果
結果は損すると思ったら、長い目でみると、なんとギリギリ利益でます。ビットコインだったから、おそらく良かったかと。まさかの勝率50%の期待値(プロフィットファクター)1越え。
- 純利益 30000円
- 勝率 50.91%
- プロフィットファクター 1.037
- 最大ドローダウン18万
こういう場合は、ちょっと調整すれば利益でます。
設定値改良版のバックテスト
設定値だけ、あれこれイジってみました。そもそも、200本の移動平均線は、ブレイクしないケースが多いので騙しが多い。でも、少しだけいつも抜けそうになる事はあります。そこも考慮して、利確の値幅を下げてみました。
パラメータ設定値
赤字が変更点です。
- 移動平均線は単純移動平均線
- 本数は200
- ブレイクした時の利益確定値幅=5000円
- 損切り=2000円
- ロット1枚
結果
パラメータの調整だけで、利益は6倍になりました。
- 純利益 191,000円
- 勝率 36.55%
- プロフィットファクター 1.44
- 最大ドローダウン36,000円
勝率よりも期待値(プロフィットファクター)
プログラムのトレードでは、勝率はあまり関係ないです。プロフィットファクター(期待値)が重要になります。
プロフィットファクターが1未満だと、それはどんどん目減りする事を意味します。勝率が高くても、一発の負けで大損するEAも世の中には多々あります。
MT4で売れているEAは、だいたいプロフィットファクターは1.2くらいです。それくらいあれば、かなり上出来になります。
ソース改良
いきなり、まあまあうまくいったのですが、普通は裁量でトレードする際はMACDとか、ストキャスティクスとかRCIとか、そういうテクニカルは必ずみますよね。
さきほどは、全く考慮していなかったので勝率もかなり低めでしたが、今回はストキャスティクスを見て80以上ではブレイクしても買わないようにしてみました。
移動平均線ブレイク(ストキャスティクス考慮版)のソース
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
//@version=5 strategy('ストラテジーテスト', overlay=true) //マジックナンバー MAGIC_LONG_ENTRY = '202202021906' MAGIC_LONG_EXIT = '202202021908' //入力 len = input(title='SMA本数', defval=200) profit_delta = input(title='利益確定値幅', defval=5000) losscut_delta = input(title='ロスカット', defval=2000) lot = input.float(title='ロット', defval=1) // // ストラテジー // //MAをクロスオーバー? True or False ma_cross = ta.crossover(close, ta.sma(close, len)) //ストキャスティクス取得 stch = ta.stoch(close, high, low, 14) //ストキャスティクス未満? st_under = if stch < 80 true else false Entry_point1 = ma_cross and st_under //エントリー strategy.entry(id=MAGIC_LONG_ENTRY, direction=strategy.long, qty=lot, when=Entry_point1) //クローズ strategy.exit(id=MAGIC_LONG_EXIT, from_entry=MAGIC_LONG_ENTRY, profit=profit_delta, loss=losscut_delta) |
結果
- 純利益 140,000円
- 勝率 39.15%
- プロフィットファクター 1.609
- 最大ドローダウン21000円
純利益が減ったのは、単純にトレード回数が下がったからです。約半分で、この結果なので、倍くらいは稼げるように変わったかと思います。
Trading Viewについて
今回、検証で使ったソフトは、ブラウザで動作するTrading Viewです。私は有料プランを使っていますが、無料では3つまでインジケーターを入れることができます。この3つを何にするかがポイントになります。スマホアプリとも連動しているので、超便利です。
まとめ
正直、移動平均線のブレイクは、単純にプログラム組むだけでは稼げないと思っていたので、結果は意外にも稼げました。ただし、ビットコイン以外ではダメです。散々な結果になります。
ご質問はコメント欄からお願いします