비트코인 - MA 크로스오버 전략

저자:차오장, 날짜: 2023-12-04 13:55:45
태그:

img

전반적인 설명

이 전략은 비트코인의 이동 평균 라인의 크로스오버 원리에 기초하여 설계된 트렌드 다음 거래 전략이다. 이 전략은 빠른 이동 평균 라인과 느린 이동 평균 라인의 크로스오버를 구매 및 판매 신호로 사용합니다. 빠른 이동 평균 라인이 느린 이동 평균 라인의 위를 넘을 때 황금 십자가로 간주되고 길게 갈 때; 빠른 이동 평균 라인이 느린 이동 평균 라인의 아래를 넘을 때, 죽음의 십자가로 간주되어 짧게 갈 때. 동시에 전략은 무분별한 진입을 피하기 위해 RSI 지표를 포함합니다.

전략 원칙

이 전략은 주로 두 가지 지표에 기반합니다.

  1. 이동 평균 (MA): 특정 기간 동안의 평균 폐쇄 가격을 계산하여 가격 추세와 반전 신호를 결정합니다.

  2. 상대적 강도 지수 (RSI): 특정 기간 동안 가격 상승 및 하락 속도를 계산하여 과소매 및 과소매 지역을 판단합니다.

구체적으로, 전략은 빠른 라인으로서 짧은 MA를 사용하고 느린 라인으로서 더 긴 MA를 사용합니다. 빠른 라인이 느린 라인 위에 넘어가면 단기 가격 상승이 가속화되고 구매 신호가 생성된다는 것을 나타냅니다. 빠른 라인이 느린 라인 아래에 넘어가면 단기 가격 하락이 가속화되고 판매 신호가 생성된다는 것을 나타냅니다.

동시에, 전략은 또한 RSI에 대한 한계를 설정하고, RSI가 50보다 높을 때만 구매 신호를 생성하고, RSI가 50보다 낮을 때만 판매 신호를 생성하며, 가격이 격렬하게 변동할 때 무모한 입력을 피합니다.

이점 분석

이 전략은 다음과 같은 장점을 가지고 있습니다.

  1. 이 원칙은 간단하고 이해하기 쉽고 적용하기 쉽습니다.
  2. 신뢰할 수 있는 거래 신호는 비합리적인 진입을 피합니다.
  3. 매개 변수가 적고 최적화도 쉬워요.
  4. 광범위한 응용을 가진 성숙한 이동 평균 기술.
  5. RSI 지표는 과잉 구매와 과잉 판매 현상을 효과적으로 식별 할 수 있습니다.

위험 분석

이 전략은 또한 몇 가지 위험을 안고 있습니다.

  1. 트렌드를 따르는 전략은 가격이 역전될 때 큰 손실을 입을 수 있습니다.
  2. 이동평균은 뒤떨어져 있고 가격 반전을 즉각적으로 파악하지 못합니다.
  3. 잘못된 매개 변수 선택은 거래 신호 품질이 악화 될 수 있습니다.
  4. 이 전략은 근본적인 요소 없이 기술적인 지표만을 고려합니다.

위험을 줄이기 위해 이동 평균 기간 매개 변수를 최적화하고 스톱 로스 포지션을 조정하고 포지션 크기를 적절히 축소하는 것이 좋습니다. 큰 근본적인 변화가 발생하면 전략을 중단해야합니다.

최적화 방향

이 전략의 주요 최적화 방향은 다음과 같습니다.

  1. 이동 평균 기간 매개 변수를 최적화하여 최적의 매개 변수 조합을 찾아내기 위해 추가 검색, 유전 알고리즘 등을 통해

  2. 필터링을 위한 다른 기술적 지표, 예를 들어 KDJ, MACD 등을 증가시켜 거래 신호 품질을 향상시킵니다.

  3. 가격 변동을 모니터링하고 그에 따라 포지션을 조정하고 손실을 멈추십시오.

  4. 가짜 브레이크오웃을 피하기 위해 거래량을 포함하고 거래량이 증가할 때만 신호를 발송합니다.

  5. 매개 변수 자체 적응 메커니즘을 개발하여 전략이 다른 시장 환경에 따라 매개 변수 값을 자동으로 조정 할 수 있습니다.

결론

요약하자면, 이것은 전형적인 트렌드를 따르는 전략이다. 이동 평균 크로스오버의 원칙에 기초하여 거래 논리는 간단하고 명확하고 이해하기 쉽고 구현하기 쉽습니다. RSI 지표를 통합하면 비합리적인 거래를 피할 수 있습니다. 전략은 위험과 보상 모두 가지고 있으며, 일부 양 거래 경험이있는 투자자에게 적합하지만 잠재적 인 손실 위험을 경계해야합니다. 개발자가 더 많은 필터를 추가하고 매개 변수 적응력을 최적화 할 수 있다면 전략의 안정적인 수익성을 더욱 향상시킬 수 있습니다.


/*backtest
start: 2023-11-03 00:00:00
end: 2023-12-03 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//Trading Strategy Warning - Past performance may not equal future performance
//Account Size Warning - Performance based upon default 10% risk per trade, of account size $100,000. Adjust before you trade to see your own drawdown.
//Time Frame - D1 and H4, warning H4 has a lower profit factor (fake-outs, and account drawdown), D1 recommended
//Trend Following System - Profitability of this system is dependent on a STRONG trend in Bitcoin, into the future
strategy("Bitcoin - MA Crossover Strategy", overlay=true)

// User Input
usr_risk = input(title="Equity Risk (%)",type=input.integer,minval=1,maxval=100,step=1,defval=10,confirm=false)
sma_fast = input(title="Fast MA (Period)",type=input.integer,minval=1,maxval=500,step=1,defval=20,confirm=false)
sma_slow = input(title="Slow MA (Period)",type=input.integer,minval=1,maxval=500,step=1,defval=40,confirm=false)
rsi_valu = input(title="RSI (Period)",type=input.integer,minval=1,maxval=500,step=1,defval=14,confirm=false)

// Create Indicator's
shortSMA = sma(close, sma_fast)
longSMA = sma(close, sma_slow)
rsi = rsi(close, rsi_valu)
strategy.initial_capital = 50000
// Units to buy
amount = usr_risk / 100 * (strategy.initial_capital + strategy.netprofit)
units = floor(amount / close)

// Specify entry conditions
longEntry = crossover(shortSMA, longSMA)
shortEntry = crossunder(shortSMA, longSMA)

// Specify exit conditions
longExit = crossunder(shortSMA, longSMA)
shortExit = crossover(shortSMA, longSMA)

// Execute long trade
if (longEntry)
    strategy.entry("long", strategy.long, units, when = rsi > 50)

// Exit long trade
if(longExit and strategy.position_size > 0)    
    strategy.order("exit long", strategy.short, abs(strategy.position_size))

// Execute short trade
if (shortEntry)
    strategy.entry("short", strategy.short, units, when = rsi < 50)
    
// Exit short trade
if(shortExit and strategy.position_size < 0)    
    strategy.order("exit short", strategy.long, abs(strategy.position_size))

// Plot Moving Average's to chart
plot(shortSMA)
plot(longSMA, color=color.black)

더 많은