この戦略は,主にADX指標を使用してトレンドを判断し,MAとEMA移動平均を異なるパラメータ設定と組み合わせて,ロングのみのトレンド追跡戦略を構築する.ADXが上昇すると,それは長い方向を示します.価格が上向きMAとEMAを突破すると,ロングポジションを開きます.ADXが落ちたり,価格がMAまたはEMAを下回ったりすると,ポジションを閉じる.
戦略は主にADXを使用して市場の傾向と強さを判断する. ADXは,傾向の存在と強さを決定するために価格変化の程度と方向性を計算する. ADXが上昇すると,現在上昇傾向にあることを意味します. ADXが落ちると,傾向が弱まっていることを意味します.
この戦略では,MAとEMAという2つの移動平均値も使用し,異なるパラメータ設定を補助判断として使用する.それらは価格のランダム性を効果的にフィルタリングし,価格の主なトレンド方向を示します.価格が上昇してMAとEMAを突破すると,それは長い信号です.価格が落ちて突破すると,それは閉じる信号です.
ADXと移動平均値の特徴を組み合わせて,この戦略はトレンド方向を判断するための取引信号を構築します.ADXが上昇し,価格が上向きMAとEMAを突破するとロングで,ADXが落ちたり,価格がMA/EMAを突破したとき,ポジションを閉じます.それはロングのみトレンド追跡戦略を実装します.
この戦略の主な利点は以下の通りです.
リスクもあります:
解決策:
戦略は以下の側面から最適化できます.
ADXは,トレンド強度と2つの移動平均値を補助フィルターとして判断するために使用する,長期間のトレンドトラッキング戦略である.無効な取引の発生を効果的に制御し,トレンドを追跡する効果を達成する.これは比較的安定した長期間の戦略である.いくつかの最適化により,戦略の安定性と収益性はさらに向上することができる.
/*backtest start: 2023-01-22 00:00:00 end: 2024-01-28 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("ADX, MA, and EMA Long Strategy - ADX Trending Up", shorttitle="ADX_MA_EMA_Long_UpTrend", overlay=true) adxlen = input(14, title="ADX Smoothing") dilen = input(14, title="DI Length") maPeriod = input(50, title="MA Period") emaPeriod = input(50, title="EMA Period") dirmov(len) => up = change(high) down = -change(low) plusDM = na(up) ? na : (up > down and up > 0 ? up : 0) minusDM = na(down) ? na : (down > up and down > 0 ? down : 0) truerange = rma(tr, len) plus = fixnan(100 * rma(plusDM, len) / truerange) minus = fixnan(100 * rma(minusDM, len) / truerange) [plus, minus] adx(dilen, adxlen) => [plus, minus] = dirmov(dilen) sum = plus + minus 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen) sig = adx(dilen, adxlen) maValue = sma(close, maPeriod) emaValue = ema(close, emaPeriod) longCondition = sig > sig[1] and close > maValue and close > emaValue if (longCondition) strategy.entry("Long", strategy.long) exitCondition = sig < sig[1] or close < maValue or close < emaValue if (exitCondition) strategy.close("Long") plot(maValue, color=color.blue, title="MA") plot(emaValue, color=color.orange, title="EMA") plot(sig, color=color.red, title="ADX")