추세 추종 가변 위치 그리드 전략

EMA RSI MACD ATR ADX
생성 날짜: 2024-03-29 15:23:23 마지막으로 수정됨: 2024-03-29 15:23:23
복사: 0 클릭수: 1147
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

추세 추종 가변 위치 그리드 전략

개요

이 전략은 트렌드를 따라 변동하는 포지션 그리드 전략으로, 주로 EMA, RSI 및 삼림 형태를 사용하여 트렌드 방향과 입시 시기를 판단한다. 이 전략은 삼림 형태의 개체 크기에 따라 중지 손실과 중지 위치를 조정하며, 사용자가 단지 더 많은 것을 할 수 있도록 허용한다. 단지 공백 또는 모두 공백. 이 전략은 또한 MACD를 트렌드 필터 조건으로 제공합니다.

전략 원칙

이 전략은 200주기 EMA선을 사용하여 큰 트렌드 방향을 판단합니다. 가격이 EMA 위쪽에 있을 때 상승 추세에 있고, EMA 아래에 있을 때 하향 추세에 있다고 생각합니다. 9주기 RSI는 동력을 판단하는 데 사용됩니다. RSI는 50보다 크면 다중 동력이 강하며, 50보다 작은 것은 공중 동력이 강하다고 생각합니다.

전략의 중지 및 정지 위치는 삼키기 형태의 개체 크기에 따라 결정된다. 정지 위치는 삼키기 형태의 개체 크기의 두 배이며, 입시 가격의 0.3%로 최소 정지 폭을 설정한다. 너무 작은 정지 거리가 자주 중단되는 것을 피하기 위해. 정지 위치는 정지 폭이 미리 설정된 상하를 곱하여 상하를 고정하도록 한다. 또한, 전략은 MACD를 트렌드 필터링 조건으로 제공하며, MACD 메인 라인은 신호 선 위쪽에서 다중 헤드 트렌드가 강하다고 생각할 때, 반대로 공중 헤드 트렌드가 강하다고 생각한다.

전략적 이점

  1. 트렌드 추적: 여러 지표를 사용하여 트렌드를 판단하는 전략으로, 트렌드 형성 초기에는 개입하여 트렌드 상황을 포착하는 데 도움이됩니다.

  2. 동적 중지 손해 스톱: 흡수 형태 개체 크기에 따라 중지 손해 스톱 위치를 조정, 트렌드가 강할 때 중지 공간을 확대, 트렌드가 약할 때 중지 손해 범위를 축소, 유연한 제어 포지션.

  3. 사용자가 거래 방향, 위험 선호 등과 같은 파라미터를 사용자 정의할 수 있으며, 사용자 요구에 맞게 조정할 수 있다.

  4. MACD를 트렌드 필터 조건으로 제공하여 트렌드 강도를 더욱 확인하고 진출율을 높여줍니다.

전략적 위험

  1. 트렌드 판단 오류: 전략이 여러 지표의 합동 판단을 사용하지만, 경우에 따라서는 트렌드 판단 오류가 발생할 수 있으며, 이로 인해 손실이 발생할 수 있습니다.

  2. 규모의 축소: 흡수형체가 작으면, 정지/정지 거리가 매우 가깝게 되어 수익/손실 비율이 악화되는데, 이것은 충격 상황에서 더 흔하다.

  3. 매개 변수 최적화: 다른 기준, 다른 주기 하에서, 최적의 매개 변수가 큰 차이가 있을 수 있으며, 사용자가 지속적으로 디버팅 및 최적화를 필요로 한다.

전략 최적화 방향

  1. 트렌드 판단: 트렌드 판단의 정확도를 높이기 위해 브린 밴드, 평균 방향 지수 (ADX) 와 같은 트렌드 확인 도구를 더 많이 도입할 수 있다.

  2. 스톱 최적화: ATR과 같은 변동률과 관련된 지표를 도입하고 스톱 거리를 동적으로 조정하여 너무 작은 위험을 줄이는 것을 고려하십시오.

  3. 포지션 관리: 트렌드 강점, 계정 수익 상황 등에 따라 포지션 크기를 동적으로 조정하고, 트렌드 강하고 안정적인 수익이있을 때 포지션을 늘리고, 빈번한 거래로 인한 비용을 줄인다.

  4. 다중주기, 다중 품종 협동: 트렌드 신호를 검증하는 트렌드 파악의 승률을 높이는 동시에 단일 품종 또는 주기적 위험을 분산하는 트렌드 신호를 검증하는 트렌드 신호를 검증하는 트렌드 신호를 검증하는 트렌드 신호를 검증하는 트렌드 신호를 검증하는 트렌드 신호를 검증하는 트렌드 신호를 검증하는 트렌드 신호를 검증하는 트렌드 신호를 검증하는 트렌드 신호를 검증하는 트렌드 신호를 검증하는 트렌드 신호를 검증하는 트렌드 신호를 검증하는 트렌드 신호를 검증하는 트렌드 신호를 검증하는 트렌드 신호를 검증하는 트렌드 신호를 검증하는 트렌드 신호를 검증하는 트렌드 신호를 검증하는 트렌드 신호를 검증하는 트렌드 신호를 검증하는 트렌드 신호를 검증하는 트렌드 신호를 검증하는 트렌드 신호

