この記事では,EMAの均線交差を活用して取引信号を形成するトレンド追跡戦略について詳しく説明します.この戦略は,均線パラメータの組み合わせを最適化することで,戦略の安定性を向上させます.
戦略の原則
この戦略は,主に以下の核心ルールに従っています.
速線EMAと遅線EMAを設定し,速線は価格変化に反応し,遅線はトレンドを判断する.
短線で長線を走る,下線で空線を走る
偽信号を減らすためにEMAパラメータの比率を,遅線周期≥速線3倍に設定する.
逆転取引を避けるため,複数モードでのみ選択できます.
パラメータ最適化テストのためのカスタマイズ可能な反測周期.
EMA平均線パラメータを調整することで,敏感性を維持しながら安定性を高め,トレンド取引の機会をロックすることができます.
2 戦略的優位性
この戦略の最大の利点は,ルールがシンプルで,実行しやすいこと,時間制限のあるトレーダーに適していることです.
また,パラメータの最適化により,頻繁に無効な取引を減らすことが可能である.
最後に,複数のモードで,逆転取引は不要で,株式市場などの品種に適した選択肢があります.
3 潜在的リスク
しかし,この戦略には問題もあります.
まず,EMA平均線自体は遅れているので,ベストポイントを逃す可能性があります.
次に,パラメータの設定が不適切である場合,過度のフィルタリングが漏れ表に起因する可能性があります.
ストップ・ストップ・損失の仕組みは改善され,最適化される必要があります.
内容と要約
この記事では,EMA平均線交差に基づくトレンド取引戦略について詳しく説明する.これは平均線パラメータの組み合わせを調整することで戦略の安定性を高める.この戦略は使いやすいし,ルールはシンプルで明確であるが,平均線遅れの防止などにも注意する必要がある.
/*backtest
start: 2023-08-15 00:00:00
end: 2023-09-12 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
//
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © gregoirejohnb
//
// Moving average crossover systems measure drift in the market. They are great strategies for time-limited people.
// So, why don't more people use them?
//
// I think it's due to poor choice in choosing EMA lengths: Market Wizard Ed Seykota has a guideline for moving average crossovers: the slow line should be at least 3x the fast line.
// This removes a lot of the whipsaws inherent in moving average systems, which means greater profitability.
// His other piece of advice: long-only strategies are best in stock markets where there's a lot more upside potential.
//
// Using these simple rules, we can reduce a lot of the whipsaws and low profitability trades! This strategy was made so you can see for yourself before trading.
//
// === HOW TO USE THIS INDICATOR ===
// 1) Choose your market and timeframe.
// 2) Choose the length.
// 3) Choose the multiplier.
// 4) Choose if the strategy is long-only or bidirectional.
//
// Don't overthink the above! We don't know the best answers, that's why this strategy exists! We're going to test and find out.
// After you find a good combination, set up an alert system with the default Exponential Moving Average indicators provided by TradingView.
//
// === TIPS ===
// Increase the multiplier to reduce whipsaws (back and forth trades).
// Increase the length to take fewer trades, decrease the length to take more trades.
// Try a Long-Only strategy to see if that performs better.
//
strategy(title="EMA Crossover Strategy", shorttitle="EMA COS", overlay=true, pyramiding=0, default_qty_type=strategy.percent_of_equity, default_qty_value=10, currency=currency.USD,commission_type=strategy.commission.percent,commission_value=0.1)
// === GENERAL INPUTS ===
//strategy start date
start_year = input(defval=2020, title="Backtest Start Year")
// === LOGIC ===
length = input(type=input.integer,defval=20,minval=1,title="Length")
ratio = input(type=input.integer,defval=3,title="Multiplier (3x length, 4x length, etc)",options=[3,4,5,6,7,8,9,10])
longOnly = input(type=input.bool,defval=false,title="Long Only")
fast = ema(hl2,length)
slow = ema(hl2,length * ratio)
plot(fast,linewidth=2,color=color.orange,title="Fast")
plot(slow,linewidth=2,color=color.blue,title="Slow")
longEntry = crossover(fast,slow)
shortEntry = crossunder(fast,slow)
plotshape(longEntry ? close : na,style=shape.triangleup,color=color.green,location=location.belowbar,size=size.small,title="Long Triangle")
plotshape(shortEntry and not longOnly ? close : na,style=shape.triangledown,color=color.red,location=location.abovebar,size=size.small,title="Short Triangle")
plotshape(shortEntry and longOnly ? close : na,style=shape.xcross,color=color.black,location=location.abovebar,size=size.small,title="Exit Sign")
// === STRATEGY - LONG POSITION EXECUTION ===
enterLong() =>
crossover(fast,slow) and
time > timestamp(start_year, 1, 1, 01, 01)
exitLong() =>
longOnly and crossunder(fast,slow)
strategy.entry(id="Long", long=strategy.long, when=enterLong())
strategy.close(id="Long", when=exitLong())
// === STRATEGY - SHORT POSITION EXECUTION ===
enterShort() =>
not longOnly and crossunder(fast,slow) and
time > timestamp(start_year, 1, 1, 01, 01)
exitShort() =>
false
strategy.entry(id="Short", long=strategy.short, when=enterShort())
strategy.close(id="Short", when=exitShort())