이중 지표 아래 구매 전략

저자:차오장, 날짜: 2024-01-04 17:39:13
태그:

img

전반적인 설명

이 전략은 거래량과 RSI 지표를 결합하여 구매 기회를 식별합니다. 이 전략은 점차적으로 이익을 확보하기 위해 단계적 인 수익 목표를 사용하여 포지션을 관리합니다. 이 전략은 범위 제한 시장에서 잘 작동하며 작은 가격 변동 내에서 반복적인 구매 신호를 효과적으로 캡처 할 수 있습니다.

전략 논리

이 전략은 구매 신호를 식별하기 위해 두 가지 지표를 사용합니다. 거래량 및 RSI. 구체적으로, 거래량이 70 일 평균 거래량보다 2.5 배를 넘어서 RSI가 30 (oversold level) 이하로 떨어지면 긴 거리가 됩니다.

장기 포지션이 설정되면 전략은 0.4%, 0.6%, 0.8%, 1.0%, 1.2의 5 가지 수익 목표를 설정합니다. 포지션 비율 (20%, 40%, 60%, 80% 및 100%) 에 따라 완전히 종료 될 때까지 점진적으로 포지션을 종료합니다. 또한 5%의 스톱 로스를 설정합니다.

단계적으로 수익을 취함으로써, 거래 기준으로 하향 위험을 제어합니다.

이점 분석

이 전략의 주요 장점은 다음과 같습니다.

  1. 이중 지표 사용은 잘못된 브레이크오프를 방지합니다. 높은 볼륨은 바닥의 확신을 확인합니다. 과잉 판매 RSI 신호는 반전 확률을 의미합니다.

  2. 이윤을 대량으로 얻는 것은 범위 내에서 작은 수익을 극대화 할 수 있습니다. 돈을 벌기 위해 거대한 라인을 기다릴 필요가 없습니다.

  3. 범위에 묶인 시장에서 우수합니다. 특히 기관의 미완성 영역에 갇힌 시장에서. 트렌드가 없으면 빈번한 작은 이득이 포착 될 수 있습니다.

  4. 넓은 스톱 손실은 시장이 정지되기 전에 윙사 (wipssaws) 를 할 수 있습니다. 단기 리트레이싱을 조기 종료하는 것을 피합니다.

위험 분석

주요 위험은 다음과 같습니다.

  1. 잘못된 입력으로 이어지는 이중 신호 오해는 매개 변수 최적화를 통해 완화될 수 있습니다.

  2. 작은 포지션 사이징으로 인해 큰 트렌드 움직임을 놓치는 수익을 취하는 위험을 단계화합니다. 수익을 취하는 수준과 포지션 비율을 최적화하는 것이 도움이됩니다.

  3. 넓은 스톱은 단일 거래에서 잠재적으로 큰 손실을 초래합니다. 포지션 사이징은 위험을 관리하는 데 중요합니다.

  4. 강력한 트렌드 시장은 방향 편향 위험을 야기합니다. 더 큰 시간 프레임 구조에주의를 기울여보십시오.

  5. 높은 거래 빈도는 거래 비용을 증가시킵니다. 낮은 수수료 브로커를 사용하는 것이 바람직합니다.

최적화 방향

가능한 최적화 방향은 다음과 같습니다.

  1. 부피와 RSI 조합을 최적화하여 잘못된 신호를 줄이고 MACD와 KDJ 같은 확인을 추가합니다.

  2. 이상적인 구성을 위해 다른 수익 수준과 위치 비율을 테스트하고, 잠재적으로 동적 메커니즘을 사용합니다.

  3. 위험 관리 시스템을 통해 거래당 최대 위험을 줄이기 위해 포지션 사이즈 규칙을 도입합니다.

  4. 트렌드 메트릭을 통합하여 적시에 손실을 멈추기 위해 반전을 탐지합니다. 변화하는 시장에서 회수하는 것을 피하십시오.

  5. 알고리즘 백테스팅을 활용하여 최적의 구성을 위한 매개 변수를 빠르게 반복합니다.

  6. 높은 매출에도 불구하고 효율성을 향상시키기 위해 기관 HFT 미끄러짐/비용 제어 모델에서 배우는 것

결론

이 이중 지표 평균 반전 전략은 매출량 급증과 과잉 판매 RSI를 가진 하위 신호를 식별하여 단계적 출구를 통해 범위 중 점진적인 이익을 취합니다. 큰 실행이 필요하지 않고 자주 이익을 얻습니다. 단점에는 신호 오해 위험과 높은 매출이 포함됩니다. 확인 최적화 및 위험 / 비용 통제는 탄력성을 향상시킵니다. 불안정한 시장에서 단기 수익을 거두는 데 좋습니다.


/*backtest
start: 2023-12-27 00:00:00
end: 2024-01-03 00:00:00
period: 1m
basePeriod: 1m
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/
// © wielkieef

//@version=5

strategy(title='BTFD strategy [3min]', overlay=true, pyramiding=5, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, calc_on_order_fills=false, slippage=0, commission_type=strategy.commission.percent, commission_value=0.03)


// Volume

vol_sma_length = input.int(70, title='Volume lenght  ', minval=1)
Volume_condt = volume > ta.sma(volume, vol_sma_length) * 2.5


// Rsi

rsi_lenght = input.int(20, title='RSI lenght', minval=0)
rsi_up = ta.rma(math.max(ta.change(close), 0), rsi_lenght)
rsi_down = ta.rma(-math.min(ta.change(close), 0), rsi_lenght)
rsi_value = rsi_down == 0 ? 100 : rsi_up == 0 ? 0 : 100 - 100 / (1 + rsi_up / rsi_down)

rsi_overs = rsi_value <= 30
rsi_overb = rsi_value >= 70


// logic

tp_1 = input.float(0.4,"  TP 1", minval=0.1, step=0.1)
tp_2 = input.float(0.6,"  TP 2", minval=0.2, step=0.1)
tp_3 = input.float(0.8,"  TP 3", minval=0.3, step=0.1)
tp_4 = input.float(1.0,"  TP 4", minval=0.4, step=0.1)
tp_5 = input.float(1.2,"  TP 5", minval=0.5, step=0.1)

q_1 = input.int(title='  % TP 1 Q ', defval=20,  minval=1, step=10)
q_2 = input.int(title='  % TP 2 Q ', defval=40,  minval=1, step=10)
q_3 = input.int(title='  % TP 3 Q ', defval=60,  minval=1, step=10)
q_4 = input.int(title='  % TP 4 Q ', defval=80,  minval=1, step=10)
q_5 = input.int(title='  % TP 5 Q ', defval=100, minval=1, step=10)

sl = input.float(5.0, '% Stop Loss', step=0.1)

long_cond = Volume_condt and rsi_overs

// this code is from author RafaelZioni, modified by wielkieef
per(procent) =>
    strategy.position_size != 0 ? math.round(procent / 100 * strategy.position_avg_price / syminfo.mintick) : float(na)
// --------------------------------------------------------------------------------------------------------------------

if  long_cond
    strategy.entry('BUY', strategy.long)

strategy.exit('TP 1', qty_percent=q_1, profit=per(tp_1), loss=per(sl) )
strategy.exit('TP 2', qty_percent=q_2, profit=per(tp_2), loss=per(sl) )
strategy.exit('TP 3', qty_percent=q_3, profit=per(tp_3), loss=per(sl) )
strategy.exit('TP 4', qty_percent=q_4, profit=per(tp_4), loss=per(sl) )
strategy.exit('TP 5', qty_percent=q_5, profit=per(tp_5), loss=per(sl) )

 
// by wielkieef


더 많은