2단계 스팬 돌파 전략


생성 날짜: 2023-11-02 15:58:29 마지막으로 수정됨: 2023-11-02 15:58:29
복사: 0 클릭수: 565
avatar of ChaoZhang ChaoZhang
1
집중하다
1621
수행원

2단계 스팬 돌파 전략

개요

이 전략은 5분 개시 가격의 상승과 하락을 기반으로 거래 결정을 내리고, 두 단계의 간격 돌파구를 사용하여 다양한 촉발 조건을 설정하여, 충격적인 추세에서 큰 가격 변화를 잡기위한 것입니다.

전략 원칙

전략은 매일 2시간 5분 K선 전체의 개시 가격에 기반하여 현재 5분 K선의 상승/하락 비율을 계산하고, 상승/하락이 설정된 1단계 범위를 초과할 때, 그에 따른 구매 또는 판매 결정을 합니다. 동시에 스톱로스 및 스톱 포스트를 설정하여 포지션을 탈퇴합니다.

만약 스톱로스가 트리거되면, 하락이 계속 확대되고 2단계 스프레즈의 트리거 조건을 넘으면, 이전 주문을 취소하고, 2단계 스프레즈 아래의 새로운 구매 또는 판매 명령을 사용하며, 스톱로스와 스톱로스를 계속 추적한다.

두 단계의 간격을 설정함으로써, 흔들리는 상황에서 일부 소음을 필터링 할 수 있으며, 더 큰 가격 변화 때만 거래 할 수 있습니다. 또한 두 번째 단계의 간격을 활성화하면 너무 자주 유발되는 경우를 줄일 수 있습니다.

전략적 이점

  • 두 단계의 간격을 사용하여 다양한 트리거 조건을 설정하여 진동하는 시장의 소음을 효과적으로 필터링하여 더 큰 변화에서만 거래 할 수 있습니다.
  • 2단계 간격의 활성화는 스톱패드가 너무 자주 작동되는 것을 효과적으로 방지할 수 있습니다.
  • 개시 가격에 기초하여 당기간의 상승과 하락을 계산하여 새로운 거래일 개시 후의 트렌드를 활용할 수 있습니다.
  • 전략의 논리는 간단하고 명확하며, 구현을 이해하기 쉽습니다.

위험과 대책

  • 큰 충격 상황에서 자주 포지션을 열고 손실로 빠져나갈 수 있으며 거래 비용이 증가합니다.
  • 2단계 간격 설정이 너무 커서 거래 기회를 놓칠 수 있습니다.
  • 스펙트럼이 너무 작아서 불필요한 거래 수를 증가시킬 수 있습니다.

대책:

  • 스탠드 변수를 최적화하여 최적의 균형을 찾습니다.
  • 매일 거래하는 횟수 제한을 늘리고, 너무 자주 거래하는 것을 피하십시오.
  • 트렌드 판단과 함께, 트렌드가 뚜렷할 때 더 급진적인 변수를 사용한다.

최적화 방향

  • 두 단계 간격의 값을 최적화하여 최적의 변수 조합을 찾습니다.
  • 다른 종과 다른 기간의 변수 차이를 연구합니다.
  • 트렌드 지표와 결합하여, 트렌드가 뚜렷할 때 더 급진적인 매개 변수를 사용합니다.
  • 매일 거래 제한을 늘리고 과도한 거래를 피하십시오.
  • 더 나은 리스크/수익률을 위해 스톱포트 최적화

요약하다

이 전략은 2단계 간격 돌파를 통해 가격 변동을 포착하고, 충격적인 상황에서 효과적으로 소음을 필터링한다. 전략 컨셉은 간단하고 명확하며, 파라미터를 최적화하면 더 좋은 효과를 얻을 수 있다. 다음 단계는 트렌드 판단 지표와 결합하여 트렌드 상황에서 전략 우위를 발휘할 수 있다.

전략 소스 코드
/*backtest
start: 2023-10-01 00:00:00
end: 2023-10-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Auto Entry Bot", overlay=true)

// Define input for the stop loss and take profit levels
stopLossPips = input.int(200, title="Stop Loss Pips", minval=1)
takeProfitPips = input.int(400, title="Take Profit Pips", minval=1)

// Calculate the percentage change from the 5-minute opening candle at 2:00 AM
var float openPrice = na
if (hour == 2 and minute == 0)
    openPrice := open
percentageChange = (close - openPrice) / openPrice * 100

// Track the cumulative percentage change
var float cumulativeChange = 0

// Define input for the percentage change trigger
triggerPercentage1 = input.float(0.25, title="Percentage Change Trigger (%)", minval=0.01, step=0.01)
triggerPercentage2 = input.float(0.35, title="Additional Trigger Percentage (%)", minval=0.01, step=0.01)

// Check for price change trigger
if (percentageChange >= triggerPercentage1)
    // Sell signal
    strategy.entry("Sell", strategy.short)
    strategy.exit("ExitSell", loss=stopLossPips, profit=takeProfitPips)
    cumulativeChange := 0  // Reset cumulative change after a trade

if (percentageChange <= -triggerPercentage1)
    // Buy signal
    strategy.entry("Buy", strategy.long)
    strategy.exit("ExitBuy", loss=stopLossPips, profit=takeProfitPips)
    cumulativeChange := 0  // Reset cumulative change after a trade

// If the price keeps hitting stop loss, activate the second trigger
if (strategy.position_size < 0 and percentageChange <= -triggerPercentage2)
    strategy.cancel("Sell")  // Cancel previous sell order
    strategy.entry("Sell2", strategy.short)
    strategy.exit("ExitSell2", loss=stopLossPips, profit=takeProfitPips)
    cumulativeChange := 0  // Reset cumulative change after a trade

if (strategy.position_size > 0 and percentageChange >= triggerPercentage2)
    strategy.cancel("Buy")  // Cancel previous buy order
    strategy.entry("Buy2", strategy.long)
    strategy.exit("ExitBuy2", loss=stopLossPips, profit=takeProfitPips)
    cumulativeChange := 0  // Reset cumulative change after a trade