이동 평균 리바운드 전략

저자:차오장, 날짜: 2023-12-28 15:25:29
태그:

img

##평론 이동 평균 리바운드 전략은 기술 지표와 가격 패턴을 결합하여 지지 및 저항 수준을 중심으로 장기 및 단위 거래를하는 전략입니다. 이 전략은 이동 평균을 사용하여 시장 트렌드 방향을 파악하고, 전환점을 결정하는 데 도움이되는 패턴 지표 및 이전 스윙 고도 / 하락을 사용하여 역 트렌드 거래를위한 주요 지원 및 저항 수준을 발견합니다.

전략 원칙

무역 항목을 결정하는 핵심 단계는 다음과 같습니다.

  1. 트리플 이동 평균 지표를 사용하여 트렌드 방향을 판단하십시오.

  2. 과잉 매수/ 과잉 판매 영역에서 피크-트러우 패턴 지표로 잠재적 인 반전 구역을 식별합니다. 특정 최고/하위점을 깨는 것은 가능한 반전을 나타냅니다.

  3. 지지/저항과 결합하여 주요 레벨 주변에서 역동 트렌드 트레이드 엔트리 포인트를 파악합니다.

  4. 전체 장기 트렌드를 결정하는 데 도움이되는 EMAS를 사용하십시오. 범위와 트렌드를 따르는 시장에서 평균 반전을 사용하십시오.

  5. 단일 거래 손실 금액을 제어하기 위해 후속 스톱 손실을 사용하십시오.

장점

전략의 장점:

  1. 여러 지표에서 신호를 결합하면 정확도가 높아집니다.

  2. 주요 지지/저항 영역에서 반대 트렌드를 거래할 확률이 높습니다.

  3. 트래일링 스톱 로스는 단일 트레이드에서 손실을 포함합니다.

위험성

관련 위험:

  1. 더 많은 지표가 더 높은 무역 빈도를 초래할 수 있고 거래 비용 통제가 필요합니다.

  2. 지지/저항 수준 실패는 가장 큰 위험입니다. 가격이 예상대로 역전되지 않을 수 있습니다.

  3. 엄청난 변동이 있을 때 스톱 로스를 제거할 수 있습니다.

개선 영역

개선 할 수 있는 영역:

  1. 가장 좋은 성능 조합을 찾기 위해 지표들 사이의 가중치를 최적화합니다.

  2. 주요 지원/저항 수준의 정확성을 향상시키기 위해 기계 학습을 사용하십시오.

  3. 부피 지표를 추가하여 변동적이지만 부피가 낮은 환경에서 거래를 피합니다.

  4. 효율성과 불필요한 정지량을 균형을 맞추기 위해 적응적인 스톱 손실 모델을 정제합니다.

요약

요약하자면, 이동 평균 리바운드 전략은 이동 평균, 가격 패턴 및 엔트리에 대한 지원 / 저항을 포함한 지표의 합동을 활용합니다. 여러 신호에서 더 높은 정확성을 가진 전형적인 기술 전략. 주요 레벨의 실패와 스톱 손실 미끄러짐에 대한 위험을 모니터링하십시오. 지표 무게, 기계 학습 및 볼륨에 대한 추가 최적화는 성능을 향상시킬 수 있습니다.


