피보나치 황금 비율 및 상대적 강도 RSI 전략

저자:차오장, 날짜: 2024-01-03 16:54:32
태그:

img

전반적인 설명

피보나치 골든 비율 및 상대 강도 지수 (RSI) 전략은 내일 거래 전략이다. 피보나치 골든 비율 원칙과 RSI 지표를 결합하여 가격이 골든 비율 핵심 지점에 접근하고 RSI가 과소매 또는 과소매 상태를 표시 할 때 구매 또는 판매 신호를 발급합니다.

전략 논리

  1. 특정 기간의 바를 기준으로 가격 중간선을 계산합니다.

  2. 중간선과 표준편차를 기준으로 0.618 레벨과 1 레벨을 포함한 황금 비율 핵심 포인트를 계산합니다.

  3. 가격이 황금 비율의 핵심 지점으로 접근하면 RSI가 과잉 구매 또는 과잉 판매 구역에 들어간지 확인하십시오.

  4. 골든 비율 규칙과 RSI 조건이 모두 충족되면 구매 또는 판매 신호를 발행합니다.

  5. 스톱 로스를 설정하고 리스크를 통제하기 위해 수익을 취합니다.

이점 분석

  1. 여러 가지 지표를 결합하면 신호 품질이 향상되고 잘못된 신호가 감소합니다.

  2. 질적인 입력을 보장하기 위해 황금 비율 규칙의 지원/저항 특징을 활용합니다.

  3. RSI는 극심한 반전을 피하기 위해 시장 심리학을 측정합니다.

  4. 여러 개의 작은 거래에서 이익을 축적하기 위해 높은 주파수 내일 거래에 적합합니다.

위험 분석

  1. 골든 비율은 100% 가격 반전을 보장할 수 없습니다.

  2. RSI는 오해의 소지가 있는 신호를 줄 수 있고 가격 동작을 결합해야 합니다.

  3. 너무 단단한 스톱 로스는 가격 변동에 의해 멈출 수 있습니다.

  4. 높은 주파수 거래는 더 많은 거래 비용과 더 엄격한 위험 통제를 요구합니다.

해결책:

  1. 단일 거래 손실을 제한하기 위해 스톱 로스 규칙을 엄격히 따르십시오.

  2. 잘못된 신호를 피하기 위해 RSI 매개 변수를 적절히 풀어야 합니다.

  3. 스톱 로스 포인트를 최적화하여 효과적인 스톱 로스를 보장하면서 스톱 아웃 가능성을 줄이십시오.

최적화 방향

  1. 다른 사이클 기간 매개 변수에서 얻은 시험 결과

  2. 신호 품질을 향상시키기 위해 MACD, 볼링거 밴드 등과 같은 다른 지표를 조합해보십시오.

  3. 최적의 구성을 찾기 위해 다른 스톱 로스 전략을 연구합니다.

  4. 수익과 비용을 균형 잡기 위해 최적의 보유 기간을 평가합니다.

결론

피보나치 황금 비율과 RSI 전략은 이중 확인을 통해 잡음 거래를 필터합니다. 단일 지표 전략과 비교하면 더 높은 품질의 거래 신호를 생성합니다. 매개 변수 최적화와 엄격한 규칙을 따라 이 전략은 효과적인 내일 거래 도구가 될 수 있습니다.


/*backtest
start: 2023-12-26 00:00:00
end: 2024-01-02 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/
// © MohamedYAbdelaziz

// Intraday Trading
// Best used for Short Timeframes [1-30 Minutes]
// If you have any modifications please tell me to update it

//@version=4
strategy(title="Fibonacci + RSI - Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, initial_capital=10000, currency=currency.USD)

// Inputs
timeFilter = year >= 2000
    // Stop Loss %
loss_percent = input(title="Stop Loss (%)", minval=0.0, step=0.1, defval=2) * 0.001
    // RSI Inputs
len = input(title="[RSI] Length", minval=0, step=1, defval=14)
overSold = input(title="[RSI] Over Sold %", defval=30)
overBought = input(title="[RSI] Over Bought %", defval=70)
    // Fibonacci Levels
length = input(title="[Fibonacci] Length", defval=200, minval=1)
src = input(hlc3, title="[Fibonacci] Source")
mult = input(title="[Fibonacci] Multiplier", defval=3.0, minval=0.001, maxval=50)
level = input(title="[Fibonacci] Level", defval=764)


// Calculate Fibonacci
basis = vwma(src, length)
dev = mult * stdev(src, length)
fu764= basis + (0.001*level*dev)
fu1= basis + (1*dev)
fd764= basis - (0.001*level*dev)
fd1= basis - (1*dev)

// Calculate RSI
vrsi = rsi(close, len)

// Calculate the Targets
targetUp = fd764
targetDown = fu764
    // Actual Targets
bought = strategy.position_size[0] > strategy.position_size[1]
exit_long = valuewhen(bought, targetUp, 0)
sold = strategy.position_size[0] < strategy.position_size[1]
exit_short = valuewhen(sold, targetDown, 0)

// Calculate Stop Losses
stop_long = strategy.position_avg_price * (1 - loss_percent)
stop_short = strategy.position_avg_price * (1 + loss_percent)

// Conditions to Open Trades
openLong = low < fd1 and crossover(vrsi[1], overSold)
openShort = high > fu1 and crossunder(vrsi[1], overBought)

// Conditions to Close Trades
closeLong = high > exit_long
closeShort = low < exit_short 


// Plots
plot(basis, color=color.blue, linewidth=2, title="[Fibonacci Level] Basis")
plot(fu764, color=color.white, linewidth=1, title="[Fibonacci Level] Short Target")
plot(fu1, color=color.red, linewidth=2, title="1", title="[Fibonacci Level] Top")
plot(fd764, color=color.white, linewidth=1, title="[Fibonacci Level] Long Target")
plot(fd1, color=color.green, linewidth=2, title="1", title="[Fibonacci Level] Bottom")


// Strategy Orders
if timeFilter
    // Entry Orders
    strategy.entry(id="Long", long=true, when=openLong and high < targetUp, limit=close)
    strategy.entry(id="Short", long=false, when=openShort and low > targetDown, limit=close)

    // Exit Orders
    strategy.exit(id="Long", when=closeLong and strategy.position_size > 0, limit=exit_long, stop=stop_long)
    strategy.exit(id="Short", when=closeShort and strategy.position_size < 0, limit=exit_short, stop=stop_short)

더 많은