
딱딱함 돌파 전략은 가격 딱딱함 지표에 기반한 돌파 전략이다. 그것은 특정 주기 동안 종식 시가격이 경로를 돌파하는 횟수를 계산하여 가격의 딱딱함을 판단한다. 딱딱함 지표가 설정된 경계를 넘으면, 거래가 돌파될 것이라고 판단하여 구매 작업을 수행한다. 딱딱함 지표가 경계를 넘으면, 거래가 다시 돌아서서 판매 작업을 수행한다.
평균선과 표준차를 계산한다: 우선 n주기의 간단한 이동 평균을 기준으로 상반도로 계산하고, 그 다음 가격 표준차의 0.2배를 기준으로 하반도로 amortize한다.
강도 지표 계산: 통계 m주기 내에 종식 가격이 상대로 올라간 날 수를 나누고, m의 값을 0-100로 나누고, n주기 EMA를 부드럽게 하여 최종 강도 값을 얻습니다. 이는 가격을 상대로 돌파 할 확률을 나타냅니다.
강도와 임계값을 비교: 강도 지표 위에 설정된 임계값을 넘으면, 파기 확률이 증가하여 구매 신호를 생성한다. 강도 지표 아래에 임계값을 넘으면, 파기 확률이 감소하여 판매 신호를 생성한다.
진입과 출전: 종전 가격 돌파가 경로를 돌파할 때 구매하고, 돌파가 실패할 때 판매한다. 여러 돌파를 하는 동시에, 공중 조정도 할 수 있다.
브레이크 시점을 잡기: relativel는 트렌드가 곧 돌파하거나 회귀할 시점을 예측할 수 있게 해줍니다.
브레이크와 회귀를 결합: 이 전략은 강도 지표의 브레이크와 회귀를 동시에 활용하여 과잉과 적자 기회를 잡을 수 있습니다.
매개 변수 유연성: 사용자는 시장에 따라 평균선 길이, 강성 주기, 하락값과 같은 매개 변수를 조정할 수 있으며, 다른 주기 및 시장의 특성에 적응할 수 있다.
구현이 간단하다: 딱딱함 지표와 값 비교만 사용하며, 복잡한 논리가 없고, 코드 구현이 간결하다.
파격 실패 위험: 강도가 하락을 초과할 때, 가격이 경로를 돌파할 것을 완전히 보장 할 수 없습니다. 허위 파격 위험이 있습니다.
회귀 범위 위험: 공백 시 특정 회귀 범위와 위치를 예측할 수 없으며, 과도한 손실 위험이 있습니다.
매개 변수 최적화 위험: 기준 매개 변수는 시장의 변화에 완전히 적응할 수 없으며 실제 상황에 따라 계속 테스트 및 최적화가 필요합니다.
자주 거래 위험: 이 전략은 거래 빈도가 높으며 거래 비용과 슬라이드 포인트 손실을 증가시킵니다.
최적화 파라미터: 다른 시장의 파라미터 설정을 테스트하여 최적의 파라미터 조합을 찾을 수 있습니다. 예를 들어 거래 빈도를 낮추기 위해 평균 선 길이를 늘립니다.
추가 스톱: 단독 손실을 제어하기 위해 합리적인 스톱 논리를 설정한다.atr에 따라 스톱 지점을 설정할 수 있다.
다른 지표와 결합: MACD, KD와 같은 지표와 결합하여 특정 진입 지점을 결정하여 가짜 돌파의 가능성을 줄일 수 있습니다.
출전 조건을 최적화: 트렌드 지표와 같은 트렌드 반전의 특성을 파악하여 더 정확한 출전 조건을 설정할 수 있다.
딱딱한 브레이크 전략은 전체적으로 간단하고 실용적입니다. 그것은 가격의 가능한 브레이크와 회귀 시기를 미리 판단할 수 있으며, 약간의 실용적 가치가 있습니다. 그러나 우리는 또한 가짜 브레이크와 회귀 범위에 대한 문제에 주의를 기울여야하며, 파라미터를 최적화하고 다른 기술 지표를 추가하여 더 정확한 거래 기회를 잠금 할 수 있습니다.
/*backtest
start: 2023-12-26 00:00:00
end: 2024-01-02 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
// Copyright (c) 2020-present, JMOZ (1337.ltd)
// Copyright (c) 2018-present, Alex Orekhov (everget)
// Stiffness Indicator script may be freely distributed under the MIT license.
strategy("Stiffness Strategy", overlay=false, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_value=0.075)
maLength = input(title="Moving Average Length", minval=1, defval=100)
stiffLength = input(title="Stiffness Length", minval=1, defval=60)
stiffSmooth = input(title="Stiffness Smoothing Length", minval=1, defval=3)
threshold = input(title="Threshold", minval=1, defval=90)
highlightThresholdCrossovers = input(title="Highlight Threshold Crossovers ?", type=input.bool, defval=false)
bound = sma(close, maLength) - 0.2 * stdev(close, maLength)
sumAbove = sum(close > bound ? 1 : 0, stiffLength)
stiffness = ema(sumAbove * 100 / stiffLength, stiffSmooth)
long_cond = crossover(stiffness, threshold)
long_close = stiffness > threshold and falling(stiffness, 1)
short_cond = crossunder(stiffness, threshold) or stiffness < threshold and falling(stiffness, 1)
short_close = stiffness < threshold and rising(stiffness, 1)
strategy.entry("Long", strategy.long, when=long_cond)
strategy.close("Long", when=long_close)
strategy.entry("Short", strategy.short, when=short_cond)
strategy.close("Short", when=short_close)
transparent = color.new(color.white, 100)
bgColor = highlightThresholdCrossovers ? stiffness > threshold ? #0ebb23 : color.red : transparent
bgcolor(bgColor, transp=90)
plot(stiffness, title="Stiffness", style=plot.style_histogram, color=#f5c75e, transp=0)
plot(threshold, title="Threshold", color=color.red, transp=0)