移動平均クロスオーバー取引戦略は,高速EMA (fastLength) と遅いEMA (slowLength) ラインのクロスオーバーを計算することによって,買い売り信号を生成する.高速線がスローラインを越えると,買い信号が生成される.高速線がスローラインを下回ると,売り信号が生成される.この戦略は単純で実用的で,中短期取引に適している.
この戦略は,2つの移動平均線,高速線とスローラインを使用する.高速線パラメータEMAfastLengthは9日線にデフォルトで,スローラインパラメータEMAslowLengthは26日線にデフォルトで設定されている.市場購入および販売信号を決定するために,2つのEMAラインのクロスオーバーを計算する:
特定の取引信号と戦略規則は以下のとおりです.
この戦略は2つの移動平均線の 金色の交差点と死色の交差点に基づいて取引します
リスクに対処するために,最適化できるパラメータには,移動平均サイクル,取引の種類,利益とストップ損失比などが含まれます.リスクを減らすために広範なテストが必要です.
この戦略の移動平均クロスオーバーの考え方は単純で実用的です.以下の方法で最適化できます.
これらの最適化テストによって,戦略の実用的な効果と安定性が大幅に向上できます.
移動平均クロスオーバー戦略のアイデアはシンプルですが,実用的な応用には継続的な最適化が必要です.この戦略は,取引信号と基本的な取引規則を生成する論理を提供します.この基礎で,使用可能な定量戦略になるために大幅に最適化することができます.移動平均の適用は,私たちが革新と改善を可能にする戦略のアイデアも提供します.
/*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=4 strategy("EMA Cross by MarketAlpha", overlay=true) EMAfastLength = input(defval = 9, minval = 2) EMAslowLength = input(defval = 26, minval = 2) Targetpercentage = input(defval = 0.15, title = "Profit Target in percentage", minval = 0.05) StopLosspercentage = input(defval = 0.20, title = "Stop Loss in percentage", minval = 0.05) profitpoints = close*Targetpercentage stoplosspoints = close*StopLosspercentage price = close FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12) FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31) FromYear = input(defval = 2018, title = "From Year", minval = 2000) ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12) ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31) ToYear = input(defval = 9999, title = "To Year", minval = 2017) start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window window() => true // create function "within window of time" emafast = ema(price, EMAfastLength) emaslow = sma(price, EMAslowLength) plot(emafast,color=green) plot(emaslow,color=red) enterLong() => crossover(emafast, emaslow) strategy.entry(id = "MarketAlpha Long", long = true, when = window() and enterLong()) strategy.exit("Exit Long", from_entry = "MarketAlpha Long", profit = profitpoints,loss = stoplosspoints) enterShort() => crossunder(emafast, emaslow) strategy.entry(id = "MarketAlpha Short", long = false, when = window() and enterShort()) strategy.exit("Exit Short", from_entry = "MarketAlpha Short", profit = profitpoints,loss = stoplosspoints)