평균 반전 폭파 낮은 전략

저자:차오장, 날짜: 2023-11-02 15:34:22
태그:

img

전반적인 설명

이 전략의 주요 아이디어는 가격이 특정 기간 동안 가장 낮은 가격을 뚫고 나가고 가격이 평균으로 돌아가는 것을 기다리는 것을 감지하는 것입니다. 트렌드 다음 전략에 속합니다.

전략 논리

이 전략은 피인 스크립트 (Pine Script) 의 ta.lowest 방법을 사용하여 지정된 기간의 최저 가격을 얻으며 이전 기간의 최저 가격과 비교합니다.

최신 기간의 최저 가격 최저Low가 이전 기간의 최저 가격 prevLow보다 낮으면 긴 신호가 트리거됩니다. 긴 시나리오가 끝나면 지정된 기간의 가장 높은 가격 highestHigh과 비교됩니다. 최신 기간의 가장 높은 가격이 이전 최고 가격보다 높으면 포지션을 닫습니다.

이 전략은 트레이딩 빈도를 제어하기 위해 가장 낮은 가격으로 1, 2, 3 또는 4 개의 이전 최저 가격을 연속적으로 돌파해야 하는 트리거 조건을 선택할 수 있습니다.

또한 차트에서 가장 낮은 가격 라인을 가장 낮고 가장 높은 가격 라인을 가장 높게 표시하여 트렌드 변화를 시각적으로 표시합니다.

이점 분석

  • 이 전략은 상대적으로 높은 승률을 가진 새로운 최저치를 깨고 트렌드 반전을 잡습니다.

  • 거래 주파수를 제어하기 위해 최저 가격의 수를 선택할 수 있습니다.

  • 선을 그리는 것은 트렌드 변화 지점을 시각적으로 결정하는 데 도움이 됩니다.

  • 간단하고 명확한 전략 논리, 이해하기 쉽고 실행하기 쉽습니다.

  • 다양한 주식과 기간에 구성 및 최적화 할 수 있습니다.

위험 분석

  • 잘못된 바닥을 깨는 것은 트렌드 반전점을 결정할 수 없으며 손실로 이어질 수 있습니다.

  • 다양한 매개 변수 조합을 테스트하여 구성을 최적화해야 합니다. 그렇지 않으면 거래 빈도가 너무 높거나 너무 낮을 수 있습니다.

  • 매개 변수들은 서로 다른 주식에 맞게 조정되어야 하며 기계적으로 적용되어서는 안 됩니다.

  • 적당한 백테스트 기간이 지나치게 부착될 수 있습니다.

  • 가격이 폭락 후 새로운 최저치를 올릴 수 있습니다. 위험을 통제하기 위해 손해를 멈추어야 합니다.

최적화 방향

  • 트레이드당 손실을 제한하기 위해 이동 스톱 손실, 후속 스톱 손실과 같은 스톱 손실 메커니즘을 추가합니다.

  • 거래 빈도와 신호 품질을 균형을 맞추기 위해 브레이크의 수를 최적화합니다.

  • 다른 주류와 시간대에 대한 테스트 매개 변수

  • 다양한 시장에서 자주 거래하는 것을 피하기 위해 필터를 추가하십시오.

  • 트렌드 상거래를 피하기 위해 트렌드 지표를 추가하는 것을 고려하십시오.

  • 다른 출구 신호를 테스트해

결론

이 전략은 전형적인 평균회전 브레이크아웃 전략인 최저 가격 브레이크아웃을 모니터링함으로써 역전 기회를 잡습니다. 이의 장점은 단순성, 제어 가능한 주파수 및 다양한 주식에 적용 가능성입니다. 그러나 일부 잘못된 브레이크아웃 위험도 있습니다. 필터와 최적화를 추가하고 위험을 제어하는 것이 필요합니다. 포괄적 인 테스트 및 최적화로 안정적이고 신뢰할 수있는 거래 시스템이 될 수 있습니다.


/*backtest
start: 2023-10-02 00:00:00
end: 2023-11-01 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/
// © merovinh

//@version=5
strategy(title="Merovinh - Mean Reversion Lowest low",
     overlay = true,
     default_qty_type = strategy.percent_of_equity,
     initial_capital = 10000,
     default_qty_value = 10,
     commission_type = strategy.commission.percent,
     slippage = 1,
     commission_value = 0.04)

GR_TIME = 'Time Period'

bars = input(9, title = "Minimum number of bars", tooltip = "The minimum number of bars before updating lowest low / highest high")

numberOfLows  = input.string(defval='One', title='Number of broken lows', options=['One', 'Two', 'Three', 'Four'])

//Period

var prevLow = .0
var prevHigh = .0
var prevLow2 = .0
var prevLow3 = .0
var prevLow4 = .0

truetime = true


highestHigh = ta.highest(high, bars)
lowestLow = ta.lowest(low, bars)

if numberOfLows == 'One'
    if truetime and prevLow > 0 and lowestLow < prevLow
        strategy.entry('long', strategy.long)
if numberOfLows == 'Two'
    if truetime and prevLow > 0 and lowestLow < prevLow and prevLow < prevLow2
        strategy.entry('long', strategy.long)
if numberOfLows == 'Three'
    if truetime and prevLow > 0 and lowestLow < prevLow and prevLow < prevLow2 and prevLow2 < prevLow3
        strategy.entry('long', strategy.long)
if numberOfLows == 'Four'
    if truetime and prevLow > 0 and lowestLow < prevLow and prevLow < prevLow2 and prevLow2 < prevLow3 and prevLow3 < prevLow4
        strategy.entry('long', strategy.long)

if truetime and prevHigh > 0 and highestHigh > prevHigh
    strategy.close('long')


if prevLow != lowestLow
    prevLow4 := prevLow3
    prevLow3 := prevLow2
    prevLow2 := prevLow
    prevLow := lowestLow
prevHigh := highestHigh

plot(lowestLow, color=color.green, linewidth=1, title="Lowest Low Line")
plot(highestHigh, color=color.green, linewidth=1, title="Highest High Line")




더 많은