RSI 지표 흡수 거래 전략

저자:차오장, 날짜: 2024-01-29 11:42:46
태그:

RSI指标吸盘交易策略

개요

RSI 지표 흡수판 거래 전략은 RSI와 CCI 기술 지표를 통합한 고정 격자 거래 방법이다. 이 전략은 RSI와 CCI 지표의 값에 따라 입시 시기를 판단하고, 고정 수익률 비율과 고정 격자 수를 사용하여 정지 주문과 승화 주문을 설정한다. 동시에 전략은 파격적인 가격 변화에 대한 헤지 메커니즘을 통합한다.

전략적 원칙

입장 조건

5분 및 30분 RSI가 설정된 기준보다 낮고 1시간 CCI가 설정된 기준보다 낮을 때, 더 많은 신호가 발생한다. 이 때 현재 클로즈 가격을 입상 가격으로 기록하고 계정 권익 및 격자 수에 따라 첫 번째 포지션을 계산한다.

수익 중단 조건

입시 가격을 기준으로 설정된 목표 수익률 비율에 따라 수익률을 계산하고, 그 가격 수준에 정지 주문을 설정한다.

저장 조건

첫 번째 주문을 제외한 나머지 고정된 포지션 부가 주문은 입력 신호에 따라 설정된 격자 수에 도달 할 때까지 하나씩 발송됩니다.

헤프링 메커니즘

입시 가격에 비해 가격이 상승하면 설정된 헤지브레지 값의 비율을 초과하면 모든 지분을 헤지브레지한다.

역전기

입시 가격에 비해 가격이 설정된 반전 임계값의 비율을 초과하는 경우, 모든 미완성된 주문을 취소하고 새로운 입시 기회를 기다립니다.

장점 분석

  • RSI와 CCI를 결합하여 수익 가능성을 높입니다.
  • 고정된 격자를 사용하여 수익 목표를 설정하여 수익 확실성을 높입니다.
  • 가격의 급격한 변동의 위험을 효과적으로 방지하는 통합 헤지 메커니즘
  • 반전 메커니즘에 참여하면 손실을 줄일 수 있습니다.

위험 분석

  • 지표가 잘못된 신호를 내는 확률
  • 가격의 급격한 변동이 헤지핑 문턱을 돌파합니다.
  • 다시 뒤집어 놓은 뒤 다시 진출할 수 없습니다.

이러한 위험은 지표 매개 변수를 조정하고, 헤드리지 범위를 확장하고, 반전 범위를 줄임으로써 감소될 수 있다.

최적화 방향

  • 더 많은 종류의 지표 조합을 테스트 할 수 있습니다.
  • 자율적 항독 메커니즘을 연구할 수 있습니다.
  • 엑세이싱 논리를 최적화 할 수 있습니다.

요약

RSI 지표 흡수판 거래 전략은 지표가 입시 시기를 판단하여 고정된 격자 차단 및 상승을 사용하여 안정적인 수익을 잠금합니다. 동시에 전략은 큰 변동과 반전 후 재입시 장치를 헤지핑합니다. 이러한 여러 장치를 통합하는 전략은 거래 위험을 줄이고 수익률을 높이기 위해 사용될 수 있습니다. 지표와 매개 변수 설정을 추가로 최적화하여 더 나은 실제 거래 효과를 얻을 수 있습니다.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Custom RSI/CCI Strategy with Fixed Grid", shorttitle="INVESTCOIN_RSI_CCI_Fixed_Grid", overlay=true)

// Input parameters
input_rsi_5min_value = 55
input_rsi_30min_value = 65
input_cci_1hr_value = 85
input_profit_target_percent = 0.6 // Target profit in percentage
input_grid_size = 15 // Number of orders in grid
input_hedging_percent = 20 // Percentage price change for hedging
input_first_order_offset = 0.2 // Offset for the first order in percentage
input_reversal_percent = 0.4 // Percentage price change for reversal

// Calculating the RSI and CCI values
rsi_5min = ta.rsi(close, 5)
rsi_30min = ta.rsi(close, 30)
cci_1hr = ta.cci(close, 60)

// Define strategy conditions based on the provided screenshot
long_condition = (rsi_5min < input_rsi_5min_value) and (rsi_30min < input_rsi_30min_value) and (cci_1hr < input_cci_1hr_value)

// Plot signals
plotshape(series=long_condition, title="Long Entry Signal", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)

// Initialize a variable to store the entry price
var float entry_price = na

// Initialize a variable to store the profit target
var float profit_target = na

// Hedge condition based on price change percentage
var float hedge_price = na

// Initialize a variable to count the total number of orders
var int total_orders = 0

// Calculate the initial order size based on account equity and grid size
var float initial_order_size = 1 / input_grid_size / 100

// Entry orders with fixed size
if (long_condition and total_orders < 9000)
    // Place first order with an offset
    if total_orders == 0
        strategy.order("First Long", strategy.long, qty=initial_order_size, limit=close * (1 - input_first_order_offset / 100))
    total_orders := total_orders + 1
    
    // Place remaining grid orders
    for i = 1 to input_grid_size - 1
        if (total_orders >= 9000)
            break // Stop if max orders reached
        strategy.entry("Long_" + str.tostring(i), strategy.long, qty=initial_order_size)
        total_orders := total_orders + 1

// Calculate the profit target in currency
if (long_condition)
    entry_price := close // Store the entry price when the condition is true

if (not na(entry_price))
    profit_target := entry_price * input_profit_target_percent / 100 // Calculate the profit target

// Setting up the profit target
if (not na(profit_target))
    strategy.exit("Take Profit", "Long", limit=entry_price + profit_target)

// Hedge by closing all positions if the price increases by the hedging percentage
if (strategy.position_size > 0)
    hedge_price := close * (1 + input_hedging_percent / 100)

if (not na(hedge_price) and close >= hedge_price)
    strategy.close_all(comment="Hedging")


// Reversal condition based on the price change percentage
var float reversal_price = na

if (strategy.position_size > 0 and total_orders > 1) // Check if at least one grid order has been placed
    reversal_price := entry_price * (1 - input_reversal_percent / 100)

// Cancel trades and wait for a new entry point if the price reverses by the specified percentage
if (not na(reversal_price) and close <= reversal_price)
    strategy.cancel_all()
    total_orders := 0 // Reset the total orders count after cancellation

더 많은 내용