다중 시간 프레임 추세 추종 전략 기반


생성 날짜: 2024-02-19 11:13:22 마지막으로 수정됨: 2024-02-19 11:13:22
복사: 1 클릭수: 545
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

다중 시간 프레임 추세 추종 전략 기반

개요

이 전략은 여러 시간 프레임 지표의 동의를 이용한 트렌드 추적 전략이다. 그것은 일선, 10일선, 15일선, 30일선과 동시에 상점 또는 상점 할 때 포지션을 더 많이 하거나 공백을 하고, 동적 중단 방법을 사용하여 중지한다.

전략 원칙

이 전략은 일선, 10일선, 15일선, 30일선 4개의 시간 프레임을 사용하여 트렌드 방향을 판단한다. 4개의 시간 프레임의 닫기 가격이 개시 가격보다 높을 때 낙관적이라고 판단하고, 4개의 시간 프레임의 닫기 가격이 개시 가격보다 낮을 때 낙관적이라고 판단한다.

낙점으로 판단될 때, 더 많은 입장을 취하고; 낙점으로 판단될 때, 적자 입장을 취한다. 입장을 취한 후 KC 채널을 사용하여 동적 상실을 한다.

구체적으로, 전략은 다른 시간 프레임의 개시 가격과 닫기 가격을 비교하여 트렌드 방향을 판단합니다. 개시 가격이 닫기 가격보다 낮다면, 그 시간 프레임은 파견이며, 녹색으로 표시됩니다. 개시 가격이 닫기 가격보다 높다면, 그 시간 프레임은 하향이며, 빨간색으로 표시됩니다.

4개의 시간 프레임이 부진할 때, 전략은 더 많은 위치를 열고; 4개의 시간 프레임이 부진할 때, 전략은 공백을 열고. 평점 상태는 상쇄되거나 추세가 역전된다.

전략적 이점

  1. 여러 시간 프레임을 사용하여 트렌드를 판단하여 가짜 브레이크를 효과적으로 필터링하여 트렌드 방향을 결정할 수 있습니다.

  2. 동적 상쇄 방식은 자금을 최대한 보호할 수 있습니다.

  3. 입시 조건이 엄격하여 불필요한 거래를 줄이고 과도한 슬라이드 포인트 비용을 피할 수 있습니다.

  4. 여러 시간 프레임워크를 결합하여 수익의 속도와 안정성을 균형을 잡을 수 있습니다

전략적 위험

  1. 입시 조건이 너무 엄격해서 일부 기회를 놓칠 수도 있습니다.

  2. 잘못된 스톱패드 설정으로 너무 급진적이거나 보수적일 수 있습니다.

  3. 시간 프레임이 잘못 선택되어 더 장기 또는 더 단기 경향과 일치하지 않을 수 있습니다.

  4. 급격한 사건으로 인한 급격한 역전으로 인한 피해는 멈출 수 없습니다.

최적화 방향

  1. 최적화된 시간 프레임의 선택, 수익의 속도와 안정성을 균형 잡는 것

  2. 다른 파라미터 설정을 테스트하여 스톱 손실을 최적화합니다.

  3. 트렌드 전환점을 판단하는 데 도움이 되는 기계 학습 알고리즘을 추가합니다.

  4. 주요 사건에 대한 주의를 높이고, 갑작스러운 사건으로 인한 피해를 방지하기

요약하다

이 전략은 다중 시간 프레임 판단 트렌드 방향을 통합, 엄격한 입점 조건 결합 동적 중지, 안정적인 수익을 얻기 위해 고안. 놓친 기회와 위험 제어 부적절한 문제가 있을 수 있습니다. 다음 단계는 전략의 안정성을 높이기 위해 파라미터 설정을 최적화하는 것을 계속할 것입니다.

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

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

TF_1_time = input("D", "Timeframe 1")
TF_2_time = input("10D", "Timeframe 2")
TF_3_time = input("15D", "Timeframe 3")
TF_4_time = input("30D", "Timeframe 4")
lengthKC=input(20, title="KC Length")
multKC = input(1.5, title="KC MultFactor")
lengthBB=input(20, title="BB Length")
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


kc() =>
    ma = sma(close, lengthKC)
    range = tr
    rangema = sma(range, lengthKC)
    upperKC = ma + rangema * multKC
    lowerKC = ma - rangema * multKC
    [lowerKC, upperKC] 

 
bb() =>
    source = close 
    basis = sma(source, lengthBB)
    dev = multKC * stdev(source, lengthBB)
    upperBB = basis + dev
    lowerBB = basis - dev
    [upperBB, lowerBB]

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)

shortCondition = TF_global_bear
if (shortCondition)
    strategy.entry("MTF_Short", strategy.short, qty=transaction_size)

[kc_lower,kc_upper] = kc()

strategy.close("MTF_Long", when=close < kc_upper)
strategy.close("MTF_Short", when=close > kc_lower)