트렌드 트래킹 전략은 자산의 장기적 추세와 단기적 회전을 탐지하고, 장기적 부진과 동시에 단기적 조정의 기회를 포착하여 입장을 세우고, 합리적인 스톱 손실 라인을 설정하여 진행을 위해 제 시간에 스톱 손실을 설정합니다.
이 전략은 주로 EMA 평균선과 RSI 지표에 근거하여 긴 단기 경향을 판단한다. 구체적으로, 50 일선 EMA와 200 일선 EMA를 사용하여 긴 장기 경향을 판단하고, RSI 지표를 사용하여 긴 장기 경향을 판단한다. 긴 기간이 상승 추세에 있을 때 (일선 200 일선 상위) 그리고 강한 (일선 RSI 50 이상) 동시에, 단기 기간이 회귀가 있을 때 (최근 2 K 선 종결 가격 하락) 다중 입장을 한다.
진입 후, 전략은 스톱 스톱 손실 조건을 설정한다. 가격이 진입 가격보다 2 배 이상의 BHD 유닛을 올렸을 때, 더 많은 이익을 얻는다. 가격이 진입 가격보다 3 배 이상의 BHD 유닛을 떨어뜨렸을 때, 평준을 잃는다. 이 중, BHD 유닛은 최근 200 K 선의 상승량에 따라 계산된다.
이 전략은 장기 및 단기 트렌드 특성을 충분히 고려하여 수익을 높이는 동시에 위험을 제어하고, 순차적으로 진행할 수 있으며, 적시에 손실을 막을 수 있습니다.
이 전략은 다음과 같은 장점을 가지고 있습니다.
장기 및 단기 트렌드 특성을 고려하고, 강하고 약한 지표와 결합하여, 흔들리는 시장에서 맹목적으로 입장을 세우는 것을 피하십시오.
트렌드를 추적하고, 시장의 방향에 따라 입장을 세우고, 승률이 높다.
스톱포드 (Stop Loss) 를 설정하여 적시에 수익을 창출하고 위험을 통제합니다.
스톱 스톱 스로드는 시장의 변동성에 따라 동적으로 조정할 수 있으며 합리적입니다.
재검토 자료에 따르면, 이 전략은 여러 통화 쌍과 주기에서 높은 수익률을 내고 안정성이 좋았다.
전략적 아이디어는 간단하고 명확하며, 이해하기 쉽고, 실행하기 쉽고, 다양한 수준의 거래자에게 적합합니다.
이 전략에는 위험도 있습니다.
장기, 단기 판단에 오류가 있을 수 있고, 포지션 구축 방향에 대한 잘못된 판단이 있을 수 있다.
시장이 급격히 하락할 수도 있고, 막대기 손실이 완전히 피할 수 없는 위험도 있다.
매개 변수 설정 (예: 평균선 주기 등) 이 적절하지 않으면 전략 효과에 영향을 줄 수 있다.
막점 설정이 너무 작아서 조기 종료가 수익에 영향을 줄 수 있습니다.
리드 디스크의 성능을 나타내는 것은 아닙니다. 리드 디스크 기간 동안 지속적인 최적화가 필요합니다.
위험과 대응하는 방법:
최적화 매개 변수, 평균선 주기 조정, 또는 다른 지표를 추가하여 강점을 판단한다.
더 큰 스톱로스를 설정하거나, 포지션을 낮추는 등의 풍력 조절 장치를 추가할 수 있다.
여러 가지 변수들이 전략에 어떤 영향을 미치는지 평가하기 위해 재검토를 반복하십시오.
동적으로 최적화한 스톱 변수, 시장 상황에 따라 스톱 상승도를 조정한다.
지속적인 피드백과 최적화, 그리고 실디와 결합된 조정으로 전략이 더 안정된다.
이 전략은 다음의 몇 가지 측면에서 더 개선될 수 있습니다.
최적화된 파라미터 설정, 예를 들어 평균선주기, BHD 단위주기 등을 조정하여 최적의 파라미터 조합을 찾는다.
MACD, KD 등과 같은 다른 지표 판단을 추가하여 단기 판단을 더 정확하게 합니다.
스톱 스톱 손실 전략을 최적화, 예를 들어 스톱 스톱 상승률을 변동률에 따라 조정하는 등.
트렌드 강도가 포지션 크기에 영향을 미치는 것과 같은 포지션 관리 전략을 추가하십시오.
더 많은 품종과 주기 데이터를 테스트하여 전략의 강도를 평가하십시오.
필터링 조건을 추가하여, 예를 들어, 상장 가격보다 상장 가격보다 높은 상장 가격을 추가하면, 함정을 피할 수 있다.
기계 학습과 같은 첨단 기술을 추가하여 전략을 더 자동화하고 지능화합니다.
이러한 최적화를 통해 전략의 승률, 수익률, 안정성, 적응성 등의 측면에서의 성능을 향상시킬 수 있다.
추세를 추적하는 수익 전략은 전체적으로 볼 때, 장기 단기 특성과 순차적으로, 스톱 스톱 손실을 명확하게 고려하는 장점이 있습니다. 이것은 안정적이고 효율적인 추세를 추적하는 전략입니다. 그러나 특정 위험이 있습니다. 매개 변수 및 규칙에 대한 지속적인 최적화 테스트가 필요하며, 실장 상황 조정과 결합됩니다. 전체적으로, 이 전략 아이디어는 명확하고 쉽게 작동하며, 거래자가 학습할 가치가 있습니다.
/*backtest
start: 2023-08-26 00:00:00
end: 2023-09-25 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// 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
// @version=5
strategy(
shorttitle = 'Take Profit On Trend',
title = 'Take Profit On Trend (by BHD_Trade_Bot)',
overlay = true,
calc_on_every_tick = true,
calc_on_order_fills = true,
use_bar_magnifier = true,
initial_capital = 1000,
default_qty_type = strategy.percent_of_equity,
default_qty_value = 100,
commission_type = strategy.commission.percent,
commission_value = 0.1)
// Backtest Time Period
start_year = input(title='Start year' ,defval=2021)
start_month = input(title='Start month' ,defval=1)
start_day = input(title='Start day' ,defval=1)
start_time = timestamp(start_year, start_month, start_day, 00, 00)
end_year = input(title='end year' ,defval=2050)
end_month = input(title='end month' ,defval=1)
end_day = input(title='end day' ,defval=1)
end_time = timestamp(end_year, end_month, end_day, 23, 59)
is_back_test_time() => true
// EMA
ema50 = ta.ema(close, 50)
ema200 = ta.ema(close, 200)
// RSI
rsi200 = ta.rsi(close, 200)
// EMA_CD
emacd = ema50 - ema200
emacd_signal = ta.ema(emacd, 50)
hist = emacd - emacd_signal
// BHD Unit
bhd_unit = ta.rma(high - low, 200) * 2
bhd_upper = ema200 + bhd_unit
bhd_lower = ema200 - 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 CONDITIONS
// Long-term uptrend
entry_condition1 = rsi200 > 51 and hist > 0
// Short-term downtrend
entry_condition2 = all_body_decrease(2)
ENTRY_CONDITIONS = entry_condition1 and entry_condition2
if ENTRY_CONDITIONS and is_back_test_time()
strategy.entry('entry', strategy.long)
// CLOSE CONDITIONS
// Price increase 2 BHD unit
take_profit = close > strategy.position_avg_price + bhd_unit * 2
// Price decrease 3 BHD unit
stop_loss = close < strategy.position_avg_price - bhd_unit * 3
CLOSE_CONDITIONS = take_profit or stop_loss
if CLOSE_CONDITIONS
strategy.close('entry')
// Draw
plot(ema50, color=color.orange, linewidth=2)
plot(ema200, color=color.purple, linewidth=2)
bhd_upper_line = plot(bhd_upper, color=color.teal)
bhd_lower_line = plot(bhd_lower, color=color.teal)
fill(bhd_upper_line, bhd_lower_line, color=color.new(color.teal, 90))