패턴과 캔들스틱을 기반으로 한 양적 거래 전략


생성 날짜: 2024-02-19 14:32:45 마지막으로 수정됨: 2024-02-19 14:32:45
복사: 0 클릭수: 747
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

패턴과 캔들스틱을 기반으로 한 양적 거래 전략

개요

이 글은 형태 분석과 선 형태를 결합한 양적 거래 전략에 대해 소개할 것이다. 이 전략은 가격 그래프의 중요한 변곡점과 강력한 반전을 나타내는 형태를 감지함으로써 낮은 위험과 높은 효율을 가진 자동 거래를 구현한다.

전략 원칙

이 전략은 가격 움직임에 대한 상세한 분석을 기반으로, 형태 분석과 선분 분석을 결합하여, 명확한 진출 논리와 중단 논리를 설정하여, 트렌드에 대한 효과적인 추적을 가능하게 한다.

구체적으로 말해서, 그것의 입시 조건은: 가격이 상단에서 처음 두 K 라인을 통과하는 가장 높은 가격이며, 돌파 전기 고점 형태 또는 다중 머리 삼림 형태 또는 형 중 하나를 나타낸다. 이 조합 조건은 상장 기회를 효과적으로 확인한다. 동시에 그것의 중지 조건은: 가격이 아래에서 처음 두 K 라인을 통과하는 가장 낮은 가격이다. 이러한 중지 논리는 손실을 제 시간에 효율적으로 보장한다.

판단 형태에 있어서는, 이 전략은 중요한 전환점을 식별하는 분류선을 사용하는 것과 트렌드 반향을 판단하는 세 가지 전형적인 형태를 결합한다. 중요한 전환점을 분류하는 것은 비교적 광범위한 분류 이론을 사용하며, 다중 머리, 공허 머리 삼키기, 그리고 같은 형태는 비교적 성숙한 알고리즘을 사용한다.

구체적인 구현에서, 이 전략은 pine 스크립트를 사용하여 작성된다. 그것의 검출 분류의 구현 논리는 현재 K 선의 최고 값이 이전 3 K 선의 최고 값과 같을 때, 즉 상위 분류이다. 바닥 분류의 판단 원칙은 유사하다. 검출 흡수 유형 형태는 오픈 가격, 닫기 가격 크기의 관계에 대한 엄격한 판단에 기초한다.

전략적 이점

이 전략의 주요 장점은 다음과 같습니다.

  1. 그리고 그 결과로, 이 두 가지 특징은 다음과 같다.
  2. 진입/파괴 논리는 명확하고 간단하며, 실행하기 쉽다.
  3. “기술의 발전은 과학의 발전에 도움이 됩니다.
  4. Pine 스크립트는 트레이딩뷰와 같은 주요 플랫폼에 적용됩니다.

전략적 위험

이 전략에는 여전히 위험성이 있습니다.

  1. 하지만, 이 모든 것은 여전히 주관적인 판단을 내리고 있습니다.
  2. 단기간에 연속적인 잘못된 신호가 발생할 수 있습니다.
  3. 하이프렌크 트레이딩에서 스톱로스 규모는 조정해야 한다.

위와 같은 위험은 스톱로스 전략을 최적화하고, 트렌드 필터를 도입하고, 전략 변수를 검증하는 양적 도구를 사용하여 제어 할 수 있습니다.

전략 최적화

이 전략은 다음과 같은 방향으로 더 개선될 수 있습니다.

  1. 모양의 변수를 조정하여 판단의 정확성을 보장합니다.
  2. 트렌드 판단을 높여서 단기적인 변동으로 인한 잘못된 신호를 피하십시오.
  3. 기계 학습과 같은 방법을 도입하여 매개 변수의 자동 최적화를 구현한다.

이러한 최적화를 통해 전략의 안정성과 수익성을 더욱 강화할 수 있습니다.

요약하다

이 글은 분형선과 ?? 형태를 기반으로 한 양적 거래 전략에 대해 자세히 소개한다. 이 전략은 판단이 정확하고, 실행하기 쉽고, 가격 동향을 효과적으로 포착하고 자동화 거래를 구현할 수 있다. 지속적인 최적화 및 검증에 따라, 그 성능은 더 향상될 것이며, 투자자 또는 거래자가 깊이 연구하고 적용할 가치가 있다.

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

//@version=4
strategy("Fractal & Pattern Entry/Exit Strategy", overlay=true)

// Fractal calculation
fractalHigh = high == highest(3)
fractalLow = low == lowest(3)

// Pattern detection
bullishEngulfing = open < close[1] and close > open[1] and close > open + (open[1] - close[1]) * 2 and low < min(open, close) and high > max(open, close) and open[1] > close[1]
bearishEngulfing = open > close[1] and close < open[1] and open > close + (close[1] - open[1]) * 2 and high > max(open, close) and low < min(open, close) and open[1] < close[1]
hammer = open < close and close > (high + low + open * 2) / 4 and close - open > (high - low) * 0.6 and high - close < (high - low) * 0.1 and open - low < (high - low) * 0.1
hangingMan = open > close and open < (high + low + close * 2) / 4 and open - close > (high - low) * 0.6 and high - open < (high - low) * 0.1 and close - low < (high - low) * 0.1

// Entry condition
longCondition = crossover(close, highest(2)[1]) and (fractalHigh or bullishEngulfing or hammer)
shortCondition = crossunder(close, lowest(2)[1]) and (fractalLow or bearishEngulfing or hangingMan)

// Exit condition
exitLongCondition = crossunder(close, lowest(2)[1])
exitShortCondition = crossover(close, highest(2)[1])

// Entry and exit orders
if (longCondition)
    strategy.entry("Long", strategy.long)
if (shortCondition)
    strategy.entry("Short", strategy.short)
if (exitLongCondition)
    strategy.close("Long")
if (exitShortCondition)
    strategy.close("Short")

// Plot fractals
plotshape(fractalHigh, title="Fractal High", style=shape.triangledown, location=location.abovebar, color=color.green, size=size.small)
plotshape(fractalLow, title="Fractal Low", style=shape.triangleup, location=location.belowbar, color=color.red, size=size.small)

// Plot patterns
plotshape(bullishEngulfing, title="Bullish Engulfing", style=shape.arrowup, location=location.belowbar, color=color.green, size=size.small)
plotshape(bearishEngulfing, title="Bearish Engulfing", style=shape.arrowdown, location=location.abovebar, color=color.red, size=size.small)
plotshape(hammer, title="Hammer", style=shape.arrowup, location=location.belowbar, color=color.green, size=size.small)
plotshape(hangingMan, title="Hanging Man", style=shape.arrowdown, location=location.abovebar, color=color.red, size=size.small)