この戦略は典型的なEMAトレンドフォロー戦略である.上向きトレンドを決定するために,高速EMAと遅いEMAの黄金十字を使用し,それに応じて長期と短期のトレンドを決定するために死亡十字を使用する.この戦略は中長期トレンドを信頼的に追跡し,スウィング取引に適している.
基本的な論理は
異なるスピードのEMAを使用することで,トレンドの変化を効果的に検出することができる.速いEMAは早期トレンド検出のために価格変化に迅速に反応し,遅いEMAはトレンド確認を確保するために偽信号をフィルタリングする.共に信頼性の高いトレンドシステムを形成する.
金色のクロスはロングの上昇トレンドの始まりを,デッドクロスはショートの下落トレンドの始まりを意味する. 急速なEMAのデッドクロスから脱出することは,損失を間に合うように止めるのに役立ちます.
緩和策
戦略は以下のような分野において強化できる:
機械学習によりEMAパラメータを自動調整して適応性が向上します
市場変動に合わせて調整する波動性に基づくポジションサイズ
RSI のような振動子 は 入力点 を 調整 する
トレイリングストップや利益引き上げストップを追加してリスク管理を改善する
トレンド検証のための資金の流入/流出を計測するためのボリューム分析
ポートフォリオの組合せと相関関係のない戦略は,引き上げを低減し,収益の安定性を高める
EMAトレンドフォロー戦略は,中長期トレンドを追跡するためのシンプルで実用的な方法である.EMAは,エントリータイムリングのために高速および遅いEMAクロスを使用する.実装が簡単で,適応性が向上するために複数の次元で拡張することもできる.スウィングトレードトレンド市場に最適である.
/*backtest start: 2023-09-11 00:00:00 end: 2023-09-18 00:00:00 period: 10m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © HomoDeus666 //@version=5 strategy("EMA12/26 with date backtest range (BTCpair)", overlay=true,initial_capital = 1,commission_type = strategy.commission.percent,currency = currency.BTC) //input date and time useDateFilter = input.bool(true, title="Filter Date Range of Backtest", group="Backtest Time Period") backtestStartDate = input(timestamp("1 Jan 2021"), title="Start Date", group="Backtest Time Period", tooltip="This start date is in the time zone of the exchange " + "where the chart's instrument trades. It doesn't use the time " + "zone of the chart or of your computer.") backtestEndDate = input(timestamp("1 Jan 2022"), title="End Date", group="Backtest Time Period", tooltip="This end date is in the time zone of the exchange " + "where the chart's instrument trades. It doesn't use the time " + "zone of the chart or of your computer.") //check date and time option inTradeWindow = true /// plot and indicator fastEMA = ta.ema(close,12), slowEMA=ta.ema(close,26) plot(fastEMA,color=color.green,linewidth = 2) plot(slowEMA,color=color.red,linewidth=2) //entry when condition longCondition = ta.crossover(fastEMA,slowEMA) if (longCondition) and inTradeWindow strategy.entry("buy", strategy.long) if ta.crossunder(ta.ema(close, 12), ta.ema(close, 26)) and inTradeWindow strategy.close("buy") // trades and cancel all unfilled pending orders if not inTradeWindow and inTradeWindow[1] strategy.cancel_all() strategy.close_all(comment="Date Range Exit")