이동 평균을 기반으로 한 추세 추종 전략


생성 날짜: 2024-01-18 12:23:59 마지막으로 수정됨: 2024-01-18 12:23:59
복사: 1 클릭수: 346
1
집중하다
1212
수행원

이동 평균을 기반으로 한 추세 추종 전략

개요

이 전략은 평평선에 기반한 트렌드 추적 전략이다. 이 전략은 다양한 주기의 EMA 평평선을 활용하여 여러 개의 거래 신호를 구축하여 트렌드 추적 거래를 실현한다. 가격이 더 긴 주기의 평균선을 넘어갈 때 점차적으로 더 많은 포지션을 취하고, 가격 평균 비용을 절감한다. 전략은 동시에 중지 손실 조건을 설정하고, 단기 평균선이 변할 때 손실을 중지하고, 수익을 잠금한다.

전략 원칙

이 전략은 5개의 다른 주기의 EMA 평균선을 사용하여 거래 신호를 구축한다. 각각 10일선, 20일선, 50일선, 100일선 및 200일선이다. 전략은 가격과 이러한 평균선과의 관계에 따라 4개의 구매 조건을 설정하여 피라미드 가장을 실현한다.

가격이 20일선 아래와 50일선 위에 있을 때, 1군 구매를 촉발한다. 가격이 50일선 아래와 100일선 위에 있을 때, 2군 구매를 촉발한다. 가격이 100일선 아래와 200일선 위에 있을 때, 3군 구매를 촉발한다. 가격이 200일선 아래 있을 때, 4군 구매를 촉발한다. 매번 구매하는 숫자도 점차 커지고 있다. 각각 qt1, qt2, qt3, qt4이다.

판매의 측면에서, 전략은 동시에 두 가지의 중단 조건을 사용합니다. 첫 번째 그룹은 가격이 10 일선보다 높고 10 일선이 다른 평균선보다 높을 때 중단됩니다. 두 번째 그룹은 가격이 전날의 10 일선보다 낮고 10 일선이 다른 평균선보다 높을 때 중단됩니다. 두 가지의 조건은 중간 짧은 선의 이익을 효과적으로 잠금 할 수 있습니다.

우위 분석

이 전략의 가장 큰 장점은 시장의 추세를 자동으로 추적 할 수 있다는 것입니다. 여러 개의 구매 조건과 배치 된 입장을 통해 구매 비용을 지속적으로 낮추고 초과 수익을 얻을 수 있습니다. 동시에 단일 구매 포인트로 인한 가격 위험을 회피합니다.

스톱로즈 측면에서도 전략이 최적화 되어 있다. 상향으로 짧은 주기 평균의 터닝 포인트를 추적하여 빠른 스톱로즈와 수익을 잠금할 수 있다. 이는 손실이 더욱 확대될 위험을 방지한다.

위험 분석

이 전략이 직면하는 가장 큰 위험은 긴 선을 조정하는 상황에서 갇혀있는 것입니다. 대시장이 흔들리거나 하향 통로에있을 때 평행선 신호는 신뢰할 수 없습니다. 이 때 계속 구매하고 위치를 보유하여 큰 손실을 감수 할 수 있습니다.

또 다른 위험점은 평균선이 항상 정확하지 않다는 것입니다. 가격의 단기간에 폭등이나 확장 운동은 평균선이 잘못된 신호를 보낼 수 있습니다. 이것은 다른 기술 지표와 함께 검증 및 최적화가 필요합니다.

최적화 방향

구매 조건에 다른 기술 지표 판단을 추가하는 것을 고려할 수 있습니다. 예를 들어 거래량 지표, 볼린저 밴드 신호 등등. 이것은 구매의 성공률을 더욱 높일 수 있습니다.

판매 조건에 Boll 상반기 또는 중요한 지지를 2 층의 스톱 라인으로 추가할 수도 있다. 이것은 불필요한 작은 스톱을 줄일 수 있다. 또는 모바일 스톱 기능을 추가하여 실시간으로 스톱 라인을 조정할 수 있으며, 수익을 더욱 고정시킬 수 있다.

요약하다

이 전략은 평선 시스템을 사용하여 트렌드 추적 거래를 한다. 피라미드식 분량 상장하여 트렌드 행태의 수익을 최대한 얻을 수 있다. 동시에 두 개의 중단 조건이 설정되어 자금 안전을 보호한다. 이것은 장기적으로 추적하고 실물 검증할 가치가 있는 전략이다. 실제 상황에 따라 매개 변수 및 모델에 대한 최적화 조정이 계속 가능하다.

전략 소스 코드
/*backtest
start: 2023-01-11 00:00:00
end: 2024-01-17 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("EMA_zorba1", shorttitle="zorba_ema", overlay=true)

// Input parameters
qt1 = input.int(5, title="Quantity 1", minval=1)
qt2 = input.int(10, title="Quantity 2", minval=1)
qt3 = input.int(15, title="Quantity 3", minval=1)
qt4 = input.int(20, title="Quantity 4", minval=1)
ema10 = ta.ema(close, 10)
ema20 = ta.ema(close, 20)
ema50 = ta.ema(close, 50)
ema100 = ta.ema(close, 100)
ema200 = ta.ema(close, 200)

// Date range filter
start_date = timestamp(year=2021, month=1, day=1)
end_date = timestamp(year=2024, month=10, day=27)
in_date_range = true

// Profit condition
profit_percentage = input(1, title="Profit Percentage")  // Adjust this value as needed

// Pyramiding setting
pyramiding = input.int(2, title="Pyramiding", minval=1, maxval=10)

// Buy conditions
buy_condition_1 = in_date_range and close < ema20 and close > ema50 and close < open and close < low[1]
buy_condition_2 = in_date_range and close < ema50 and close > ema100 and close < open and close < low[1]
buy_condition_3 = in_date_range and close < ema100 and close > ema200 and close < open and close < low[1]
buy_condition_4 = in_date_range and close < ema200 and close < open and close < low[1]

// Exit conditions
profit_condition = strategy.position_avg_price * (1 + profit_percentage / 100) <= close
exit_condition_1 = in_date_range and (close > ema10 and ema10 > ema20 and ema10 > ema50 and ema10 > ema100 and ema10 > ema200 and close < open) and profit_condition and close < low[1] and close < low[2]
exit_condition_2 = in_date_range and (close < ema10 and close[1] > ema10 and close < close[1] and ema10 > ema20 and ema10 > ema50 and ema10 > ema100 and ema10 > ema200 and close < open) and profit_condition and close < low[1] and close < low[2]

// Exit condition for when today's close is less than the previous day's low
//exit_condition_3 = close < low[1]

// Strategy logic
strategy.entry("Buy1", strategy.long, qty=qt1 * pyramiding, when=buy_condition_1)
strategy.entry("Buy2", strategy.long, qty=qt2 * pyramiding, when=buy_condition_2)
strategy.entry("Buy3", strategy.long, qty=qt3 * pyramiding, when=buy_condition_3)
strategy.entry("Buy4", strategy.long, qty=qt4 * pyramiding, when=buy_condition_4)

strategy.close("Buy1", when=exit_condition_1 or exit_condition_2)
strategy.close("Buy2", when=exit_condition_1 or exit_condition_2)
strategy.close("Buy3", when=exit_condition_1 or exit_condition_2)
strategy.close("Buy4", when=exit_condition_1 or exit_condition_2)