효율적인 오스실레이션 돌파구 두 개의 스톱 이윤 및 스톱 손실 전략

저자:차오장, 날짜: 2024-02-01 14:46:00
태그:

img

전반적인 설명

이것은 채널 지표와 브레이크아웃 원칙을 기반으로 설계된 고효율의 이중 방향 거래 전략입니다. 1분 시간 내에 주식 및 암호화폐에 대한 높은 승률 이중 방향 거래를 달성 할 수 있습니다.

전략 논리

이 전략은 채널을 구축하기 위해 SMA 지표를 사용합니다. 가격이 채널 이상으로 돌파할 때 장을 입력하고 가격이 채널 아래로 돌파할 때 짧은 것을 입력합니다. 이윤을 취하고 손실을 멈추는 것도 이익을 잠금하고 위험을 제어하도록 설정됩니다.

구체적으로, 전략은 채널의 상부 및 하부 레일을 계산합니다. 상부 레일은 닫는 가격의 10 기간 SMA를 1.02로 곱합니다. 하부 레일은 가장 낮은 가격의 10 기간 SMA를 1.02로 나눈 것입니다. 닫는 가격이 상부 레일보다 넘을 때 길게 이동하고, 닫는 가격이 하위 레일보다 낮을 때 짧게 이동하십시오.

장기간 거래 후, 두 가지 영업이익 수준이 각각 1% 및 3%로 설정되며, 3%의 스톱 손실이 있습니다. 쇼트 거래는 비슷한 수익/손실 설정을 가지고 있습니다. 브레이크아웃 원칙을 통해 전략은 상대적으로 높은 엔트리 승률을 달성 할 수 있습니다. 이중 영업이익을 통해 더 많은 이익을 잠금 할 수 있습니다. 스톱 손실을 통해 거래 손실 금액을 제어합니다.

이점 분석

이와 같은 채널 브레이크업 전략은 명확한 입력 신호, 높은 운영 주파수, 다단계 수익 취득 등과 같은 장점이 있습니다. 주요 장점은 다음과 같습니다.

  1. 채널 지표를 사용하여 가격 오스실레이션 범위를 식별하고 입력하는 브레이크아웃 포인트를 선택하면 상대적으로 높은 승률을 얻을 수 있습니다.

  2. 더 많은 기회를 잡기 위해 1분 차트에 따라 작동하고 속도 거래에 대한 필요에 맞습니다.

  3. 이윤을 취하는 두 레벨을 갖는 것은 트렌드가 잘 진행될 때 더 많은 수익을 얻을 수 있습니다.

  4. 상대적으로 넓은 스톱 손실은 가격 움직임에 약간의 공간을 제공하여 조기 스톱 손실을 피합니다.

위험 분석

이러한 브레이크 아웃 전략의 가장 큰 위험은 손실로 이어지는 가짜 브레이크 아웃입니다. 또한 큰 스톱 로스는 손실 위험을 증가시킬 수 있습니다. 주요 위험 지점:

  1. 브레이크오웃 신호는 잘못된 브레이크오웃이 될 수 있으며, 수익을 취하거나 손실을 멈추는 데 실패할 수 있습니다. 기술적 분석에서 일반적인 문제입니다. 매개 변수 최적화는 피하는 데 도움이 될 수 있습니다.

  2. 3%의 스톱 로스 문턱은 일부 거래자가 견딜 수 없을 수도 있습니다. 개인적인 위험 용도에 따라 조정하십시오.

  3. 이 전략은 보다 단기 거래에 적합하고 모니터링이 필요합니다. 시장을 관찰 할 수없는 경우 포지션을 줄입니다.

최적화 방향

