이것은 단기 (1-5분) 외환 거래 전략으로, 주로 유동 물결 이론의 부피 가격 관계와 여러 계단 EMA를 활용하여 단기 트렌드 추적 거래를 위해 트렌드 반전 지점을 예측합니다. 이 전략은 고주파 거래에 적합합니다.
이 전략의 거래 신호는 두 부분으로 이루어져 있습니다.
양량 평균 가격에 기초한 양량 가격 관계 판단. 구체적으로, 전략은 상승 및 하락 추세의 변화를 판단하기 위해 다양한 기간의 양상 평균 가격의 EMA를 계산합니다. 짧은 기간 EMA가 더 긴 기간 EMA를 넘으면 상승 신호로 간주됩니다. 짧은 기간 EMA가 더 긴 기간 EMA를 넘으면 하락 신호로 간주됩니다.
트렌드 반전 신호는 계단 EMA에 의해 판단됩니다. 계단 EMA는 10 일, 20 일, 50 일 등과 같은 다른 매개 변수와 함께 여러 EMA를 설정하는 것을 의미합니다. 트렌드 반전을 순서에 따라 판단합니다. 짧은 기간 EMA가 긴 기간 EMA보다 앞서면 트렌드가 반전되고 있음을 의미합니다.
이 전략은 진입을 결정하기 위해 이 두 신호를 결합한다. 구체적으로 볼륨 가격 관계가 상승세를 보이며, 계단 EMA가 여러 EMA가 상승세를 보인 것을 보여준다면, 긴 포지션이 취해질 것이다. 반대로 볼륨 가격 관계가 하락세를 보인다면, 계단 EMA가 여러 EMA가 하락세를 보인 것을 보여준다면, 짧은 포지션이 취해질 것이다.
이 전략은 볼륨 평균 가격과 여러 EMA의 장점을 결합하여 신호의 정확성과 안정성을 향상시킬 수 있습니다.
양량 가격 관계를 양량 평균 가격에 근거하여 판단하는 것은 단순히 가격 EMA 판단보다 더 정확할 수 있으며, 증강된 가격 변동에 의해 오해를 피할 수 있습니다.
계단 EMA는 다른 매개 변수 EMA의 순서로 판단의 차원을 증가시킬 수 있으며 단일 EMA의 소음을 피할 수 있습니다.
이 두 신호의 조합은 상호 검증을 가능하게 하고 잘못된 신호를 줄입니다.
그것은 고 빈도 단기 거래에 적합하며 범위 내에서 작은 반전 기회를 빠르게 포착 할 수 있습니다.
전략 매개 변수는 다양한 품종과 주파수에 최적화하도록 유연하게 구성 할 수 있습니다.
이 전략에는 또한 몇 가지 위험이 있습니다.
기술 지표에 지나치게 의존하고 있어 불안정한 시장 조건으로 인해 오해를 받을 가능성이 있습니다.
단기 거래는 거래 비용에 상대적으로 민감하며, 미연과 수수료는 잘 통제되어야 합니다.
단기 EMA 매개 변수는 자주 최적화되어야 합니다. 그렇지 않으면 유효하지 않을 수 있습니다.
부피 가격의 차이는 반드시 반전을 일으키지 않으며, 잘못된 판단의 위험이 있습니다.
여러 EMA의 순서는 완전히 신뢰할 수 없으며 또한 잘못된 판단을 일으킬 수 있습니다.
대책:
판단을 위한 더 기본적인 요소들을 결합시켜라.
단일 거래에서 손실이 너무 크지 않도록 위치를 조정합니다.
매번 재검토하고 최적화하세요
성공률을 높이기 위해 주요 지지/저항 수준 근처에서 거래하십시오.
다차원 확인을 위한 다른 표시기와 함께 사용
이 전략은 다음 측면에서도 최적화 될 수 있습니다.
보다 안정적인 매개 변수를 찾기 위해 부피 가격 관계를 계산하는 다른 방법을 테스트합니다.
계단 EMA 지표의 수준을 더 높여야 합니다.
필터링을 위해 RSI, MACD 등과 같은 다른 지표 신호를 결합합니다.
스톱 로스 메커니즘을 최적화합니다. 스톱 로스 이동, 미뤄진 주문 등.
적절한 매개 변수 집합을 개발하기 위해 다른 거래 도구의 특성에 기반한 매개 변수를 최적화합니다.
빅데이터를 이용한 판단 모델을 훈련시키기 위한 머신러닝 알고리즘을 도입합니다.
고정 출구, 트렌드 추적 출구 등과 같은 다른 출구 전략을 탐구하십시오.
시장 변화에 따라 자동으로 매개 변수를 조정할 수 있는 적응 매개 변수 메커니즘을 도입한다.
이 전략은 단기 트렌드 추적 거래를 위해 볼륨 평균 가격과 계단 EMA의 장점을 결합합니다. 전략은 높은 안정성과 정확성을 가지고 있지만 위험 통제 및 매개 변수 최적화가 주목되어야합니다. 지속적인 최적화 및 테스트와 함께 다른 기술적 인 지표로 결합하면 효율적인 단기 거래 전략이 될 수 있습니다.
/*backtest start: 2023-10-01 00:00:00 end: 2023-10-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © exlux99 //@version=5 strategy("Forex Fractal EMA Scalper", overlay=true) // Define "n" as the number of periods and keep a minimum value of 2 for error handling. n = input.int(title="Period Fractals", defval=2, minval=2, group="Optimization Parameters") src = input(hl2, title="Source for EMA's", group="Optimization Parameters") len1 = input.int(10, minval=1, title="Length EMA 1", group="Optimization Parameters") out1 = ta.ema(src, len1) len2 = input.int(20, minval=1, title="Length EMA 2", group="Optimization Parameters") out2 = ta.ema(src, len2) len3 = input.int(100, minval=1, title="Length EMA 3", group="Optimization Parameters") out3 = ta.ema(src, len3) // UpFractal bool upflagDownFrontier = true bool upflagUpFrontier0 = true bool upflagUpFrontier1 = true bool upflagUpFrontier2 = true bool upflagUpFrontier3 = true bool upflagUpFrontier4 = true for i = 1 to n upflagDownFrontier := upflagDownFrontier and (high[n-i] < high[n]) upflagUpFrontier0 := upflagUpFrontier0 and (high[n+i] < high[n]) upflagUpFrontier1 := upflagUpFrontier1 and (high[n+1] <= high[n] and high[n+i + 1] < high[n]) upflagUpFrontier2 := upflagUpFrontier2 and (high[n+1] <= high[n] and high[n+2] <= high[n] and high[n+i + 2] < high[n]) upflagUpFrontier3 := upflagUpFrontier3 and (high[n+1] <= high[n] and high[n+2] <= high[n] and high[n+3] <= high[n] and high[n+i + 3] < high[n]) upflagUpFrontier4 := upflagUpFrontier4 and (high[n+1] <= high[n] and high[n+2] <= high[n] and high[n+3] <= high[n] and high[n+4] <= high[n] and high[n+i + 4] < high[n]) flagUpFrontier = upflagUpFrontier0 or upflagUpFrontier1 or upflagUpFrontier2 or upflagUpFrontier3 or upflagUpFrontier4 upFractal = (upflagDownFrontier and flagUpFrontier) // downFractal bool downflagDownFrontier = true bool downflagUpFrontier0 = true bool downflagUpFrontier1 = true bool downflagUpFrontier2 = true bool downflagUpFrontier3 = true bool downflagUpFrontier4 = true for i = 1 to n downflagDownFrontier := downflagDownFrontier and (low[n-i] > low[n]) downflagUpFrontier0 := downflagUpFrontier0 and (low[n+i] > low[n]) downflagUpFrontier1 := downflagUpFrontier1 and (low[n+1] >= low[n] and low[n+i + 1] > low[n]) downflagUpFrontier2 := downflagUpFrontier2 and (low[n+1] >= low[n] and low[n+2] >= low[n] and low[n+i + 2] > low[n]) downflagUpFrontier3 := downflagUpFrontier3 and (low[n+1] >= low[n] and low[n+2] >= low[n] and low[n+3] >= low[n] and low[n+i + 3] > low[n]) downflagUpFrontier4 := downflagUpFrontier4 and (low[n+1] >= low[n] and low[n+2] >= low[n] and low[n+3] >= low[n] and low[n+4] >= low[n] and low[n+i + 4] > low[n]) flagDownFrontier = downflagUpFrontier0 or downflagUpFrontier1 or downflagUpFrontier2 or downflagUpFrontier3 or downflagUpFrontier4 downFractal = (downflagDownFrontier and flagDownFrontier) // plotshape(downFractal, style=shape.triangledown, location=location.belowbar, offset=-n, color=#F44336, size = size.small) // plotshape(upFractal, style=shape.triangleup, location=location.abovebar, offset=-n, color=#009688, size = size.small) long= out1 > out2 and out2>out3 and upFractal short= out1 < out2 and out2<out3 and downFractal strategy.entry("long",strategy.long,when= short) strategy.entry("short",strategy.short,when=long) tp=input(25, title="TP in PIPS", group="Risk Management")*10 sl=input(25, title="SL in PIPS", group="Risk Management")*10 strategy.exit("X_long", "long", profit=tp, loss=sl ) strategy.exit("x_short", "short",profit=tp, loss=sl )