다중 시간 프레임 추세 결정 전략


생성 날짜: 2023-12-28 11:57:00 마지막으로 수정됨: 2023-12-28 11:57:00
복사: 0 클릭수: 641
avatar of ChaoZhang ChaoZhang
1
집중하다
1623
수행원

다중 시간 프레임 추세 결정 전략

개요

이 전략은 4개의 다른 시간 프레임을 사용하여 트렌드 방향을 판단하여 장선 트렌드를 발견하고 동시에 단선을 입시 시점으로 이용한다. 4개의 시간 프레임 (일계, 주계, 15일계, 달계) 의 개시 가격이 모두 닫기 가격보다 낮으면 장기 부진 트렌드로 판단하고 4개의 시간 프레임의 개시 가격이 모두 닫기 가격보다 높으면 장기 부진 트렌드로 판단한다. 전략은 장선 트렌드를 확인한 후 단선을 사용하여 신호를 생성하여 입장을 개시한다.

전략 원칙

이 전략은 4개의 시간 프레임: 일선, 주선, 15일선, 달선 을 사용합니다. 이 4개의 시간 프레임의 개시 가격과 닫기 가격의 크기의 관계에 따라 장기 트렌드 방향을 판단합니다.

일선, 주선, 15일선, 월선 모두 개시가격이 종료가격보다 낮을 때, 4개의 시간 프레임에 대해, 가격은 상승 추세를 나타냅니다. 이 시기는 다목적 행보로 판단하고, 장기적인 전망이다.

반대로, 4개의 시간 프레임의 개시 가격이 모두 개시 가격보다 높을 때, 4개의 시간 프레임에서 가격이 하향 추세를 나타냅니다. 이 때 허공행동으로 판단하고, 장기 하향으로 판단한다.

장기 트렌드 방향을 판단한 후, 전략은 짧은 선이 구매/판매 신호를 생성할 때 포지션을 개설한다. 즉, 이 전략은 긴 선을 사용하여 큰 트렌드를 판단하고, 짧은 선을 사용하여 구체적인 입문 시기를 결정한다.

우위 분석

이 전략은 다음과 같은 장점을 가지고 있습니다.

  1. 다중 시간 프레임 판단, 판단의 정확성 향상

4개의 다른 수준의 시간 프레임들을 사용하여 장기적 추세를 종합적으로 판단하여 판단의 정확성을 높이고, 단기적 시장 소음으로 인해 혼란을 피할 수 있다.

  1. 긴 줄과 짧은 줄이 결합되고, 전략이 유연합니다.

장선 프레임워크를 사용하여 큰 방향을 판단하고, 단선을 사용하여 동작 신호를 생성합니다. 전략은 유연하며, 단선 기회를 잡을 수 있으며, 주요 추세에서 벗어나지 않습니다.

  1. 간단한 매개 변수, 쉽게 구현할 수 있습니다.

이 전략은 주로 지표가 4 시간 프레임의 오픈 가격과 클로징 가격에 대해 판단하며, 파라미터를 설정하는 것은 간단하고 쉽게 구현할 수 있다.

위험 분석

이 전략에는 다음과 같은 위험도 있습니다.

  1. 장기적인 경향의 전환

만약 장기적 인파의 추세가 전환되어 장기적 인파로 변하면, 이 전략은 조기에 판단할 수 없으며, 큰 손실을 초래할 수 있다. 이 시점에는 인적 개입 또는 스톱 손실을 설정해야 한다.

  1. 단기 운영 효과는 좋지 않습니다.

이 전략은 주로 단선 발생 신호를 의존하여 특정 입시 시점을 결정한다. 단기 운영 효과가 좋지 않으면 적절한 시간에 포지션을 열 수 없다면 전체 전략의 효과에 영향을 미칠 수 있다. 이 때 단선 매개 변수를 조정하거나 단선 전략을 최적화 할 수 있다.

최적화 방향

이 전략에는 더 많은 최적화 가능성은 있습니다:

  1. 더 많은 손실을 막는 전략

최대 손실을 제어하기 위해 이동 스톱 또는 고정 스톱을 설정할 수 있습니다.

  1. 짧은 라인 전략을 최적화

다양한 단선 지표들을 테스트하여 더 적합한 단선 전략을 찾아서 진출 효과를 높일 수 있다.

  1. 역동적으로 위치 조정

시장의 변동에 따라 포지션을 동적으로 조정할 수 있으며, 추세가 더 명확할 때 포지션을 증가시킬 수 있다.

  1. 기계학습과 함께

많은 양의 데이터를 수집하고 기계 학습 방법을 사용하여 파라미터와 규칙을 동적으로 최적화 할 수 있습니다.

요약하다

이 전략은 여러 시간 프레임에 걸쳐 트렌드 방향을 판단, 긴 짧은 줄 결합의 사고 방식을 사용하여, 큰 트렌드에 대한 판단을 보장하고, 짧은 줄 기회를 이용합니다. 전체적인 운영 논리는 명확하고 합리적이며, 실행은 간단하며, 효과적인 트렌드 추적 전략입니다.

전략 소스 코드
/*backtest
start: 2023-11-27 00:00:00
end: 2023-12-27 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("[RichG] Easy MTF Strategy", overlay=false)

TF_1_time = input("D", "Timeframe 1")
TF_2_time = input("5D", "Timeframe 2")
TF_3_time = input("15D", "Timeframe 3")
TF_4_time = input("45D", "Timeframe 4")

transaction_size = input(1, "Contract/Share Amount")

src = close, len = 20
out = sma(src, len)
width = 5
upcolor = green
downcolor = red
neutralcolor = blue
linestyle = line

TF_1 = request.security(syminfo.tickerid, TF_1_time, open) < request.security(syminfo.tickerid, TF_1_time, close) ? true:false
TF_1_color = TF_1 ? upcolor:downcolor

TF_2 = request.security(syminfo.tickerid, TF_2_time, open) < request.security(syminfo.tickerid, TF_2_time, close) ? true:false
TF_2_color = TF_2 ? upcolor:downcolor

TF_3 = request.security(syminfo.tickerid, TF_3_time, open) < request.security(syminfo.tickerid, TF_3_time, close) ? true:false
TF_3_color = TF_3 ? upcolor:downcolor


TF_4 = request.security(syminfo.tickerid, TF_4_time, open) < request.security(syminfo.tickerid, TF_4_time, close) ? true:false
TF_4_color = TF_4 ? upcolor:downcolor

TF_global = TF_1 and TF_2 and TF_3 and TF_4 
TF_global_bear = TF_1 == false and TF_2 == false and TF_3 == false and TF_4 == false
TF_global_color = TF_global ? green : TF_global_bear ? red : white
TF_trigger_width = TF_global ? 6 : width

plot(1, style=linestyle, linewidth=width, color=TF_1_color)
plot(5, style=linestyle, linewidth=width, color=TF_2_color)
plot(10, style=linestyle, linewidth=width, color=TF_3_color)
plot(15, style=linestyle, linewidth=width, color=TF_4_color)
plot(25, style=linestyle, linewidth=4, color=TF_global_color)    

exitCondition_Long = TF_global_bear
exitCondition_Short = TF_global

longCondition = TF_global
if (longCondition)
    strategy.entry("MTF_Long", strategy.long, qty=transaction_size, when=strategy.position_size == 0)

shortCondition = TF_global_bear
if (shortCondition)
    strategy.entry("MTF_Short", strategy.short, qty=transaction_size, when=strategy.position_size == 0)
    
strategy.close("MTF_Long", when=exitCondition_Long)    
strategy.close("MTF_Short", when=exitCondition_Short)