Super BitMoon 양적 모멘텀 거래 전략


생성 날짜: 2023-09-15 16:13:05 마지막으로 수정됨: 2023-09-15 16:13:05
복사: 1 클릭수: 674
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

이 전략은 슈퍼 비트 문 (Super BitMoon) 이라고 불리며, 비트코인에 적용되는 단선 양적 동적 거래 전략이다. 이 전략은 동시에 상장과 하락의 능력을 가지고 있으며, 비트코인이 중요한 지지 또는 저항 지점을 돌파했을 때 거래할 수 있다.

전략의 작동 원리:

  1. ATR 지표를 사용하여 근래의 변동 범위와 중지 지점을 계산한다. 가격이 K선 위의 중지 지점을 돌파했을 때, 트렌드 반전이 일어난 것으로 판단한다.
  2. 무게 이동 평균 WVF와 부린 띠 지표를 사용하여 비트코인이 과매매 또는 과매매 상태에 있는지 판단하십시오. 시장이 과매매 상태에있을 수 있음을 나타내는 부린 띠를 WVF 아래로 통과하면 더 많이 할 수 있습니다.
  3. RSI 지표를 사용하여 비트코인이 과매매되었는지 판단하십시오. RSI가 두 개의 과매매 라인보다 낮으면 더 많이 할 수 있습니다.

구체적인 거래 전략:

  1. 만약 WVF 아래의 브린 띠가 궤도에 오르면서 ATR 중지 가격보다 가격이 높다면, 더 많은 비트코인을 한다.
  2. 만약 RSI가 50 또는 30의 초매매선보다 낮다면, 비트코인을 상장한다.

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

  1. 또한 다중 코카이도 기능이 있으며, 양방향 거래가 가능합니다.
  2. ATR을 사용하여 위험을 통제하고 손실을 방지하십시오.
  3. WVF, 브린 밴드 및 RSI 지표를 사용하여 판단하여 신호 정확도를 향상시킵니다.

이 전략의 위험은:

  1. 부린밴드 및 RSI 파라미터를 잘못 설정하면 잘못된 신호가 발생할 수 있다.
  2. 급격한 사건으로 인해 가격이 상승하거나 급격하게 떨어질 수 있으며, 이로 인해 정지 손실이 발생할 수 있습니다.
  3. 거래비용은 수익에 영향을 미칩니다.

요약하자면, Super BitMoon은 단선 Indicatorscombos에 매우 적합한 양적 동적 전략이며, 트렌드 추적과 반전 거래의 특성을 갖추고 있다. 합리적인 매개 변수 최적화를 통해, 더 나은 위험 수익 비율을 얻을 수 있다. 그러나 거래자는 비용 제어 및 자금 관리와 같은 요소를 충분히 고려하여 실 디스크 거래의 위험을 줄여야 한다.

전략 소스 코드
/*backtest
start: 2023-09-07 00:00:00
end: 2023-09-08 09:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("Super BitMoon v1", overlay=false, commission_value = 0.25, default_qty_type=strategy.percent_of_equity, default_qty_value = 100)

/////////////////////////////////////////////////////////////
//START - SET DATE RANGE

// === BACKTEST RANGE ===
FromMonth = input(defval = 1, title = "From Month", minval = 1)
FromDay   = input(defval = 1, title = "From Day", minval = 1)
FromYear  = input(defval = 2011, title = "From Year")
ToMonth   = input(defval = 12, title = "To Month", minval = 1)
ToDay     = input(defval = 31, title = "To Day", minval = 1)
ToYear    = input(defval = 2018, title = "To Year")

startDate = time > timestamp(FromYear, FromMonth, FromDay, 00, 00)
endDate = time < timestamp(ToYear, ToMonth, ToDay, 23, 59)
withinTimeRange = true

/////////////////////////////////////////////////////////////
//END - SET DATE RANGE



/////////////////////////////////////////////////////////////
//START - INDICATORS

//ATR STOPS TREND FILTER
length = input(5, title="ATR Stop's Length")
mult = input(1, minval=0.01, title="ATR Stop's Multiple")
atr_ = atr(length)
max1 = max(nz(max_[1]), close)
min1 = min(nz(min_[1]), close)
is_uptrend_prev = nz(is_uptrend[1], true)
stop = is_uptrend_prev ? max1 - mult * atr_ : min1 + mult * atr_
vstop_prev = nz(vstop[1])
vstop1 = is_uptrend_prev ? max(vstop_prev, stop) : min(vstop_prev, stop)
is_uptrend = close - vstop1 >= 0
is_trend_changed = is_uptrend != is_uptrend_prev
max_ = is_trend_changed ? close : max1
min_ = is_trend_changed ? close : min1
vstop = is_trend_changed ? is_uptrend ? max_ - mult * atr_ : min_ + mult * atr_ : vstop1

//SYNTHETIC VIX
pd = input(10, title="Synthetic VIX's Length")
bbl = input(2, title="Synthetic VIX's Bollinger Band's Length")
mult2 = input(0.01, minval=0.01, title="Synthetic VIX's Bollinger Band's Std Dev")
wvf = ((highest(close, pd)-low)/(highest(close, pd)))*100
sDev = mult2 * stdev(wvf, bbl)
midLine = sma(wvf, bbl)
upperBand = midLine + sDev

//RSI
rsi = rsi(close, input(10,title="RSI's Length"))
os1 = input(50,title="RSI's Oversold Level 1")
os2 = input(50,title="RSI's Oversold Level 2")

/////////////////////////////////////////////////////////////
//END - INDICATORS



/////////////////////////////////////////////////////////////
//START - TRADING RULES
direction = input(defval=1, title = "Strategy Direction", minval=-1, maxval=1)
strategy.risk.allow_entry_in(direction == 0 ? strategy.direction.all : (direction < 0 ? strategy.direction.short : strategy.direction.long))

condition1 = crossunder(wvf, upperBand) and close > vstop and withinTimeRange
condition2 = crossunder(rsi, os1) and withinTimeRange
condition3 = crossunder(rsi, os2) and withinTimeRange

strategy.entry("BUY", strategy.long, when = condition1)
strategy.entry("SELL", strategy.short, when = condition2 or condition3)

/////////////////////////////////////////////////////////////
//END - TRADING RULES