단일 이동 평균 교차 볼린저 밴드 전략


생성 날짜: 2023-12-22 14:10:14 마지막으로 수정됨: 2023-12-22 14:10:14
복사: 1 클릭수: 726
avatar of ChaoZhang ChaoZhang
1
집중하다
1621
수행원

단일 이동 평균 교차 볼린저 밴드 전략

개요

이 전략은 단평평선과 부린띠 지표에 기초하여, 가격이 부린띠를 돌파할 때 상행 또는 하행할 때, 구매 또는 판매를 한다. 또한, 평평선의 방향 판단 트렌드를 결합하여, 평평선이 상승할 때만 구매하고 평평선이 하락할 때만 판매한다.

전략 원칙

이 전략은 다음과 같은 몇 가지 지표에 의해 판단됩니다.

  1. 평균선 ((SMA): CLOSE 종전 가격의 간단한 이동 평균을 계산하여 가격 흐름을 나타냅니다.
  2. 브린 띠는 레일 위에 있다. 이 레일을 뚫면 강한 레일을 뚫는 것을 의미한다.
  3. 브린 줄무늬 하락: 지지를 나타내고, 그 선을 넘어가는 것은 추세가 반전될 가능성을 나타냅니다.

구체적인 거래 신호는 다음과 같습니다.

  1. 구매 신호: 종식 가격이 부린을 뚫고 궤도에 올랐을 때 구매하십시오.
  2. 팔기 신호: 종식 가격이 부린 반도 아래로 떨어지고 평균선이 하락 상태에 있을 때 팔기.

트렌드와 브레이크를 결합하여 거래 신호를 더욱 신뢰할 수 있게 하고, 가짜 브레이크를 방지한다.

전략적 이점

  1. 규칙은 간단하고 명확하며, 이해하기 쉽고 실행하기 쉽습니다.
  2. 평균선을 이용해 큰 트렌드 방향을 판단하고, 불시장과 곰시장을 피하십시오.
  3. 브린은 로컬 브레이크 지점을 판단하고, 브레이크 신호를 정확하게 포착했다.
  4. 하지만, 대부분의 사람들의 위험 취향에 맞게 인출은 상대적으로 작습니다.

전략적 위험

  1. 단일 지표는 오류 신호를 쉽게 발산할 수 있으며, 최적화 매개 변수를 통해 오류율을 줄일 수 있다.
  2. 큰 시장의 흔들림에 대처할 수 없는 경우, 적절히 스톱포트를 조정할 수 있다.
  3. 트렌드가 큰 상황에서 더 많은 수익을 얻을 수 없는 경우, 포지션을 확대하는 것을 고려할 수 있습니다.

전략 최적화

  1. 평균선 주기 변수를 최적화하여 더 많은 품종에 적응한다.
  2. MACD와 같은 다른 지표 필터를 추가하여 잘못된 신호를 줄여줍니다.
  3. 동적으로 스톱포인트를 조정하고, 최대 회수량을 제한한다.
  4. 그리고 이 아이디어는 돈 관리와 결합되어 수익과 손실을 더 평평하게 만듭니다.

요약하다

이 전략은 전체적으로 간단하고 실용적이며 대부분의 사람들에게 적합합니다. 몇 가지 최적화 조정으로 전략을 더 거칠게 만들고 더 많은 시장 상황에 적응하는 것이 권장되는 전략입니다.

전략 소스 코드
/*backtest
start: 2023-12-14 00:00:00
end: 2023-12-18 19:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy(title="single sma cross", shorttitle="single sma cross",default_qty_type = strategy.percent_of_equity, default_qty_value = 100,overlay=true,currency="USD")
s=input(title="s",defval=90)
p=input(title="p",type=float,defval=.9,step=.1)

sa=sma(close,s)
plot(sa,color=red,linewidth=3)
band=stdev(close,s)*p
plot(band+sa,color=lime,title="")
plot(-band+sa,color=lime,title="")

// ===Strategy Orders============================================= ========
inpTakeProfit = input(defval = 0, title = "Take Profit", minval = 0)
inpStopLoss = input(defval = 0, title = "Stop Loss", minval = 0)
inpTrailStop = input(defval = 0, title = "Trailing Stop Loss", minval = 0)
inpTrailOffset = input(defval = 0, title = "Trailing Stop Loss Offset", minval = 0)
useTakeProfit = inpTakeProfit >= 1 ? inpTakeProfit : na
useStopLoss = inpStopLoss >= 1 ? inpStopLoss : na
useTrailStop = inpTrailStop >= 1 ? inpTrailStop : na
useTrailOffset = inpTrailOffset >= 1 ? inpTrailOffset : na

longCondition = crossover(close,sa+band) and rising(sa,5)
shortCondition = crossunder(close,sa-band) and falling(sa,5)
crossmid = cross(close,sa)


strategy.entry(id = "Long", long=true, when = longCondition)
strategy.close(id = "Long", when = shortCondition)
strategy.entry(id = "Short", long=false, when = shortCondition)
strategy.close(id = "Short", when = longCondition)
strategy.exit("Exit Long", from_entry = "Long", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset, when=crossmid)
strategy.exit("Exit Short", from_entry = "Short", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset, when=crossmid)