EMAのキャンドル・クローズ戦略

作者: リン・ハーンチャオチャン開催日: 2024-01-29 16:02:08
タグ:

img

概要

この戦略は,移動平均値の黄金十字と死十字をベースに取引信号を生成する. 異なるパラメータ設定 - 短期,中期,長期の3つの移動平均値を組み込みます. これらの3つのMA間の高度関係を比較することによって,市場の上昇/下落状態を決定し,取引信号を生成します.

戦略原則

この戦略は,3つの移動平均線を設定しており,これらは短期的な単純な移動平均線,中期的な重度の移動平均線,長期的指数的な移動平均線である.具体的には,1期間のSMA,20期間のWMA,25期間のEMAを設定している.

短期SMA線が中期WMA線を上向きに横切り,閉盤価格もWMA線よりも高くなった場合,市場は上向きに逆転し,上昇信号を形成することを示します.短期SMA線が中期WMA線以下に横切ったとき,または閉盤価格がWMA線より低いとき,それは下落信号を与えます.したがって,この戦略は3つのMA間の高値とクロスオーバーを比較することによって市場の上昇/下落状態を判断します.

利点分析

この戦略には,短期間,中期,長期間の3つのMAsが組み込まれ,異なるサイクルにおける市場変化に反応し,トレンドの把握の精度を向上させることができる.特に,中期WMAは市場のノイズをフィルタリングし,誤った信号を効果的に回避するより良い効果を有する.また,SMAと閉値の上昇信号が高い一貫性に達するときにのみ戦略は長い信号を送信し,ウィップソウを防止し,すべてのエントリーを効率的に確保する.

リスク分析

この戦略には誤った信号の危険性がある.短期SMAが誤った信号を生成すると,SMAラインに厳格に依存しているため,不必要な損失が発生する可能性がある.また,戦略はパラメータに敏感である.パラメータがレンジバインド市場の下で正しく設定されていない場合,多くの間違った取引が引き起こされる可能性がある.

このようなリスクを防ぐために,MA長さを調整し,取引条件を適切に緩和し,単一の損失を制限するためにストップロスを設定することが提案されます.市場の傾向が不明である場合,戦略は一時停止することができます.

オプティマイゼーションの方向性

戦略は以下の側面から最適化できます.

  1. KC のような MA の種類を増やして指標のポートフォリオを形成し,正確性を向上させる.

  2. 大量のブレイクアウトのようなボリューム要素を追加します

  3. 不安定な市場での失敗を避けるため,変動指標を組み合わせる

  4. パラメータを訓練し最適化するために機械学習を使用する

結論

この戦略は,3つのMAと閉値間のクロスオーバーおよび高値関係に基づいて市場上昇/下落状態を決定する.異なる条件のMAを組み合わせることで,トレンドを効果的に発見し,シグナルが高品質である.適切なパラメータ調整とより多くの補助指標の導入により,戦略は関連性および安定性をさらに高めることができます.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("EMA Candle Close Strategy KHANH 11/11/2023", overlay=true, initial_capital=100, commission_type=strategy.commission.percent, commission_value=0.0000005, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

len1 = input.int(1, title="SMA #1 Length", minval=1)
src1 = input(close, title="SMA Source #1")
out1 = ta.sma(src1, len1)
plot(out1, title="SMA #1", color=close >= out1 ? color.rgb(120, 123, 134, 100) : color.rgb(120, 123, 134, 100), linewidth=1)

len2 = input.int(20, title="HMA #2 Length", minval=1)
src2 = input(close, title="HMA Source #2")
out2 = ta.hma(src2, len2)
plot(out2, title="HMA #2", color=close >= out2 ? color.rgb(253, 255, 254, 100) : color.rgb(255, 255, 255, 100), linewidth=1)

len3 = input.int(25, title="EMA #3 Length", minval=1)
src3 = input(close, title="EMA Source #3")
out3 = ta.ema(src3, len3)
plot(out3, title="EMA #3", color=close >= out3 ? color.blue : color.blue, linewidth=1)

// Define the long condition
longCondition = (out1 > out2 and close > out2)

// Define the short condition
shortCondition = (out1 < out2 or close < out2)

// Entry conditions
if (longCondition)
    strategy.entry("Long",strategy.long)
else if (shortCondition)
    strategy.entry("Short", strategy.short)

// Trade channel plot
PeriodLookBack = input(55, title="Period Look Back")
xHighest55 = request.security(syminfo.tickerid, timeframe.period, ta.highest(PeriodLookBack))
xLowest55 = request.security(syminfo.tickerid, timeframe.period, ta.lowest(PeriodLookBack))
plot(xHighest55[1], color=color.red, title="HH")
plot(xLowest55[1], color=color.green, title="LL")



//@version=5
//indicator("Custom Moving Averages", shorttitle="CMA", overlay=true)

shortLength = input(defval=40, title="Short Length")
longLength = input(defval=80, title="Long Length")

// Sử dụng khung thời gian của biểu đồ đang sử dụng thay vì cố định là "D"
shortTopBorder = request.security(syminfo.tickerid, timeframe.period, ta.highest(high, shortLength))
shortBottomBorder = request.security(syminfo.tickerid, timeframe.period, ta.lowest(low, shortLength))

longTopBorder = request.security(syminfo.tickerid, timeframe.period, ta.highest(high, longLength))
longBottomBorder = request.security(syminfo.tickerid, timeframe.period, ta.lowest(low, longLength))

shortAverageLine = (shortTopBorder + shortBottomBorder) / 2
longAverageLine = (longTopBorder + longBottomBorder) / 2

plot(shortAverageLine, color=color.new(#fc0000, 0))
plot(longAverageLine, color=color.new(#01ff27, 0))


もっと