
이것은 다중 시간 프레임 분석과 기술 지표 확인을 결합한 종합적인 양적 거래 전략이다. 이 전략의 핵심은 서로 다른 시간 주기 (H1, H4 및 일계) 의 이동 평균 교차 상태를 통해 시장 추세 강도를 평가하고 RSI와 MACD 등동량 지표와 결합하여 거래 신호 확인을 수행하는 것이다.
이 전략의 핵심은 다차원 시장 추세를 분석하고 확인하는 것입니다.
다중 시간 프레임 트렌드 점수 시스템:
입학 조건:
위험 관리 및 탈퇴 전략:
제어판:
다차원 경향 확인3개의 시간주기의 트렌드 정보를 통합함으로써, 전략은 강력한 트렌드를 더 정확하게 식별하고, 가짜 신호와 잡음을 효과적으로 필터링할 수 있다. 더 긴 시간주기에 더 높은 무게를 부여하는 것은 기술분석에서 중·장기 트렌드를 우선하는 원칙에 부합한다.
입력 신호 복수 확인트렌드 점수 이외에도, 전략은 가격, RSI, MACD 지표가 동시에 특정 조건을 충족하도록 요구하여 거래를 수행합니다. 이 여러 확인 메커니즘은 신호 품질을 크게 향상시킵니다.
지능형 위험 관리:
시각화된 의사결정 지원: 제어판은 각 시간 주기의 트렌드 상태와 종합 점수를 직관적으로 표시하여 거래자가 시장 상황을 신속하게 판단하고 의사 결정에 대한 확신을 높일 수 있습니다.
매우 적응력이 좋다이 전략은 여러 종류의 거래에 적용될 수 있으며, 특히 트렌드가 뚜렷한 외환 쌍과 귀금속에서 더 잘 작동한다.
추세 반전 위험: 전략이 다중 시간 프레임 분석을 통해 정확도를 높였음에도 불구하고 시장의 강도가 역전되면 여전히 큰 회수가 발생할 수 있습니다. 중요한 경제 데이터 또는 이벤트가 발표되기 전에 일시적으로 지위를 낮추거나 거래를 중단하는 것이 좋습니다.
과도한 거래의 위험: 시장이 간격적인 흔들림에 처할 때, 트렌드 스코어는 종종 임계 근처에서 변동할 수 있으며, 이는 반복적인 입출구를 초래한다. 해결책은 실제 변동 범위 비율 ((ATR%) 또는 변동률 지표와 같은 추가적인 흔들림 시장 필터를 추가하는 것이다.
매개변수 민감도전략 성능은 SMA 주기 ((50⁄200) 와 ATR 배수 설정에 민감하다. 전체적인 역사 회귀를 사용하여 매개 변수를 최적화하고 매개 변수가 현재 시장 환경에 여전히 적합한지 정기적으로 평가하는 것이 좋습니다.
자금 관리의 한계: 현재의 고정 비율 위험 모델은 극한 시장 조건에서 충분히 유연하지 않을 수 있습니다. 높은 변동성 기간에 자동으로 포지션을 줄이는 유동성 조정 포지션 규모 계산 방법을 도입하는 것이 고려 될 수 있습니다.
실행 지연의 위험빠른 시장에서, 전략에 의존하는 여러 가지 확인은 진입 시기를 지연시켜 최적의 가격을 놓치게 할 수 있다. 이 위험을 줄이기 위해, 가격 행위에 기반한 초기 진입 신호를 추가하는 것을 고려할 수 있다.
트렌드 인식 개선:
증강 신호 확인 시스템:
탈퇴 메커니즘을 최적화:
위험 관리 강화:
시스템 적응력을 높여라:
다중 시간 프레임 트렌드 추적과 동력 확인 수량 거래 전략은 종합적이고 체계적인 거래 솔루션으로, 여러 시간 주기 트렌드 정보와 기술 지표 확인을 통합하여 고품질 거래 신호를 생성합니다. 가장 큰 장점은 여러 계층의 트렌드 식별과 신호 확인 메커니즘으로 신호 품질을 효과적으로 향상시키는 것입니다. 동시에, 시장의 변동성에 기반한 동적 위험 관리 및 단계적 수익 전략은 자금 안전을위한 강력한 보장을 제공합니다.
전략의 주요 위험은 트렌드 반전 기간 동안 잠재적인 회수와 변수 감수성이다. 제안된 최적화 방향, 예를 들어, 트렌드 식별 메커니즘을 개선, 신호 확인 시스템을 강화, 탈퇴 메커니즘을 최적화, 위험 관리를 강화하고 시스템의 적응성을 향상시키는 등의 전략은 다양한 시장 환경에서 안정성과 수익성을 더욱 향상시킬 수 있다.
외환 및 귀금속 시장에서 중장기 트렌드 기회를 잡으려는 거래자에게는 이론적으로 완벽하고 실용적인 전략 프레임 워크입니다. 충분한 재검토와 적절한 매개 변수를 최적화 한 후 체계화된 거래의 핵심 구성 요소 또는 독립 거래 시스템으로 사용할 수 있습니다.
/*backtest
start: 2025-02-20 00:00:00
end: 2025-02-27 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy("JolurocePro v2.0", overlay=true, margin_long=100, margin_short=100, pyramiding=1)
// 1. Configuración Principal
capitalMaximo = input(20000, "Capital Maximo (USD)")
lotajeBase = input.float(0.1, "Lotes por 1000 USD", minval=0.01)
paresPermitidos = input.string("XAUUSD,EURUSD,GBPUSD,GBPNZD,EURCAD,USDCAD,USDJPY", "Pares Permitidos")
// 2. Indicadores Multitemporales
[mediaRapidaH1, mediaLentaH1] = request.security(syminfo.tickerid, "60", [ta.sma(close, 50), ta.sma(close, 200)])
[mediaRapidaH4, mediaLentaH4] = request.security(syminfo.tickerid, "240", [ta.sma(close, 50), ta.sma(close, 200)])
[mediaRapidaD, mediaLentaD] = request.security(syminfo.tickerid, "D", [ta.sma(close, 50), ta.sma(close, 200)])
// 3. Calculo del Score
currentScore = (mediaRapidaH1 > mediaLentaH1 ? 1 : -1) + (mediaRapidaH4 > mediaLentaH4 ? 2 : -2) + (mediaRapidaD > mediaLentaD ? 3 : -3)
// 4. Panel de Control
var table panel = table.new(position.top_right, 4, 6, bgcolor=color.new(#2C3E50, 90))
if barstate.islast
// Encabezado
table.cell(panel, 0, 0, " JolurocePro ", width=4, text_color=color.white, text_size=size.large)
// Temporalidad H1
table.cell(panel, 0, 1, "H1", text_color=color.white)
table.cell(panel, 1, 1, str.tostring(math.round(mediaRapidaH1, 4)), text_color=mediaRapidaH1 > mediaLentaH1 ? #2ECC71 : #E74C3C)
table.cell(panel, 2, 1, str.tostring(math.round(mediaLentaH1, 4)), text_color=mediaRapidaH1 > mediaLentaH1 ? #2ECC71 : #E74C3C)
table.cell(panel, 3, 1, mediaRapidaH1 > mediaLentaH1 ? "▲" : "▼", text_color=mediaRapidaH1 > mediaLentaH1 ? #2ECC71 : #E74C3C)
// Temporalidad H4
table.cell(panel, 0, 2, "H4", text_color=color.white)
table.cell(panel, 1, 2, str.tostring(math.round(mediaRapidaH4, 4)), text_color=mediaRapidaH4 > mediaLentaH4 ? #2ECC71 : #E74C3C)
table.cell(panel, 2, 2, str.tostring(math.round(mediaLentaH4, 4)), text_color=mediaRapidaH4 > mediaLentaH4 ? #2ECC71 : #E74C3C)
table.cell(panel, 3, 2, mediaRapidaH4 > mediaLentaH4 ? "▲" : "▼", text_color=mediaRapidaH4 > mediaLentaH4 ? #2ECC71 : #E74C3C)
// Temporalidad Diaria
table.cell(panel, 0, 3, "Diario", text_color=color.white)
table.cell(panel, 1, 3, str.tostring(math.round(mediaRapidaD, 4)), text_color=mediaRapidaD > mediaLentaD ? #2ECC71 : #E74C3C)
table.cell(panel, 2, 3, str.tostring(math.round(mediaLentaD, 4)), text_color=mediaRapidaD > mediaLentaD ? #2ECC71 : #E74C3C)
table.cell(panel, 3, 3, mediaRapidaD > mediaLentaD ? "▲" : "▼", text_color=mediaRapidaD > mediaLentaD ? #2ECC71 : #E74C3C)
// Recomendacion
table.cell(panel, 0, 4, "Score Actual:", text_color=color.white)
table.cell(panel, 1, 4, str.tostring(currentScore), text_color=currentScore >= 3 ? #2ECC71 : currentScore <= -3 ? #E74C3C : #F1C40F, width=3)
table.cell(panel, 0, 5, "Senal:", text_color=color.white)
table.cell(panel, 1, 5, currentScore >= 3 ? "COMPRA" : currentScore <= -3 ? "VENTA" : "NEUTRO", text_color=currentScore >= 3 ? #2ECC71 : currentScore <= -3 ? #E74C3C : #F1C40F, width=3)
// 5. Indicadores Tecnicos
atrValor = ta.atr(14)
rsi = ta.rsi(close, 14)
macdLine = ta.ema(close, 12) - ta.ema(close, 26)
macdSignal = ta.ema(macdLine, 9)
// 6. Condiciones de Entrada
condicionLong = currentScore >= 3 and close > mediaRapidaH1 and rsi > 50 and macdLine > macdSignal
condicionShort = currentScore <= -3 and close < mediaRapidaH1 and rsi < 50 and macdLine < macdSignal
// 7. Gestion de Riesgo
posicionSize = math.min((strategy.equity / 1000) * lotajeBase, strategy.equity * 0.02)
slLong = close - (atrValor * 2)
tp1Long = close + (atrValor * 1)
tp2Long = close + (atrValor * 3)
slShort = close + (atrValor * 2)
tp1Short = close - (atrValor * 1)
tp2Short = close - (atrValor * 3)
// 8. Ejecucion de Ordenes
if condicionLong
strategy.entry("Long", strategy.long, qty=posicionSize)
strategy.exit("TP1", "Long", stop=slLong, limit=tp1Long, qty_percent=50)
strategy.exit("TP2", "Long", limit=tp2Long, trail_points=atrValor*10)
if condicionShort
strategy.entry("Short", strategy.short, qty=posicionSize)
strategy.exit("TP1", "Short", stop=slShort, limit=tp1Short, qty_percent=50)
strategy.exit("TP2", "Short", limit=tp2Short, trail_points=atrValor*10)
// 9. Senales Visuales
plotshape(condicionLong, "Compra", shape.triangleup, location.belowbar, color=#2ECC71, size=size.small)
plotshape(condicionShort, "Venta", shape.triangledown, location.abovebar, color=#E74C3C, size=size.small)