시장 반전 핵심 전략


생성 날짜: 2023-12-15 10:37:01 마지막으로 수정됨: 2023-12-15 10:37:01
복사: 0 클릭수: 754
avatar of ChaoZhang ChaoZhang
1
집중하다
1621
수행원

시장 반전 핵심 전략

개요

이 전략은 윌리엄 지표의 돌파 원칙을 채택하고, 특정 형태의 K선과 결합하여, 효율적인 다중 공백 입점과 평점 입점의 모형을 설계하여, 시장상황이 역전되는 중요한 지점에서 정확하게 다중 공백을 할 수 있도록, 중간의 짧은 선의 추세를 포착하여, 초과 수익을 얻을 수 있다.

전략 원칙

이 전략은 윌리엄스 지표의 분화점을 사용하여 반전 신호를 판단한다. 위 또는 아래 분화 현상이 발생하면 K선 개체 방향과 일치하면 거래 신호가 발생한다.

구체적으로, 정책에는 사용자 정의 지표 WMX Williams Fractals가 정의되어 있습니다. 이 지표는 인수 함수를 사용하여 상형 (upFractal) 과 하형 (dnFractal) 을 판단합니다.

상층분류 판단 논리는: 현재 K선의 최고값이 이전 n근 K선 (n은 조정 가능한 변수) 의 최고값보다 높으므로, 이렇게 상층분류의 돌파구가 형성된다.

하위분류 판단 논리는: 현재 K 선의 최저값이 이전 n 루트 K 선의 최저값보다 낮아, 이렇게 하위분류의 돌파구를 형성한다.

상위 분류와 하위 분류를 받은 후, 변화되었는지 판단한다. 즉, 아무것도 없는 상태에서 존재하거나 존재하던 상태에서 아무것도 없는 상태이다. 이 시점에서는 분류가 막 형성된 상태이며, 역전 가능성이 높다는 것을 의미한다.

그 후 K선 개체의 방향을 결합하여 특정 거래 신호를 판단한다. 상위 분류가 형성되고, Close가 Open보다 높으면, 더 많이 한다. 현재 분류가 형성되고, Close가 Open보다 낮으면, 공백한다.

전략적 이점

  1. 빌리엄 지표의 분기점을 사용하여 반전 시점을 판단합니다. 이것은 숙련된 신뢰할 수 있는 기술 지표입니다.

  2. 트레이드 신호를 확인하기 위해 K선 실물 방향과 결합하여 트렌드 영역이 아닌 지역에서 혼란스러운 을 피합니다.

  3. 파라미터가 적고, n개의 타입 사이클만 조정할 필요가 있으며, 테스트 및 최적화가 쉽다.

  4. 포지션 크기와 포지션 조건 등과 같은 포지션 개설 규칙을 유연하게 설정할 수 있으며, 실장에 적용하기 쉽습니다.

전략적 위험

  1. 이 분류는 완전히 반전되지 않을 수도 있으며, 추세 판단을 고려해야 합니다.

  2. 노이즈로 인해 교통이 중단되는 것을 방지하기 위해 주의해야 합니다.

  3. 매개 변수 n은 다른 품종에 따라 조정해야 하며, 너무 크고 너무 작은 주기가 효과를 좌우할 수 있다.

해결책:

  1. 이동 평균과 같은 지표들을 추가하여 큰 트렌드를 판단하여 역동적인 포지션을 피하십시오.

  2. 동적 추적 중지 또는 합리적인 철회 제한 중지

  3. 워크 포워드 분석 방법을 사용하여 최적의 변수를 찾아내기 위한 변수 최적화

전략 최적화 방향

  1. 분형에 기반한 반전 전략은 여러 번 이윤을 올린 후 다시 반전으로 손실을 초래하는 상황이 발생할 수 있다. 트렌드 필터를 추가하여 거래 범위를 더욱 제한하고 불필요한 반전 거래를 줄이는 것을 고려할 수 있다.

  2. 현재의 손해제 방법은 비교적 간단하여 상황을 효과적으로 추적할 수 없습니다. 이동 손해제, 시간 손해제, 동적 손해제 등과 같은 손해제 방법을 추가할 수 있습니다.

  3. 현재는 K선의 실체 방향만을 판단한다. 그림자선, 마감 위치 등 K선 정보를 더 고려하면 보다 정확한 거래 신호를 설계할 수 있다.

요약하다

