이중 이동 평균 전략 기반


생성 날짜: 2024-02-21 14:43:26 마지막으로 수정됨: 2024-02-21 14:43:26
복사: 0 클릭수: 606
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

이중 이동 평균 전략 기반

개요

이 전략은 트렌드의 방향을 잡기 위해 쌍 이동 평균을 사용하여 통로를 형성합니다. 가격이 통로를 돌파 할 때 거래 신호를 생성합니다. 또한 RSI 지표가 가짜 돌파구를 필터링하는 것과 결합합니다. 런던 거래 시간에만 작동하며 하루에 최대 5 개, 최대 손실은 2%를 초과하지 않습니다.

전략 원칙

이 전략은 두 개의 길이 5의 이동 평균을 사용하며, 하나는 최고 가격에서 계산하고, 하나는 최저 가격에서 계산하여 가격 채널을 형성한다.

가짜 돌파구를 필터링하기 위해 RSI 지표를 도입하여 과매매를 판단합니다. RSI가 80보다 높을 때만 더 많이하고 20보다 낮은 경우만 더 많이 할 수 있습니다.

또한, 전략은 런던 거래 시간 (3시부터 11시까지) 에서만 거래되며, 하루에 최대 5개의 주문이 이루어지며, 최대 손실은 주식권익의 2%를 초과하지 않는다.

우위 분석

트렌드를 잡는 것

이중 이동 평균은 트렌드 채널을 구성하여 가격 트렌드 방향을 더 잘 판단할 수 있다. 가격이 위쪽으로 채널을 돌파 할 때, 가격의 상승 트렌드를 포착하고, 가격이 아래쪽으로 채널을 돌파 할 때, 가격의 하락 트렌드를 포착한다.

허위 돌파구를 줄여라

RSI와 결합하여 과매매 영역을 판단하면 가격 변동으로 인한 가짜 돌파구를 줄일 수 있습니다.

위험을 효과적으로 조절하는 방법

전략은 주로 활발한 거래 시간대에만 거래하며, 하루에 최대 5 개의 주문은 거래 주파수를 효과적으로 제어합니다. 최대 손실을 2%로 설정하면 하루 최대 손실을 허용 범위 내에서 제어 할 수 있습니다.

위험 분석

가격 변동이 큰 경우 가짜 돌파구 위험

가격의 큰 변동이 있을 때, 어떤 가짜 브레이크 신호가 발생할 수 있으며, 이는 불필요한 거래 손실을 초래할 수 있다. 파라미터를 조정하거나, 필터 조건을 추가함으로써 이 위험을 줄일 수 있다.

고정된 손실을 막는 것은 위험을 감수하기 쉽다

전략은 고정된 수의 점수 스톱 로드 을 사용한다. 가격이 크게 변동할 때 고정된 점수 스톱 로드 이 쉽게 잡힐 수 있으며, 이에 대해 비율 또는 동적 스톱 로드 을 사용한다.

거래 시간 제한 위험

전략은 고정 거래 시간에만 포지션을 열고, 그 시간에 신호가 발생하지 않으면 다른 시간에 잠재적인 거래 기회를 놓치게됩니다. 거래 시간을 적절히 확장하거나 실시간 상황에 따라 동적으로 조정하는 것을 고려 할 수 있습니다.

최적화 방향

변수 최적화

이동 평균 길이, RSI 변수, 고정 스톱포인트 수 등에 대해 최적화하여 최적의 변수 조합을 찾을 수 있다.

필터링 조건을 추가

다른 지표 또는 조건은 브레이크 신호를 2차 검증하기 위해 추가할 수 있습니다. 예를 들어 거래량을 늘리고, 브린 라인 채널을 축소하여 가짜 브레이크를 줄일 수 있습니다.

동적 정지

퍼센티지 스톱 또는 다이내믹 스톱 전략은 단순한 고정 포인트 스톱 대신 일방적인 행동의 위험을 더 잘 보호 할 수 있습니다.

인공적인 판단과 함께

신호를 수작업으로 확인하거나, 침입이 확인된 후에만 입구에 들어서야 함.

요약하다

이 전략은 전반적으로 간단하고 실용적이며, 쌍용 이동 평균을 통해 통로 판단 트렌드 방향; 동시에 RSI 지표는 일부 가짜 돌파구를 효과적으로 필터링 할 수 있습니다. 위험 제어 측면에서 거래 시간을 제한하고 최대 손실은 전반적인 위험을 제어 할 수 있습니다. 최적화 공간은 비교적 넓고, 변수 최적화, 상쇄 장치 업그레이드 등에서 개선 할 수 있습니다.

전략 소스 코드
/*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"))