거래량-가격 풀백과 다중 이익 실현을 기반으로 한 고급 거래 전략


생성 날짜: 2023-12-12 15:39:19 마지막으로 수정됨: 2023-12-12 15:39:19
복사: 0 클릭수: 612
avatar of ChaoZhang ChaoZhang
1
집중하다
1621
수행원

거래량-가격 풀백과 다중 이익 실현을 기반으로 한 고급 거래 전략

개요

이 전략은 이동 평균 교차, 상대적으로 강한 지수 (RSI) 와 대폭적인 거래량 확대 판단을 결합하여, 가격이 높은 거래량 후 일정 비율의 회귀가 발생하는 것을 포착 할 때 포지션을 추가 하락하고, 세 개의 점진적 중지 명령을 설정하여 서로 다른 비율의 이익을 잠금합니다. 전략은 또한 가격의 유리한 변화를 계속 포착 할 수있는 옵션 추적 스톱 기능을 가지고 있습니다.

전략 원칙

빠른 이동 평균과 느린 이동 평균의 골드 크로스 트렌드 변화의 시작을 판단하기 위해 초기 신호를 제공합니다. RSI 지표는 과도한 매매 상태를 평가하는 데 사용되며, 이러한 시나리오에서 신호의 안정성을 보장하기 위해 시장의 신호를 피하는 데 도움이됩니다. 거래량이 평균을 크게 초과하면 시장의 관심이 잠재적인 가격 변화에 의해 표시됩니다. 이러한 거래량이 급격히 증가하면 시장의 신호가 강화됩니다. 거래량과 가격의 상승 이후 가격과 거래량이 일정 수준으로 떨어지면 다중 신호를 유발합니다.

공백 신호의 취득 및 정지 탈퇴 원리는 다하는 것과 유사하며, 여기서 설명하지 않는다. 주의할 점은, 이 전략이 동시에 다하는 능력과 공백 능력을 가지고 있다는 것이다.

우위 분석

이 전략은 다음과 같은 몇 가지 주요 장점을 가지고 있습니다.

  1. 급속한 평균선과 RSI 지표의 교차는 안정적인 진출 시점을 결정하고, 과매도 지역에서의 입장을 피하여 수익을 올릴 확률을 높입니다.

  2. 거래량의 급증을 보조 판단으로 사용하여 가격 변동이 큰 간격 창고를 선택하여 신호의 지시를 강화하십시오.

  3. 가격과 거래량이 일정 비율로 하락하는 전략을 채택하여 포지션을 구축하여 시장 진입의 시간적 정확성을 높이고 반전 또는 상승의 좋은 기회를 잡습니다.

  4. 3개의 점진적인 정지표를 설정하여 가격 변동이 상승하는 공간을 최대한 활용하여 수익을 고정합니다. 투자자는 자신의 위험을 감수하는 상황에 따라 몇 개의 정지표를 선택할 수 있습니다.

  5. 선택 가능한 추적 스톱 손실 기능으로 투자자는 시장의 변동에 따라 선택하여 더 큰 수익을 얻을 수 있습니다.

  6. 다단계 거래와 공단 거래에 적용되며, 시장이 상승하거나 하락할 때 모두 수익을 얻을 수 있으며, 전략의 실용성을 증가시킵니다.

위험 분석

이 전략은 매우 세심하게 고안되었음에도 불구하고, 모든 금융 상품을 거래하는 것은 위험성이 있으며, 주의해야 할 사항이 있습니다.

  1. 빠른 느린 평균선 교차는 항상 시장의 움직임을 정확하게 판단하지 않으며, 사용 된 평균선 파라미터가 부적절하면 잘못된 신호가 발생할 수 있다.

  2. RSI 지표의 파라미터를 잘못 설정하면 과매도 영역에 침투할 수 있습니다. 시장에 따라 RSI 주기 파라미터를 조정해야합니다.

  3. 거래량 급증은 가격의 큰 변화와 완전히 동일하지 않으며 거래량 기준은 적절히 조정할 수 있습니다.

  4. 가격과 거래량이 너무 낮아지면 시장에 진입 시기가 달라지므로 시장에 따라 조정해야 합니다.

  5. 정해진 정지폭에 따라 정지권이 완전히 거래될 것을 보장할 수 없으며, 시장의 급격한 변화는 슬라이드 포인트를 유발할 수 있다.

  6. 트레이킹 스톱로스는 너무 큰 크기를 설정하면 너무 일찍 스톱로스를 철회하여 더 큰 수익을 잃을 수도 있습니다.

위와 같은 위험에는 코드 최적화, 매개 변수 조정 및 엄격한 피드백을 통해 전략의 안정성과 신뢰성을 보장해야 합니다.

최적화 방향

