추진력 역전 전략

저자:차오장, 날짜: 2023-11-13 10:02:25
태그:

img

전반적인 설명

이 전략은 특정 기간 내에 주식 가격의 비율 변화를 감지하고 임계치를 초과하면 거래 신호를 생성하는 것을 목표로합니다. 갑작스러운 시장 움직임의 기회를 포착하기 위해 단기 및 스칼핑 거래에 적합합니다.

전략 논리

  1. 입력 매개 변수 x는 5분 촛불의 기본값이 5인 검증해야 하는 촛불 기간의 수를 나타냅니다.

  2. trueChange1 및 trueChange2로 저장된 x 기간 전의 종료 가격에 대한 현재 종료 가격의 비율 변화를 계산합니다.

  3. 입력 매개 변수 %ChangePos와 %ChangeNeg는 0.4%와 -0.4%의 기본 값으로 임계 비율 변화를 나타냅니다.

  4. trueChange1이 %ChangePos보다 크면 구매 신호가 생성됩니다. trueChange2가 %ChangeNeg보다 작으면 판매 신호가 생성됩니다.

  5. 구매 및 판매 상태를 위한 텍스트와 배경 색상을 추가합니다.

  6. 신호에 따라 출입과 출입 규칙을 설정합니다.

  7. 경고와 도면을 설정합니다.

장점

  1. 절대 가격 변화보다는 비율 변화를 사용하세요. 다른 주식에 적응할 수 있습니다.

  2. 플렉서블하게 긍정과 부정적 인 비율의 문턱을 설정하여 볼링거 밴드 브레이크를 식별합니다.

  3. 다른 시간 프레임에서 트렌드 변화를 식별하기 위해 조정 가능한 탐지 기간

  4. 중요한 신호를 감지할 수 있는 설정 가능한 경보

  5. 단순하고 직설적인 신호 논리, 이해하기 쉽고 사용하기 쉽습니다.

  6. 시장이 열릴 때 단기적인 반전을 감지합니다.

위험성

  1. 비율 변화는 트렌드 방향을 결정하지 않으며 잘못된 신호를 생성할 수 있습니다.

  2. 기본 매개 변수는 모든 주식에 맞지 않을 수 있습니다. 특정 조정이 필요합니다.

  3. 손해를 막지 않고 손해를 제한할 수 없습니다.

  4. 빈번한 신호, 잠재적으로 높은 거래 비용

  5. 시장 구조를 파악할 수 없고, 다양한 시장에서 불황을 겪을 수 있습니다.

해결책:

  1. 선형 회귀와 같은 트렌드 지표와 결합하여 전체 트렌드를 결정합니다.

  2. 재고 특성에 따라 매개 변수를 최적화합니다.

  3. 적절한 스톱 로스를 실행하세요.

  4. 과도한 거래를 피하기 위해 신호를 필터합니다.

  5. 더 높은 시간 프레임에서 시장 구조를 측정하여 거래 스윙을 피하십시오.

개선

  1. 손실을 제한하기 위해 후속 스톱 손실과 같은 스톱 손실 메커니즘을 추가합니다.

  2. 부피와 같은 필터 조건을 추가합니다.

  3. MACD와 같은 지표로 출입 및 출입 규칙을 최적화하십시오.

  4. 기계 학습을 사용하여 자동으로 매개 변수를 최적화합니다.

  5. 시장 구조 분석을 포함해서 문제점을 피해야 합니다.

  6. 변동성과 유동성을 기반으로 동적으로 설정된 매개 변수

  7. 더 높은 시간 프레임 분석과 결합하여 전체 추세를 결정합니다.

요약

이 전략은 미리 설정된 임계치에 대한 비율 가격 변화를 비교하여 거래를 생성하여 단기 평균 역전 전략으로 만듭니다. 장점은 단순성, 유연성 및 갑작스러운 시장 움직임을 포착하는 능력에 있습니다. 단점은 최적화 및 트렌드 분석 및 위험 관리로 적절한 사용을 통해 해결할 수있는 위험입니다. 전반적으로, 그것은 건전한 논리를 가지고 있으며 적절하게 향상되면 효과적인 단기 거래 전략이 될 수 있습니다.


/*backtest
start: 2023-10-13 00:00:00
end: 2023-11-12 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
// created by Oliver
strategy("Percentage Change strategy w/BG color", overlay=true, scale=scale.none, precision=2)

x = input(5, title = 'x candles difference', minval = 1)
trueChange1 = (close - close[x]) / close[x] * 100
percentChangePos = input(0.4, title="Percent Change")

//if (percentChange > trueChange) then Signal  

plotChar1 = if percentChangePos > trueChange1
    false
else
    true

plotchar(series=plotChar1, char='🥶', color=color.green, location=location.top, size = size.tiny )

trueChange2 = (close - close[x]) / close[x] * 100
percentChangeNeg = input(-0.4, title="Percent Change")

plotChar2 = if percentChangeNeg < trueChange2
    false
else
    true
plotchar(series=plotChar2, char='🥵', color=color.red, location=location.top, size = size.tiny)

//------------------------------------------------------------------------
UpColor() => percentChangePos < trueChange1
DownColor() => percentChangeNeg > trueChange2

//Up = percentChangePos < trueChange1
//Down = percentChangeNeg > trueChange2


col = percentChangePos < trueChange1 ? color.lime : percentChangeNeg > trueChange2 ? color.red : color.white
//--------
condColor = percentChangePos < trueChange1 ? color.new(color.lime,50) : percentChangeNeg > trueChange2 ? color.new(color.red,50) : na
//c_lineColor = condUp ? color.new(color.green, 97) : condDn ? color.new(color.maroon, 97) : na
//barcolor(Up ? color.blue : Down ? color.yellow : color.gray, transp=70)

//Background Highlights
//bgcolor(condColor, transp=70)


//---------

barcolor(UpColor() ? color.lime: DownColor() ? color.red : na)
bgcolor(UpColor() ? color.lime: DownColor() ? color.red : na)

//------------------------------------------------------------------------

buy = percentChangePos < trueChange1
sell = percentChangeNeg > trueChange2


//------------------------------------------------------------------------
/////////////// Alerts /////////////// 
alertcondition(buy, title='buy', message='Buy')
alertcondition(sell, title='sell', message='Sell')

//-------------------------------------------------

if (buy)
    strategy.entry("My Long Entry Id", strategy.long)

if (sell)
    strategy.entry("My Short Entry Id", strategy.short)


/////////////////// Plotting //////////////////////// 
plotshape(buy, title="buy", text="Buy", color=color.green, style=shape.labelup, location=location.belowbar, size=size.small, textcolor=color.white, transp=0)  //plot for buy icon
plotshape(sell, title="sell", text="Sell", color=color.red, style=shape.labeldown, location=location.abovebar, size=size.small, textcolor=color.white, transp=0)


더 많은