GM-8 & ADX 이중 이동 평균 전략은 여러 가지 기술적 지표를 결합한 양적 거래 전략이다. GM-8 지표, ADX 지표 및 두 번째 EMA 지표를 활용하여 잠재적 인 구매 및 판매 신호를 식별합니다. GM-8 지표는 가격 트렌드를 결정하는 데 사용되며, ADX 지표는 트렌드 강도를 확인하는 데 사용되며 두 번째 EMA 지표는 트렌드 방향을 결정하는 데 도움을줍니다. 가격이 GM-8 이동 평균을 넘어서 ADX 지표가 한 임계 이상에있을 때 구매 및 판매 신호가 생성됩니다. 이 전략의 장점은 여러 지표의 조합으로 신호의 신뢰성을 향상시킵니다. 그러나 잘못된 신호 및 지연과 같은 특정 위험이 있습니다. 전략 최적화 방향에는 매개 변수 최적화, 스톱 손실 및 수익 최적화 등이 포함됩니다. 전반적으로 GM-8 & ADX 이중 이동 평균은 비교적 성숙하고 추가적인 연구와 가치가있는 양적 거래 전략입니다.
GM-8 & ADX 이중 이동 평균 전략의 원칙은 다음과 같습니다.
GM-8 & ADX 이중 이동 평균 전략은 구매 및 판매 신호를 식별하기 위해 여러 기술적 지표를 결합한 고전적인 양적 거래 전략이다. 이 전략의 장점은 간단하고 명확한 논리, 비교적 신뢰할 수있는 신호, 그리고 초보자가 배우고 사용할 수 있는 적합성에 있다. 그러나, 그것은 또한 후진 트렌드 인식, 빈번한 거래, 매개 변수 선택의 어려움과 같은 위험을 지니고 있다. 전략의 성능을 더욱 향상시키기 위해 더 많은 필터링 조건을 도입하고, 입출시기를 최적화하고, 동적으로 매개 변수를 조정하고, 포지션 관리를 추가하는 등의 최적화 조치가 고려될 수 있다. 전반적으로, GM-8 & ADX 이중 이동 평균 전략은 양적 거래에 대한 좋은 기본 틀을 제공하며, 연습에서 지속적인 정교와 개선이 가치가 있다.
/*backtest start: 2023-04-24 00:00:00 end: 2024-04-29 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("GM-8 and ADX Strategy with Second EMA", overlay=true) // Input parameters gm_period = input(15, title="GM-15 Period") second_ema_period = input(59, title="Second EMA Period") adx_period = input(8, title="ADX Period") adx_threshold = input(34, title="ADX Threshold") lot_size = input.float(0.4, title="Lot Size") // Calculate the ADX manually adx(high, low, close, length) => sum_truerange = 0.0 sum_plusDM = 0.0 sum_minusDM = 0.0 for i = 1 to length truerange_calc = high[i] - low[i] truerange_prev_close = high[i] - close[i-1] truerange_close = low[i] - close[i-1] truerange_calc := truerange_prev_close > truerange_calc ? truerange_prev_close : truerange_calc truerange_calc := truerange_close > truerange_calc ? truerange_close : truerange_calc sum_truerange := sum_truerange + truerange_calc plusDM = high[i] - high[i-1] > low[i-1] - low[i] and high[i] - high[i-1] > 0 ? high[i] - high[i-1] : 0 sum_plusDM := sum_plusDM + plusDM minusDM = low[i-1] - low[i] > high[i] - high[i-1] and low[i-1] - low[i] > 0 ? low[i-1] - low[i] : 0 sum_minusDM := sum_minusDM + minusDM plusDI = sum_plusDM / sum_truerange * 100 minusDI = sum_minusDM / sum_truerange * 100 sumDI = plusDI + minusDI adx_value = 100 * (plusDI - minusDI) / (sumDI == 0 ? 1 : sumDI) // Calculate indicators gm_8 = ta.sma(close, gm_period) second_ema = ta.ema(close, second_ema_period) adx_value = adx(high, low, close, adx_period) // Define buy and sell conditions buy_condition = ta.crossover(close, gm_8) and close > gm_8 and close > second_ema and adx_value > adx_threshold sell_condition = ta.crossunder(close, gm_8) and close < gm_8 and close < second_ema and adx_value > adx_threshold // Entry and exit logic if (buy_condition) strategy.entry("Buy", strategy.long, qty=lot_size) if (sell_condition) strategy.entry("Sell", strategy.short, qty=lot_size) // Exit conditions exit_buy_condition = ta.crossunder(close, gm_8) and close < gm_8 exit_sell_condition = ta.crossover(close, gm_8) and close > gm_8 if (exit_buy_condition) strategy.close("Buy") if (exit_sell_condition) strategy.close("Sell")