
이 전략은 폴링거 대역과 지수 이동 평균 ((EMA) 의 두 가지 기술 지표를 결합하여 시장의 단기 가격 변동을 포착하기 위해 고안되었습니다. 폴링거 대역은 가격의 변동성을 측정하는 데 사용되며, EMA는 트렌드 방향을 평가하는 데 사용됩니다. 종결 가격이 EMA를 뚫고 경로를 넘어서면 상승 추세가 계속될 수 있음을 나타내는 경우 더 많은 포지션을 열고, 반대로 종결 가격이 EMA를 뚫고 경로를 넘어서면 하향 추세가 계속될 수 있음을 나타내는 경우 포지션을 열고, 포지션을 공백합니다.
이 전략의 핵심은 폴링 띠와 EMA의 결합을 사용하여 잠재적인 거래 기회를 식별하는 것이다. 폴링 띠는 세 개의 선으로 구성된다: 중간 경로 (通常為簡易移動平均), 상단 경로 (通常為簡易移動平均), 중간 경로 (通常為簡易移動平均), 중간 경로 (通常為簡易移動平均), 중간 경로 (通常為簡易移動平均), 중간 경로 (通常為簡易移動平均), 중간 경로 (通常為簡易移動平均), 중간 경로 (通常為簡易移動平均), 중간 경로 (通常為簡易移動平均), 중간 경로 (通常為簡易移動平均), 중간 경로 (通常為簡易移動平均), 중간 경로 (通常為簡易移動平均), 중간 경로 (通常為簡易移動平均), 중간 경로 (通常為簡易移動平均).
이 전략의 거래 논리는 다음과 같습니다.
볼링 띠와 EMA 트렌드 추적 전략은 변동성 지표와 트렌드 추적 지표를 결합하여 거래자에게 시장의 단기 가격 변동을 포착하는 체계화된 방법을 제공합니다. 이 전략의 장점은 위험 관리와 포지션 관리 기법을 결합하면서 시장의 흐름을 효과적으로 식별하고 추적 할 수 있다는 것입니다. 그러나 이 전략은 파라미터 민감성, 시장 소음, 트렌드 반전 등의 위험에 직면하고 있으며, 파라미터 최적화, 트렌드 확인, 동적 손실 정지, 포지션 관리 최적화 및 다시간 분석 프레임 등의 측면에서 개선 및 최적화를 필요로합니다.
/*backtest
start: 2024-04-01 00:00:00
end: 2024-04-30 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Bollinger Bands and EMA Strategy", overlay=true)
// Bollinger Bands Inputs
bb_length = input.int(20, minval=1, title="Bollinger Bands Length")
bb_mult = input.float(2.0, minval=0.001, maxval=50, title="Bollinger Bands StdDev")
bb_src = input(close, title="Bollinger Bands Source")
bb_offset = input.int(0, title="Bollinger Bands Offset", minval=-500, maxval=500)
// EMA Inputs
ema_period = input.int(9, minval=1, title="EMA Period")
ema_src = input(close, title="EMA Source")
ema_offset = input.int(0, title="EMA Offset", minval=-500, maxval=500)
// Calculate Bollinger Bands
bb_basis = ta.sma(bb_src, bb_length)
bb_dev = bb_mult * ta.stdev(bb_src, bb_length)
bb_upper = bb_basis + bb_dev
bb_lower = bb_basis - bb_dev
// Plot Bollinger Bands
plot(bb_basis, "BB Basis", color=color.blue, offset=bb_offset)
p1 = plot(bb_upper, "BB Upper", color=color.red, offset=bb_offset)
p2 = plot(bb_lower, "BB Lower", color=color.green, offset=bb_offset)
fill(p1, p2, title="BB Background", color=color.rgb(33, 150, 243, 95))
// Calculate EMA
ema_value = ta.ema(ema_src, ema_period)
// Plot EMA
plot(ema_value, title="EMA", color=color.orange, offset=ema_offset)
// Strategy Conditions
long_condition = ta.crossover(close, ema_value) and close > bb_upper
short_condition = ta.crossunder(close, ema_value) and close < bb_lower
// Define Stop Loss and Take Profit Levels
stop_loss_pct = input.float(0.5, title="Stop Loss (%)")
take_profit_pct = input.float(1.0, title="Take Profit (%)")
stop_loss_level_long = close * (1 - stop_loss_pct / 100)
take_profit_level_long = close * (1 + take_profit_pct / 100)
stop_loss_level_short = close * (1 + stop_loss_pct / 100)
take_profit_level_short = close * (1 - take_profit_pct / 100)
// Calculate Position Size Based on Risk Per Trade
risk_per_trade = input.float(1.0, title="Risk Per Trade (%)")
capital_at_risk = strategy.equity * risk_per_trade / 100
risk_per_unit_long = math.abs(close - stop_loss_level_long)
risk_per_unit_short = math.abs(close - stop_loss_level_short)
position_size_long = capital_at_risk / risk_per_unit_long
position_size_short = capital_at_risk / risk_per_unit_short
// Enter Long and Short Trades
if long_condition
strategy.entry("Long", strategy.long, qty=position_size_long)
strategy.exit("Take Profit", "Long", limit=take_profit_level_long)
strategy.exit("Stop Loss", "Long", stop=stop_loss_level_long)
if short_condition
strategy.entry("Short", strategy.short, qty=position_size_short)
strategy.exit("Take Profit", "Short", limit=take_profit_level_short)
strategy.exit("Stop Loss", "Short", stop=stop_loss_level_short)