
이 전략은 평행선 교차와 동적 손실을 기반으로 한 트렌드 추적 시스템이다. 핵심 논리는 빠른 평균선 ((EMA5) 과 느린 평균선 ((EMA200) 의 금포를 통해 상승 트렌드의 시작점을 포착하고 ATR 동적 손실과 결합하여 수익을 보호하는 것이다. 전략은 또한 위험과 수익의 균형을 이루기 위해 고정 비율의 정지 목표를 설정한다.
이 전략은 다음과 같은 핵심 메커니즘을 기반으로 운영됩니다.
이것은 고전적인 기술 지표와 현대적 위험 관리를 결합한 트렌드 추적 전략이다. 동적 ATR을 이용하여 동적 ATR을 이용하여 동적 ATR을 이용하여 동적 ATR을 이용하여 동적 ATR을 이용하여 동적 ATR을 이용하여 동적 ATR을 이용하여 동적 ATR을 이용하여 동적 ATR을 이용하여 동적 ATR을 이용하여 동적 ATR을 이용하여 동적 ATR을 이용하여 동적 ATR을 이용하여 동적 ATR을 이용하여 동적 ATR을 이용하여 동적 ATR을 이용하여 동적 ATR을 이용하여 동적 ATR을 이용하여 동적 ATR을 이용하여 동적 ATR을 이용하여 동적 ATR을 이용하여 동적 ATR을 이용하여 동적 ATR을 이용하여 동적 ATR을 이용하여 동적 ATR을 이용하여 동적 ATR을 이용하여 동적 ATR을 이용하여 동적 ATR을 이용하여 동적 ATR을 이용하여 동적 ATR을 이용하여 동적 ATR을 이용하여 동적 ATR을 이용하여 동적 ATR을 이용하여 동적 ATR을 이용하여 동적 ATR을 이용하여 동적 ATR을 이용하여 동적 ATR을 이용하여 동적 ATR을 이용하여 동적 ATR을
/*backtest
start: 2024-02-21 00:00:00
end: 2025-02-18 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/
// -----------------------------------------------------------
// Title: EMA5 Cross-Up EMA200 with ATR Trailing Stop & Take-Profit
// Author: ChatGPT
// Version: 1.1 (Pine Script v6)
// Notes: Enter Long when EMA(5) crosses above EMA(200).
// Exit on either ATR-based trailing stop or
// specified % Take-Profit.
// -----------------------------------------------------------
//@version=6
strategy(title="EMA5 Cross-Up EMA200 ATR Stop", shorttitle="EMA5x200_ATRStop_v6", overlay=true, initial_capital=100000, default_qty_type=strategy.percent_of_equity,default_qty_value=100)
// -- 1) Inputs
emaFastLength = input.int(5, "Fast EMA Length")
emaSlowLength = input.int(200, "Slow EMA Length")
atrPeriod = input.int(14, "ATR Period")
atrMult = input.float(2.0,"ATR Multiplier", step=0.1)
takeProfitPerc = input.float(5.0,"Take-Profit %", step=0.1)
// -- 2) Indicator Calculations
emaFast = ta.ema(close, emaFastLength)
emaSlow = ta.ema(close, emaSlowLength)
atrValue = ta.atr(atrPeriod)
// -- 3) Entry Condition: EMA5 crosses above EMA200
emaCrossUp = ta.crossover(emaFast, emaSlow)
// -- 4) Determine a dynamic ATR-based stop loss (for trailing)
longStopPrice = close - (atrValue * atrMult)
// -- 5) Take-Profit Price
// We store it in a variable so we can update it when in position.
var float takeProfitPrice = na
var float avgEntryPrice = na
if strategy.position_size > 0
// If there is an open long, get the average fill price:
avgEntryPrice := strategy.position_avg_price
takeProfitPrice := avgEntryPrice * (1 + takeProfitPerc / 100)
else
// If no open position, reset
takeProfitPrice := na
avgEntryPrice := na
// -- 6) Submit Entry Order
if emaCrossUp
strategy.entry(id="Long", direction=strategy.long)
// -- 7) Submit Exit Orders (Stop or Take-Profit)
strategy.exit(id = "Exit Long",stop = longStopPrice,limit = takeProfitPrice)
// -- 8) (Optional) Plotting for Visuals
plot(emaFast, color=color.new(color.yellow, 0), linewidth=2, title="EMA Fast")
plot(emaSlow, color=color.new(color.blue, 0), linewidth=2, title="EMA Slow")
plot(longStopPrice, color=color.red, linewidth=2, title="ATR Trailing Stop")