두 배 강한 지표 전략

저자:차오장, 날짜: 2023-11-20 09:47:41
태그:

img

전반적인 설명

이 전략은 이동 평균 회전 격차 (MACD) 지표와 상대적 강도 지표 (RSI) 지표를 결합하여 반전 기회를 잡기 위해 구매 및 판매 조건을 설정합니다.

전략 논리

  1. 빠른 라인, 느린 라인 및 신호 라인을 포함한 MACD 표시기를 계산하십시오. 빠른 라인과 느린 라인 사이의 크로스오버는 거래 신호입니다.

  2. RSI 지표를 계산하고 과반 구매 및 과반 판매의 임계 값을 설정합니다. RSI 지표는 과반 구매 및 과반 판매 조건을 결정할 수 있습니다.

  3. MACD의 크로스오버 신호와 RSI의 과잉 구매/ 과잉 판매 판독을 결합하여 구매 및 판매 조건을 구상합니다.

    • 구매 조건: MACD 빠른 선은 느린 선 (황금 십자) 위를 넘어서고 RSI 지표는 지나친 구매 구역에서 다시 떨어지고 반전을 나타냅니다.

    • 판매 조건: MACD 빠른 라인은 느린 라인 (죽음 십자가) 아래로 넘어가고 RSI 지표는 과도한 구매 구역으로 들어가 반전을 신호합니다.

  4. 이것은 두 강력한 지표의 강점을 활용하여 전환점에 정확하게 구매 및 판매 할 수 있습니다.

이점 분석

  1. MACD는 트렌드와 거래 기회를 식별할 수 있습니다. RSI는 과잉 구매 / 과잉 판매 조건을 측정합니다. 둘 다 사용하면 정확도가 향상됩니다.

  2. 두 개의 표시기를 사용하면 하나의 표시기로 발생할 수 있는 잘못된 신호를 필터링합니다.

  3. MACD가 RSI와 결합되면 반전 전에 구매하고 반전 후 판매하여 회전을 포착 할 수 있습니다.

  4. 이 전략은 기온이 적고, 트렌드를 추적하고 역전을 유연하게 추적합니다.

위험 분석

  1. MACD는 불안정한 시장에서 잘못된 신호를 줄 수 있습니다. RSI 매개 변수는 잘못된 신호를 피하기 위해 최적화되어야합니다.

  2. 단기적인 변동은 지점을 멈추게 하고 손실을 초래할 수 있습니다.

  3. RSI와 MACD 매개 변수는 너무 많은 신호 또는 너무 적은 신호를 피하기 위해 최적화가 필요합니다.

  4. 엄격한 위험과 자금 관리는 실시간 거래에 매우 중요합니다.

최적화 방향

  1. 가장 좋은 조합을 위해 MACD 빠른 / 느린 라인 매개 변수를 최적화하십시오.

  2. 잘못된 신호를 방지하기 위해 RSI 과잉 구매/ 과잉 판매 문턱을 최적화합니다.

  3. 단일 거래 위험을 통제하기 위해 스톱 로스를 추가합니다.

  4. 추가 확인을 위해 볼링거 밴드 (Bollinger Band) 또는 KDJ (KDJ) 같은 필터를 추가하는 것을 고려하십시오.

  5. 브레이크오웃이나 트렌드를 따르는 것과 같은 다양한 진입/출출 전략을 테스트합니다.

요약

이 전략은 반전에 대한 MACD와 RSI의 강점을 결합합니다. 그러나 매개 변수 조정, 위험 통제 및 돈 관리는 라이브 성과에 핵심입니다. 유연성은 다른 시장 조건에 적합하고 라이브 테스트 및 추적 가치가 있습니다.


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

//@version=5
// © sabirt
strategy(title='MACD and RSI', overlay=true, shorttitle='MACD&RSI')
//MACD Settings
fastMA = input.int(title='Fast moving average', defval=12, minval=1)
slowMA = input.int(title='Slow moving average', defval=26, minval=1)
signalLength = input.int(9, minval=1)

//RSI settings
RSIOverSold = input.int(35, minval=1)
RSIOverBought = input.int(80, minval=1)
src = close
len = input.int(14, minval=1, title='Length')
up = ta.rma(math.max(ta.change(src), 0), len)
down = ta.rma(-math.min(ta.change(src), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - 100 / (1 + up / down)
wasOversold = rsi[0] <= RSIOverSold or rsi[1] <= RSIOverSold or rsi[2] <= RSIOverSold or rsi[3] <= RSIOverSold or rsi[4] <= RSIOverSold or rsi[5] <= RSIOverSold
wasOverbought = rsi[0] >= RSIOverBought or rsi[1] >= RSIOverBought or rsi[2] >= RSIOverBought or rsi[3] >= RSIOverBought or rsi[4] >= RSIOverBought or rsi[5] >= RSIOverBought



[currMacd, _, _] = ta.macd(close[0], fastMA, slowMA, signalLength)
[prevMacd, _, _] = ta.macd(close[1], fastMA, slowMA, signalLength)
signal = ta.ema(currMacd, signalLength)

avg_1 = math.avg(currMacd, signal)
crossoverBear = ta.cross(currMacd, signal) and currMacd < signal ? avg_1 : na
avg_2 = math.avg(currMacd, signal)
crossoverBull = ta.cross(currMacd, signal) and currMacd > signal ? avg_2 : na

strategy.entry('buy', strategy.long, when=crossoverBull and wasOversold)
strategy.close('buy', when=crossoverBear and wasOverbought)



더 많은