이 전략은 기술 지표에 기반한 반전 전략에 속한다. 그것은 윌리엄 지표의 분형을 사용하여 지표의 주식의 변화 트렌드를 중요한 시점에서 포착하고, K선 엔티티와 결합하여 거래 신호를 형성하여 초과 수익을 달성한다.

다른 역전 전략에 비해 이 전략은 변수화 설계, 논리 명확, 이해하기 쉬운, 변수 조정 편리, 테스트 쉬운, 직접 실장 운영에 투입할 수 있다. 다음 단계는 트렌드 판단, 손해 막는 방법 등으로 더욱 최적화하여 더 나은 전략 효과를 얻을 수 있다.

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

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © WMX_Q_System_Trading

//@version=4
SystemName="WMX Williams Fractals strategy V4"
InitCapital = 1000000
InitPosition = 100
InitCommission = 0.075
InitPyramidMax = 10
strategy(title=SystemName, shorttitle=SystemName, overlay=true, initial_capital=InitCapital, default_qty_type=strategy.percent_of_equity, default_qty_value=InitPosition, commission_type=strategy.commission.percent, commission_value=InitCommission)


//study("WMX Williams Fractals", shorttitle="WMX Fractals", format=format.price, precision=0, overlay=true)
// Define "n" as the number of periods and keep a minimum value of 2 for error handling.
n = input(title="Periods", defval=2, minval=2, type=input.integer)
h=close
l=close

factorh(High)=>
    upFractal = (                                                                                                          (High[n+2]  < High[n]) and (High[n+1]  < High[n]) and (High[n-1] < High[n]) and (High[n-2] < High[n]))
             or (                                                                               (High[n+3]  < High[n]) and (High[n+2]  < High[n]) and (High[n+1] == High[n]) and (High[n-1] < High[n]) and (High[n-2] < High[n]))
             or (                                                    (High[n+4]  < High[n]) and (High[n+3]  < High[n]) and (High[n+2] == High[n]) and (High[n+1] <= High[n]) and (High[n-1] < High[n]) and (High[n-2] < High[n]))
             or (                          (High[n+5] < High[n]) and (High[n+4]  < High[n]) and (High[n+3] == High[n]) and (High[n+2] == High[n]) and (High[n+1] <= High[n]) and (High[n-1] < High[n]) and (High[n-2] < High[n]))
             or ((High[n+6] < High[n]) and (High[n+5] < High[n]) and (High[n+4] == High[n]) and (High[n+3] <= High[n]) and (High[n+2] == High[n]) and (High[n+1] <= High[n]) and (High[n-1] < High[n]) and (High[n-2] < High[n]))
    upFractal
upFractal=factorh(h)
factorl(Low)=>
    dnFractal = (                                                                                                  (Low[n+2]  > Low[n]) and (Low[n+1]  > Low[n]) and (Low[n-1] > Low[n]) and (Low[n-2] > Low[n]))
             or (                                                                         (Low[n+3]  > Low[n]) and (Low[n+2]  > Low[n]) and (Low[n+1] == Low[n]) and (Low[n-1] > Low[n]) and (Low[n-2] > Low[n]))
             or (                                                (Low[n+4]  > Low[n]) and (Low[n+3]  > Low[n]) and (Low[n+2] == Low[n]) and (Low[n+1] >= Low[n]) and (Low[n-1] > Low[n]) and (Low[n-2] > Low[n]))
             or (                        (Low[n+5] > Low[n]) and (Low[n+4]  > Low[n]) and (Low[n+3] == Low[n]) and (Low[n+2] == Low[n]) and (Low[n+1] >= Low[n]) and (Low[n-1] > Low[n]) and (Low[n-2] > Low[n]))
             or ((Low[n+6] > Low[n]) and (Low[n+5] > Low[n]) and (Low[n+4] == Low[n]) and (Low[n+3] >= Low[n]) and (Low[n+2] == Low[n]) and (Low[n+1] >= Low[n]) and (Low[n-1] > Low[n]) and (Low[n-2] > Low[n]))
    
dnFractal=factorl(l)

U=valuewhen(upFractal[0]!= upFractal[1],l[0],3)
L=valuewhen(dnFractal[0]!=dnFractal[1],h[0],3)

longcon=crossover(close ,L) and close>open
shortcon=crossunder(close ,U) and close<open

if longcon
    
    strategy.entry("Long", strategy.long,   when = strategy.position_size <= 0 )
    
if  shortcon
    strategy.entry("Short", strategy.short,  when = strategy.position_size >= 0 )