이중 이동평균선 파괴와 압력수준 돌파의 크로스오버 전략


생성 날짜: 2024-01-31 14:34:16 마지막으로 수정됨: 2024-01-31 14:34:16
복사: 1 클릭수: 613
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

이중 이동평균선 파괴와 압력수준 돌파의 크로스오버 전략

개요

이 전략은 쌍용 이동 평균 선과 압력 지점 돌파 기술을 통합하여 구매 신호와 판매 신호를 설정하여 자동 거래를 구현한다. 단기 평균 선이 하향에서 중기 평균 선을 돌파하고 주가가 압력 지점을 돌파 할 때 구매 신호가 발생한다. 주가가 15% 상승하면 스톱을 설정하고 3% 떨어지면 스톱을 설정한다. 이 전략은 시장 추세를 자동으로 식별하고, 기술 신호가 발생하면 자동으로 진입하고, 손실 위험을 제어하기 위해 스톱을 설정하며, 보다 성숙한 양적 거래 전략에 속한다.

전략 원칙

이 전략은 주로 다음과 같은 몇 가지 기술 지표와 조건 판단에 따라 거래 신호를 생성합니다.

  1. 쌍평균선 교차기술: 20일, 44일 간단한 이동 평균을 계산하고, 20일 평균선 위에 44일 평균선을 횡단할 때 시장이 상승 추세에 있다고 판단하여 구매 신호를 생성한다.

  2. 압력위치 돌파 기술: 도표에 표시된 주가가 여러 번 접근했지만 돌파하지 못한 위치를 압력위치라고 부른다. 주가가 압력위치를 성공적으로 돌파한 후, 가격이 새로운 상승 단계에 진입하는 것을 예고한다. 이 전략은 주가가 거래 전날 최고 가격의 0.7% 범위를 돌파한 경우 압력위치로 간주됩니다.

  3. 오버 바이 오버 셀 지표 RSI: 상대적으로 강한 지표, 시장이 오버 바이 또는 오버 셀 기술 지표입니다. 이 전략은 14 일 RSI 지표가 50보다 크면 오버 바이 신호로 설정합니다.

  4. 거래량 분석: 거래량이 지난 10일 평균 거래량을 돌파한 것은 시장에서 더 강한 구매 또는 판매 거래가 발생할 것을 예고한다.

  5. 구매 신호: 단기 평균선에서 중기 평균선을 통과하고 주가가 압력 지점을 돌파하면 시장이 과매매 상태이며 거래량이 지난 10 일 평균 거래량보다 높으면 구매 신호가 발생한다.

  6. 판매 신호: 스톱 스톱 손실 기준을 설정하여 주가가 구매 가격보다 15% 상승하면 스톱 스톱; 3% 감소하면 스톱 스톱

이 전략은 여러 가지 기술적 지표를 종합적으로 사용하여 시장 구조를 판단하고, 트렌드가 나타나면 자동으로 거래 신호를 생성합니다.

전략적 이점

  1. 시장의 구조를 판단하고, 시장의 흐름을 안정적으로 파악할 수 있는 일률적 기술을 활용한다.

  2. 거래량 분석을 결합하여 거래량이 일치하지 않는 가짜 돌파구에서 포지션을 열지 않도록합니다.

  3. 단편 거래의 위험과 이익 비율을 잘 조절할 수 있는 스톱, 스톱, 손실 철수 메커니즘을 설정하여 손실을 확대하지 않도록 한다.

  4. 전체적으로, 이 전략은 시장 구조에 대한 정확한 판단, 엄격한 거래 규칙, 위험 통제가 적용되어 있어, 효과가 좋은 양적 전략이다.

전략적 위험

  1. 쌍방향 거래 시스템은 파라미터 설정에 민감하며, 다른 시간대에 파라미터가 조정될 필요가 있다.

  2. 순수하게 트렌드를 추적하는 전략으로, 급격한 사건에 대응할 수 없는 전략으로, 큰 이익과 적자 소식이 있을 때 막연히 스톱로스를 당하는 전략으로;

  3. 정지 손실이 설정되어 있지만 거래 횟수가 많을 때 정지 손실이 불가피하게 더 많으며 수익 수준에 대한 불균형의 위험이 있습니다.

  4. 기술 지표가 신호를 보내는 시점은 종종 시장이 반전되는 최적의 시점을 지나갑니다.