/*backtest
start: 2022-12-21 00:00:00
end: 2023-12-27 00:00:00
period: 1d
basePeriod: 1h
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/
// © vhurtadocos


//@version=5
strategy('Estrategia EMA Resistencia Soporte', shorttitle='Estrategia EMA RESISTENCIA Y SOPORTE', overlay=true, margin_long=100, margin_short=100, pyramiding = 10 )

//INICIO DE CONDICIONES BASICAS
/// Alligator
smma(src, length) =>
    smma = 0.0
    sma_1 = ta.sma(src, length)
    smma := na(smma[1]) ? sma_1 : (smma[1] * (length - 1) + src) / length
    smma
lipsLength = input(title='🐲 Lips Length', defval=5)
teethLength = input(title='🐲 Teeth Length', defval=8)
jawLength = input(title='🐲 Jaw Length', defval=13)
lipsOffset = input(title='🐲 Lips Offset', defval=3)
teethOffset = input(title='🐲 Teeth Offset', defval=5)
jawOffset = input(title='🐲 Jaw Offset', defval=8)
lips = smma(hl2, lipsLength)
teeth = smma(hl2, teethLength)
jaw = smma(hl2, jawLength)


// Fractals
n = input.int(title='📌 Period', defval=2, minval=2)
upFractal = high[n + 2] < high[n] and high[n + 1] < high[n] and high[n - 1] < high[n] and high[n - 2] < high[n] or high[n + 3] < high[n] and high[n + 2] < high[n] and high[n + 1] == high[n] and high[n - 1] < high[n] and high[n - 2] < high[n] or high[n + 4] < high[n] and high[n + 3] < high[n] and high[n + 2] == high[n] and high[n + 1] <= high[n] and high[n - 1] < high[n] and high[n - 2] < high[n] or high[n + 5] < high[n] and high[n + 4] < high[n] and high[n + 3] == high[n] and high[n + 2] == high[n] and high[n + 1] <= high[n] and high[n - 1] < high[n] and high[n - 2] < high[n] or high[n + 6] < high[n] and high[n + 5] < high[n] and high[n + 4] == high[n] and high[n + 3] <= high[n] and high[n + 2] == high[n] and high[n + 1] <= high[n] and high[n - 1] < high[n] and high[n - 2] < high[n]
dnFractal = low[n + 2] > low[n] and low[n + 1] > low[n] and low[n - 1] > low[n] and low[n - 2] > low[n] or low[n + 3] > low[n] and low[n + 2] > low[n] and low[n + 1] == low[n] and low[n - 1] > low[n] and low[n - 2] > low[n] or low[n + 4] > low[n] and low[n + 3] > low[n] and low[n + 2] == low[n] and low[n + 1] >= low[n] and low[n - 1] > low[n] and low[n - 2] > low[n] or low[n + 5] > low[n] and low[n + 4] > low[n] and low[n + 3] == low[n] and low[n + 2] == low[n] and low[n + 1] >= low[n] and low[n - 1] > low[n] and low[n - 2] > low[n] or low[n + 6] > low[n] and low[n + 5] > low[n] and low[n + 4] == low[n] and low[n + 3] >= low[n] and low[n + 2] == low[n] and low[n + 1] >= low[n] and low[n - 1] > low[n] and low[n - 2] > low[n]
plotshape(title='📌 Up-Fractal', series=upFractal, style=shape.triangleup, location=location.abovebar, offset=-2, color=color.new(color.olive, 0), text="R")
plotshape(title='📌 Down-Fractal', series=dnFractal, style=shape.triangledown, location=location.belowbar, offset=-2, color=color.new(color.maroon, 0), text="S", textcolor = color.new(color.maroon,0))

// Resistance, Support
showRS = input(title='⤒⤓ Show Res-Sup', defval=true)
lengthRS = input(title='⤒⤓ Res-Sup Length', defval=13)
highRS = ta.valuewhen(high >= ta.highest(high, lengthRS), high, 0)
lowRS = ta.valuewhen(low <= ta.lowest(low, lengthRS), low, 0)
plot(title='⤒ Resistance', series=showRS and highRS ? highRS : na, color=highRS != highRS[1] ? na : color.olive, linewidth=1, offset=0)
plot(title='⤓ Support', series=showRS and lowRS ? lowRS : na, color=lowRS != lowRS[1] ? na : color.maroon, linewidth=1, offset=0)




// EMA de 8 períodos
ema8 = ta.ema(close, 8)
plot(title='ema8', series=ema8, color=color.new(#dbef41, 0), offset=0)

// EMA de 21 períodos
ema21 = ta.ema(close, 21)
plot(title='ema21', series=ema21, color=color.new(#e12c0c, 0), offset=0)

// EMA de 50 períodos
ema50 = ta.ema(close, 50)
plot(title='ema50', series=ema50, color=color.new(#3419de, 0), offset=0)

// EMA de 200 períodos
ema200 = ta.ema(close, 200)
plot(title='ema200', series=ema200, color=color.new(#f6f6f4, 0), offset=0)



// Definiciones originales...
// ... (incluyendo tus definiciones de Alligator, Fractals, etc.)

// Guardamos el último soporte y resistencia
var float lastSupport = na
var float lastResistance = na

// Detectando un nuevo soporte y resistencia
newSupportDetected = low == lowRS


if newSupportDetected
    lastSupport := low

// Lógica de entrada y salida

// Condiciones de entrada basadas en soportes recién formados
longCondition = low == lowRS
if longCondition
    strategy.entry("Long", strategy.long)

// Salida (take profit) cuando detectamos una nueva resistencia después de entrar en una posición long
newResistanceDetected = high == highRS
if newResistanceDetected and strategy.position_size > 0
    strategy.close("Long")

// Agregar una condición para el stop loss
longStopLossPrice = close * 0.95
if strategy.position_size > 0 and close <= longStopLossPrice
    strategy.close("Long")

// Pintamos los soportes y resistencias
plotshape(longCondition, style=shape.triangledown, location=location.belowbar, color=color.red)
plotshape(newResistanceDetected, style=shape.triangleup, location=location.abovebar, color=color.green)

// Resto del código para plotear las EMAs y fractales
// ...




더 많은