가격충격 보조판단 3요인모형


생성 날짜: 2024-02-26 15:32:27 마지막으로 수정됨: 2024-02-26 15:32:27
복사: 0 클릭수: 591
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

가격충격 보조판단 3요인모형

개요

가격 흔들림 보조 판단 3 인자 모델은 다인자 판단을 결합한 단선 거래 전략이다. 이 전략은 거래량 비율, RSI 지표, MACD 지표, 신호선 지표의 다인자 판단을 종합적으로 고려하여 가격 흔들림 행동을 판단하여 단선 거래 기회를 발견한다.

전략 원칙

이 전략의 핵심 논리는 다음과 같습니다.

  1. 빠른 이동 평균, 느린 이동 평균, MACD 곡선, 신호 선과 같은 기술 지표를 계산합니다.

  2. 거래량 거래율, RSI, MACD, 신호선 지표의 다중 요소 조건을 판단합니다.

  3. 종합적인 다중 요소 판단으로, 현재 가격이 변동하는 시기이며, 매매 기회가 있음을 확인합니다.

  4. LONG 또는 SHORT 포지션으로 들어가서, Stop Loss을 설정합니다.

  5. 가격이 스톱 또는 스톱 손실 조건에 도달했을 때 평점 포지션을 니다.

이 전략은 거래량 비율, RSI 지표, MACD 지표, 신호선 지표와 같은 다중 인자 판단을 유연하게 사용하여 가격 변동 행동을 판단하여 단선 거래 기회를 잡습니다. 다중 인자 조합 판단은 단일 인자에 의한 잘못된 신호를 피할 수 있으며 신호 정확성을 향상시킵니다.

우위 분석

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

  1. 여러 요소로 판단하여 신호의 정확성을 높이고, 잘못된 신호를 피합니다.
  2. 가격의 변동성을 이용해서 단선 거래 기회를 잡아서 큰 수익을 올릴 수 있습니다.
  3. 자동으로 스탠프 손실을 설정하고 위험을 제어합니다.
  4. 간단한 거래 논리, 쉽게 실행할 수 있습니다.

위험 분석

이 전략에는 다음과 같은 위험도 있습니다.

  1. 알고리즘은 역사적인 데이터에 너무 의존해서 시장의 변화에 민감합니다.
  2. 다인자 조합 방식은 더 많은 최적화가 필요할 수 있으며, 잘못된 판단이 있을 수 있습니다.
  3. 스톱스피치는 전략의 안정성에 직접적인 영향을 미칠 수 있는지에 대한 합리적 여부.

위와 같은 위험들에 대해 최적화할 수 있는 방법은 다음과 같습니다:

  1. 데이터 샘플링 주기를 늘리고, 시장 데이터의 변화를 줄여주기 위해
  2. 다중 요소 중점을 조정하여 적응 최적화를 달성합니다.
  3. 다양한 스톱포드를 테스트하여 최적의 스톱포드를 찾아보세요.

최적화 방향

이 전략은 다음의 몇 가지 측면에서 최적화될 수 있습니다.

  1. 다중인자 가중치를 최적화하고, 동적 조정을 구현한다. 다양한 상황에 따라 다중인자 판단에 가중치를 조정하고, 적응력을 향상시킬 수 있다.

  2. 기계 학습 알고리즘과 결합하여 다인자 자율적 최적화를 구현한다. 신경 네트워크, 유전 알고리즘과 같은 알고리즘을 사용하여 다인자 모델을 훈련하고, 변수 자율적 최적화를 구현한다.

  3. 손해 차단 전략을 최적화한다. 다양한 추적 손해 차단, 이동 손해 차단 조합을 테스트하여 최적의 손해 차단 솔루션을 찾을 수 있다.

  4. 첨단 기술 지표와 결합하여, 변동율의 변동, 동력 진동과 같은 더 많은 지표를 테스트 할 수 있으며, 풍부한 다인자 조합이 있습니다.

요약하다

가격 변동 보조 판단 3 인자 모델 전략은 가격 변동 영역의 다인자 특성을 최대한 활용하여 효율적인 단선 거래 전략을 구현한다. 이 전략은 거래량, RSI, MACD, 신호 라인 등의 다인자 판단을 사용하여 최적의 매매 시기를 결정한다. 다인자 판단은 신호 정확도를 향상시키고 안정적인 수익을 얻는 데 도움이 된다.

