리소스 로딩... 로딩...

RSI와 이동 평균 조합 MT5 마틴게일 스칼핑 전략

저자:차오장, 날짜: 2023-12-01 17:56:56
태그:

img

전반적인 설명

이 전략은 RSI와 이동 평균 조합 MT5 마틴게일 스칼핑 전략이라고 불린다. 이 전략은 이중 이동 평균 지표와 상대 강도 지표 (RSI) 지표를 결합하여 고주파 스칼핑 거래를 구현하며, 전략의 전반적인 위험 수준을 제어하기 위해 마틴게일 포지션 평균화 원리를 통합합니다.

전략 논리

  1. 이 전략은 먼저 주식 지표를 사용하여 매개 변수 오시레이터Period를 5로 설정한 사용자 정의 오시레이터를 그리며 통합 영역을 구축하기 위해 상부 및 하부 임계값 k1 및 k2를 설정합니다. 주식 지표 값이 통합 영역에 들어갈 때, 역전 기회가있을 수 있음을 나타냅니다.

  2. 다음으로, RSI 지표는 과잉 구매 및 과잉 판매 현상을 식별하기 위해 통합됩니다. RSI 지표는 상위 및 하위 한도의 시장 침투 시기를 효과적으로 식별 할 수 있습니다. 이 전략은 RSI의 과잉 구매 라인을 70로 설정하고 과잉 판매 라인을 30로 설정합니다.

  3. 또한 전략은 트렌드 활동 요인을 주요 트렌드 필터로 도입합니다. 스토카스틱 지표와 RSI가 동시에 반전 조건을 충족하면 충격 시장에서 잘못된 파업으로 인한 손실을 피하기 위해 주요 트렌드가 여전히 충분히 활성화되어 있는지 여부를 확인합니다.

  4. 마지막으로, 전략은 일반적인 위험을 제어하기 위해 고전적인 마르틴게일 포지션 평균화 원리를 사용합니다. 거래량을 동적으로 조정함으로써 초기 포지션이 손실을 입었을 때 추가 포지션을 배치하여 절제점을 달성하고 따라서 최대 유출을 제어합니다.

이점 분석

  1. RSI 지표의 통합은 과도한 구매와 과도한 판매 현상을 효과적으로 식별하여 반전 시기를 판단하는 데 도움이 될 수 있습니다.

  2. 오시일레이터를 조정해서 연대 영역을 결정하면 일부 잘못된 브레이크오웃 신호를 필터링할 수 있습니다.

  3. 주요 트렌드 필터를 설정하면 변동적인 시장에서 손실을 피할 수 있습니다.

  4. 마틴게일 포지션 평균화는 전략의 최대 유출을 효과적으로 제어하고 지속 가능한 수익성의 핵심입니다.

위험 분석

  1. 비정상적인 시장 조건에서 RSI 지표가 실패하여 과소 구매 및 과소 판매 조건에 대한 잘못된 판단을 일으킬 수 있습니다.이 위험은 특히 주목해야합니다.

  2. 오시일레이터의 잘못된 매개 변수 설정은 과도한 신호 필터링 또는 잘못된 브레이크의 식별으로 이어질 수 있습니다. 이것은 역사적 시장 데이터에 기초한 매개 변수 최적화를 필요로합니다.

  3. 마틴게일 포지션 평균화 는 특정 환경 하 에서 상쇄적 인 손실 을 초래 합니다. 추가 롯의 수가 너무 크면, 그것은 계좌 고갈의 큰 위험을 야기 합니다.

  4. 이 전략은 15분 GBPUSD 통화 쌍 데이터에서만 검증되었습니다. 다른 시장 및 다른 기간에는 데이터 적합 위험이있을 수 있습니다.

