
이 전략은 9일 이동 평균과 15일 이동 평균의 교차와 몇 가지 전형적인 일일 K선 형태를 기반으로 거래 신호를 생성한다. 빠른 라인에서 느린 라인을 통과하고 특정 각 조건과 특정 K선 형태를 충족하면 더 많이; 빠른 라인 아래의 느린 라인을 통과하면 공백한다. 동시에 위험을 제어하기 위해 중지 지점과 중지 지점을 설정한다.
단기 이동 평균 ((9일 선) 위를 장기 이동 평균 ((15일 선) 보다 뚫을 때, 단기 가격 상승 동력이 강하다는 것을 나타냅니다. 단기 이동 평균 (short-term moving average) 아래를 뚫을 때, 단기 가격 하락 동력이 강하다는 것을 나타냅니다. 동시에, 이동 평균의 각도가 30도 이상의 각도를 요구하여 충분한 상승 또는 하락 동력이 있는지 확인합니다. 특정 일 내 K 선 모양 판단을 추가하면, 오리 선, 책 본선 선과 같은 가짜 돌파의 신호를 필터링 할 수 있습니다.
이 전략은 주로 이동 평균의 트렌드 추적 기능과 일부 K 선 모양의 특성을 활용하여 파라미터를 조정하여 다른 시장의 품종에 적응할 수 있다.
이 전략은 이동 평균 지표와 일일 K 선 형태 판단을 결합하여 일부 잡음을 효과적으로 필터링하여 거래 신호를 더 신뢰할 수 있습니다. 특히 각 하락의 판단을 추가하여 가격 변화의 움직임이 충분히 큰 경우에만 신호를 발송하도록 보장하여 무의미한 가짜 신호를 방지 할 수 있습니다. 또한, 전략은 단자의 최대 손실을 줄이고 수익을 창출하는 자동으로 중지 및 중지 수준을 설정합니다. 이러한 조치는 전략의 안정성과 수익성을 향상시킵니다.
이동 평균은 트렌드 추적 형식의 지표로 중·장기 가격 동향을 잡을 수 있다. K선 형태는 단기간에 시장 참가자의 힘 대립을 반영하며, 사용과 함께 다양한 시간 스케일에서 거래 힌트를 얻을 수 있다. 이 전략은 여러 판단 지표의 장점을 통합하여 실제 거래에서 더 나은 효과를 얻을 수 있다.
이 전략의 위험은 다음과 같습니다.
가짜 돌파 위험. 시장이 흔들림 정렬 상태에 있을 때, 이동 평균이 여러 번 교차할 수 있으며, 이 때 교차로에서 나오는 신호는 대부분 가짜 신호이다. 이 때 수익을 얻을 수 없으며, 오히려 꽂힐 수 있다. K선 형태와 각 조건이 이러한 위험을 줄일 수 있다.
트렌드 반전 위험. 이동 평균은 트렌드 추적 지표로, 트렌드 반전이 있을 때 미리 신호를 줄 수 없습니다. 이 때 포지션을 보유하는 것은 막대한 손실을 입을 수 있습니다. 이러한 위험은 엄격한 스톱으로 제어 할 수 있습니다.
매개 변수 최적화 위험. 다른 시장 품종은 매개 변수 설정에 대해 다른 적응력을 가질 수 있다. 조정하지 않으면 특정 매개 변수 조합을 직접 사용하면 손실이 발생할 수도 있다. 이것은 리테크 및 시뮬레이션 실체를 통해 최적의 매개 변수를 찾는 것이 필요합니다.
전체적으로, 이 전략은 시장 환경 판단이 없는 경우에, 약간의 잘못된 신호와 추격 하락의 위험을 초래할 수 있다. 이러한 위험은, 대규모의 추세와 수량 특성에 대한 판단을 추가하여 더욱 최적화하여 줄일 수 있다.
이 전략은 다음의 몇 가지 측면에서 더욱 개선될 수 있습니다.
큰 차원의 추세에 대한 판단을 증가 시키십시오. 예를 들어, 긴 선이 상승 또는 하락 경로에 있는지 확인하고 역경 거래를 피하십시오.
양능력 지표의 분석을 추가한다. 예를 들어, 통신의 요금 지표는 구매력 방향을 판단하고, 무작정 높은 요금의 주식 가격을 하락하거나 낮은 요금의 주식 가격을 하락시키는 것을 피한다.
주식의 기본상황과 결합하여 . 수익이 기대되는 주식을 선택하여 안정적으로 성장하는 주식을 거래하면 승률을 높일 수 있다.
이동 평균 시스템의 파라미터 집합을 최적화한다. 다른 길이의 주기 평균을 시도하거나, 3평준, 5평준 등을 추가하여 파라미터 조정 공간을 더 큰 거래 시스템을 구축할 수 있다.
다양한 스톱로스, 스톱 파라미터를 테스트한다. 피드백 결과에 따라 리스크/이익 비율을 설정하여 최적의 위험/이익 비율을 얻는다.
위 몇 가지 방향의 최적화를 통해, 이 전략의 수익 수준과 안정성이 더 크게 향상될 것으로 기대할 수 있다.
전반적으로 이 전략은 이동 평균 지표와 일부 일간 K선 형태의 장점을 통합하고 거래 신호가 발송될 때 조건이 더 엄격하며, 많은 잡음을 필터링하여 통과 신호의 질을 크게 향상시킬 수 있다. 동시에 스톱 손실과 스톱 스톱을 설정하여 최대 손실과 달성 된 이익을 제어한다. 이것은 추천할만한 안정형 양적 거래 전략이다.
다음 단계의 작업은 변수 최적화를 통해 전략의 승률과 수익성을 더욱 높이는 것입니다. 더 많은 지표를 추가하면 전체 거래 시스템의 건전성이 강화 될 수 있습니다. 엄격한 실내 시뮬레이션 후, 이 전략은 안정적인 수익을 창출하는 효과적인 계량화 도구가 될 수 있습니다.
/*backtest
start: 2024-01-29 00:00:00
end: 2024-02-28 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("Moving Average Crossover Strategy with Candlestick Patterns", overlay=true)
// Define input parameters
fast_length = input(9, "Fast MA Length")
slow_length = input(15, "Slow MA Length")
stop_loss_percent = input(0.25, "Stop Loss (%)")
target_percent = input(0.25, "Target (%)")
angle_threshold = input(30, "Angle Threshold (degrees)")
// Calculate moving averages
fast_ma = sma(close, fast_length)
slow_ma = sma(close, slow_length)
// Define candlestick patterns
is_pin_bar() =>
pin_bar = abs(open - close) > 2 * abs(open[1] - close[1])
high_tail = max(open, close) - high > abs(open - close) * 1.5
low_tail = low - min(open, close) > abs(open - close) * 1.5
pin_bar and high_tail and low_tail
is_marubozu() =>
marubozu = abs(open - close) > abs(open[1] - close[1]) * 0.75
no_upper_shadow = high == max(open, close)
no_lower_shadow = low == min(open, close)
marubozu and no_upper_shadow and no_lower_shadow
is_full_body() =>
full_body = abs(open - close) > abs(open[1] - close[1]) * 0.95
full_body
// Plot moving averages
plot(fast_ma, color=color.blue, title="Fast MA")
plot(slow_ma, color=color.red, title="Slow MA")
// Calculate angle of slow moving average
ma_angle = abs(180 * (atan(slow_ma[1] - slow_ma) / 3.14159))
// Generate buy/sell signals based on angle condition and candlestick patterns
buy_signal = crossover(fast_ma, slow_ma) and ma_angle >= angle_threshold and (is_pin_bar() or is_marubozu() or is_full_body())
sell_signal = crossunder(fast_ma, slow_ma)
// Calculate stop-loss and target levels
stop_loss_level = close * (1 - stop_loss_percent / 100)
target_level = close * (1 + target_percent / 100)
// Execute trades based on signals with stop-loss and target
strategy.entry("Buy", strategy.long, when=buy_signal)
strategy.exit("Exit", "Buy", stop=stop_loss_level, limit=target_level)
// Plot buy/sell signals on chart (optional)
plotshape(series=buy_signal, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
plotshape(series=sell_signal, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)
// Plot angle line
hline(angle_threshold, "Angle Threshold", color=color.black, linestyle=hline.style_dashed)