이중 이동 평균 전략

저자:차오장, 날짜: 2024-02-21 14:43:26
태그:

img

전반적인 설명

이 전략은 채널을 형성하고 트렌드 방향을 파악하기 위해 이중 이동 평균을 사용합니다. 가격은 채널을 통과 할 때 거래 신호가 생성됩니다. 또한 거짓 브레이크오웃을 필터하기 위해 RSI 지표가 통합됩니다. 런던 세션 동안만 하루 최대 5 거래와 최대 2%의 일일 손실로 거래됩니다.

전략 논리

이 전략은 가장 높은 가격과 가장 낮은 가격에서 계산되는 길이 5의 두 개의 이동 평균을 사용하여 가격 채널을 형성합니다. 긴 신호는 상단보다 높은 가격, 하단보다 낮은 가격에서 닫을 때 신호가 작동합니다.

거짓 브레이크오웃을 피하기 위해, RSI 지표는 과반 구매/ 과반 판매 수준을 측정하는 데 추가됩니다. RSI가 80보다 높으면만 장거리, RSI가 20 이하라면만 단축합니다.

또한, 전략은 런던 세션 (3am - 11am) 동안만 거래되며 하루에 최대 5 개의 주문과 하루에 최대 2%의 자본 손실이 있습니다.

이점 분석

트렌드를 잡으세요

이중 MA 채널은 가격 트렌드 방향을 효과적으로 감지 할 수 있습니다. 상부 대역을 깨는 것은 상승 추세를 포착하고, 하부 대역을 깨는 것은 하향 추세를 포착합니다.

거짓 탈출을 줄이세요

RSI 과잉 구매/ 과잉 판매 필터를 사용하면 가격 변동으로 인한 일부 잘못된 파업 신호가 감소합니다.

효과적인 위험 관리

주요 세션 중만 거래하고 하루에 최대 주문 제한 거래 빈도. 최대 2%의 일일 손실은 또한 위험 관용을 정의합니다.

위험 분석

변동성이 있는 거짓 파업

상당한 가격 변동은 일부 잘못된 브레이크아웃 신호를 유발하여 불필요한 손실로 이어질 수 있습니다. 매개 변수를 최적화하고 이러한 위험을 줄이기 위해 더 많은 필터를 추가 할 수 있습니다.

고정 SL/TP 위험

SL/TP를 위해 고정 피프를 사용하는 것은 변동적인 시장에서 수익을 중단하거나 놓칠 위험이 있습니다. 대신 비율 기반 또는 동적 SL/TP를 고려하십시오.

제한된 거래 세션 위험

고정 세션 중만 포지션을 열면 다른 시간에 잠재적인 거래를 놓칠 위험이 있습니다. 세션 확장 또는 실시간 상황에 따라 동적으로 조정하는 것을 고려하십시오.

최적화 방향

매개 변수 조정

가장 좋은 조합을 찾기 위해 MA 길이, RSI 수치, 고정 SL / TP 피프 등과 같은 매개 변수를 최적화하십시오.

추가 필터

신호를 확인하기 위해 더 많은 지표 또는 조건을 추가하십시오. 예를 들어 더 큰 부피, BB 너비 감소 등, 거짓 파장을 피하기 위해.

동적 SL/TP

일방적인 시장 움직임을 더 잘 처리하기 위해 고정 피프 대신 비율 기반 또는 동적 스톱 로스/이익 취득을 사용하십시오.

수동 검토

신호를 수동으로 검토하거나, 포착되는 것을 방지하기 위해 확인된 탈출에만 입력하세요.

결론

이 전략은 트렌드를 결정하기 위해 듀얼 MA 채널과 거짓 브레이크오웃을 필터하기 위해 RSI를 사용하여 상당히 간단하고 실용적입니다. 거래 시간 및 손실 제한을 통해 위험 관리가 위험 관용을 정의합니다. 아직 개선할 여지가 있습니다. 예를 들어 매개 변수 조정, 더 나은 SL / TP 메커니즘 등.


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-16 23:59:59
period: 1h
basePeriod: 15m
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/
// © SoftKill21
//@version=4
strategy(title="Moving Average", shorttitle="MA", overlay=true)
timeinrange(res, sess) => time(res, sess) != 0
len = input(5, minval=1, title="Length")
src = input(high, title="Source")
offset = input(title="Offset", type=input.integer, defval=0, minval=-500, maxval=500)
out = sma(src, len)
plot(out, color=color.white, title="MA", offset=offset)

len2 = input(5, minval=1, title="Length")
src2 = input(low, title="Source")
offset2 = input(title="Offset", type=input.integer, defval=0, minval=-500, maxval=500)
out2 = sma(src2, len2)
plot(out2, color=color.white, title="MA", offset=offset2)

length = input( 5 )
overSold = input( 10 )
overBought = input( 80 )
price = input(close, title="Source RSI")

vrsi = rsi(price, length)

longcond= close > out and close > out2 and vrsi > overBought
shortcont = close < out and close < out2 and vrsi < overSold
tp=input(150,title="tp")
sl=input(80,title="sl")


strategy.entry("long",1,when=longcond)
//strategy.close("long",when= close < out2)
strategy.exit("long_exit","long",profit=tp,loss=sl)

strategy.entry("short",1,when=shortcont)
//strategy.close("short",when=close >out)
strategy.exit("short_exit","short",profit=tp,loss=sl)

// maxOrder = input(6, title="max trades per day")
// maxRisk = input(2,type=input.float, title="maxrisk per day")
// strategy.risk.max_intraday_filled_orders(maxOrder)

// strategy.risk.max_intraday_loss(maxRisk, strategy.percent_of_equity)


// strategy.close_all(when =not timeinrange(timeframe.period, "0300-1100"))






더 많은