
이 전략은 쌍평균선 교차를 기반으로 한 트렌드 추적 시스템으로, 단기 및 장기간에 걸쳐 두 개의 간단한 이동 평균 ((SMA)) 의 교차를 사용하여 명확한 다중 하위 거래 신호를 생성합니다. 이 전략은 간결하고 이해하기 쉽고 실행이 용이하며, 특히 이동 평균 교차의 기본 원칙을 습득하려는 거래자에게 적합합니다. 전략의 핵심 아이디어는 단기 평균선 아래에서 상향으로 긴 평균선을 통과하면 시스템이 다중 신호를 생성하고, 단기 평균선이 상향으로 긴 평균선을 통과하면 시스템이 빈 신호를 생성합니다.
이 전략의 핵심은 두 개의 간단한 이동 평균 (SMA) 의 상호 작용에 기반합니다.
거래 신호 생성 논리:
트랜잭션 실행 과정:
이 전략은 또한 사용자가 다른 시장 환경이나 거래 스타일에 맞게 가격 소스 (기본 오픈 가격) 및 평균 주기의 길이를 사용자 정의 할 수 있습니다.
전략 코드를 더 깊이 분석하면 다음과 같은 몇 가지 분명한 장점을 찾을 수 있습니다.
이 전략은 간단하고 효과적이지만, 다음과 같은 잠재적인 위험이 있습니다.
흔들리는 시장에서 자주 거래: 가로 수직 정리 또는 흔들리는 시장에서 단기 및 장기 평균이 자주 교차하여 과도한 거래 신호와 불필요한 거래 비용이 발생할 수 있습니다.
지연성 문제: 이동 평균은 본질적으로 지연 지표이며, 신호는 트렌드가 이미 진행되었거나 종료될 때만 생성될 수 있습니다.
가짜 브레이크 위험: 가격이 일시적으로 평균선을 통과한 후 다시 원래의 추세로 돌아가서 잘못된 신호를 유발할 수 있습니다.
중단 장치의 부재: 현재 전략에는 명확한 중지 설정이 없으며, 강력한 역전 시에는 큰 손실이 발생할 수 있습니다.
매개 변수 민감성: 전략의 성능은 평균선 주기 길이 선택에 민감하며, 부적절한 매개 변수는 전략 효과를 크게 변화시킬 수 있다.
코드의 심층적인 분석을 바탕으로 다음과 같은 몇 가지 최적화 방향을 제시합니다.
트렌드 필터 추가: ADX, 트렌드 강도 지표 또는 가격과 평균선의 상대적 위치를 판단하여 확인된 트렌드 환경에서만 신호를 생성하고, 흔들리는 시장의 빈번한 거래를 피합니다.
다이내믹 스톱 메커니즘을 구현: ATR 또는 다른 변동성 지표에 기반한 다이내믹 스톱 레벨을 설정하여 수익을 보호하고 단일 거래의 최대 위험을 제한합니다.
최적화된 입시 시점: 신호 생성 후 소주기 확인을 사용하거나 다시 입시를 위해 다시 호출을 기다리는 것을 고려하여 더 나은 실행 가격을 얻습니다.
거래량 필터링 증가: 교차 신호에 따라 거래량 확인이 증가하고 거래량이 방향 변화를 지원하는 경우에만 거래가 수행됩니다.
자율 적응 평행 주기: 시장의 변동성에 따라 평행 주기 길이를 자동으로 조정하여, 높은 변동 환경에서 더 긴 주기를 사용, 낮은 변동 환경에서 더 짧은 주기를 사용
배치된 창고 개설 및 평화 창고 메커니즘을 추가: 한 번에 모든 창고를 구축하는 것이 아니라 단계적으로 창고 및 평화 창고를 구축하여 시점 선택의 위험을 줄입니다.
쌍평선 교차 트렌드 추적 전략은 간결하고 강력한 양적 거래 시스템으로, 단기 및 장기 이동 평균의 교차를 통해 명확한 거래 신호를 생성한다. 그것의 주요 장점은 작동의 단순성, 시각적 직관 및 자동 반전 메커니즘에 있으며, 거래자는 객관적으로 시장 추세를 따라갈 수 있다. 그러나, 이 전략은 흔들리는 시장의 빈번한 거래와 신호 지연과 같은 고유한 위험도 있다.
트렌드 필터를 추가하고, 동적 손실 메커니즘을 구현하고, 진입 시기를 최적화하고, 거래량 확인을 증가시키는 등의 방법으로, 이 기본 전략은 크게 강화될 수 있다. 특히, 다른 기술 지표와 결합하여 신호를 필터링하고, 위험 관리를 최적화하는 것은 다양한 시장 환경에서 전략을 향상시키는 데 도움이 될 것이다.
이것은 거래의 양을 측정하려는 초보자에게는 이상적인 출발점이며, 경험이 풍부한 거래자에게는 추가적으로 사용자 정의 및 최적화를 할 수있는 단단한 기반을 제공합니다. 중요한 것은 어떤 개선이 적용되었든 엄격한 역검사 및 전향 검증을 통해 평가되어 전략적 개선이 장기적으로 가치를 실제로 추가하는지 확인하는 것입니다.
/*backtest
start: 2025-01-01 00:00:00
end: 2025-03-24 00:00:00
period: 2d
basePeriod: 2d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
//@version=6
//
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// @author = Da_mENIZ
// © denis_zvegelj
// last change 20.Mar.2025
//
// Simple MA Crossover strategy that shows on the chart with Long/Short indicators. Feel free to use it to suit
// your needs
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
strategy("DZ Simple MA Crossover Strategy", shorttitle="DZ_MACross", overlay=true, calc_on_every_tick=true)
// Define the moving average lengths
i_src_price = input.source (open, "Price source", group="Main Settings")
i_shMA_len = input.int (9, "Short MA Length", minval=1, group="Main Settings")
i_loMA_len = input.int (21, "Long MA Length", minval=6, group="Main Settings")
// Calculate the moving averages
short_MA = ta.sma(i_src_price, i_shMA_len)
long_MA = ta.sma(i_src_price, i_loMA_len)
// Plot the moving averages on the chart
plot(short_MA, color=color.red, linewidth=2, title="Short MA")
plot(long_MA, color=color.blue, linewidth=2, title="Long MA")
// Generate the buy and sell signals
long_Cond = ta.crossover(short_MA, long_MA)
short_Cond = ta.crossunder(short_MA, long_MA)
// Place the orders based on conditions
if (long_Cond)
strategy.close("Short", immediately = true, comment = "Close")
strategy.entry("Long", strategy.long, comment = "Enter")
label.new(bar_index+1, open, "Long\n" + str.tostring(open), style=label.style_label_down, color=color.blue, textcolor=color.white, yloc=yloc.abovebar)
if (short_Cond)
strategy.close("Long", immediately = true, comment = "Close")
// strategy.entry("Short", strategy.short, comment = "Short\n" + str.tostring(open))
strategy.entry("Short", strategy.short, comment = "Enter")
label.new(bar_index+1, open, "Short\n" + str.tostring(open), style=label.style_label_up, color=color.red, textcolor=color.white, yloc=yloc.belowbar)