전략 최적화 방향

  1. 변수 최적화 방법을 사용하여 최적의 쌍평평선 변수 조합을 찾아서 스톱 스톱 손실 수준을 최적화 할 수 있습니다.

  2. 다른 지표 판단을 추가하여 신호 발송 시점을 향상시킵니다. 예를 들어, 브린 띠가 확인된 회수 범위, MACD가 확인된 과매도, 과매도 등이 있습니다.

  3. 근본적인 판단이나 뉴스 측면을 높여서 심각한 부정적인 뉴스를 막는 것을 피하십시오.

  4. 고정 금액 거래, 고정 비율 거래와 같은 자금 관리 전략을 최적화하여 단위 위험을 제어하십시오.

요약하다

이 전략은 전체적으로 원활하게 작동하고, 판단이 정확하고 거래 규칙이 엄격하며, 위험은 통제되어 있으며, 효과적 인 양적 전략 중 하나입니다. 그러나 기술 측면의 거래 전략은 시장 구조에 대한 판단이 여전히 제한되어 있으며, 최적화 공간은 다른 지표 판단과 기본 정보 측면의 통합적 인 고려를 추가하는 데 있습니다. 또한 스톱 스톱 손실 설정 및 자금 관리 전략을 추가적으로 최적화하는 데 중점을 둡니다.

전략 소스 코드
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Advanced Strategy with Conditional Stop Loss", overlay=true)

// Parameters
ma_length_20 = 20
ma_length_44 = 44
ma_length_100 = 100
rsi_length = 14
volume_length = 10
profit_target = 1.15 // 15% above the buy price
stop_loss_target = 0.97 // 3% below the buy price
wait_candles = 10 // Number of candles to wait after selling, unless MA cross condition met

// Indicators
moving_average_20 = ta.sma(close, ma_length_20)
moving_average_44 = ta.sma(close, ma_length_44)
moving_average_100 = ta.sma(close, ma_length_100)
rsi = ta.rsi(close, rsi_length)
volumeAvg = ta.sma(volume, volume_length)

// Variables to manage the wait period after a sell
var int last_sell_candle = 0

// Update last sell candle
if (strategy.position_size[1] > 0 and strategy.position_size == 0)
    last_sell_candle := bar_index

// Trend identification
uptrend = close > moving_average_20
above_ma20_by_1_percent = close > moving_average_20 * 1.01
ma_cross = ta.crossover(moving_average_20, moving_average_44) or ta.crossunder(moving_average_20, moving_average_44)
close_near_high = (close >= high * 0.993) and (close <= high)

// Buy condition (only in uptrend, above 1% from 20-day MA, and respecting new filter)
can_buy_after_cross = ma_cross and close > high[1]
can_buy_after_wait = (bar_index - last_sell_candle) > wait_candles
buy_condition = (can_buy_after_cross or can_buy_after_wait) and uptrend and above_ma20_by_1_percent and close > moving_average_44 and close > moving_average_100 and close > high[1] and rsi > 50 and volume > volumeAvg and not close_near_high

// Entry
if (buy_condition and strategy.position_size == 0)
    strategy.entry("Buy", strategy.long)

// Exit conditions
if (strategy.position_size > 0)
    // Profit target
    profit_level = strategy.position_avg_price * profit_target
    strategy.exit("Take Profit", "Buy", limit=profit_level)

    // Dynamic Stop Loss - Check on every bar if the price has dropped 3% below the buy price
    stop_loss_level = strategy.position_avg_price * stop_loss_target
    if (low < stop_loss_level)
        strategy.close("Buy", comment="Stop Loss")

// Plotting
plot(moving_average_20, color=color.green, title="20-Day Moving Average")
plot(moving_average_44, color=color.blue, title="44-Day Moving Average")
plot(moving_average_100, color=color.red, title="100-Day Moving Average")