요약하다

이 트렌드는 트렌드 상황에서 변동 가능한 포지션 위치 격자 전략에 따라 잘 작동하며, 여러 지표를 통해 트렌드 방향과 강도를 공동으로 판단하고, 손해 중지 및 포지션을 동적으로 조정하여 트렌드를 더 잘 파악하고, 초과 수익을 얻을 수 있습니다. 그러나 추세가 불분명하거나 자주 변동하는 상황에서이 전략은 일반적으로 작동합니다. 따라서이 전략을 사용할 때, 트렌드 품종의 필터링에 중점을 두어야하며, 변동 상황에 따라 매개 변수를 조정해야합니다. 또한, 추세 판단, 손해 중지, 포지션 관리, 다주기 다품종 협동 등에 대한 추가적인 최적화 공간이 있습니다.

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

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © niosupetranmartinez
//@version=5
strategy("Trend Follower Scalping Strategy", overlay=true, process_orders_on_close = true)

// Inputs
emaLen = input(200, 'EMA Length')
rsiLen = input(9, 'RSI Length')
trendDirection = input.string("Both", 'Trend Direction', options=["Long Only", "Short Only", "Both"])
risk_reward_ratio = input(2, 'Risk Reward Ratio')
useMacdFilter = input.bool(true, "Use MACD Filter")
macdTimeframe = input("5", "MACD Timeframe")

// EMA and RSI
ema200 = ta.ema(close, emaLen)
customRsi = ta.rsi(close, rsiLen)

// MACD Filter
[macdLine, signalLine, _] = request.security(syminfo.tickerid, macdTimeframe, ta.macd(close, 12, 26, 9))


// Majority Body Candle Identification Function
isMajorityBodyCandle(candleOpen, candleClose, high, low) =>
    bodySize = math.abs(candleClose - candleOpen)
    fullSize = high - low
    bodySize / fullSize > 0.6

// Engulfing Patterns
isBullishEngulfing = close > open and close[1] < open[1] and (close - open) > (open[1] - close[1]) and isMajorityBodyCandle(open, close, high, low)
isBearishEngulfing = close < open and close[1] > open[1] and (open - close) > (close[1] - open[1]) and isMajorityBodyCandle(open, close, high, low)

// Entry Conditions with MACD Filter
longCondition = close > ema200 and customRsi > 50 and isBullishEngulfing and (not useMacdFilter or macdLine > signalLine)
shortCondition = close < ema200 and customRsi < 50 and isBearishEngulfing and (not useMacdFilter or macdLine < signalLine)

// Trade Execution
var float stopLossPrice = na
var float entryPrice = na

// Long Entry
if (longCondition and (trendDirection == "Long Only" or trendDirection == "Both"))
    entryPrice := close
    engulfingBodySize = math.abs(close - open)
    minimumStopLoss = entryPrice * 0.997
    calculatedStopLoss = entryPrice - (engulfingBodySize * 2)
    stopLossPrice := calculatedStopLoss < minimumStopLoss ? calculatedStopLoss : minimumStopLoss
    risk = entryPrice - stopLossPrice
    takeProfitPrice = entryPrice + (risk_reward_ratio * risk)
    strategy.entry("Long", strategy.long)
    strategy.exit("Exit Long", "Long", stop = stopLossPrice, limit = takeProfitPrice)

// Short Entry
if (shortCondition and (trendDirection == "Short Only" or trendDirection == "Both"))
    entryPrice := close
    engulfingBodySize = math.abs(open - close)
    minimumStopLoss = entryPrice * 1.003
    calculatedStopLoss = entryPrice + (engulfingBodySize * 2)
    stopLossPrice := calculatedStopLoss > minimumStopLoss ? calculatedStopLoss : minimumStopLoss
    risk = stopLossPrice - entryPrice
    takeProfitPrice = entryPrice - (risk_reward_ratio * risk)
    strategy.entry("Short", strategy.short)
    strategy.exit("Exit Short", "Short", stop = stopLossPrice, limit = takeProfitPrice)

// Plotting
plot(ema200, color=color.blue, linewidth=2, title="EMA 200")