
다이내믹 가축 전략은 손실 시 가축하는 방식으로, 비용 평균값이 떨어지는 것을 달성하여 손실 상환의 목적을 달성한다. 가격이 가축 조건을 유발할 때, 이 전략은 일정 수량과 간격으로 연속적으로 가축을 가축하고, 동시에 최대 가축 횟수를 설정하여 무한 가축의 위험을 피한다.
이 전략의 핵심 논리는 다음과 같습니다.
포지션 구매: 포지션이 0일 때, 지정된 가격으로 주문 포지션을 오픈하십시오.
포지션 조건: 현재 포지션이 최대 포지션보다 적고 가격이 이전 포지션 가격의 예상 하락률보다 낮으면 포지션이 트리거된다.
매장 방식: 매장 수를 이전 수에 따라 하나의 축소 계수로 증가시키고, 매장 간격은 이전 간격에 따라 하나의 축소 계수로 감소한다.
정지 조건: 지주 평균 가격에서 미리 예상된 수익률이 유발되면, 전체 지점을 정지한다.
이렇게하면, 시장이 불리할 때, 이 전략은 지분을 늘려서 지분 비용을 낮추고, 손실을 재조정하면서 추가 수익을 얻을 수 있다. 시장이 상향으로 전환할 때, 정지 조건이 촉발되고, 모든 포지션은 수익으로 종료된다.
이 전략의 가장 큰 장점은, 가축 방식에 의해 비용 평균 가격 하락을 달성하고, 일정 손실을 견디는 조건에서 더 큰 수익을 얻는 데 있습니다. 이것은 황소 시장에서 특히 분명합니다. 구체적으로, 다음과 같은 몇 가지 장점이 있습니다:
포지션 보유 비용을 크게 줄이고 손실을 막는 능력을 향상시킬 수 있다. 가격 회전이 발생할 때, 전략은 포지션을 높여서 이전에 더 높은 가격으로 구입한 단성 탄소를 희석하여 총 비용을 줄일 수 있다.
이윤의 공간을 늘리십시오. 비용을 줄인 후, 가격이 반발하면 이윤의 공간이 확장됩니다.
유연하게 설정할 수 있는 로직. 정책은 설정할 수 있는 파라미터를 허용합니다.
위험은 통제할 수 있으며, 최대 포지션 제한을 설정한다. 최대 포지션 제한은 전략이 무한 포지션이 되지 않도록 하여 위험을 통제할 수 있다.
이 전략은 지분을 늘려서 더 많은 수익을 얻을 수 있지만, 위험도 있습니다.
손실 위험. 전략은 일정 손실을 감수하는 것을 전제로 기축한다. 시장 상황이 계속 좋지 않으면 손실이 확대될 수 있다.
폭락 위험. 극단적인 상황에서는 가격 폭락이 일어날 수 있으며, 전략의 견딜 수 있는 능력을 초과할 수 있다. 이는 합리적으로 설정된 포지션 매개 변수와 스톱로스를 필요로 한다.
반동이 제때 일어나지 않는다. 가격 반동이 반드시 정지기를 유발하지 않는다. 정지기를 제때 막지 못하는 것은 전략의 단판이다.
매개 변수 설정 위험. 매개 변수 설정이 잘못되면 전략이 실패할 수 있다.
이러한 위험은 다음과 같은 방법으로 완화될 수 있습니다.
부채를 적절히 줄이고, 단편적 손실을 통제한다.
“비용이 급격히 줄어들기 위해 매장 간격을 줄여야 한다”
합리적으로 스톱피스를 설정한다. 스톱피스를 너무 넓게 설정하면 손실이 확대된다.
이 전략은 더 큰 수익을 얻기 위해 포지션 방식을 사용하는 특성을 고려하여, 최적화 방향은 주로 위험을 더 잘 제어하고 수익을 얻는 데 초점을 맞추고 있습니다. 구체적으로 다음과 같은 몇 가지 주요 최적화 방향이 있습니다.
부가 로직 알고리즘을 개선하여 부가 가정을 더 지능적이고 동향적으로 만들 수 있다. 변동률, 가격 폭등 등의 지표에 따라 부가 가동을 고려할 수 있다.
정지 방법을 최적화하여 더 효율적인 정지를 실현한다. 이동식 정지, 분량 정지 등의 방법을 결합하여 반발이 정지할 수 없는 상황을 줄일 수 있다.
기계 학습 알고리즘을 도입하여 매개 변수의 자기 적응 최적화를 구현한다. 핵심 매개 변수가 정적 상태에서 벗어나 실시간 상황과 피드백에 따라 동적으로 조정된다.
최대 손실을 제어하기 위해 스톱 메커니즘을 추가하십시오. 스톱 방식은 이동 스톱, 서핑 스톱 등을 고려하여 극단적인 상황으로 인한 손실 확산을 방지 할 수 있습니다.
역동적인 포지션 전략은 포지션을 달성하는 비용평균 가격 하락의 방법으로, 적절한 위험 관리를 전제로 더 큰 수익을 얻을 수 있습니다. 이러한 손실을 감수하는 전제 전략은 손실을 견딜 수있는 투자자들 사이에서 특히 인기가 있습니다. 미래의 최적화 방향은 더 똑똑한 포지션 방식, 더 효율적인 차단 장치 등을 중심으로 진행 될 것입니다.
/*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)