
이 전략은 간단한 이동 평균 ((SMA) 과 롤링 선형 회귀 트렌드 라인을 결합하여, 구매 조건은 SMA와 트렌드 라인보다 높은 마감 가격에 더 많은 것을 하고, Exit 조건은 SMA와 트렌드 라인보다 낮은 마감 가격에 평점을 한다. 이 전략은 SMA의 평행 거래 신호와 롤링 트렌드 라인의 지원을 주로 활용하여, 상행 채널을 돌파할 때 입장하고, 하행 채널을 돌파할 때 출장한다.
이 전략은 다음과 같은 몇 가지 요소에 기반합니다.
SMA: 간단한 이동 평균, 일정 주기 ((smaPeriod) 를 계산하여 종료 가격의 평균값을 신호선으로 한다.
롤링 트렌드 라인: 선형 회귀 계산에 기초하여 일정 주기 ([[window]]) 에 대한 최적의 적합 직선으로 트렌드 신호로. 계산 방법은 최소 2 곱하기이다.
진입 조건: 종식 가격이 SMA 평균선과 롤링 트렌드 라인보다 높을 때 추가 진입한다.
출구 조건: 종식 가격이 SMA 평균선과 롤링 트렌드 라인보다 낮을 때 평점 출구.
따라서, 이 전략은 주로 일직선 거래 신호의 브레이크 입구와 통로 브레이크 출구에 의존한다. 이동 평균의 평균 회귀 특성과 선형 회귀 통로의 평균 지원을 활용하여 트렌드 추적 브레이크 작업을 구현한다.
이 전략은 평행선과 트렌드 라인 이중 필터링을 통합하여 가짜 브레이크 작업을 효과적으로 줄일 수 있습니다. 동시에, 롤링 트렌드 라인은 더 정확한 채널 지원을 제공하여 거래 결정을 더 신뢰할 수 있습니다. 주요 장점은 다음과 같습니다.
이 전략에는 다음과 같은 몇 가지 위험도 있습니다.
이러한 위험들을 최적화하기 위해서는 다음과 같은 것들로 시작할 수 있습니다.
이 전략은 다음과 같은 차원에서 최적화될 수 있습니다.
SMA 주기와 슬라이드 포인트 파라미터를 동적으로 조정하는 기능을 추가한다. 다양한 시장 환경에서 자동으로 최적화 파라미터를 한다.
유연한 스톱 메커니즘을 추가한다. 가격이 트렌드 라인을 돌파할 때 일정 비율로 스톱한다.
다른 지표와 함께 필터링 신호를 다. 예를 들어 양력 지표, 강도 지표 등. 의사 결정 정확도를 높인다.
반전판을 개발한다. 가격이 바닥에 가까워지고 하향 통로를 돌파할 때 더 많이 한다.
이 전략은 이동 평균 거래 신호와 롤링 트렌드 라인 채널 지원을 통합하여 트렌드 추적 작업을 구현합니다. 이중 필터링 메커니즘은 가짜 브레이크의 확률을 낮추고 의사 결정의 질을 향상시킵니다. 간단한 매개 변수 설정, 논리 명확성, 실행 및 최적화 조정. 전체적으로 이 전략은 신뢰할 수 있고 간단하고 직관적인 트렌드 브레이크 거래 시스템을 형성합니다.
/*backtest
start: 2024-01-04 00:00:00
end: 2024-02-03 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("SMA Strategy with Rolling Trendline", overlay=true)
// Input parameters
smaPeriod = input(14, title="SMA Period")
window = input(20, title="Trendline Window")
startDate = input(timestamp("2023-01-01"), title="Start Date")
endDate = input(timestamp("2023-12-31"), title="End Date")
// Calculating SMA
sma = sma(close, smaPeriod)
// Function to calculate linear regression trendline for a window
linreg_trendline(window) =>
sumX = 0.0
sumY = 0.0
sumXY = 0.0
sumX2 = 0.0
for i = 0 to window - 1
sumX := sumX + i
sumY := sumY + close[i]
sumXY := sumXY + i * close[i]
sumX2 := sumX2 + i * i
slope = (window * sumXY - sumX * sumY) / (window * sumX2 - sumX * sumX)
intercept = (sumY - slope * sumX) / window
slope * (window - 1) + intercept
// Calculating the trendline
trendline = linreg_trendline(window)
// Entry and Exit Conditions
longCondition = close > sma and close < trendline
exitLongCondition = close < sma and close > trendline
// Strategy logic
if (true)
if (longCondition)
strategy.entry("Long", strategy.long)
if (exitLongCondition)
strategy.close("Long")
// Plotting
plot(sma, title="Simple Moving Average", color=color.blue)
plot(trendline, title="Rolling Trendline", color=color.red)
plotshape(series=longCondition, title="Enter Trade", location=location.belowbar, color=color.green, style=shape.triangleup)
plotshape(series=exitLongCondition, title="Exit Trade", location=location.abovebar, color=color.red, style=shape.triangledown)