この戦略は,EMAフィルターとセッションタイムフレームを持つ"Up versus Down Close Candles Strategy"と呼ばれる.これは,EMAフィルターと特定のセッションでの取引を組み合わせて,市場情勢を決定するために,特定の見直し期間にUpとDown Close Candlesの数を数えて,ロングとショートシグナルを識別します.
基本論理は,最近の回顧期間のアップ・クローズ・カウント (upCloseCount) とダウン・クローズ・カウント (downCloseCount) の数を数えることです.UpCloseCountが大きい場合,それは上昇市場を示します.DownCloseCountが大きい場合は,それは下落市場を示します.EMA指標はフィルターとして使用され,価格 > EMAで長いこと,価格 < EMAで短いことを考慮します.また,セッション1とセッション2を取引セッションとして設定します.
詳細な論理:
inSessionは true (取引セッションでは) と upCloseCount > downCloseCount (より近いキャンドル) と close > ema (EMAよりも高い閉値) と currentSignalは
ショートシグナルは: inSessionは true と downCloseCount > upCloseCount (さらにダウン Close Candles) と close < ema (EMAよりも低い閉値) と currentSignalが
解決策:
この戦略は,前もって設定された取引セッション内で,EMAフィルターを使用して,閉じると閉じるキャンドルを比較してトレンドシグナルを識別する.いくつかのトレンドフォロー効果があるが,偽信号のリスクもあります.パラメータを最適化し,ストップロスを追加し,フィルターを強化し,改善します.バックテストで徹底的に評価します.
/*backtest start: 2023-11-26 00:00:00 end: 2023-12-26 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Up vs Down Close Candles Strategy with EMA and Session Time Frames", shorttitle="UvD Strat EMA Session", overlay=true) // User input to define the lookback period, EMA period, and session strings for time frames int lookback = input(20, title="Lookback Period") int emaPeriod = input(50, title="EMA Period") string session1 = input("0900-1200", title="Time Frame 1 Session") string session2 = input("1300-1600", title="Time Frame 2 Session") // Calculate the EMA float ema = ta.ema(close, emaPeriod) // State variable to track the current signal var string currentSignal = na // Counting up-close and down-close candles within the lookback period int upCloseCount = 0 int downCloseCount = 0 if barstate.isnew upCloseCount := 0 downCloseCount := 0 for i = 0 to lookback - 1 if close[i] > close[i + 1] upCloseCount += 1 else if close[i] < close[i + 1] downCloseCount += 1 // Define the long (buy) and short (sell) conditions with EMA filter and session time frame bool inSession = time(timeframe.period, session1) or time(timeframe.period, session2) bool longCondition = inSession and upCloseCount > downCloseCount and close > ema and currentSignal != "long" bool shortCondition = inSession and downCloseCount > upCloseCount and close < ema and currentSignal != "short" // Enter or exit the market based on conditions if longCondition currentSignal := "long" strategy.entry("Buy", strategy.long) if shortCondition currentSignal := "short" strategy.entry("Sell", strategy.short) // Exit logic for long and short positions if currentSignal == "long" and strategy.position_size <= 0 strategy.close("Sell") if currentSignal == "short" and strategy.position_size >= 0 strategy.close("Buy") plot(ema, color=color.blue, title="EMA")