사이클에 내재된 모멘텀 전략


생성 날짜: 2023-09-20 14:59:37 마지막으로 수정됨: 2023-09-20 14:59:37
복사: 1 클릭수: 652
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

개요

이 전략의 핵심 아이디어는 안에 포함된 사이클 사이클의 K선 형태를 이용해서 트렌드 방향을 결정하고, 이를 시작 신호로 사용한다. 전의 K선 안에 포함된 사이클 사이클의 형태가 나타나면, 우리는 현재가 트렌드 전환의 시점이라고 추론할 수 있다. 이 시점에서는 우리는 을 돌파하기 전의 최고점에 더 많이 하거나, 을 돌파하기 전의 낮은 곳에 공백을 만들고, 잘 설정된 스피드 및 스톱드를 사용할 수 있다.

전략 원칙

  1. 내재된 주기 사이의 K선 형태가 나타나는지 판단한다. 구체적인 판단 논리는: 현재 K선의 고점은 이전 K선의 고점보다 낮고, 현재 K선의 저점은 이전 K선의 저점보다 높다.

  2. 이전 K선의 하락상황을 판단한다. 종결가격이 개시가격보다 높으면 ??; 종결가격이 개시가격보다 낮으면 하락한다.

  3. 만약 이전 K선이 유동적이고, 내재된 사이클의 형태가 나타난다면, 우리는 이전 K선 고점의 10% 범위에서 구매 중지 명령을 설정한다.

  4. 만약 전 K 선이 하락하고, 내재된 사이클 사이 형태가 나타나면, 전 K 선의 하위점의 10% 범위에서 판매 중지 명령을 설정한다.

  5. 일단 정지표가 포지션을 형성하도록 촉발되면, 우리는 정지표와 정지표를 설정한다. 구체적인 정지거리와 정지거리는 모두 전 K선 진폭의 일정한 비율이다.

  6. 만약 다시 한 번 내재적 사이클의 형태가 나타난다면, 우리는 우선적으로 청산하고, 그 다음에는 새로운 상표를 재설정한다.

전략적 강점 분석

이 전략의 장점은 다음과 같습니다.

  1. K선 내의 논리를 이용하여, 진입 시기를 정확하게 파악한다. 내재된 사이클 사이의 형태는 종종 트렌드 반전이나 가속화가 곧 일어날 것을 의미하며, 이것은 우리에게 더 나은 진입 시기를 제공한다.

  2. 전략 규칙은 명확하고 이해하기 쉽고 실제적으로 작동하기 쉽습니다.

  3. 이전 주기의 높은 낮은 점을 사용하여 스톱 스톱 위치를 설정하여 위험을 제어 할 수 있습니다.

  4. 새로운 트렌드를 따라가기 위해 새로운 랭킹을 설정할 수 있습니다.

전략적 위험 분석

이 전략에는 몇 가지 위험도 있습니다.

  1. 사이클 사이에 포함된 형태는 반드시 트렌드 반전이나 가속화를 초래하지 않으며, 잘못된 신호의 위험이 있다.

  2. 스탠더드 거리 설정이 너무 작아서 큰 흔들림을 견딜 수 없습니다.

  3. 하지만, 이 경우, 이 장벽이 너무 커서 수익을 낼 수 없는 경우도 있습니다.

  4. 이 전략은 동향상태에 의존하고 있으며, 종합상태에서 수익을 얻을 수 있는 공간이 제한되어 있다.

  5. 트랜잭션의 빈도와 비용이 너무 높을 수 있습니다.

대책:

  1. 다른 지표 필터 내의 사이클 사이에 있는 형태를 확인하는 신호와 결합하여 가짜 신호 비율을 줄일 수 있다.

  2. 스탠드피스 거리는 적절하게 허용되지만, 전 K선 진폭의 50%를 초과하지 않는다.

  3. K선 진폭의 약 50%를 줄일 수 있다.

  4. 자금 관리를 최적화하고, 단일 포지션을 줄이고, 청산 상황에 대응한다.

  5. 입시 조건의 적절한 완화, 거래의 수를 줄여주세요.

전략 최적화 방향

이러한 전략은 다음과 같은 측면에서 최적화될 수 있습니다.

  1. 트렌드 지표와 함께 트렌드 방향을 판단하고, 정리 과정에서 자주 거래하는 것을 피한다. 예를 들어 MACD 판단 트렌드에 가입하면, MACD 동향일 때만 입시를 고려한다.

  2. 손해 차단 전략을 최적화하여 이동 손해 차단 또는 수익 보호 손해 차단과 같은 방법을 사용하여 손해 차단을 더 탄력하게하십시오.

  3. 다른 스톱 스톱 스 비율 설정을 테스트하여 최적의 파라미터 조합을 찾습니다.

  4. 재입장 메커니즘에 가입하여, 상쇄출장 후 다시 트렌드를 잡습니다.

  5. 포지션 관리를 최적화하고, 시장의 변동에 따라 단일 포지션을 조정한다.

  6. 고정자금 사용률 등으로 자금 관리를 최적화하십시오.

  7. 이 전략의 효과를 다른 품종과 시간 주기에서 테스트한다.

