
この戦略は,平らな移動平均の交差に基づく取引戦略である.これは,50周期の指数移動平均 ((EMA) を主要な技術指標として使用し,価格ラインが上から下からEMAを穿越するときに多めにし,上から下からEMAを穿越するときに空っぽにし,利益を実現する.
核心思想は,50周期のEMAを価格トレンドの判断ツールとして使用することである。EMA線は,価格を平らにするデータであり,短期的な市場のノイズを取り除き,より長期的な価格トレンドの方向を反映する。価格線がより下からEMA線を穿越するとき,価格が上昇し始めることを示すのは,多額の時間である。価格線がより上からEMA線を横切るとき,価格が下がり始めることを示すのは,空の時間である。
具体的には,この戦略は以下の側面から構成されています.
入力パラメータ: EMAの周期長を 50 〜 に設定します.
計算指標: ta.ema関数を呼び出し,50周期のEMAを計算する.
入場条件:価格上はEMA線を横切るときに多信号を生成し,価格下はEMA線を横切るときに空信号を生成する.
出場条件:出場時に記録された最高価格/最低価格,その価格を後に破れば出場する.
視覚化: EMA線を描き,多空のエントリーポイントと出場ポイントをマークする.
この方法では,順番でトレンドの方向に沿って取引し,価格が逆転し始めるときに,時効的に止損退出を行うことができます.
EMAの横断戦略は,他の指標や戦略に比べて,いくつかの顕著な利点があります.
シンプルで直感的な┃ 核心指標は1つのEMA線しかなく,分かりやすく操作できます。 ┃ 指標の複雑さは発生しません。
柔軟に調整するEMAの周期長さは,異なる市場と品種に合わせて非常に柔軟に調整できます.
トレンドを掴むEMAは価格データを平らにして,中長期の価格動向の変化を捉えるのに役立ちます.
制御を撤回する価格の新高点/新低点を利用して止損し,撤回をコントロールできます.
この戦略にはいくつかのリスクがあります.
トレンドを逃した┃ 価格が急激に波動すると,EMA線はターニングポイントを間に合うように捉えることができず,トレンド転換のタイミングを逃す可能性があります。 ブリン帯などの他の指標と組み合わせて検証することができます。
損失を早めに止めた┃ ストップポイントは,直接,信号が出現する時の最高価格/最低価格を採取し,比較的容易に到達し,早めにストップするかもしれない。 移動ストップ,ストップ範囲を緩めるなどの方法を採用することを考えることができる。
パラメータ調整│EMA周期が不適切である場合,誤信号が繰り返し発生する。異なる周期,市場の変動率に合わせてEMAパラメータを調整する必要がある。
この戦略はさらに改善できる余地があります.
ブリン帯の指標検証信号と組み合わせて,EMA線が誤信号を生成するのを避ける.
停止の仕組みを改善し,移動停止,変動停止の見直しなどの方法を適用し,早期停止を避ける.
市場や取引品種によってEMAのパラメータを最適化し,最も適切な周期を見つけます.
自動パラメータ最適化モジュールが追加され,戦略が最適のパラメータの組み合わせを自分で探すことができます.
この策略は,EMA指標に基づいて価格トレンドの方向を判断し,金叉の多行と死叉の空行に従って判断する. 策略は,操作が簡単で,順番に価格トレンドを捕捉し,ストップ・ローズ・コントロールのリスクを抑える. この策略は,さらに,より多くの指標のフィルタリング信号,ストップ・ローズ・メカニズムの改善などと組み合わせて,さらに最適化することができる. 全体として,この滑らかな移動平均線交差策は,注意と考慮に値する.
/*backtest
start: 2022-11-17 00:00:00
end: 2023-11-23 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("EMA 50 Crossover Strategy", shorttitle="EMA 50 xover", overlay=true)
// Input for EMA length
emaLength = input(50, title="EMA Length")
// Calculate EMA 50
ema50 = ta.ema(close, emaLength)
// Define conditions for long entry
longCondition = ta.crossover(close, ema50)
// Define conditions for short entry
shortCondition = ta.crossunder(close, ema50)
// Calculate the high of the signal candle for long entry
var float longSignalHigh = na
if (longCondition)
longSignalHigh := high
// Calculate the low of the signal candle for short entry
var float shortSignalLow = na
if (shortCondition)
shortSignalLow := low
// Long entry
plotshape(series=longCondition, title="Long Entry Signal", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
// Short entry
plotshape(series=shortCondition, title="Short Entry Signal", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)
// Exit conditions
longExitCondition = ta.crossunder(close, longSignalHigh)
shortExitCondition = ta.crossover(close, shortSignalLow)
// Plot exit signals
plotshape(series=longExitCondition, title="Long Exit Signal", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)
plotshape(series=shortExitCondition, title="Short Exit Signal", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
// Strategy entry and exit logic
strategy.entry("Long", strategy.long, when=longCondition)
strategy.entry("Short", strategy.short, when=shortCondition)
strategy.close("Long", when=longExitCondition)
strategy.close("Short", when=shortExitCondition)
// Plot EMA 50
plot(ema50, title="EMA 50", color=color.blue)