전략 소스 코드
/*backtest
start: 2024-01-26 00:00:00
end: 2024-02-25 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("3 10.0 Oscillator Profile Flagging", shorttitle="3 10.0 Oscillator Profile Flagging", overlay=false)

signalBiasValue = input(title="Signal Bias", defval=0.26)
macdBiasValue = input(title="MACD Bias", defval=0.7)
shortLookBack = input( title="Short LookBack", defval=3)
longLookBack = input( title="Long LookBack", defval=6)
takeProfit = input( title="Take Profit", defval=2)
stopLoss = input( title="Stop Loss", defval=0.7)

fast_ma = ta.sma(close, 3)
slow_ma = ta.sma(close, 10)
macd = fast_ma - slow_ma
signal = ta.sma(macd, 16)
hline(0, "Zero Line", color = color.black)

buyVolume = volume*((close-low)/(high-low))
sellVolume = volume*((high-close)/(high-low))
buyVolSlope = buyVolume - buyVolume[1]
sellVolSlope = sellVolume - sellVolume[1]
signalSlope = ( signal - signal[1] )
macdSlope = ( macd - macd[1] )
plot(macd, color=color.blue, title="Total Volume")
plot(signal, color=color.orange, title="Total Volume")
plot(macdSlope, color=color.green, title="MACD Slope")
plot(signalSlope, color=color.red, title="Signal Slope")
intrabarRange = high - low
rsi = ta.rsi(close, 14)
rsiSlope = rsi - rsi[1]
plot(rsiSlope, color=color.black, title="RSI Slope")

getRSISlopeChange(lookBack) =>
    j = 0
    for i = 0 to lookBack
        if ( rsi[i] - rsi[ i + 1 ] ) > -5
            j += 1
    j

getBuyerVolBias(lookBack) =>
    j = 0
    for i = 1 to lookBack
        if buyVolume[i] > sellVolume[i]
            j += 1
    j

getSellerVolBias(lookBack) =>
    j = 0
    for i = 1 to lookBack
        if sellVolume[i] > buyVolume[i]
            j += 1
    j

getVolBias(lookBack) =>
    float b = 0.0
    float s = 0.0
    for i = 1 to lookBack
        b += buyVolume[i]
        s += sellVolume[i]
    b > s

getSignalBuyerBias(lookBack) =>
    j = 0
    for i = 1 to lookBack
        if signal[i] > signalBiasValue
            j += 1
    j

getSignalSellerBias(lookBack) =>
    j = 0
    for i = 1 to lookBack
        if signal[i] < ( 0.0 - signalBiasValue )
            j += 1
    j

getSignalNoBias(lookBack) =>
    j = 0
    for i = 1 to lookBack
        if signal[i] < signalBiasValue and signal[i] > ( 0.0 - signalBiasValue )
            j += 1
    j

getPriceRising(lookBack) =>
    j = 0
    for i = 1 to lookBack
        if close[i] > close[i + 1]
            j += 1
    j


getPriceFalling(lookBack) =>
    j = 0
    for i = 1 to lookBack
        if close[i] < close[i + 1] 
            j += 1
    j

getRangeNarrowing(lookBack) =>
    j = 0
    for i = 1 to lookBack
        if intrabarRange[i] < intrabarRange[i + 1] 
            j+= 1
    j

getRangeBroadening(lookBack) =>
    j = 0
    for i = 1 to lookBack
        if intrabarRange[i] > intrabarRange[i + 1] 
            j+= 1
    j

bool isNegativeSignalReversal = signalSlope < 0.0 and signalSlope[1] > 0.0
bool isNegativeMacdReversal = macdSlope < 0.0 and macdSlope[1] > 0.0

bool isPositiveSignalReversal = signalSlope > 0.0 and signalSlope[1] < 0.0
bool isPositiveMacdReversal = macdSlope > 0.0 and macdSlope[1] < 0.0

bool hasBearInversion = signalSlope > 0.0 and macdSlope < 0.0
bool hasBullInversion = signalSlope < 0.0 and macdSlope > 0.0

bool hasSignalBias = math.abs(signal) >= signalBiasValue
bool hasNoSignalBias = signal < signalBiasValue and signal > ( 0.0 - signalBiasValue )

bool hasSignalBuyerBias = hasSignalBias and signal > 0.0
bool hasSignalSellerBias = hasSignalBias and signal < 0.0

bool hasPositiveMACDBias = macd > macdBiasValue
bool hasNegativeMACDBias = macd < ( 0.0 - macdBiasValue )

bool hasBullAntiPattern = ta.crossunder(macd, signal)
bool hasBearAntiPattern = ta.crossover(macd, signal)

bool hasSignificantBuyerVolBias = buyVolume > ( sellVolume * 1.5 )
bool hasSignificantSellerVolBias = sellVolume > ( buyVolume * 1.5 )


// 202.30 Profit 55.29% 5m
if ( ( getVolBias(longLookBack) == false ) and rsi <= 41 and math.abs(rsi - rsi[shortLookBack]) > 1 and hasNoSignalBias and rsiSlope > 1.5 and close > open)
    strategy.entry("5C1", strategy.long, qty=1.0)
strategy.exit("TPS", "5C1", limit=strategy.position_avg_price + takeProfit, stop=strategy.position_avg_price - stopLoss)

// 171.70 Profit 50.22% 5m
if ( getVolBias(longLookBack) == true and rsi > 45 and rsi < 55 and macdSlope > 0 and signalSlope > 0)
    strategy.entry("5C2", strategy.long, qty=1.0)
strategy.exit("TPS", "5C2", limit=strategy.position_avg_price + takeProfit, stop=strategy.position_avg_price - stopLoss)

// 309.50 Profit 30.8% 5m 2 tp .7 sl 289 trades
if ( macd > macdBiasValue and macdSlope > 0)
    strategy.entry("5P1", strategy.short, qty=1.0)
strategy.exit("TPS", "5P1", limit=strategy.position_avg_price - takeProfit, stop=strategy.position_avg_price + stopLoss)