移動平均線に基づくゴールデンクロスとデスクロス戦略


作成日: 2024-01-29 16:02:08 最終変更日: 2024-01-29 16:02:08
コピー: 0 クリック数: 592
1
フォロー
1617
フォロワー

移動平均線に基づくゴールデンクロスとデスクロス戦略

概要

この戦略は,移動平均線の金叉死叉原理に基づいて取引シグナルを作成する.それは,短期,中期,および長期の3つの異なるパラメータセットの移動平均線を融合し,この3つの平均線の高低関係を比較して市場の空虚状態を判断し,取引シグナルを生成する.

戦略原則

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

短期SMA線が中期WMA線を突破し,閉盘価格がWMA線より高いときは,市場が下から上方逆転し,多頭シグナルを形成することを示す.短期SMA線が中期WMA線を突破し,または閉盘価格がWMA線より低いときは,空頭シグナルである.したがって,この戦略は,3つの平均線の高低と交差を比較して市場の多頭状態を判断する.

優位分析

この戦略は,短,中,長3つの異なる均線を組み合わせて,異なる周期の市場変化に反応し,トレンドの捕捉の正確性を向上させます.特に,中期WMAは,誤差信号を効果的にフィルターする,よりよい消音波動の効果を持っています.さらに,この戦略は,SMAとクローズアップ価格の多頭信号が高度な一致性に達したときにのみ,ポジションの信号を発信します.これは,ウィップサウスを避け,各入場の効率性を保証します.

リスク分析

この戦略には誤報のリスクがある.短期SMAがエラーシグナルを生むとき,この戦略はSMA線の信号に厳密に依存しているため,不必要な損失を引き起こす可能性がある.さらに,この戦略はパラメータに対して比較的敏感であり,市場が震動区間に入り,パラメータが不適切な時に設定され,大量に間違った取引が生じる.

これらのリスクを防ぎ,平均線の長さを調整し,取引条件を適切に緩和し,単一損失を制御するためにストップを設定することが推奨されます.市場傾向が不明である場合,戦略取引を一時的に停止することもできます.

最適化の方向

この戦略は以下の点で最適化できます.

  1. KC線などの平均線指標の追加により,判断の正確性を高める指標集合を形成

  2. 取引量の増加要因は,放量突破のようなものです

  3. 波動性指標と組み合わせて,震動的な事態を回避する

  4. 機械学習などの手段でパラメータを訓練し,最適化

要約する

この戦略は,3つの均線の交差と閉盤価格のリアルタイム関係に基づいて市場の空虚状態を判断し,簡単で信頼できる.それは,異なる長さの区間の均線を組み合わせて,トレンドを効果的に発見し,信号の質が高くなります.パラメータを適切に調整し,より多くの補助指標を導入することにより,この戦略は,ターゲットと安定性をさらに高めることができます.

ストラテジーソースコード
/*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))