주요 가격 포인트에 기반한 추적 전략


생성 날짜: 2023-09-21 15:24:53 마지막으로 수정됨: 2023-09-21 15:24:53
복사: 0 클릭수: 684
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

개요

이 전략은 종종 정수 가격 또는 핵심 가격 수준에 정지 및 정지 가격 지점을 설정하는 아이디어에 기반합니다. 이 가격 지점은 종종 지원 및 저항 지점으로 작용합니다. 이 전략은 이러한 핵심 가격 수준을 식별하여 가격이 가까워질 때 구매 또는 판매 작업을 수행합니다.

전략 원칙

이 전략은 주로 다음과 같은 규칙들을 포함하고 있습니다.

  1. 클로즈오프 가격이 핵심 가격 수준보다 높고 지난 10 K선에서 그 가격을 만지지 않은 상태에서 구매 작업을 수행한다.

  2. 그 다음에는 크레이프 트래킹을 사용하여 가격의 중요한 가격 돌파의 움직임을 추적합니다. 크레이프 걸음은 20 점입니다.

  3. 매각은 매수와 반대되는 것으로, 매매가격이 핵심 가격 수준보다 낮고 지난 10 K선에서 그 가격을 만지지 않은 경우 매각한다.

  4. 중요한 가격 수준을 식별하는 방법은 다음과 같습니다.

    • 종결값을 정수로 변환합니다.
    • 50개의 정점 (변화 가능한) 과 계산된 잔수
    • 25보다 크면 가장 가까운 50개의 integer를 기점값으로 사용한다.
    • 다른 경우, 핵심 가격은 그대로 유지됩니다.

이 전략은 가격 pyschology의 개념에 기초하고 있으며, 정수 가격 또는 핵심 수준은 종종 다공간 당사자가 경쟁하는 중요한 위치이며, 따라서 거래 신호로 효과 낸다. 한편, 기어오르는 추적은 가격 돌파 이후의 추세를 추적 할 수 있다.

전략적 이점

이 전략은 다음과 같은 장점을 가지고 있습니다.

  1. 간단하고 직관적인 거래 신호와 출입 규칙.
  2. 특정 품종에 의존하지 않고 핵심 가격 지점을 활용하는 일반적인 법칙.
  3. 트래킹 스톱로스는 트렌드에 따라 수익을 고정시킬 수 있습니다.

전략적 위험

이 전략에는 다음과 같은 위험도 있습니다.

  1. 핵심 가격 지점은 반드시 강력한 지지 또는 저항이 아닙니다. 가짜 돌파구가 거래 실패로 이어질 수 있습니다.
  2. 고정된 10 K선 판단 규칙은 다른 품종에 적합하지 않을 수 있다.
  3. 추적 중지 거리는 너무 커서는 안 됩니다. 그렇지 않으면 조기 중단 될 수 있습니다.

대응방법:

  1. 이 지표들은 주요 가격점의 강점과 약점을 판단하는 지표들을 더 포함합니다.
  2. 다양한 품종의 파라미터를 최적화하여 최적의 파라미터 조합을 찾습니다.
  3. 시장에 더 가깝게 스톱 손실을 추적하는 매개 변수를 최적화하십시오.

전략 최적화 방향

이 전략은 다음과 같은 측면에서 최적화될 수 있습니다.

  1. 핵심 가격 지점의 중요성을 판단하는 더 많은 조건을 추가하여 가짜 돌파의 위험을 피하십시오. 거래량과 같은 지표와 결합하십시오.

  2. 최적화 매개 변수, 특히 핵심 가격 영역의 걸음 길이나 K선 주기 등의 매개 변수. 다른 품종의 특성에 더 적합하게 만든다.

  3. 추적 스톱 메커니즘을 최적화하여, 예를 들어, 고정된 클라이핑 스톱 대신 동적 추적 스톱을 사용한다.

  4. 기기 학습 알고리즘을 추가하여 신호 품질을 높이기 위해 중요한 가격 영역의 강점을 판단하는 데에 역사 데이터를 사용합니다.

  5. 시간주기를 넘나드는 전략으로 확장하면서 더 높은 시간주기에 트렌드를 판단하고, 더 낮은 시간주기에 추적한다.

요약하다

이 전략은 가격의 중요한 지점에 대한 사고를 바탕으로 간단하고 직관적이며, 보편적인 거래 습관을 사용하여 거래 신호를 형성한다. 전략 기회는 충분하지만, 가짜 돌파구를 처리하기 위해 추가적인 최적화가 필요합니다. 매개 변수 최적화 및 기계 학습과 같은 수단은 전략 안정성을 향상시킬 수 있다. 이 전략은 일일 단선 거래에 대한 사고를 제공 할 수 있으며, 주기 간 트렌드 추적 전략으로 확장 할 수 있습니다.

전략 소스 코드
/*backtest
start: 2022-09-14 00:00:00
end: 2023-09-20 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//Strategy based on the idea that stop loss and take profit are often placed at full price levels or round numbers, whcih acts as resistance and supports levels
//Buy Rules:
//Actual price (close) is above round number.
//Round number level was not touched in previous ten bars (arbitrary value).
//Place a buy and follow the order with a trail step because price can bounce at round number (support) or can go through it.
//Sell Rules are the same of buy rules but inverted.
//
//Need improvement on conditions' logic and round numbers definitions


strategy("dP magnet", overlay=true, pyramiding=0,default_qty_type=strategy.percent_of_equity,default_qty_value=100,currency=currency.USD)

//Round Levels credit to RKchartest

roundLevel50 = input(500, 'Round Level 1, pips')
//roundLevel100 = input(1000, 'Round Level 2, pips')
deviation = input(1000, 'Max distance, pips', minval=0) 

rDelimeter = 1/syminfo.mintick

intRoundLevel = close[1] * rDelimeter

intRemainder = intRoundLevel % roundLevel50 
toRound = (intRemainder >= roundLevel50/2) ? roundLevel50 : 0
roundLevel = (intRoundLevel - intRemainder + toRound) / rDelimeter
plot(roundLevel, title='Round Level 1', color=black, style=line, transp=0, linewidth=1, trackprice=false)

//intRemainder2 = intRoundLevel % roundLevel100
//toRound2 = (intRemainder2 >= roundLevel100/2) ? roundLevel100 : 0
//roundLevel2 = (intRoundLevel - intRemainder2 + toRound2) / rDelimeter
//plot((abs(roundLevel2 - close) * rDelimeter < deviation) ? roundLevel2 : na, title='Round Level 2', color=black, style=circles, transp=0, linewidth=1, trackprice=true)

// end

//Start of strategy

distToFullNumber=(close-roundLevel) //can be positive or negative number

distPips=input(100,'Distance in pips to full level',minval=10) //user defined: this distance defines when to open an order at market price


TrailS=input(20,'Trail Step points',minval=10) //trail step that follows the order

longCondition = iff(distToFullNumber>0 and abs(distToFullNumber)<=distPips and lowest(low,10)>roundLevel,true,false)

if (longCondition)
    strategy.entry("LongMagnet", strategy.long)
    strategy.exit("ExitMagnet","LongMagnet",trail_points=TrailS)

shortCondition = iff(distToFullNumber<0 and abs(distToFullNumber)<=distPips and highest(high,10)<roundLevel,true,false)

if (shortCondition)
    strategy.entry("ShortMagnet", strategy.short)
    strategy.exit("Exit_Magnet","ShortMagnet",trail_points=TrailS)