📝 概要
今回は、EMA Breakout Long Strategy を紹介します。
この戦略は、名前の通り EMAを上抜けたらロングで入る という非常にシンプルな順張り系ストラテジーです。耳タコだと思いますが、とにかくシンプルなロジックでもプラスにはなるということを知ってもらうコーナーです😁
使っているロジックは、終値がEMAを下から上にクロスしたらエントリー。逆に、終値がEMAを上から下にクロスしたら撤退というどシンプルなもの。利食い損切りは固定%。
かなり素直なEMAブレイクアウト戦略なので、複雑なフィルターを入れる前の「土台」として使いやすいコードになっています。
考え方としては、
「価格がEMAを上抜けたら、流れが上向きに変わったと判断して乗る」
というものです。とても王道ですね。王道だけど、こういうシンプルな戦略こそ、検証してみると市場ごとのクセがよく見えます。
💻️ バックテスト
すべて4時間足。手数料込み。
GBPJPY

USDJPY

NASDAQ(CFD)

🎯 作成の意図
このストラテジーの狙いは、EMAを使ったシンプルなトレンドフォロー戦略を検証すること です。
移動平均線を使った売買ルールは昔からありますが、その中でもEMAは直近価格への反応がやや速いのが特徴です。SMAが「のんびり屋の平均線」だとすると、EMAは少し反応の早いタイプですね。
今回のコードでは、30期間EMAを基準にしています。
価格がEMAを上抜けるということは、少なくとも短期的には買いの勢いが出てきた可能性があります。そこでロングでエントリーします。
一方で、価格がEMAを下抜けた場合は、上昇の勢いが弱まったと見てポジションを閉じます。
つまり、この戦略はかなり素直に、
- EMA上抜けで買う
- EMA下抜けで撤退する
- さらに損切りと利食いも固定%で入れておく
という構成です。
複雑な条件を足しすぎると、何が効いているのか分からなくなることがあります。その点、この戦略はかなりシンプルです。だからこそ、まずはこのような単純な形で検証し、その後にフィルターを追加していくのが良いと思います。
📘 コード(戦略部分)の解説
エントリー条件と決済条件はこちらです。
enterLong = ta.crossover(close, emaValue)
exitLong = ta.crossunder(close, emaValue)
ta.crossover(close, emaValue) は、終値がEMAを下から上に抜けたときにtrueになります。ta.crossunder(close, emaValue) は、終値がEMAを上から下に抜けたときにtrueになります。
こちらは撤退条件です。
この戦略はロング専用なので、ショートエントリーはありません。
売りで攻めるというより、「上昇の波に乗れそうなときだけ参加する」タイプです。
実際のエントリー部分はこちらです。
contractsQty = 5
var float lastTradePrice = na
if enterLong and strategy.position_size == 0 and time >= start_date and time <= end_date
strategy.entry("Buy Call", strategy.long, qty = contractsQty)
lastTradePrice := close
else if exitLong and strategy.position_size > 0
strategy.close("Buy Call")
lastTradePrice := na
contractsQty = 5 で、エントリー数量を5に固定しています。
そして、lastTradePrice にエントリー時の価格を記録しています。
損切りと利食いです。エントリー価格を基準に損切り価格と利食い価格を計算しています。
損切り価格は、
lastTradePrice * (1 - stopLossPct / 100)
利食い価格は、
lastTradePrice * (1 + takeProfitPct / 100)
です。さらに、EMA下抜けでの撤退に加えて、固定%のストップとターゲットがあるため、出口は3種類あります。
- EMA下抜けで撤退
- 2%下落で損切り
- 3%上昇で利食い
かなり分かりやすい構成です。
🚀 ワン モア ステップ
この戦略はかなりシンプルなので、改良ポイントもたくさんあります。
まず試したいのは、上位足フィルター です。
たとえば、日足で検証しているなら、週足のEMAが上向きのときだけロングする。1時間足で検証しているなら、4時間足や日足のトレンド方向と一致したときだけエントリーする。こうすると、逆風の中で無理やりロングする回数を減らせます。
もうひとつは、ATRベースの損切り・利食い です。
現在は固定%で損切りと利食いを設定しています。これは分かりやすい反面、ボラティリティの変化には対応しません。相場が静かなときの2%と、荒れているときの2%では意味が違います。
そこでATRを使って、
- 損切り:エントリー価格 − ATR × 2
- 利食い:エントリー価格 + ATR × 3
のようにすると、相場の値動きに合わせた出口を作れます。
さらに、トレンドの強さを見るなら ADXフィルター も候補です。EMA上抜けだけだと、レンジ相場で何度も上抜け・下抜けを繰り返してしまうことがあります。いわゆる往復ビンタです。
そこで、ADXが一定以上のときだけエントリーするようにすれば、トレンドが弱い場面をある程度避けられるかもしれません。
🔐 コアメンバー向けソース
こちらからどうぞ。

コメント