리소스 로딩... 로딩...

내일 촛불 패턴으로 움직이는 평균 크로스오버 전략

저자:차오장, 날짜: 2024-02-29 12:07:21
태그:

img

전반적인 설명

전략 논리

단기 이동 평균 (9일 MA) 이 장기 이동 평균 (15일 MA) 을 넘을 때, 그것은 더 강한 단기 상승 모멘텀을 표시합니다. 단기 MA가 장기 MA 아래를 넘을 때, 그것은 더 강한 단기 하락 모멘텀을 신호합니다. 또한, MA의 각도는 충분한 상향 또는 하향 힘을 보장하기 위해 30도 이상이어야합니다. 잘못된 신호를 필터링하기 위해 특정 내일 촛불 패턴이 사용됩니다.

이 전략은 주로 유동 평균의 트렌드 추적 능력과 특정 촛불 패턴의 특성을 활용합니다. 매개 변수 조정을 통해 다른 제품에 적응 할 수 있습니다.

이점 분석

이 전략은 이동 평균 지표와 내일 촛불 패턴을 결합하여 노이즈를 효과적으로 필터링하고 거래 신호를 더 신뢰할 수 있습니다. 특히 각 임계와 함께, 불필요한 잘못된 신호를 피하여 신호를 생성하기 전에 충분한 가격 변화 동력이 있음을 보장합니다. 또한, 스톱 로스 및 수익 수치는 최대 손실과 수익을 자동으로 제한 할 수 있습니다. 이러한 조치는 안정성과 수익성 모두를 향상시킵니다.

트렌드를 따르는 지표로서, 이동 평균은 중장기 가격 추세를 파악할 수 있다. 내일 촛불은 단기 시장 참여자의 힘 비교를 반영한다. 그것들을 함께 사용하면 다른 시간 프레임에 걸쳐 거래의 영향을 얻을 수 있다. 이 전략은 여러 지표의 강점을 통합하고 실제 거래에서 좋은 성과를 달성해야 한다.

위험 분석

이 전략의 주요 위험은 다음과 같습니다.

  1. 가짜 브레이크오웃 위험. 시장 통합 중, 이동 평균은 여러 개의 십자가가있을 수 있으며, 대부분은 잘못된 신호입니다. 여기에 휘프사우드되면 손실이 발생할 수 있습니다. 촛불 패턴과 각 조건은이 위험을 완화 할 수 있습니다.

  2. 매개 변수 최적화 위험. 다른 시장은 매개 변수 설정에 다르게 적응합니다. 조정없이 하나의 매개 변수 세트를 직접 적용하면 손실이 발생할 수 있습니다. 적절한 매개 변수를 백테스팅과 종이 거래를 통해 찾아야 합니다.

일반적으로 이 전략은 일부 잘못된 신호를 생성하고 시장 조건을 고려하지 않고 높은/저한 위험을 추구 할 수 있습니다. 주요 동향 및 가격-용량 특성을 통합하여 최적화하여 추가 개선이 가능합니다.

최적화 방향

이 전략의 다음 측면은 더 개선될 수 있습니다.

  1. 주요 트렌드의 분석을 추가하십시오. 예를 들어, 중장기 채널을 확인하여 트렌드에 반대하는 거래를 피하십시오.

  2. 부피 지표를 포함합니다. 예를 들어, 균형 부피는 높은 모멘텀 가격을 단축하거나 낮은 모멘텀 가격을 구매하는 것을 피하기 위해 사용될 수 있습니다.

  3. 근본적인 분석을 결합하고 수익률을 높이기 위해 전망과 수익을 향상시키는 주식을 선택하십시오.

  4. 이동 평균 매개 변수를 최적화 합니다. 더 큰 조정 유연성을 위해 다른 길이 기간, 세 배 또는 다섯 배 MA 시스템을 테스트합니다.

요약

다음 단계는 매개 변수 최적화를 통해 승률과 수익성을 더욱 향상시키는 것입니다. 더 많은 지표를 추가하면 안정성을 강화 할 수 있습니다. 엄격한 종이 거래 테스트로,이 전략은 안정적인 이익을 창출하는 효과적인 수치 도구가 될 가능성이 있습니다.


/*backtest
start: 2024-01-29 00:00:00
end: 2024-02-28 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Moving Average Crossover Strategy with Candlestick Patterns", overlay=true)

// Define input parameters
fast_length = input(9, "Fast MA Length")
slow_length = input(15, "Slow MA Length")
stop_loss_percent = input(0.25, "Stop Loss (%)")
target_percent = input(0.25, "Target (%)")
angle_threshold = input(30, "Angle Threshold (degrees)")

// Calculate moving averages
fast_ma = sma(close, fast_length)
slow_ma = sma(close, slow_length)

// Define candlestick patterns
is_pin_bar() =>
    pin_bar = abs(open - close) > 2 * abs(open[1] - close[1])
    high_tail = max(open, close) - high > abs(open - close) * 1.5
    low_tail = low - min(open, close) > abs(open - close) * 1.5
    pin_bar and high_tail and low_tail

is_marubozu() =>
    marubozu = abs(open - close) > abs(open[1] - close[1]) * 0.75
    no_upper_shadow = high == max(open, close)
    no_lower_shadow = low == min(open, close)
    marubozu and no_upper_shadow and no_lower_shadow

is_full_body() =>
    full_body = abs(open - close) > abs(open[1] - close[1]) * 0.95
    full_body

// Plot moving averages
plot(fast_ma, color=color.blue, title="Fast MA")
plot(slow_ma, color=color.red, title="Slow MA")

// Calculate angle of slow moving average
ma_angle = abs(180 * (atan(slow_ma[1] - slow_ma) / 3.14159))

// Generate buy/sell signals based on angle condition and candlestick patterns
buy_signal = crossover(fast_ma, slow_ma) and ma_angle >= angle_threshold and (is_pin_bar() or is_marubozu() or is_full_body())
sell_signal = crossunder(fast_ma, slow_ma)

// Calculate stop-loss and target levels
stop_loss_level = close * (1 - stop_loss_percent / 100)
target_level = close * (1 + target_percent / 100)

// Execute trades based on signals with stop-loss and target
strategy.entry("Buy", strategy.long, when=buy_signal)
strategy.exit("Exit", "Buy", stop=stop_loss_level, limit=target_level)

// Plot buy/sell signals on chart (optional)
plotshape(series=buy_signal, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
plotshape(series=sell_signal, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)

// Plot angle line
hline(angle_threshold, "Angle Threshold", color=color.black, linestyle=hline.style_dashed)


더 많은