この戦略は,取引信号を生成するために2つの移動平均値 (MA) を使用する.短期間MAが長期間MAを超えると,購入信号が生成され,短期間MAが長期間MAを下回ると,販売信号が生成される.戦略はまた,取引時間 (8AMから20PM UTC) と利益目標 (150ポイント) を設定する.
この戦略は,トレンド市場に適した,異なる期間の2つの移動平均値のクロスオーバーに基づいて取引信号を生成する.取引時間期間と固定利益目標を設定することで,一定程度リスクを制御することができる.しかし,戦略は不安定な市場でうまく機能しない可能性があり,固定利益目標は戦略の利益可能性を制限する可能性がある.将来,より多くの技術指標を組み込むことを検討し,利益目標とストップロスの設定を最適化し,市場マイクロ構造情報を組み合わせ,この戦略を最適化するために異なる市場状態のための異なるパラメータ設定を採用することができます.
/*backtest start: 2024-03-01 00:00:00 end: 2024-03-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Moving Average Crossover Strategy", overlay=true) // User-defined moving average periods ma1Periods = input(5, title="First Moving Average Periods") ma2Periods = input(20, title="Second Moving Average Periods") // Calculate moving averages ma1 = sma(close, ma1Periods) ma2 = sma(close, ma2Periods) // Plot moving averages plot(ma1, color=color.red, linewidth=2, title="First Moving Average") plot(ma2, color=color.blue, linewidth=2, title="Second Moving Average") // Detect crossovers and crossunders bullishCross = crossover(ma1, ma2) bearishCross = crossunder(ma1, ma2) // Define trading hours (8 AM to 2 PM UTC) startHour = 8 endHour = 20 utcHour = hour(time, "UTC") isMarketOpen = true // Define profit target profitTarget = 150 // Check if the price has closed above/below the MA for the past 4 bars aboveMa = close[4] > ma1[4] and close[3] > ma1[3] and close[2] > ma1[2] and close[1] > ma1[1] belowMa = close[4] < ma1[4] and close[3] < ma1[3] and close[2] < ma1[2] and close[1] < ma1[1] // Create buy and sell signals if (bullishCross and isMarketOpen and aboveMa) strategy.entry("Buy", strategy.long) strategy.exit("Sell", "Buy", profit=profitTarget) if (bearishCross and isMarketOpen and belowMa) strategy.entry("Sell", strategy.short) strategy.exit("Cover", "Sell", profit=profitTarget) // Plot shapes on crossovers plotshape(series=bullishCross and isMarketOpen and aboveMa, location=location.belowbar, color=color.green, style=shape.labelup, text="Buy") plotshape(series=bearishCross and isMarketOpen and belowMa, location=location.abovebar, color=color.red, style=shape.labeldown, text="Sell")