부피와 가격 복수 취득을 위한 고급 전략

저자:차오장, 날짜: 2023-12-12 15:39:19
태그:

img

전반적인 설명

이 전략은 이동 평균 크로스오버, 상대 강도 지수 (RSI) 및 크게 증폭 된 거래 부피를 결합하여 높은 볼륨 스파이크에서 가격의 특정 비율의 인기를 감지 한 후 긴 / 짧은 포지션을 취합니다. 이윤의 다른 수준을 잠금하기 위해 세 계층의 수익 주문을 설정합니다. 또한 옵션 트레일링 스톱 로스 기능이 있으며 가격이 계속해서 유리한 움직이면 추가 수익을 얻을 수 있습니다.

원칙

급속하고 느린 이동 평균의 교차는 트렌드 방향 변화의 초기 신호를 제공합니다. RSI 지표는 이러한 시나리오를 피하기 위해 더 강력한 엔트리 신호를 위해 과잉 구매 / 과잉 판매 조건을 평가합니다. 평균 부피보다 상당한 증가는 시장의 관심을 끌 수있는 잠재적 인 가격 움직임을 신호합니다. 이러한 볼륨 스파이크는 엔트리 신호의 힘을 강화합니다. 볼륨 스파이크와 가격 상승 후 가격과 볼륨이 지정된 비율을 철회했을 때 엔트리 오더가 활성화됩니다. 잠재적 인 수정 또는 역전을 나타냅니다. 세 개의 단계화 된 TP 오더가 수익을 실현하는 데 사용됩니다. 각 TP 레벨은 미리 결정된 수익 목표에 도달하면 위치의 일부를 닫습니다. TP에 선택적 인 트레일링 스톱 기능이 제공됩니다. 가격이 TP 목표에 도달하면 가격이 유리한 상태를 유지하면 더 많은 수익을 얻기 위해 트레일링 스톱 위치를 따릅니다.

같은 원칙은 짧은 진입 및 출구 신호에 적용됩니다.이 전략은 긴 것과 짧은 거래를 용이하게합니다.

이점 분석

이 전략의 주요 장점:

  1. 빠른 / 느린 MAs의 크로스오버와 RSI가 결합되어 강력한 진입 신호를 형성하여 과잉 구매 / 과잉 판매 영역을 피하여 승률을 높입니다.

  2. 부피의 급격한 상승은 큰 가격 변동을 포착하여 포지션을 설정하여 신호 힘을 강화합니다.

  3. 가격/용량 회수 메커니즘은 회전 또는 상승 기회를 포착하기 위해 진입 시기의 정확성을 향상시킵니다.

  4. 3단계 TP는 리스크 관용에 따라 수익을 확보하기 위해 가격 상승세를 이용합니다.

  5. 선택적 인 후속 정지는 시장 변동성에 따라 더 높은 수익의 기회를 유지하면서 자본 보존을 가능하게 하는 유연성을 허용합니다.

  6. 긴 거래와 짧은 거래 모두에 적용되며, 수익은 상승 추세 또는 하락 추세 시장에서 실현 될 수 있으며 유용성을 향상시킵니다.

위험 분석

신중 한 설계 에도 불구하고, 금융 상품 을 거래 하는 것 은 위험성 을 안고 있다.

  1. MA 크로스오버는 항상 트렌드를 정확하게 결정하지 않습니다. 부적절한 MA 매개 변수를 사용하면 잘못된 신호가 발생할 수 있습니다.

  2. 부적절한 RSI 기간 설정은 과잉 구매 / 과잉 판매 영역을 피하는 데 실패 할 수 있습니다. 기간은 시장별로 조정해야합니다.

  3. 부피의 급격한 상승은 반드시 중요한 가격 변화와 완벽하게 일치하지 않습니다. 부피 기준 표준은 정교한 조정이 필요합니다.

  4. 과도하거나 부적절한 가격/량 감소는 진입 시점에 영향을 미칩니다. 이 요인 또한 시장 기반 조정이 필요합니다.

  5. 미리 설정된 수익수준은 TP 주문의 완전한 실행을 보장할 수 없습니다. 급격한 시장 변화로 인해 미끄러질 수 있습니다.

  6. 너무 넓은 트레일링 스톱 손실은 더 큰 이익을 잃는 지점을 조기 종료 할 수 있습니다.

이러한 위험은 코드 최적화, 매개 변수 조정, 그리고 전략 신뢰성을 보장하기 위한 엄격한 백테스트를 요구합니다.

최적화 방향

추가 개선:

  1. 입시 결정을 돕기 위해 볼링거 밴드 (Bollinger Bands) 또는 KD와 같은 다른 지표를 추가하여 정확성을 향상시킵니다.

  2. LSTM와 같은 기계 학습 모델을 통합하여 동적인 MAs를 설정하여 최신 시장 조건에 자동으로 매개 변수를 조정하여 트렌드 포착을 향상시킵니다.

  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)


더 많은