이러한 트렌드 브레이크 전략은 주로 아래와 같은 측면에서 최적화 할 수 있습니다:

  1. 채널을 만들기 위해 더 많은 지표를 테스트하고 가짜 브레이크를 줄이기 위해 더 신뢰할 수 있는 것을 찾으십시오.

  2. 이동 평균 매개 변수 조정 최적화, 최고의 매개 변수 조합을 발견.

  3. 더 복잡한 입력 메커니즘을 테스트합니다. 볼륨 필터를 추가하는 것과 같은 것 말이죠.

  4. 매개 변수 자체 적응을 달성하기 위해 다른 제품 특성에 적응 가능한 매개 변수 조합을 설정합니다.

  5. 자동 스톱 손실 메커니즘을 추가하여 시간적으로 스톱 손실을 동적으로 조정합니다.

결론

이것은 채널 지표에 기반을 둔 효율적인 양방향 거래 전략입니다. 브레이크아웃 원칙을 통해 시장에 진출합니다. 보상을 잠금하고 위험을 제어하기 위해 이중 수익을 취합니다. 추가 최적화는 더 나은 결과를 얻을 수 있습니다. 그러나 거래자는 여전히 가짜 브레이크아웃과 같은 위험을 경계해야합니다.


/*backtest
start: 2023-01-25 00:00:00
end: 2024-01-31 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Erweiterte SSL Channel Strategy mit 2 TPs, SL und BE", overlay=true)

period = input(title="Period", defval=10)
len = input(title="Length", defval=10)
multiplier = input(title="Multiplier", defval=1.0, minval=1.0)
tp1Percent = input(title="Take Profit 1 (%)", defval=1.0) / 100
tp2Percent = input(title="Take Profit 2 (%)", defval=20.0) / 100
slPercent = input(title="Stop Loss (%)", defval=3.0) / 100

var float tp1Price = na
var float tp2Price = na
var float slPrice = na
var bool tp1Reached = false

smaHigh = sma(high * multiplier, len)
smaLow = sma(low / multiplier, len)

Hlv = 0
Hlv := close > smaHigh ? 1 : close < smaLow ? -1 : nz(Hlv[1])
sslDown = Hlv < 0 ? smaHigh : smaLow
sslUp = Hlv < 0 ? smaLow : smaHigh

plot(sslDown, linewidth=2, color=color.red)
plot(sslUp, linewidth=2, color=color.lime)

longCondition = crossover(close, sslUp)
shortCondition = crossunder(close, sslDown)

if (longCondition)
    strategy.entry("Long", strategy.long)
    tp1Price := strategy.position_avg_price * (1 + tp1Percent)
    tp2Price := strategy.position_avg_price * (1 + tp2Percent)
    slPrice := strategy.position_avg_price * (1 - slPercent)
    tp1Reached := false

if (shortCondition)
    strategy.entry("Short", strategy.short)
    tp1Price := strategy.position_avg_price * (1 - tp1Percent)
    tp2Price := strategy.position_avg_price * (1 - tp2Percent)
    slPrice := strategy.position_avg_price * (1 + slPercent)
    tp1Reached := false

// Take Profit, Break-even und Stop-Loss Logik
if (strategy.position_size > 0) // Long-Positionen
    if (not tp1Reached and close >= tp1Price)
        strategy.close("Long", qty_percent = 50)
        strategy.exit("BE Long", "Long", stop = strategy.position_avg_price)
        tp1Reached := true
    if (tp1Reached and close < tp1Price)
        strategy.exit("BE Long", "Long", stop = strategy.position_avg_price)
    if (close >= tp2Price)
        strategy.close("Long", qty_percent = 100)
    if (not tp1Reached)
        strategy.exit("SL Long", "Long", stop = slPrice)

if (strategy.position_size < 0) // Short-Positionen
    if (not tp1Reached and close <= tp1Price)
        strategy.close("Short", qty_percent = 50)
        strategy.exit("BE Short", "Short", stop = strategy.position_avg_price)
        tp1Reached := true
    if (tp1Reached and close > tp1Price)
        strategy.exit("BE Short", "Short", stop = strategy.position_avg_price)
    if (close <= tp2Price)
        strategy.close("Short", qty_percent = 100)
    if (not tp1Reached)
        strategy.exit("SL Short", "Short", stop = slPrice)


더 많은