요약하다

종합적으로 설명하자면, 이것은 주기에 포함된 형태를 판단하는 트렌드 전환점을 활용하여 반전 트렌드를 포착하기 위해 상표를 설정하는 전략이다. 그것은 진입 시기가 명확하고, 전략 규칙이 간단하며, 위험을 제어할 수 있는 장점이 있지만, 약간의 가짜 신호 위험과 최적화 공간이 있습니다. 우리는 트렌드 지표, 최적화된 스톱 스팟, 위치 조정 등을 결합하여 전략의 안정성과 수익성을 더욱 향상시킬 수 있습니다. 이 전략은 추세적 상황에 더 적합하며, 특정 응용에서는 시장의 다른 특성에 대한 최적화 테스트가 필요하며, 그것의 최대 효과를 발휘합니다.

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

//@version=3

// Inside Bar Momentum Strategy
// As defined on Babypips.com
// https://www.babypips.com/trading/forex-inside-bar-20170113

// strategy("Babypips: Inside Bar Momentum Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=5)

From_Year  = input(defval = 2018, title = "From Year")
From_Month = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
From_Day   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
To_Year    = input(defval = 9999, title = "To Year")
To_Month   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
To_Day     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
Start  = timestamp(From_Year, From_Month, From_Day, 00, 00)  // backtest start window
Finish = timestamp(To_Year, To_Month, To_Day, 23, 59)        // backtest finish window
Window = true

Stop_Buy_Perc  = input(10, "Stop Buy Order Percentage From Previous Candle's Range")/100
Stop_Loss_Perc = input(20, "Stop Loss Distance from High/Low of Previous Candle")/100
Take_Prof_Perc = input(80, "Take Profit Distance from High/Low of Previous Candle")/100

Risk = input(2, "Percentage Of EQUITY to risk per trade", step=0.1, minval=0, maxval=100)/100

Inside_Bar = high[1] > high[0] and low[1] < low[0]
Prev_Range = high[1] - low[1]
Bullish = open[1] < close[1]
Bearish = open[1] > close[1]

// Get Key Levels 
Long_Stop_Buy_Level   = high[1] + (Prev_Range * Stop_Buy_Perc)
Short_Stop_Buy_Level  = low[1]  - (Prev_Range * Stop_Buy_Perc)
Long_Stop_Loss_Level  = high[1] - (Prev_Range * Stop_Loss_Perc)
Short_Stop_Loss_Level = low[1]  + (Prev_Range * Stop_Loss_Perc)
Long_Take_Prof_Level  = high[1] + (Prev_Range * Take_Prof_Perc)
Short_Take_Prof_Level = low[1]  - (Prev_Range * Take_Prof_Perc)

// Position Sizing
long_qty = floor((strategy.equity * Risk) / (Long_Stop_Buy_Level - Long_Stop_Loss_Level))
short_qty = floor((strategy.equity * Risk) / (Short_Stop_Loss_Level - Short_Stop_Buy_Level))

// -------------------------- LONG CONDITIONS --------------------------------//
// The first candlestick must be bullish (green or white) and if the second 
// candlestick is completely contained by the first, set a buy stop order at 
// the first candle’s high plus 10% of its range (high minus low).

// Place the stop loss at the first candle’s high minus 20% of its range 
// and set the target at the first candle’s high plus 80% of its range

// If another inside bar pattern forms, the current position should be closed 
// or the pending buy/sell order must be canceled and entry orders must be 
// updated to the latest candles.

Long_Condition = Window and Inside_Bar and Bullish
if (Long_Condition)
    // Incase we still have a buy stop order in the market
    strategy.cancel_all()
    // Close any existing positions according to the rules
    strategy.close_all()
    strategy.entry("Bullish IB", strategy.long, stop=Long_Stop_Buy_Level)
    strategy.exit("Bullish Exit","Bullish IB", stop=Long_Stop_Loss_Level, limit=Long_Take_Prof_Level)
    
// -------------------------- SHORT CONDITIONS -------------------------------//
// The first candlestick must be bearish (red or black) and if the second 
// candlestick is completely contained by the first, set a sell stop order at 
// the first candle’s low minus 10% of its range (high minus low).

// Place the stop loss at the first candle’s low plus 20% of its range and 
// set the target at the first candle’s low minus 80% of its range.

// If another inside bar pattern forms, the current position should be closed 
// or the pending buy/sell order must be canceled and entry orders must be 
// updated to the latest candles.

Short_Condition = Window and Inside_Bar and Bearish
if (Short_Condition)
    // Incase we still have a buy stop order in the market
    strategy.cancel_all()
    // Close any existing positions according to the rules
    strategy.close_all()
    strategy.entry("Bearish IB", strategy.short, stop=Short_Stop_Buy_Level)
    strategy.exit("Bearish Exit","Bearish IB", stop=Short_Stop_Loss_Level, limit=Short_Take_Prof_Level)
    
// ----------------------------- PLOTTING ------------------------------------//
plotshape(Inside_Bar, style=shape.arrowdown, location=location.abovebar, color=purple)