이동 평균 방향 역전 거래 전략은 이동 평균의 연속적인 몇 개의 기둥이 동시 상승 또는 하락으로 나타나면 트렌드가 변하는 것을 판단하는 거래 전략이다. 이 전략은 이동 평균의 방향을 판단하여 지속적인 부진 또는 하락의 거래 기회를 결정한다.
이동 평균 방향 역전 거래 전략의 핵심 논리는 다음과 같습니다.
선택된 이동 평균을 계산하기 위해, 간단한 이동 평균 SMA, 지수 이동 평균 EMA, 가중 이동 평균 WMA 또는 선형 회귀 평균을 선택할 수 있다.
현재 주기 이동 평균과 이전 주기 이동 평균의 크기의 관계를 판단하여, 현재 이동 평균이 이전 주기보다 높다면, 1을 부여하고, 반대로 0을 부여한다.
연속 상향과 연속 하향의 주기 수를 기록한다. 만약 현재 주기 이동 평균이 이전 주기보다 높다면, 연속 상향의 주기 수+1이고, 연속 하향의 주기 수는 0이다. 만약 현재 주기 이동 평균이 이전 주기보다 낮다면, 연속 하향의 주기 수+1, 연속 상향의 주기 수는 0이다.
연속 상향 또는 연속 하향 사이클이 사용자 정의한 임계값을 초과할 때, 해당하는 더하거나 공백 작업을 수행한다.
K선 기둥 색상과 배경 색상을 염색하여 트렌드 방향을 직관적으로 표시합니다.
선택적으로 이동 평균의 변화 곡선을 그리고, 전환점을 표시한다.
이 전략은 통계적인 이동 평균이 얼마나 많은 K선들을 연속적으로 움직인 지를 판단하여 트렌드를 판단하고, 타임아웃은 하나의 K선만을 보는 것이 아니라 지속되는 부진 또는 부진의 길이를 통해 거래를 수행하여 거래에 대한 흔들림의 영향을 효과적으로 필터링 할 수 있습니다.
이동 평균 방향 역전 거래 전략은 다음과 같은 장점이 있습니다.
이동 평균을 사용하여 트렌드 방향을 판단하여 시장 소음을 효과적으로 필터링 할 수 있습니다.
특정 주기 동안 이동 평균의 방향의 지속적인 변화를 통계로, 트렌드 반전의 시간을 판단하고, 거래 위험을 줄인다.
이동 평균 변수와 통계 주기 변수를 사용자 정의 할 수 있습니다.
K선 염색에 대한 직관적인 트렌드 방향 변화, 시각 보조를 형성한다.
다양한 종류의 이동 평균을 선택할 수 있으며, 유연성이 있습니다.
이동 평균의 변화 곡선을 그려서 돌림이 있는지 명확하게 관찰할 수 있다.
규칙은 간단하고 명확하며, 이해하기 쉬운 구현이며, 초보자 학습에 적합하다.
이동 평균 방향 역전 거래 전략에는 위험도 있습니다.
이동 평균 자체의 지연성은 전환점을 적절하게 잡는 데 영향을 미칩니다.
통계적으로 일정한 주기를 지연하는 것은 더 많은 외환 결정을 내리고, 더 빠른 반전의 기회를 놓칠 수 있다.
지속되는 주기를 너무 길게 설정하면 트렌드를 놓칠 수 있고, 너무 짧게 설정하면 속일 수 있다.
위기상황에서는 많은 공백 거래 신호가 발생할 수 있습니다.
이동 평균의 방향에만 의존하는 것은 진정한 트렌드 반전을 완전히 판단 할 수 없으며, 잘못된 신호의 위험이 있습니다.
상황이 급격하게 변할 때, 이동 평균 지표 자체도 빠르게 변하여 잘못된 신호를 생성할 확률이 높습니다.
이동 평균 선택 변수의 합리성에 주의해야 합니다. 그렇지 않으면 무효가 발생할 수 있습니다.
대응방법:
이동 평균 주기를 적절히 단축하고 민감성을 높여라.
다른 지표와 함께 필터링 신호를 통해 트렌드 반전을 확인한다.
통계주기 변수를 최적화하여 반응 속도와 안정성 사이의 균형을 찾습니다.
이 경우, 주식회사에서 주식회사 주식회사에서 주식회사 주식회사에서 주식회사 주식회사에서 주식회사 주식회사에서
여러 이동 평균 조합을 사용하여 정확도를 높여줍니다.
이동 평균 방향 역전 거래 전략은 다음과 같은 측면에서 최적화 될 수 있습니다.
이동 평균 파라미터를 최적화하여, 다양한 길이의 주기의 이동 평균을 테스트하여 최적의 파라미터를 찾습니다. SMA, EMA, WMA의 3가지의 조합을 시도할 수 있습니다.
RSI, KD 등과 같은 다른 보조 지표와 결합하여 신호의 신뢰성을 높인다.
통계 연속 주기 수 변수를 최적화하여 트렌드 반전을 반영하면서 가능한 한 가짜 신호를 필터링하십시오.
단편 거래 손실을 제어하기 위한 손해 방지 장치가 추가되었습니다.
다양한 품종의 매개 변수 최적화 효과를 테스트하고, 다른 거래 품종에 따라 매개 변수를 조정한다.
고정된 통계주기를 적응된 통계주기로 바꾸는 것을 고려하여 전략을 더 유연하게 만들 수 있다.
브레이크아웃을 시도하고, 이동 평균이 실제로 뚫렸을 때 진입한다.
전체적인 트렌드 방향에 대한 판단을 높이고 역대 거래를 피하십시오.
이동 평균 곡선을 그리는 방법을 개선하여 곡선의 부드러움을 증가시키는 등
이동 평균 방향 역전 거래 전략은 통계적으로 이동 평균이 연속적으로 상승하거나 하락하는 사이클 수를 통해 지속적인 트렌드를 추적하는 시간을 판단합니다. 그것은 효과적으로 시장 소음을 필터링하고 트렌드가 변할 때 기회를 잡을 수 있습니다. 이 전략은 사용자 정의 가능한 이동 평균 파라미터와 통계 주기 수를 통해 다양한 거래 품종과 시장 환경에 유연하게 적응 할 수 있습니다. 그러나 이동 평균 자체의 지각은 빠른 역전에 대한 인식 지연을 초래할 수 있습니다. 따라서 파라미터를 최적화 조정하고 신호 정확성을 높이기 위해 다른 기술 지표를 보조해야합니다.
/*backtest
start: 2022-09-21 00:00:00
end: 2023-09-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy("Moving Average Consecutive Up/Down Strategy (by ChartArt)", overlay=true)
// ChartArt's Moving Average Consecutive Up/Down Strategy
//
// Version 1.0
// Idea by ChartArt on December 30, 2015.
//
// This strategy goes long (or short) if there are several
// consecutive increasing (or decreasing) moving average
// values in a row in the same direction.
//
// The bars can be colored using the raw moving average trend.
// And the background can be colored using the consecutive
// moving average trend setting. In addition a experimental
// line of the moving average change can be drawn.
//
// The strategy is based upon the "Consecutive Up/Down Strategy"
// created by Tradingview.
// Input
Switch1 = input(true, title="Enable Bar Color?")
Switch2 = input(true, title="Enable Background Color?")
Switch3 = input(false, title="Enable Moving Average Trend Line?")
ConsecutiveBars = input(4,title="Consecutive Trend in Bars",minval=1)
// MA Calculation
MAlen = input(1,title="Moving Average Length: (1 = off)",minval=1)
SelectMA = input(2, minval=1, maxval=4, title='Moving Average: (1 = SMA), (2 = EMA), (3 = WMA), (4 = Linear)')
Price = input(close, title="Price Source")
Current =
SelectMA == 1 ? sma(Price, MAlen) :
SelectMA == 2 ? ema(Price, MAlen) :
SelectMA == 3 ? wma(Price, MAlen) :
SelectMA == 4 ? linreg(Price, MAlen,0) :
na
Last =
SelectMA == 1 ? sma(Price[1], MAlen) :
SelectMA == 2 ? ema(Price[1], MAlen) :
SelectMA == 3 ? wma(Price[1], MAlen) :
SelectMA == 4 ? linreg(Price[1], MAlen,0) :
na
// Calculation
MovingAverageTrend = if Current > Last
1
else
0
ConsecutiveBarsUp = MovingAverageTrend > 0.5 ? nz(ConsecutiveBarsUp[1]) + 1 : 0
ConsecutiveBarsDown = MovingAverageTrend < 0.5 ? nz(ConsecutiveBarsDown[1]) + 1 : 0
BarColor = MovingAverageTrend > 0.5 ? green : MovingAverageTrend < 0.5 ? red : blue
BackgroundColor = ConsecutiveBarsUp >= ConsecutiveBars ? green : ConsecutiveBarsDown >= ConsecutiveBars ? red : gray
MovingAverageLine = change(MovingAverageTrend) != 0 ? close : na
// Strategy
if (ConsecutiveBarsUp >= ConsecutiveBars)
strategy.entry("ConsUpLE", strategy.long, comment="Bullish")
if (ConsecutiveBarsDown >= ConsecutiveBars)
strategy.entry("ConsDnSE", strategy.short, comment="Bearish")
// output
barcolor(Switch1?BarColor:na)
bgcolor(Switch2?BackgroundColor:na)
plot(Switch3?MovingAverageLine:na, color=change(MovingAverageTrend)<0?green:red, linewidth=4)
//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)