과거 데이터를 기반으로 한 동적 지원 및 저항 전략


생성 날짜: 2023-11-28 17:00:13 마지막으로 수정됨: 2023-11-28 17:04:16
복사: 4 클릭수: 648
avatar of ChaoZhang ChaoZhang
1
집중하다
1619
수행원

과거 데이터를 기반으로 한 동적 지원 및 저항 전략

개요

이 전략은 역사적 최고점, 최저점, 그리고 종결 가격의 동적 계산을 기반으로 지지부진한 지점을 얻어 거래 신호를 생성한다. 이 전략은 중·장선 지점을 보유하는 데 적합하며, 시장의 지지부진한 저항을 효과적으로 활용하여 이익을 얻을 수 있다.

전략 원칙

  1. 지난 주기의 최고 가격, 최저 가격 및 종식 가격의 평균을 계산하여 기준점 PP를 얻는다.

  2. 3개의 지지선을 계산해 봅시다.PP - 최고 가격; 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. 백일선 등과 같은 더 많은 역사적 자료의 참고 자료를 도입하는 것을 고려할 수 있다.

  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 )