이 전략에는 더 많은 최적화 가능성이 있습니다:

  1. 다른 지표 판단을 추가하여 포지션 결정에 도움을 주며, 예를 들어, 브린 밴드, KD와 같은 지표의 조합을 사용하면 신호의 정확성을 더욱 향상시킬 수 있다.

  2. 기계 학습 방법과 함께 LSTM와 같은 동적 이동 평균을 구축하여 최근 시장 상황에 따라 평균 변수를 자동으로 조정하여 트렌드를 판단하는 능력을 향상시킬 수 있습니다.

  3. 시장의 변동에 기반한 스톱/스트로드 다이내믹 조정 기능을 추가하여 전략이 현재 시장의 변동에 따라 자동으로 스톱/스트로드를 조정할 수 있도록 한다.

  4. 동적접근법을 이용하여 대장 전체의 하락과 개별 주식 사이의 연관성에 따라 실시간으로 최적화된 회귀 인자를 사용하여 최적의 포지션 시기를 선택한다.

  5. 다인자 모형을 사용하여 감정 분석, 연계 규칙 분석과 같은 선택이 가장 강력한 가격 관련성과 거래량 변화의 기준을 적용하는 전략을 적용하면 전략 효과를 크게 향상시킬 수 있습니다.

요약하다

이 전략은 전반적으로 중·단계 투자자에게 매우 적합합니다. 최적화 된 전략 기능은 더 완벽하고 지능적이며 실제 응용 가치가 높습니다. 적극적으로 적극적인 양적 거래 전략으로 투자 수익을 제공하면서 위험을 줄이고 실제로 안정적으로 거래합니다.

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

//@version=4
strategy("Advanced Strategy with Volume and Price Retracement and Multi-Take Profit (USDT)", overlay=true)

// Parametreler
fastLength = input(12, minval=1, title="Fast Moving Average")
slowLength = input(26, minval=1, title="Slow Moving Average")
rsiPeriod = input(14, minval=1, title="RSI Period")
volLength = input(20, minval=1, title="Volume MA Length")
volMultiplier = input(2.0, title="Volume Spike Multiplier")
trailOffset = input(1, title="Trailing Offset (%)")
usdtPerTrade = input(50000, title="USDT per Trade")
retraceFactor = input(0.8, title="Retracement Factor for Entry")
takeProfit1 = input(1, title="Take Profit 1 (%)")
takeProfit2 = input(2, title="Take Profit 2 (%)")
takeProfit3 = input(3, title="Take Profit 3 (%)")
trailForTP = input(true, title="Use Trailing Stop for Take Profits")

// Hesaplamalar
fastMA = sma(close, fastLength)
slowMA = sma(close, slowLength)
rsi = rsi(close, rsiPeriod)
volMA = sma(volume, volLength)
volumeSpike = volume > volMA * volMultiplier

// Durum Değişkenleri ve Saklanan Değerler
var float spikeVolume = na
var float spikePrice = na
var int direction = 0

// Alım/Satım Sinyalleri
longCondition = crossover(fastMA, slowMA) and rsi < 70
shortCondition = crossunder(fastMA, slowMA) and rsi > 30

// Hacim Spike ve Fiyat Hareketinin Saklanması
if (longCondition and volumeSpike)
    spikeVolume := volume
    spikePrice := close
    direction := 1
else if (shortCondition and volumeSpike)
    spikeVolume := volume
    spikePrice := close
    direction := -1

// Retracement Kontrolü ve Giriş Emirleri
if (direction == 1 and volume < spikeVolume * retraceFactor and close < spikePrice * (1 - trailOffset / 100))
    strategy.entry("Long", strategy.long, qty=usdtPerTrade / close)
    spikeVolume := na
    direction := 0
else if (direction == -1 and volume < spikeVolume * retraceFactor and close > spikePrice * (1 + trailOffset / 100))
    strategy.entry("Short", strategy.short, qty=usdtPerTrade / close)
    spikeVolume := na
    direction := 0

// Take Profit Emirleri
if strategy.position_size > 0
    strategy.exit("TP1", "Long", limit=strategy.position_avg_price * (1 + takeProfit1 / 100), qty_percent=33, trail_offset=trailForTP ? atr(14) / 2 : na)
    strategy.exit("TP2", "Long", limit=strategy.position_avg_price * (1 + takeProfit2 / 100), qty_percent=33, trail_offset=trailForTP ? atr(14) : na)
    strategy.exit("TP3", "Long", limit=strategy.position_avg_price * (1 + takeProfit3 / 100), qty_percent=34, trail_offset=trailForTP ? atr(14) * 1.5 : na)

if strategy.position_size < 0
    strategy.exit("TP1", "Short", limit=strategy.position_avg_price * (1 - takeProfit1 / 100), qty_percent=33, trail_offset=trailForTP ? atr(14) / 2 : na)
    strategy.exit("TP2", "Short", limit=strategy.position_avg_price * (1 - takeProfit2 / 100), qty_percent=33, trail_offset=trailForTP ? atr(14) : na)
    strategy.exit("TP3", "Short", limit=strategy.position_avg_price * (1 - takeProfit3 / 100), qty_percent=34, trail_offset=trailForTP ? atr(14) * 1.5 : na)

// Pozisyon çıkışları
strategy.close("Long", when=shortCondition)
strategy.close("Short", when=longCondition)