고효율 충격 돌파 이중 안전 손익 전략


생성 날짜: 2024-02-01 14:46:00 마지막으로 수정됨: 2024-02-01 14:46:00
복사: 0 클릭수: 639
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

고효율 충격 돌파 이중 안전 손익 전략

개요

이 전략은 통로 지표와 돌파구 원칙에 기반한 효율적인 쌍방향 거래 전략이다. 그것은 주식과 디지털 화폐의 1 분 시간 프레임에 높은 승률의 쌍방향 거래를 구현할 수 있다.

전략 원칙

전략은 SMA 지표를 사용하여 채널을 구축한다. 가격이 채널을 뚫을 때 구매하거나 판매한다. 동시에 수익을 잠금하고 위험을 제어하기 위해 스톱 및 스톱을 설정한다.

구체적으로, 전략 계산 채널의 상반기 및 하반기 △ 상반기는 종결 가격의 10주기 간단한 이동 평균을 곱한 1.02; 하반기는 최저 가격의 10주기 간단한 이동 평균을 다시 나누는 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)