반전 돌파 가중 이동 평균 전략


생성 날짜: 2023-11-28 14:11:33 마지막으로 수정됨: 2023-11-28 14:11:33
복사: 0 클릭수: 640
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

반전 돌파 가중 이동 평균 전략

개요

이 전략의 주요 아이디어는 가격 반전 테스트를 중화한 이동 평균선 근처의 중요한 지원 또는 저항 영역을 사용하여 포지션을 구축하는 것입니다. 가격 폭락 또는 폭락 후 반전 테스트 평균선으로 조정되면 반전 기회를 창출하는 지원 또는 압력이 형성 될 가능성이 높습니다.

전략 원칙

이 전략은 가중된 이동 평균 지표에 기초하여, 먼저 일정 길이의 가중된 이동 평균을 계산하고, 그 다음 가격에 일정 규모의 돌파가 발생하는지 모니터링한다. 가격이 평균을 돌파하는 일정 거리에 도달하면, 화살표 표시를 그리고 포지션을 설정한다. 다단계로 진입할 때, 가격이 먼저 일정 규모의 돌파가 발생해야 한다. 공백으로 진입할 때, 가격이 먼저 일정 규모의 돌파가 발생해야 한다. 이렇게 돌파를 통해 역전 신호를 형성하고, 이동 평균의 지지 저항 영역과 결합하여 시장 진입 시간을 최적화 할 수 있다.

전략은 트레일 파라미터를 통해 추적 스톱을 사용하거나 고정 스톱 거리를 사용할지 선택할 수 있습니다. 스톱 손실의 폭을 조정하여 위험을 제어 할 수 있습니다. 제한 가격 단위 파라미터를 통해 일부 수익을 잠금 할 수 있습니다. 또한 시간 필터를 통해 특정 시간 동안 입장을 제한 할 수 있습니다.

우위 분석

이 전략의 가장 큰 장점은 역전 상황을 평균선과 결합하여 시장의 중요한 지점을 찾아 포지션을 개설하는 데 있습니다. 역전 전략의 승률과 손해배상 비율은 일반적으로 좋으며 위험을 쉽게 제어 할 수 있습니다. 이 전략은 또한 완벽한 손실 중지 장치와 일부 이익의 잠금 방법을 제공하며, 이는 위험을 줄이고 안정성을 높이는 데 도움이 될 수 있습니다.

이동 평균선 기반에 기반하여, 변수 최적화 공간이 넓기 때문에, 평균선 길이, 돌파폭 등의 변수를 조정하여 다른 시장의 적응성을 테스트 할 수 있다.

위험 분석

이 전략의 가장 큰 위험은 역전 실패에 있다. 가격이 역전 신호를 형성한 후, 만약 스톱로스를 성공적으로 트리거하지 못한다면, 원래의 방향으로 계속 운행하면, 큰 부진이 발생할 것이다.

또한, 변수 최적화에 대한 의존도가 높으며, 변수 설정이 부적절하면 가격 역전 시기를 놓치거나 가짜 신호를 발생시킬 수 있다. 시장 행동을 충분히 이해하고 테스트하고, 변수 설정을 신중하게 평가할 필요가 있다.

최적화 방향

신호 품질과 정확도를 높이기 위해 더 많은 지표를 추가하는 것을 고려할 수 있습니다. 예를 들어, 가격 반전 신호가 나타나기 전에 특정 기간 동안의 증가를 감지 할 수 있습니다. 특히 단기 주기 증식 데이터는 가격 변동 특성을 판단 할 수 있습니다.

또한 기계학습 방법을 시도할 수 있으며, 역사적 거래 신호와 가격 데이터를 기록하여 가격의 다음 단계의 가능한 움직임을 판단하는 모델을 훈련 할 수 있습니다. 이것은 가짜 신호를 필터링하고 신호 품질을 향상시키는 데 도움이 될 수 있습니다.

또한, 실제 거래 결과에 따라, 동적으로 매개 변수 또는 규칙 가중치를 조정하여, 전략의 자기 최적화 및 ENO를 구현할 수 있다.

요약하다

이 전략은 전체적으로 안정적으로 작동하며, 합리적인 매개 변수 공간과 시장 환경에서 좋은 수익을 얻을 수 있다. 가장 큰 장점은 위험을 제어할 수 있으며, 또한 약간의 최적화 잠재력을 가지고 있다. 다음 단계의 작업은 신호 품질을 향상시키고, 적응 최적화 능력을 증가시키는 데 집중할 것이다. 지속적인 최적화 후, 이 전략은 투자 포트폴리오에서 강력한 선택이 될 수 있다고 믿는다.

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

//@version=3
strategy(title="WMA Breakout",overlay=true, initial_capital=25000, default_qty_value=1, commission_type=strategy.commission.cash_per_contract, commission_value=3.02)
len = input(20, minval=1, title="Length")
src = input(close, title="Source")
out = wma(src, len)
price_drop = input(.003, "When price drops (In Ticks) Enter Long", step=.001)
price_climb = input(.003, "When price climbs (In Ticks) Enter Short", step=.001)
trail = input(true, "Trailing Stop(checked), Market stop(unchecked)")
stop = input(10, "Stop (in ticks)", step=1)
limit = input(5, "Limit Out", step=1)
//size = input(1, "Limit Position Size (pyramiding)", minval=1)
timec = input(true, "Limit Time of Day (Buying Side)")


//Time Session
sess = input("1600-0500", "Start/Stop trades (Est time)")
t = time(timeframe.period, sess)
//plots
plot(wma(src,len))
z = if low+price_drop<out
    (out-low)
plotarrow(z, colorup=red)

a = if high-price_climb>out
    (high-out)
plotarrow(a, colorup=lime)
av=wma(src,len)

//Orders
if(timec)
    strategy.entry("Enterlong", long=true, when=z and t>1)
else
    strategy.entry("Enterlong", long=true, when=z)
if(trail)
    strategy.exit("Exit","Enterlong", profit=limit, trail_points = 0, trail_offset = stop )
else
    strategy.exit("Exit","Enterlong", profit=limit, loss = stop )
    
if(timec)
    strategy.entry("Entershort", long=false, when=a and t>1)
else
    strategy.entry("Entershort", long=false, when=a)
if(trail)
    strategy.exit("Exit","Entershort", profit=limit, trail_points = 0, trail_offset = stop )
else
    strategy.exit("Exit","Entershort", profit=limit, loss = stop )