역사적인 데이터에 기초한 동적 지원 및 저항 전략

저자:차오장, 날짜: 2023-11-28 17:00:13
태그:

img

전반적인 설명

이 전략은 역동적으로 역사적인 높은 가격, 낮은 가격 및 가까운 가격에 기초하여 지원 및 저항 수준을 계산하고 그에 따라 거래 신호를 생성합니다. 중장기 포지션에 적합하며 수익을 위해 시장에서 지원 및 저항 수준을 효과적으로 활용 할 수 있습니다.

전략 논리

  1. 이전 기간의 높은 가격, 낮은 가격 및 닫은 가격의 평균을 회전점 (PP) 으로 계산합니다.

  2. 3개의 지지선을 계산합니다: S1 = 2PP - 가장 높은 가격; S2 = PP - (R1-S1); S3 = 가장 낮은 가격 - 2(최고 가격 - PP)

  3. 3개의 저항선을 계산합니다: R1 = 2PP - 가장 낮은 가격, R2 = PP + (R1-S1); R3 = 가장 높은 가격 + 2(PP - 가장 낮은 가격)

  4. 가격이 저항선을 통과할 때 긴 포지션을 취하고, 가격이 지지선을 통과할 때 짧은 포지션을 취합니다.

이점 분석

  1. 역사적인 데이터에 기반한 동적 지지 및 저항 수준은 시장 구조의 변화를 적시에 파악할 수 있습니다.

  2. 다층 지원 및 저항 설정은 더 나은 위험 관리 최적화를 허용합니다.

  3. 간단하고 직관적인 거래 신호와 스톱 로스 메커니즘

위험 분석

  1. 역사적인 데이터에 의해 제공되는 기준 가격 수준은 높은 변동성 시나리오에서 유효하지 않을 수 있습니다.

  2. 긴 포지션과 짧은 포지션의 전환은 거래 비용을 고려해야 합니다.

  3. 계산 오류를 피하기 위해 데이터 품질을 보장해야 합니다.

최적화 방향

  1. 100일 이동 평균 등과 같은 더 많은 역사적 데이터 참조를 포함하는 것을 고려하십시오.

  2. 포지션 크기를 최적화하십시오. 예를 들어 변동성에 따라 포지션 크기를 조정하십시오.

  3. 트레일링 스톱 로스나 리스크 기반 스톱 로스 같은 스톱 로스 전략을 추가합니다.

요약

이 전략은 역사에 기반한 다층 지원 및 저항 참조 가격 수준을 제공합니다. 중장기 포지션에 적합한 간단하고 직설적인 논리를 가지고 있습니다. 한편, 높은 변동성 시장 및 거래 비용의 위험은 모니터링되어야합니다. 추가 최적화는 복잡한 환경에서 전략을 견고하게 할 수 있습니다.


/*backtest
start: 2023-10-28 00:00:00
end: 2023-11-27 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 09/06/2020
// Pivot points simply took the high, low, and closing price from the previous period and 
// divided by 3 to find the pivot. From this pivot, traders would then base their 
// calculations for three support, and three resistance levels. The calculation for the most 
// basic flavor of pivot points, known as ‘floor-trader pivots’, along with their support and 
// resistance levels.
//
// WARNING:
//  - For purpose educate only
//  - This script to change bars colors.
////////////////////////////////////////////////////////////
strategy(title="Pivot Point V2", shorttitle="Pivot Point V2", overlay = true)
res = input(title="Resolution", type=input.resolution, defval="D")
SellFrom = input(title="Sell from ", defval="R1", options=["R1", "R2", "R3"])
BuyFrom = input(title="Buy from ", defval="S1", options=["S1", "S2", "S3"])
width = input(1, minval=1)
reverse = input(false, title="Trade reverse")
xHigh  = security(syminfo.tickerid,res, high)
xLow   = security(syminfo.tickerid,res, low)
xClose = security(syminfo.tickerid,res, close)
vPP = (xHigh+xLow+xClose) / 3
vS1 = 2*vPP - xHigh 
vR1 = 2*vPP-xLow
vS2 = vPP - (vR1 - vS1)
vR2 = vPP + (vR1 - vS1)
vS3 = xLow - 2 * (xHigh - vPP)
vR3 = xHigh + 2 * (vPP - xLow) 
pos = 0
S = iff(BuyFrom == "S1", vS1, 
      iff(BuyFrom == "S2", vS2,
         iff(BuyFrom == "S3", vS3,0)))
B = iff(SellFrom == "R1", vR1, 
      iff(SellFrom == "R2", vR2,
         iff(SellFrom == "R3", vR3,0)))
pos := iff(close > B, 1,
       iff(close < S, -1, nz(pos[1], 0))) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1 , 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	 
if (possig == 0) 
    strategy.close_all()
barcolor(possig == -1 ? #b50404: possig == 1 ? #079605 : #0536b3 )

더 많은