
동적 정지 후추 트렌드 전략은 장기 동향과 단기 회전을 탐지하여 저가와 고가 판매를 달성하고 상승 동향을 추적하는 것을 목적으로 한다. 이 전략은 동시에 변동 단위를 사용하여 이익 손실의 크기를 탐지하여 모든 통화에 적용할 수 있으며 백분율 변화를 걱정할 필요가 없다.
이 전략의 구매의 논리는 다음과 같습니다: 장기적인 상승 추세 ((200 일간 EMA 상승, 200 일간 RSI 51 이상) 와 단기적인 하향 회수 ((마지막 2 K 라인 종식 가격 하락) 가 있을 때, 입장을 구매한다.
판매의 논리는: 가격이 상승하면 1 변동 단위 이상으로 중지; 가격이 떨어지면 2 변동 단위 이상으로 중지.
변동 단위의 계산은: 50일 안에 종결 가격 표준 차이의 2배를 기본 변동 단위로 . 이렇게 해서 서로 다른 화폐의 자신의 변동 상황을 검출할 수 있으며, 인체가 백분율을 설정할 필요가 없다.
이 전략의 가장 큰 장점은 동적으로 다양한 화폐의 변동 크기를 감지할 수 있다는 것입니다. 화폐 자체의 변동에 따라 스톱 손실 단위를 설정합니다. 이것은 백분율 스톱 고정 설정 문제를 피하고 더 많은 화폐에 자동으로 적응 할 수 있습니다.
또 다른 장점은 장기 단기 판단과 결합하여 가짜 돌파구를 효과적으로 필터링 할 수 있습니다. 장기 동향을 사용하여 향후 상승 할 수있는 동전을 판단하고, 단기 회귀 신호와 결합하여 부린 띠 압축과 같은 가짜 신호를 효과적으로 피할 수 있습니다.
이 전략의 가장 큰 위험은 스톱 스톱 손실 단위를 설정하는 데 있습니다. 너무 큰 파동이 있다면, 스톱 스톱 거리가 너무 가깝고 지속적으로 따라 잡을 수 없습니다. 너무 작은 파동이 있다면, 너무 빨리 중단 될 수 있습니다. 이것은 더 긴 주기 EMA를 보조로 사용하여 파동 단위 판단 오류를 방지해야합니다.
또 다른 위험은 전략이 단기 트렌드 판단에 의존하는 것입니다. 장기 상승이 발생하지만 단기 수정이 없으면 진입 시간을 놓치게됩니다. 이것은 다른 보조 판단 지표를 추가해야 할 수 있습니다.
이 전략은 다음과 같은 방향으로 최적화될 수 있습니다.
더 긴 주기의 EMA 판단을 추가하여 변동 단위 오류를 방지합니다.
트렌드를 판단하기 위해 거래량과 같은 지표를 늘리고, 단기 k 라인에 대한 의존도를 줄여라.
포지션 개시 및 포지션 조건을 최적화하고, 더 엄격한 입시 규칙을 설정합니다.
기계 학습 알고리즘과 결합하여 트렌드 방향을 판단하여 더 높은 승률을 달성합니다.
동적 정지 트렌드 추적 전략의 전체적인 아이디어는 명확하며, 핵심은 동적 변동 단위의 설정에 있다. 이 전략은 수동으로 비율을 설정할 필요 없이 다른 통화 설정 이익/손실 단위를 자동으로 적응할 수 있다. 동시에 장기 단기 쌍용 판단과 결합하여 가짜 신호를 효과적으로 제거할 수 있다. 이 전략은 추가적인 최적화를 통해 고효율의 트렌드 추적 전략이 될 수 있다.
/*backtest
start: 2022-12-22 00:00:00
end: 2023-12-28 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// @version=4
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © BHD_Trade_Bot
strategy(shorttitle='Take Profit On Trend',
title='Take Profit On Trend (by BHD_Trade_Bot)',
overlay=true,
initial_capital = 15,
default_qty_type = strategy.cash,
default_qty_value = 15,
commission_type=strategy.commission.percent,
commission_value=0.1)
//Backtest Time
start_day = 1
start_month = 1
start_year = 2021
end_day = 1
end_month = 1
end_year = 2050
start_time = timestamp(start_year, start_month, start_day, 00, 00)
end_time = timestamp(end_year, end_month, end_day, 23, 59)
is_back_test_time() =>
time >= start_time and time <= end_time ? true : false
// Last bar
h1_last_bar = (timenow - time)/1000/60/60 < 2
// EMA
ema50 = ema(close, 50)
ema200 = ema(close, 200)
// RSI length 200
rsi200 = rsi(close, 200)
// Bollinger Bands length 50
bb50 = 2 * stdev(close, 50)
// BHD Unit
bhd_unit = sma(bb50, 100)
bb50_upper = ema50 + bhd_unit
bb50_lower = ema50 - bhd_unit
// All n candles is going down
all_body_decrease(n) =>
isValid = true
for i = 0 to (n - 1)
if (close[i] > close[i + 1])
isValid := false
break
isValid
// ENTRY
// Long-term uptrend
entry_condition1 = rsi200 > 51
// Short-term downtrend
entry_condition2 = all_body_decrease(2)
ENTRY_CONDITION = entry_condition1 and entry_condition2
if (ENTRY_CONDITION and is_back_test_time())
strategy.entry("entry", strategy.long)
// CLOSE CONDITIONS
// Price increase 1 BHD unit
TAKE_PROFIT = close > strategy.position_avg_price + bhd_unit
// Price decrease 2 BHD unit
STOP_LOSS = close < strategy.position_avg_price - bhd_unit * 2
CLOSE_CONDITION = TAKE_PROFIT or STOP_LOSS
if (CLOSE_CONDITION or h1_last_bar)
strategy.close("entry")
// Draw
plot(ema50)
plot(ema200, color=color.yellow)
plot(bb50_upper)
plot(bb50_lower)