최적화 방향

  1. 현재 시장 환경에 더 적합한 매개 변수를 찾기 위해 RSI의 매개 변수를 최적화하십시오.

  2. 오시일레이터의 매개 변수를 테스트하고 최적화하여 통합 영역을 더 정확하게 판단 할 수 있습니다.

  3. 스톱 로스 로직을 추가합니다. 손실이 특정 수준에 도달하면 손실을 적극적으로 중지하여 단일 손실을 효과적으로 제어합니다.

  4. 주요 트렌드 필터의 설정 규칙을 최적화하여 역전 기회를 놓치지 않도록하십시오.

  5. 다른 추가 위치 사이징 설정을 테스트. 추가 금액이 빠른 손실을 일으킬 너무 크지 않도록해야합니다.

요약

이 전략은 이중 이동 평균 지표, RSI 지표 및 사용자 지정 오시레이터를 결합하여 단기간에 상위 및 하위 경계 돌파 현상을 판단하고 효율적인 스칼핑 거래를 위해 잘못된 브레이크오프를 피하기 위해 주요 트렌드 필터를 사용합니다. 동시에 전반적인 위험 수준을 제어하기 위해 고전적인 마틴게일 위치 평균화 원칙이 도입됩니다. 전략은 매개 변수 최적화 및 엄격한 위험 관리 후에 안정적인 수익을 창출 할 수있는 잠재력을 가지고 있습니다.


/*backtest
start: 2022-11-24 00:00:00
end: 2023-11-30 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © cloudofw

//@version=5
strategy("F2.2 Martingale Scalping Strategy", overlay=true)

// Input parameters
rsiOverbought = input.int(70, "RSI Overbought Threshold")
rsiOversold = input.int(30, "RSI Oversold Threshold")
oscillatorPeriod = input.int(5, "Period for oscillator")
k1 = input.float(0.2, "K1 for oscillator's zone")
k2 = input.float(0.5, "K2 for oscillator's zone")
trendActivity = input.float(1.0, "Main Trend filter", minval=0.1)
decreasePerOrder = input.float(0.1, "Trend filter decrease per order", minval=0.01)

// Calculate custom oscillator and RSI
oscillator = ta.stoch(close, high, low, oscillatorPeriod)
rsiValue = ta.rsi(close, 14)

zoneHigh = 100 - k1 * 100
zoneLow = k2 * 100

// Entry conditions
longCondition = oscillator < zoneLow and trendActivity > 0 and rsiValue < rsiOversold
shortCondition = oscillator > zoneHigh and trendActivity > 0 and rsiValue > rsiOverbought

// Martingale logic
var lot_multiplier = 1.0
var last_lot_size = strategy.equity * 0.01
var trade_1_profit = 0.0
if (strategy.position_size != 0)
    lot_multiplier := last_lot_size / strategy.position_size < 1.5 ? lot_multiplier * 1.5 : 1.0
    trade_1_profit := strategy.grossprofit
else
    lot_multiplier := 1.0
    trade_1_profit := 0.0
lot_size = strategy.equity * 0.01 * lot_multiplier + trade_1_profit
last_lot_size := lot_size

// Trading logic
if longCondition and strategy.position_size == 0
    strategy.entry("Long", strategy.long)
    
if shortCondition and strategy.position_size == 0
    strategy.entry("Short", strategy.short)

// Exit conditions
if longCondition == false and strategy.position_size > 0
    strategy.close("Long")

if shortCondition == false and strategy.position_size < 0
    strategy.close("Short")

// Indicators on chart
plotshape(series=longCondition, title="Buy Entry", location=location.belowbar, color=color.green, style=shape.labelup, text="Buy")
plotshape(series=shortCondition, title="Sell Entry", location=location.abovebar, color=color.red, style=shape.labeldown, text="Sell")

plot(oscillator, color=color.blue, title="Oscillator")
hline(zoneHigh, "Upper Zone", color=color.red)
hline(zoneLow, "Lower Zone", color=color.green)


더 많은

만약 우리가 이 모형을 직접 복사하면, 만약 우리가 이 모형을 직접 복사할 때, 만약 우리가 이 모형의 모형에 도달했을 때, 만약 우리가 이 모형의 모형에 도달했을 때,