역동적 인 피라미드 전략

저자:차오장, 날짜: 2023-12-22 14:36:30
태그:

img

전반적인 설명

동적 피라미딩 전략은 가격이 하락할 때 추가 포지션을 피라미딩함으로써 평균 보유 비용을 낮추는 것을 목표로합니다. 가격이 반등할 때 손실을 완화하고 추가 수익을 얻는 데 도움이 될 수 있습니다. 이 전략은 피라미딩 조건이 유발되면 특정 양과 간격으로 추가 포지션을 열 것입니다. 한편, 피라미딩의 최대 수는 위험을 제한하도록 설정됩니다.

전략 논리

이 전략의 핵심 논리는 다음과 같습니다.

  1. 오픈 포지션: 현재 포지션이 0인 경우 지정된 가격으로 긴 포지션을 오픈합니다.

  2. 피라미드 상태: 현재 피라미드 시간이 최대 값보다 작고 가격이 미리 설정된 비율로 마지막 입시 가격 이하로 떨어지면 피라미드 트리거.

  3. 피라미드 방식: 피라미드 양을 이전의 확장 인자에서 증가시키고 확장 인자에서 간격을 줄입니다.

  4. 영업 조건: 평균 보유 가격에 기반한 영업 목표가 실행되면 모든 포지션을 종료합니다.

가격 하락과 함께 피라미딩을 통해, 이 전략은 평균 비용을 동적으로 낮추고, 손실을 효율적으로 멈추고, 트렌드가 역전될 때 수익을 위한 더 많은 공간을 남겨준다. 이윤을 취하는 조건이 트리거될 때, 모든 포지션은 이윤으로 종료된다.

이점 분석

이 전략의 가장 큰 장점은 피라미딩을 사용하여 평균 보유 비용을 낮추어 수용 가능한 손실로 더 큰 수익 잠재력을 얻는 것입니다. 주요 이점은 다음과 같습니다.

  1. 보유 비용을 현저히 줄이므로 손실을 중단 할 수있는 능력을 향상시킵니다. 마감이 발생하면 더 낮은 가격으로 추가 구매 명령을 추가함으로써 전략은 이전보다 높은 항목을 희석하고 전체 비용을 낮춥니다.

  2. 비용을 줄이면서 수익 범위를 높여서 가격이 다시 상승하면 수익 잠재력이 확대되고 수익을 취하는 길을 열어줍니다.

  3. 인크리멘트, 양, 간격 등에 관련된 매개 변수를 설정하여 피라미드 로직을 위한 유연한 사용자 정의

  4. 최대 피라미딩 시간을 제한함으로써 통제 가능한 위험

위험 분석

이 전략은 피라미딩을 통해 더 많은 수익 잠재력을 허용하지만, 몇 가지 위험은 주의가 필요합니다:

  1. 손실 위험 - 피라미딩으로 인해 특정 손실을 입는 것을 전제로합니다. 추세가 보유에 반대되는 경우 손실이 증가 할 수 있습니다.

  2. 절벽 다이빙 위험 - 절벽 다이빙과 같은 극단적 인 경우 손실은 허용 가능한 범위를 초과 할 수 있습니다. 합리적인 피라미드 설정과 중단 손실 포인트는 중요합니다.

  3. 늦은 또는 결여되는 수익 - 가격 리바운드는 항상 수익 조건이 발생하지 않을 수 있습니다. 이는 전략의 단점입니다.

  4. 매개 변수 조정 위험 - 피라미드 계수와 수익률 비율과 같은 매개 변수에 대한 부적절한 설정은 실패로 이어질 수 있습니다.

다음과 같은 조치는 위험을 완화하는 데 도움이 될 수 있습니다.

  1. 단일 입력 손실 금액을 제어하기 위해 더 낮은 인크리멘트 스케일.

  2. 더 빠른 비용 절감을 달성하기 위해 피라미드 간격을 좁히십시오.

  3. 너무 느슨하지 않고 적절하게 중지 손실 지점을 설정합니다.

최적화 방향

피라미딩을 통해 더 높은 수익 잠재력을 얻을 수 있다는 특성을 고려하면 최적화 방향은 주로 더 나은 위험 통제와 수익성 향상에 초점을 맞추고 있습니다.

  1. 피라미드 로직을 개선하여 엔트리를 더 지능적이고 시장 조건에 적응 할 수 있습니다. 엔트리 신호는 변동성, 가격 격차 및 더 많은 메트릭에 의존 할 수 있습니다.

  2. 더 높은 효율을 위해 수익을 취하는 메커니즘을 최적화하십시오. 예를 들어 수익을 취하는 후속, 부분 폐쇄 등, 손실 된 가격 리바운드 가능성을 줄이기 위해.

  3. 매개 변수를 자동 조정할 수 있도록 기계 학습 알고리즘을 도입합니다. 주요 매개 변수는 실시간 피드백에 기반하여 정적 대신 동적이 됩니다.

  4. 최대 손실을 제한하기 위해 스톱 로스 메커니즘을 추가합니다. 예를 들어 트레일 스톱 로스 및 수익 스톱 주문을 취합니다. 극단적인 시장 이벤트로 인해 손실이 통제되지 않도록합니다.

결론

동적 피라미드 전략은 추가 항목으로 평균 보유 비용을 낮추고, 허용 가능한 손실 관용을 고려하여 더 높은 수익 잠재력을 가능하게합니다. 이러한 유형의 전략은 상대적으로 높은 위험 식욕을 가진 투자자를 선호합니다. 미래의 최적화 방향은 더 지능적인 피라미드 논리, 더 높은 효율성 수익 메커니즘 등을 중심으로됩니다.


/*backtest
start: 2023-12-14 00:00:00
end: 2023-12-18 19:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4

strategy("DCA Bot Emulator", overlay=true, pyramiding=99, default_qty_type=strategy.cash, commission_value = 0.02)

// Date Ranges
from_month = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
from_day   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
from_year  = input(defval = 2021, title = "From Year")
to_month   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
to_day     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
to_year    = input(defval = 9999, title = "To Year")
start  = timestamp(from_year, from_month, from_day, 00, 00)  // backtest start window
finish = timestamp(to_year, to_month, to_day, 23, 59)        // backtest finish window
window = time >= start and time <= finish ? true : false // create function "within window of time"

// Strategy Inputs
price_deviation = input(2, title='Price deviation to open safety orders', maxval=0)/100
take_profit = input(1.5, title='Target Take Profit', minval=0)/100

// base order
base_order  = input(100000, title='base order') 
safe_order  = input(200, title='safe order') 
safe_order_volume_scale  = input(2, title='Safety order volume scale') 
safe_order_step_scale  = input(1, title='Safety order step scale') 

max_safe_order = input(10, title='max safe order') 
var current_so = 1
var initial_order = 0.0

// Calculate our key levels
pnl = (close - strategy.position_avg_price) / strategy.position_avg_price

take_profit_level = strategy.position_avg_price * (1 + take_profit)

// First Position
if(strategy.position_size == 0 and window)
    strategy.entry("Long", strategy.long, qty = base_order/close)
    initial_order := close
    current_so := 1

// Average Down!
if current_so > 0 and close  < initial_order * (1 - price_deviation * current_so * safe_order_step_scale) and current_so <= max_safe_order
    so_name = "SO " + tostring(current_so) 
    strategy.entry(so_name, long=strategy.long , qty = safe_order * safe_order_volume_scale /close)
    current_so := current_so + 1
    
// Take Profit!
strategy.close_all(when=take_profit_level <= close  and strategy.position_size > 0)


더 많은