
“Z값 기반의 트렌드 추적 전략”은 Z값이라는 통계적 지표를 사용하여 가격의 이동 평균에서 벗어난 정도를 측정하고 표준 차이를 표준화 척도로 사용하여 트렌딩 기회를 포착합니다. 이 전략은 간결함과 효과로 유명하며 특히 가격 움직임이 평준으로 돌아가는 시장에 적합합니다. 여러 지표에 의존하는 복잡한 시스템과 달리 “Z값 트렌드 전략”은 명확하고 통계적으로 눈에 띄는 가격 변화에 초점을 맞추고 있으며, 정밀 데이터 중심의 방법을 선호하는 거래자에게 적합합니다.
이 전략의 핵심은 Z값을 계산하는 데 있습니다. Z값은 현재 가격과 사용자 정의 길이의 가격 지수 이동 평균 (EMA) 의 차이를 계산하여 동일한 길이의 가격 기준으로 나누어집니다.
z = (x - μ) / σ
그 중, x는 현재 가격,μ는 EMA 평균,σ는 표준차이다.
트레이딩 신호는 Z값이 미리 정해진 지점을 넘어서서 생성된다:
이 위험은 지속적인 시장 분석, 변수 최적화 및 재검토에 기초하여 신중하게 실행하여 제어 및 완화 할 수 있습니다.
“Z-값 기반의 트렌드 추적 전략”은 간단하고 안정적이며 유연한 특성으로 트렌드 기회를 잡기 위해 독특한 관점을 제공합니다. 합리적인 파라미터 설정, 신중한 위험 관리 및 지속적인 최적화를 통해 이 전략은 양자 거래자가 변화하는 시장에서 안정적으로 나아갈 수 있도록 도와줄 것입니다.
/*backtest
start: 2023-04-23 00:00:00
end: 2024-04-28 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © PresentTrading
// This strategy employs a statistical approach by using a Z-score, which measures the deviation of the price from its moving average normalized by the standard deviation.
// Very simple and effective approach
//@version=5
strategy('Price Based Z-Trend - strategy [presentTrading]',shorttitle = 'Price Based Z-Trend - strategy [presentTrading]', overlay=false, precision=3,
commission_value=0.1, commission_type=strategy.commission.percent, slippage=1,
currency=currency.USD, default_qty_type=strategy.percent_of_equity, default_qty_value=10, initial_capital=10000)
// User-definable parameters for the Z-score calculation and bar coloring
tradeDirection = input.string("Both", "Trading Direction", options=["Long", "Short", "Both"]) // User selects trading direction
priceDeviationLength = input.int(100, "Standard Deviation Length", step=1) // Length for standard deviation calculation
priceAverageLength = input.int(100, "Average Length", step=1) // Length for moving average calculation
Threshold = input.float(1, "Threshold", step=0.1) // Number of standard deviations for Z-score threshold
priceBar = input(title='Bar Color', defval=true) // Toggle for coloring price bars based on Z-score
// Z-score calculation based on user input for the price source (typically the closing price)
priceSource = input(close, title="Source")
priceZScore = (priceSource - ta.ema(priceSource, priceAverageLength)) / ta.stdev(priceSource, priceDeviationLength) // Z-score calculation
// Conditions for entering and exiting trades based on Z-score crossovers
priceLongCondition = ta.crossover(priceZScore, Threshold) // Condition to enter long positions
priceExitLongCondition = ta.crossunder(priceZScore, -Threshold) // Condition to exit long positions
longEntryCondition = ta.crossover(priceZScore, Threshold)
longExitCondition = ta.crossunder(priceZScore, -Threshold)
shortEntryCondition = ta.crossunder(priceZScore, -Threshold)
shortExitCondition = ta.crossover(priceZScore, Threshold)
// Strategy conditions and execution based on Z-score crossovers and trading direction
if (tradeDirection == "Long" or tradeDirection == "Both") and longEntryCondition
strategy.entry("Long", strategy.long) // Enter a long position
if (tradeDirection == "Long" or tradeDirection == "Both") and longExitCondition
strategy.close("Long") // Close the long position
if (tradeDirection == "Short" or tradeDirection == "Both") and shortEntryCondition
strategy.entry("Short", strategy.short) // Enter a short position
if (tradeDirection == "Short" or tradeDirection == "Both") and shortExitCondition
strategy.close("Short") // Close the short position
// Dynamic Thresholds Visualization using 'plot'
plot(Threshold, "Dynamic Entry Threshold", color=color.new(color.green, 50))
plot(-Threshold, "Dynamic Short Entry Threshold", color=color.new(color.red, 50))
// Color-coding Z-Score
priceZScoreColor = priceZScore > Threshold ? color.green :
priceZScore < -Threshold ? color.red : color.blue
plot(priceZScore, "Z-Score", color=priceZScoreColor)
// Lines
hline(0, color=color.rgb(255, 255, 255, 50), linestyle=hline.style_dotted)
// Bar Color
priceBarColor = priceZScore > Threshold ? color.green :
priceZScore > 0 ? color.lime :
priceZScore < Threshold ? color.maroon :
priceZScore < 0 ? color.red : color.black
barcolor(priceBar ? priceBarColor : na)