피크에서 피크 패턴에 기반한 거래 전략

저자:차오장, 날짜: 2024-02-20 15:40:58
태그:

img

전반적인 설명

이 전략은 피크-투-피크 패턴 기반 거래 전략이라고 불린다. 이 전략은 주로 촛불 차트에서 진입과 출구를 결정하기 위해 피크-투-피크 패턴을 사용합니다. 이것은 기술 분석 기반 전략입니다.

전략 원칙

이 전략은 촛불 차트에서 픽에서 픽 패턴을 식별하기 위해 상승하는 픽 (upFractal) 과 떨어지는 픽 (downFractal) 을 정의합니다.

구체적으로, 상승하는 피크에 대한 판단 논리는: 현재 촛불의 최고는 최근 n 촛불의 최고이며, 후속 촛불의 최고는 현재를 초과하지 않습니다.

락하는 피크에 대한 판단 논리는: 현재 촛불의 최하위는 최근 n 촛불의 최하위이며, 후속 촛불의 최하위는 현재보다 낮지 않습니다.

여기서 볼의 변수와 루프는 이전 n와 후대의 n 촛불 하위/하위와 현재 촛불의 관계를 결정하고 결국 상승 및 하락 피크를 식별하는 데 사용됩니다.

따라서 이 전략의 핵심 논리는 다음과 같습니다.

  1. 상승봉과 하락봉을 식별
  2. 높은 봉우리에서 길고 떨어지는 봉우리에서 짧습니다.

이점 분석

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

  1. 피크에서 피크 패턴은 쉽게 식별, 작동하기 쉽습니다
  2. 기하급수 기준으로, 기본 요소에 영향을 받지 않습니다.
  3. 가능한 소액 수요

위험 분석

이 전략에는 몇 가지 위험도 있습니다.

  1. 피크에서 피크 패턴 판단이 정확하지 않아 가장 좋은 입력 시기를 놓칠 수 있습니다.
  2. 시장이 격렬하게 움직일 때 손해를 멈추는 것을 설정하는 것이 어렵습니다.
  3. 패턴에만 의존하고 다른 요소를 무시합니다.

대책:

  1. 논리를 최적화하기 위해 피크에서 피크 패턴의 매개 변수를 조정
  2. 다른 지표와 결합하여 스톱 로스 위치를 결정합니다.
  3. 기본 분석 또는 다른 분석과 함께 사용

최적화 방향

전략을 최적화하는 몇 가지 방향:

  1. 피크에서 피크 패턴을 더 잘 식별하기 위해 매개 변수 조정 옵션을 증가
  2. 스톱 손실 논리를 추가합니다.
  3. 거래량, 변동성 및 기타 지표를 고려합니다.
  4. 다른 시간 프레임 분석을 결합

요약

이 전략은 피크에서 피크 패턴 원칙에 기초하여 아마도 더 작은 드라우다운으로 작동하는 것이 간단합니다. 그러나 여전히 몇 가지 위험이 있으며 성능을 극대화하기 위해 다른 분석 방법과 결합해야합니다. 다음 단계는 패턴 판단의 정확성, 중지 손실, 지표 최적화 등을 개선하는 것입니다.


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("sanju parmar", shorttitle="sanju trading empire", overlay=true)

// Define "n" as the number of periods and keep a minimum value of 2 for error handling.
n = input.int(title="Periods", defval=2, minval=2)

// UpFractal
bool upflagDownFrontier = true
bool upflagUpFrontier0 = true
bool upflagUpFrontier1 = true
bool upflagUpFrontier2 = true
bool upflagUpFrontier3 = true
bool upflagUpFrontier4 = true

for i = 1 to n
    upflagDownFrontier := upflagDownFrontier and (high[n-i] < high[n])
    upflagUpFrontier0 := upflagUpFrontier0 and (high[n+i] < high[n])
    upflagUpFrontier1 := upflagUpFrontier1 and (high[n+1] <= high[n] and high[n+i + 1] < high[n])
    upflagUpFrontier2 := upflagUpFrontier2 and (high[n+1] <= high[n] and high[n+2] <= high[n] and high[n+i + 2] < high[n])
    upflagUpFrontier3 := upflagUpFrontier3 and (high[n+1] <= high[n] and high[n+2] <= high[n] and high[n+3] <= high[n] and high[n+i + 3] < high[n])
    upflagUpFrontier4 := upflagUpFrontier4 and (high[n+1] <= high[n] and high[n+2] <= high[n] and high[n+3] <= high[n] and high[n+4] <= high[n] and high[n+i + 4] < high[n])
flagUpFrontier = upflagUpFrontier0 or upflagUpFrontier1 or upflagUpFrontier2 or upflagUpFrontier3 or upflagUpFrontier4

upFractal = (upflagDownFrontier and flagUpFrontier)


// downFractal
bool downflagDownFrontier = true
bool downflagUpFrontier0 = true
bool downflagUpFrontier1 = true
bool downflagUpFrontier2 = true
bool downflagUpFrontier3 = true
bool downflagUpFrontier4 = true

for i = 1 to n
    downflagDownFrontier := downflagDownFrontier and (low[n-i] > low[n])
    downflagUpFrontier0 := downflagUpFrontier0 and (low[n+i] > low[n])
    downflagUpFrontier1 := downflagUpFrontier1 and (low[n+1] >= low[n] and low[n+i + 1] > low[n])
    downflagUpFrontier2 := downflagUpFrontier2 and (low[n+1] >= low[n] and low[n+2] >= low[n] and low[n+i + 2] > low[n])
    downflagUpFrontier3 := downflagUpFrontier3 and (low[n+1] >= low[n] and low[n+2] >= low[n] and low[n+3] >= low[n] and low[n+i + 3] > low[n])
    downflagUpFrontier4 := downflagUpFrontier4 and (low[n+1] >= low[n] and low[n+2] >= low[n] and low[n+3] >= low[n] and low[n+4] >= low[n] and low[n+i + 4] > low[n])
flagDownFrontier = downflagUpFrontier0 or downflagUpFrontier1 or downflagUpFrontier2 or downflagUpFrontier3 or downflagUpFrontier4

downFractal = (downflagDownFrontier and flagDownFrontier)

plotshape(downFractal, style=shape.triangleup, location=location.belowbar, offset=-n, color=#18f523, size = size.small)
plotshape(upFractal, style=shape.triangledown, location=location.abovebar, offset=-n, color=#cf3d11, size = size.small)

// Strategy Conditions
longCondition = upFractal
shortCondition = downFractal

// Strategy Entry and Exit
if (longCondition)
    strategy.entry("Buy", strategy.long)
if (shortCondition)
    strategy.entry("Sell", strategy.short)


더 많은