
이 전략은 평균선, MACD 및 RSI와 같은 여러 지표를 조합하여 여러 시간 프레임에 걸쳐 트렌드 방향을 식별하여 SPX500 지수에 대한 트렌드 추적 거래를 구현합니다.
10일 간단한 이동 평균을 사용하여 가격 트렌드 방향을 판단하십시오. 가격이 10일 선을 넘을 때 상승하고, 하향을 넘을 때 하락하십시오.
긍정과 부정 양방향 MACD 판단 동력을 적용한다. 12일과 21일 지수 이동 평균의 차이를 계산하고, 평균의 차이를 통해 빠른 느린 선을 교차하여 매매 신호를 식별한다. 빠른 선은 느린 선을 뚫고 상향, 하향을 뚫고 하향한다.
14일 RSI와 50일 평균선을 계산합니다. RSI 위쪽은 평균선이 보이스 신호이고 아래쪽은 보이스 신호입니다.
1분, 3분, 5분 타임프레임으로 트렌드 일관성을 확인한다.
가격이 상단 10일선을 통과할 때, RSI 상단 평균선을 통과할 때, MACD 단선 상단 느린 선을 통과할 때 구매 신호가 발생한다. 가격이 상단 10일선을 통과할 때, RSI 상단 평균선을 통과할 때, MACD 단선 상단 느린 선을 통과할 때 판매 신호가 발생한다.
다중 지표 조합은 트렌드를 식별하여 신호의 정확성을 향상시킨다. 10일 평균선은 주 트렌드 방향을 판단하고, MACD는 동력이 강하다고 판단하고, RSI는 과매매를 확인한다. 지표 조합은 서로 확인하여 잘못된 거래를 줄일 수 있다.
다중 시간 프레임 확인, 시장 소음에서 착각하는 것을 피하십시오. 1분, 3분, 5분 시간 프레임 이중 검증, 신호 동시 발생을 보장하고, 가짜 신호를 필터링하십시오.
그래픽 판단 형태와 결합하여 직관적으로 신뢰할 수 있다. 그래픽은 가격 형태 특성을 판단하는 데 도움을 주며, 매매점 극한 지역을 피하고, 손실 위험을 줄인다.
거래 주파수는 적당하며 지수 거래 특성에 부합한다. 10일 평균선을 주요 판단 지표로 사용하여 거래 주파수는 너무 높지 않으며 반복 거래로 인해 과도한 거래 비용을 지불하지 않는다.
급격한 사건으로 인한 파열 상황을 식별할 수 없습니다. 비이성적 사건은 모델 판단을 방해할 수 있으며, 이때 포지션 회피 위험을 줄여야 합니다.
매개 변수 설정은 고정되어 있으며, 시장 환경의 변화는 고려되지 않는다. 실전에서는 대도시 환경의 동적에 따라 매개 변수를 조정하여 전략을 다양한 실정에 맞출 수 있도록 한다.
구매/판매 지점은 너무 이상화되어 실제 실행에 어려움이 많다. 슬라이드 포인트 비용과 같은 요소와 결합하여 구매/판매 지점을 미세하게 조정하여 신호를 더 실행 가능하도록 한다.
다중 시간 프레임은 의사결정 지연을 증가시킨다. 갑작스러운 사건에 대비하여 바람을 잘 조절하여 지연으로 인한 손실을 줄인다.
이동 상쇄, 비율 상쇄와 같은 상쇄 메커니즘을 추가하여 단독 손실을 제어하십시오.
매개 변수 설정을 최적화하여 매개 변수 동력이 시장 환경에 적응하도록 하고, 전략의 안정성을 향상시킨다.
시장의 핫 이벤트와 함께, 전략에 큰 영향을 미치지 않도록 한다.
실제 거래비용은 슬라이드 포인트와 같이 고려하고, 구매/판매 지점을 조정하여 신호를 실행할 수 있도록 한다.
K선 등과 같은 다른 값을 구하는 방법을 테스트하고, 신호 확인 소스로, 다중 시간 프레임 검증 수단이 풍부하다.
기계 학습 알고리즘을 추가하고, 빅데이터 트레이닝 모델을 활용하여, 자동으로 최적화 전략 매개 변수를 사용한다.
이 전략은 다중 지표 식별 트렌드, 다중 시간 프레임 확인 신호 방식으로 SPX500 지수에 대한 트렌드 추적 거래를 구현한다. 이 전략의 장점은 신호 정확도가 높고, 노이즈 간섭 방지 능력이 강하지만, 위험 관리에 주의를 기울이고, 전략 매개 변수를 동적으로 최적화해야 한다. 단순 이동 평균 전략을 최적화하는 효과적인 시도로서, 이 전략은 양적 거래 전략을 최적화하는 데 유익한 시작과 참고를 제공한다.
/*backtest
start: 2022-11-07 00:00:00
end: 2023-11-13 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/
// USE HEIEN ASHI, 1 min, SPX 500 USD OANDA
// © connor2279
//@version=5
strategy(title="SPX Strategy", shorttitle="SPXS", overlay=true)
//SMA
len1 = 10
src1 = input(close, title="SMA Source #1")
out1 = ta.sma(src1, len1)
plot(out1, title="SMA #1", color=close >= out1 ? color.lime : color.red, linewidth=2)
data_over = ta.crossover(close, out1)
dataO = close >= out1
data_under = ta.crossunder(close, out1)
dataU = close < out1
bgcolor(color=ta.crossover(close, out1) ? color.new(color.lime, 90) : na)
bgcolor(color=ta.crossunder(close, out1) ? color.new(color.red, 90) : na)
//Norm MacD
sma = 12
lma = 21
tsp = 10
np = 50
sh = ta.ema(close,sma)
lon= ta.ema(close,lma)
ratio = math.min(sh,lon)/math.max(sh,lon)
Mac = ratio - 1
if(sh>lon)
Mac := 2-ratio - 1
else
Mac := ratio - 1
MacNorm = ((Mac-ta.lowest(Mac, np)) /(ta.highest(Mac, np)-ta.lowest(Mac, np)+.000001)*2)- 1
MacNorm2 = MacNorm
if(np<2)
MacNorm2 := Mac
else
MacNorm2 := MacNorm
Trigger = ta.wma(MacNorm2, tsp)
trigger_above = Trigger >= MacNorm
trigger_under = Trigger < MacNorm
plotshape(ta.crossover(Trigger, MacNorm2), style=shape.triangledown, color=color.red)
plotshape(ta.crossunder(Trigger, MacNorm2), style=shape.triangledown, color=color.lime)
//RSI / SMA RSI
swr=input(true,title="RSI")
src = close
len = 14
srs = 50
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))
mr = ta.sma(rsi,srs)
rsi_above = rsi >= mr
rsi_under = rsi < mr
//All
buySignal = rsi_above and trigger_under and dataO
shortSignal = rsi_under and trigger_above and dataU
bgcolor(color=buySignal ? color.new(color.lime,97) : na)
bgcolor(color=shortSignal ? color.new(color.red, 97) : na)
sellSignal = ta.cross(close, out1) or ta.cross(Trigger, MacNorm2) or ta.cross(rsi, mr)
if (buySignal)
strategy.entry("LONG", strategy.long, 1)
if (shortSignal)
strategy.entry("SHORT", strategy.short, 1)
// Submit exit orders
strategy.close("LONG", when=sellSignal)
strategy.close("SHORT", when=sellSignal)