
다주기 역전점 인식과 자동 거래 전략은 Magic-9⁄13 패턴과 방향 역전점 ((DRP) 식별을 기반으로 한 양적 거래 시스템이다. 이 전략은 가격 연속 패턴과 동력 변화 지점을 식별하여 시장 역전 신호를 포착하고 자동으로 거래를 실행한다. 전략의 핵심은 전통적인 기술 분석 철학과 현대적인 양적 방법을 결합하여 연속 가격 행동을 분석하여 잠재적인 시장 역전점을 식별하여 가격 역전 초기에 시장에 진입하는 것이다. 시스템은 자동으로 손실을 멈추고 수익을 고정하는 기능을 통합하고 있으며, 시각적 지표 (표기 및 그림 색상 변화) 를 통해 직관적인 거래 신호 표시를 제공합니다.
이 전략의 핵심 원칙은 두 가지 주요 기술 지표에 기반합니다. Magic-9⁄13 모드 및 방향 반전점 ((DRP) ) 입니다.
Magic-9⁄13 모드 인식:
방향 전환점 (DRP) 계산:
거래 신호 생성:
위험 관리 메커니즘:
보조 함수:
시장의 반전 초기 인식Magic-9⁄13 모드와 방향 반전 지점의 결합으로 시장 반전의 초기 단계에서 신호를 포착할 수 있으며, 더 나은 진입 시기를 제공합니다.
다중 인증 메커니즘: 전략 요구 사항은 동시에 두 개의 독립된 조건을 충족시켜서 (마법 모드 및 방향 역점 통과), 가짜 신호의 가능성을 줄이고 거래 품질을 향상시킵니다.
자동화된 위험 관리: 통합된 Stop Loss 및 Stop Stop 기능으로, 수동 개입 없이 단일 거래의 위험을 제어하고, 감정적인 거래 결정을 방지한다.
시각화 거래 신호: 태그와 그램 색상의 변화를 통해 거래 신호를 직관적으로 표시하여 거래자가 잠재적인 거래 기회를 신속하게 식별할 수 있도록 도와줍니다.
매개 변수 조정전략: 전략은 길이와 회귀 길이의 두 가지 핵심 매개 변수의 조정 옵션을 제공하여 거래자가 다른 시장 환경과 거래 품종에 따라 최적화 할 수 있습니다.
데이터 처리 안정성: NA 값을 처리하는 메커니즘을 포함하고, 다양한 데이터 조건에서 전략의 안정성을 강화한다.
주기적 적응성: 전략은 분 차트에서 일 일 차트에 사용할 수 있는 다른 시간 주기 차트에 적용할 수 있으며, 거래 시간 프레임의 유연한 선택을 제공합니다.
매개변수 민감도전략 성능은 길이와 회귀 길이 파라미터의 설정에 크게 의존합니다. 다른 시장 환경에는 다른 파라미터 조합이 필요할 수 있으며 잘못된 파라미터 설정은 과도한 거래 또는 놓친 거래 기회를 초래할 수 있습니다.
시장 변동 위험: 높은 변동성 시장에서, 10 점으로 고정된 스톱포인트 설정은 너무 작아서 자주 트리거 될 수 있습니다. 낮은 변동성 시장에서, 이 설정은 너무 커질 수 있습니다. 해결 방법: 스톱포인트 설정은 고정된 점수보다는 시장의 변동성 (예: ATR) 에 기반한 동적 값으로 설정하십시오.
동향 시장의 성과이 전략은 주로 반전점 설계를 대상으로 하며, 강한 트렌드 시장에서 빈번하게 잘못된 신호가 발생할 수 있다. 해결 방법: 트렌드 필터를 추가하여 시장이 강한 트렌드 상태가 아닌 것을 확인했을 때만 거래 신호를 유발한다.
슬라이드 포인트와 유동성 위험: 유동성이 낮은 시장에서, 실행 가격은 신호 가격과 현저하게 차이가 있을 수 있다. 해결 방법: 유동성 필터 조건을 증가시키거나, 주문을 실행할 때 슬라이드 요소를 고려한다.
과도한 적합성의 위험전략은 여러 조건과 매개 변수를 사용하며, 역사 데이터에 대한 과도한 적합성의 위험이 있습니다. 해결 방법: 견본 테스트 (Out-of-sample testing) 와 전향 테스트 (Forward testing) 를 사용하여 전략의 안정성을 검증합니다.
연속 신호 축적: 특정 시장 조건에서, 같은 방향의 여러 신호가 연속적으로 생성될 수 있으며, 과도한 포지션이 발생할 수 있다. 해결 방법: 신호 필터링 메커니즘을 구현하여 짧은 시간에 같은 방향의 신호의 실행 횟수를 제한한다.
고정 스톱 스톱 손실 제한: 고정 점수의 스톱 스톱 손실은 모든 시장 환경에 적합하지 않을 수 있으며, 수익 거래를 조기 종료하거나 너무 늦게 종료 할 수 있습니다. 해결 방법: 시장 변동에 기반한 동적 스톱 스톱 손실 장치를 구현하거나, 추적 스톱 손실 전략을 채택하십시오.
동적 변수 조정:
트렌드 필터 추가:
손절매 및 이익실현 메커니즘 최적화:
거래량 필터링을 늘립니다.:
시간 필터를 구현합니다.:
포지션 관리 기능 추가:
신호 강도 점수를 구현:
관련 시장 확인을 추가:
다주기 역전점 식별 및 자동 거래 전략은 기술 지표 포트폴리오를 기반으로 한 정량 거래 시스템으로, Magic-9⁄13 패턴 식별과 방향 역전점 분석을 결합하여 시장의 잠재적 인 역전 기회를 포착합니다. 이 전략의 핵심 장점은 여러 확인 메커니즘과 통합 된 위험 관리 기능으로, 시장 역전 초기에 비교적 신뢰할 수있는 거래 신호를 제공 할 수 있으며, 자동화 된 스톱 로즈로 위험을 제어합니다.
그러나, 이 전략은 또한 변수 감수성, 시장 환경 적응성 및 고정 중지 손해 차단과 같은 한계에 직면한다. 동적 변수 조정, 트렌드 필터를 추가, 중지 손해 차단 메커니즘을 최적화, 거래량을 확인하는 것을 추가하는 등의 최적화 조치를 시행함으로써 전략의 적응성과 성능 안정성을 크게 향상시킬 수 있다.
거래자에게는 이 전략은 시장의 전환점을 체계적으로 포착하는 프레임워크를 제공하지만, 개인 위험 선호와 시장에 대한 이해와 함께 합리적인 파라미터 조정 및 최적화를 수행해야합니다. 실제 적용 과정에서, 먼저 시뮬레이션 환경에서 충분히 테스트하여 다양한 시장 환경에서 전략의 성능을 이해한 다음 단계적으로 실제 거래에 적용하는 것이 좋습니다. 지속적인 최적화와 개선으로 이 전략은 거래자의 도구 상에 있는 효과적인 도구가 될 수 있습니다. 특히 시장의 전환점을 포착하는 데 있어
/*backtest
start: 2025-06-05 00:00:00
end: 2025-06-05 15:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy('L3 Magic-9/13 Strategy', overlay=true, max_bars_back=4000, max_labels_count=500)
// 输入参数
length_input = input.int(title='Length', defval=9, minval=1)
lookback_length = input.int(title='Lookback Length', defval=4, minval=1)
// 获取第一个非 NA 值的函数
get_first_non_na_value(values, length) =>
result = float(na)
if length >= 1
for i = 0 to length - 1
if na(result) or not na(values[i])
result := values[i]
result
// 计算连续条件出现次数的函数
count_consecutive_occurrences(condition, length) =>
count = 0
for i = 1 to length
if condition[i - 1]
count += 1
count
// 检查条件是否在给定周期内出现的函数
check_condition_occurrence(condition, length) =>
occurrence = count_consecutive_occurrences(condition, length) != 0 ? 1 : 0
occurrence
// 基于回溯周期过滤出现次数的函数
filter_occurrences(condition, lookback_period) =>
output = 0.0
temp = 0
for i = lookback_period to 0
if temp > 0
output := 0.0
temp := temp[1] - 1
else
if not condition[i]
output := 0.0
else
output := 1.0
temp := lookback_period + 1
output_bool = output == 1 ? true : false
output_bool
// Magic-9/13 逻辑
high_9 = count_consecutive_occurrences(close > get_first_non_na_value(close, 4), 9) == 9 and count_consecutive_occurrences(close > get_first_non_na_value(close, 4), 10) == 9
low_9 = count_consecutive_occurrences(close < get_first_non_na_value(close, 4), 9) == 9 and count_consecutive_occurrences(close < get_first_non_na_value(close, 4), 10) == 9
// 计算方向反转点
up_count = 0
down_count = 0
for i = 0 to length_input - 1
up_count += (nz(close[i]) > nz(close[i + lookback_length]) ? 1 : 0)
down_count += (nz(close[i]) < nz(close[i + lookback_length]) ? 1 : 0)
directional_reversal_point = down_count == length_input ? 1 : up_count == length_input ? -1 : 0
// 定义交易信号
buy_signal = check_condition_occurrence(low_9, 2) and ta.crossover(directional_reversal_point, 0)
sell_signal = check_condition_occurrence(high_9, 2) and ta.crossunder(directional_reversal_point, 0)
// 执行交易
if (buy_signal)
strategy.entry("Buy", strategy.long)
strategy.exit("Take Profit", "Buy", limit=close + 10 * syminfo.pointvalue, stop=close - 10 * syminfo.pointvalue)
if (sell_signal)
strategy.entry("Sell", strategy.short)
strategy.exit("Take Profit", "Sell", limit=close - 10 * syminfo.pointvalue, stop=close + 10 * syminfo.pointvalue)
// 绘制标签
labels = buy_signal ? label.new(bar_index, low, 'B', color=color.new(color.red, 40), textcolor=color.white, style=label.style_label_up, yloc=yloc.price, size=size.small) : sell_signal ? label.new(bar_index, high, 'S', color=color.new(color.lime, 40), textcolor=color.white, style=label.style_label_down, yloc=yloc.price, size=size.small) : na
// 绘制蜡烛图颜色
signal = directional_reversal_point > 0 or up_count > down_count ? 1 : directional_reversal_point < 0 or down_count > up_count ? -1 : 0
drp_color = signal > 0 ? color.green : signal < 0 ? color.red : color.black
barcolor(drp_color)