추세 추종 수익 전략


생성 날짜: 2023-09-26 11:22:04 마지막으로 수정됨: 2023-09-26 11:22:04
복사: 1 클릭수: 590
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

개요

트렌드 트래킹 전략은 자산의 장기적 추세와 단기적 회전을 탐지하고, 장기적 부진과 동시에 단기적 조정의 기회를 포착하여 입장을 세우고, 합리적인 스톱 손실 라인을 설정하여 진행을 위해 제 시간에 스톱 손실을 설정합니다.

전략 원칙

이 전략은 주로 EMA 평균선과 RSI 지표에 근거하여 긴 단기 경향을 판단한다. 구체적으로, 50 일선 EMA와 200 일선 EMA를 사용하여 긴 장기 경향을 판단하고, RSI 지표를 사용하여 긴 장기 경향을 판단한다. 긴 기간이 상승 추세에 있을 때 (일선 200 일선 상위) 그리고 강한 (일선 RSI 50 이상) 동시에, 단기 기간이 회귀가 있을 때 (최근 2 K 선 종결 가격 하락) 다중 입장을 한다.

진입 후, 전략은 스톱 스톱 손실 조건을 설정한다. 가격이 진입 가격보다 2 배 이상의 BHD 유닛을 올렸을 때, 더 많은 이익을 얻는다. 가격이 진입 가격보다 3 배 이상의 BHD 유닛을 떨어뜨렸을 때, 평준을 잃는다. 이 중, BHD 유닛은 최근 200 K 선의 상승량에 따라 계산된다.

이 전략은 장기 및 단기 트렌드 특성을 충분히 고려하여 수익을 높이는 동시에 위험을 제어하고, 순차적으로 진행할 수 있으며, 적시에 손실을 막을 수 있습니다.

우위 분석

이 전략은 다음과 같은 장점을 가지고 있습니다.

  1. 장기 및 단기 트렌드 특성을 고려하고, 강하고 약한 지표와 결합하여, 흔들리는 시장에서 맹목적으로 입장을 세우는 것을 피하십시오.

  2. 트렌드를 추적하고, 시장의 방향에 따라 입장을 세우고, 승률이 높다.

  3. 스톱포드 (Stop Loss) 를 설정하여 적시에 수익을 창출하고 위험을 통제합니다.

  4. 스톱 스톱 스로드는 시장의 변동성에 따라 동적으로 조정할 수 있으며 합리적입니다.

  5. 재검토 자료에 따르면, 이 전략은 여러 통화 쌍과 주기에서 높은 수익률을 내고 안정성이 좋았다.

  6. 전략적 아이디어는 간단하고 명확하며, 이해하기 쉽고, 실행하기 쉽고, 다양한 수준의 거래자에게 적합합니다.

위험 분석

이 전략에는 위험도 있습니다.

  1. 장기, 단기 판단에 오류가 있을 수 있고, 포지션 구축 방향에 대한 잘못된 판단이 있을 수 있다.

  2. 시장이 급격히 하락할 수도 있고, 막대기 손실이 완전히 피할 수 없는 위험도 있다.

  3. 매개 변수 설정 (예: 평균선 주기 등) 이 적절하지 않으면 전략 효과에 영향을 줄 수 있다.

  4. 막점 설정이 너무 작아서 조기 종료가 수익에 영향을 줄 수 있습니다.

  5. 리드 디스크의 성능을 나타내는 것은 아닙니다. 리드 디스크 기간 동안 지속적인 최적화가 필요합니다.

위험과 대응하는 방법:

  1. 최적화 매개 변수, 평균선 주기 조정, 또는 다른 지표를 추가하여 강점을 판단한다.

  2. 더 큰 스톱로스를 설정하거나, 포지션을 낮추는 등의 풍력 조절 장치를 추가할 수 있다.

  3. 여러 가지 변수들이 전략에 어떤 영향을 미치는지 평가하기 위해 재검토를 반복하십시오.

  4. 동적으로 최적화한 스톱 변수, 시장 상황에 따라 스톱 상승도를 조정한다.

  5. 지속적인 피드백과 최적화, 그리고 실디와 결합된 조정으로 전략이 더 안정된다.

최적화 방향

이 전략은 다음의 몇 가지 측면에서 더 개선될 수 있습니다.

  1. 최적화된 파라미터 설정, 예를 들어 평균선주기, BHD 단위주기 등을 조정하여 최적의 파라미터 조합을 찾는다.

  2. MACD, KD 등과 같은 다른 지표 판단을 추가하여 단기 판단을 더 정확하게 합니다.

  3. 스톱 스톱 손실 전략을 최적화, 예를 들어 스톱 스톱 상승률을 변동률에 따라 조정하는 등.

  4. 트렌드 강도가 포지션 크기에 영향을 미치는 것과 같은 포지션 관리 전략을 추가하십시오.

  5. 더 많은 품종과 주기 데이터를 테스트하여 전략의 강도를 평가하십시오.

  6. 필터링 조건을 추가하여, 예를 들어, 상장 가격보다 상장 가격보다 높은 상장 가격을 추가하면, 함정을 피할 수 있다.

  7. 기계 학습과 같은 첨단 기술을 추가하여 전략을 더 자동화하고 지능화합니다.

이러한 최적화를 통해 전략의 승률, 수익률, 안정성, 적응성 등의 측면에서의 성능을 향상시킬 수 있다.

요약하다

추세를 추적하는 수익 전략은 전체적으로 볼 때, 장기 단기 특성과 순차적으로, 스톱 스톱 손실을 명확하게 고려하는 장점이 있습니다. 이것은 안정적이고 효율적인 추세를 추적하는 전략입니다. 그러나 특정 위험이 있습니다. 매개 변수 및 규칙에 대한 지속적인 최적화 테스트가 필요하며, 실장 상황 조정과 결합됩니다. 전체적으로, 이 전략 아이디어는 명확하고 쉽게 작동하며, 거래자가 학습할 가치가 있습니다.

전략 소스 코드
/*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))