동적 취득 트렌드 추후 전략은 상승 추세를 추격하는 목표를 가지고 낮은 구매와 높은 판매를 달성하기 위해 장기적인 추세와 단기적 인퇴를 감지합니다. 이 전략은 또한 수익과 손실의 크기를 감지하기 위해 변동성 단위를 사용하여 비율 변화에 대해 걱정하지 않고 모든 코인에 적용 할 수 있습니다.
이 전략의 구매 논리는: 장기 상승 추세가 나타났을 때 (200일 EMA가 상승하고 200일 RSI가 51보다 높습니다) 단기 인하가 발생하면 (마지막 2 개의 촛불이 폐쇄 가격을 감소시킵니다), 긴 포지션은 열립니다.
판매 논리는: 가격 변동성 단위 1개 이상 증가하면 수익을 취하고, 가격이 변동성 단위 2개 이상 감소하면 손실을 중지합니다.
변동성 단위는: 지난 50 일 동안의 폐쇄 가격의 표준편차의 2 배로 계산됩니다. 이것은 수동 비율 설정이 필요하지 않고 다른 동전의 변동성을 자동으로 감지 할 수 있습니다.
이 전략의 가장 큰 장점은 서로 다른 코인의 변동성을 동적으로 감지하고 그에 따라 스톱 로스/트랙 이윤 수준을 설정할 수 있다는 것입니다. 이것은 고정 비율 설정의 문제를 피하고 더 많은 코인에 자동으로 적응할 수 있습니다.
또 다른 장점은 장기 및 단기 판단을 결합하면 잘못된 브레이크오웃을 효과적으로 필터링할 수 있다는 것입니다. 잠재적으로 상승 추세를 보이는 동전을 판단하기 위해 장기 트렌드를 사용하여 단기 인하 신호와 결합하면 볼링거 압축과 같은 잘못된 신호를 피할 수 있습니다.
이 전략의 가장 큰 위험은 스톱 로스/테이크 노프트 유닛 설정이다. 변동성이 너무 높으면, 수익 거리는 상승 추세를 계속 추격하기에는 너무 가깝게 될 수 있다. 변동성이 너무 낮다면, 스톱 로스는 너무 빨리 유발될 수 있다. 이는 변동성 유닛 판단에서 오류를 피하기 위해 더 긴 기간 EMA를 필요로 한다.
또 다른 위험은 전략의 단기 트렌드에 의존하는 것입니다. 단기 인하 없이 장기적인 상승 추세가 있다면 입시 시기를 놓칠 수 있습니다. 이것은 추가 지원 지표가 필요할 수 있습니다.
이 전략은 다음과 같은 방향으로 최적화 될 수 있습니다.
변동성 단위 오류를 피하기 위해 장기 EMA 판단을 추가합니다.
트렌드를 판단하기 위해 거래량과 같은 지표를 추가하고, 단기 촛불에 대한 의존도를 줄입니다.
입국 및 출입 조건을 최적화하고 입국 규칙을 엄격히 설정
머신러닝 알고리즘을 결합하여 트렌드 방향을 결정하여 더 높은 승률을 달성합니다.
동적 취익 트렌드를 따르는 전략은 핵심에 명확한 논리를 가지고 있습니다. 동적으로 스톱 로스 / 취익 단위를 설정합니다. 이 전략은 수동 인포트 비율이 필요하지 않고 동전 전체에 대한 설정을 자동으로 조정할 수 있습니다. 한편, 장기 및 단기 트렌드의 이중 확인을 결합하면 잘못된 신호를 효과적으로 필터링 할 수 있습니다. 추가 최적화로이 전략은 매우 효율적인 트렌드 추격 전략이 될 수 있습니다.
/*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)