트렌드 전략에 따라 동적 수익

저자:차오장, 날짜: 2023-12-29 16:06:54
태그:

img

전반적인 설명

동적 취득 트렌드 추후 전략은 상승 추세를 추격하는 목표를 가지고 낮은 구매와 높은 판매를 달성하기 위해 장기적인 추세와 단기적 인퇴를 감지합니다. 이 전략은 또한 수익과 손실의 크기를 감지하기 위해 변동성 단위를 사용하여 비율 변화에 대해 걱정하지 않고 모든 코인에 적용 할 수 있습니다.

전략 논리

이 전략의 구매 논리는: 장기 상승 추세가 나타났을 때 (200일 EMA가 상승하고 200일 RSI가 51보다 높습니다) 단기 인하가 발생하면 (마지막 2 개의 촛불이 폐쇄 가격을 감소시킵니다), 긴 포지션은 열립니다.

판매 논리는: 가격 변동성 단위 1개 이상 증가하면 수익을 취하고, 가격이 변동성 단위 2개 이상 감소하면 손실을 중지합니다.

변동성 단위는: 지난 50 일 동안의 폐쇄 가격의 표준편차의 2 배로 계산됩니다. 이것은 수동 비율 설정이 필요하지 않고 다른 동전의 변동성을 자동으로 감지 할 수 있습니다.

이점 분석

이 전략의 가장 큰 장점은 서로 다른 코인의 변동성을 동적으로 감지하고 그에 따라 스톱 로스/트랙 이윤 수준을 설정할 수 있다는 것입니다. 이것은 고정 비율 설정의 문제를 피하고 더 많은 코인에 자동으로 적응할 수 있습니다.

또 다른 장점은 장기 및 단기 판단을 결합하면 잘못된 브레이크오웃을 효과적으로 필터링할 수 있다는 것입니다. 잠재적으로 상승 추세를 보이는 동전을 판단하기 위해 장기 트렌드를 사용하여 단기 인하 신호와 결합하면 볼링거 압축과 같은 잘못된 신호를 피할 수 있습니다.

위험 분석

이 전략의 가장 큰 위험은 스톱 로스/테이크 노프트 유닛 설정이다. 변동성이 너무 높으면, 수익 거리는 상승 추세를 계속 추격하기에는 너무 가깝게 될 수 있다. 변동성이 너무 낮다면, 스톱 로스는 너무 빨리 유발될 수 있다. 이는 변동성 유닛 판단에서 오류를 피하기 위해 더 긴 기간 EMA를 필요로 한다.

또 다른 위험은 전략의 단기 트렌드에 의존하는 것입니다. 단기 인하 없이 장기적인 상승 추세가 있다면 입시 시기를 놓칠 수 있습니다. 이것은 추가 지원 지표가 필요할 수 있습니다.

최적화 방향

이 전략은 다음과 같은 방향으로 최적화 될 수 있습니다.

  1. 변동성 단위 오류를 피하기 위해 장기 EMA 판단을 추가합니다.

  2. 트렌드를 판단하기 위해 거래량과 같은 지표를 추가하고, 단기 촛불에 대한 의존도를 줄입니다.

  3. 입국 및 출입 조건을 최적화하고 입국 규칙을 엄격히 설정

  4. 머신러닝 알고리즘을 결합하여 트렌드 방향을 결정하여 더 높은 승률을 달성합니다.

결론

동적 취익 트렌드를 따르는 전략은 핵심에 명확한 논리를 가지고 있습니다. 동적으로 스톱 로스 / 취익 단위를 설정합니다. 이 전략은 수동 인포트 비율이 필요하지 않고 동전 전체에 대한 설정을 자동으로 조정할 수 있습니다. 한편, 장기 및 단기 트렌드의 이중 확인을 결합하면 잘못된 신호를 효과적으로 필터링 할 수 있습니다. 추가 최적화로이 전략은 매우 효율적인 트렌드 추격 전략이 될 수 있습니다.


/*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)


더 많은