
이 전략은 평균 PB 지표와 부린 띠의 하향을 계산하여, PB 지표와 부린 띠의 하향 사이의 황금 포크 사다리 관계를 판단하여, 구매 및 판매 신호를 생성한다. PB 지표가 상향으로 부린 띠의 중도 또는 하향을 돌파하면 구매 신호를 생성한다.
전략의 핵심 지표는 평균 PB 지표이다. 평균 PB 지표는 평균선 시스템의 안정성과 PB 지표의 민감성을 결합하여, 두 개의 다른 주기 평균선의 차수를 사용하여 가격 변화의 흐름을 표현하여 빈도를 판단한다.
이 전략은 또한 부린 띠 지표를 사용하여 주식 가격의 과매매 상황을 판단한다. 부린 띠 지표는 중궤도, 상궤도, 하궤도 3개의 곡선을 구성한다. 중궤도는 n일의 이동 평균이다. 상궤도는 중궤도와 역사적인 변동률을 통해 계산된다. 주가가 상궤도에 접근할 때 과매구역으로, 하궤도에 접근할 때 과매구역으로, 중궤도 근처에는 주식의 합리적인 가격구역으로 간주된다.
종합적으로, 이 전략은 평균 PB 지표를 사용하여 주식 가격의 상승과 하락의 추세를 결정하고, 부린 밴드 지표에 보조하여 과매매의 상황을 판단하고, 둘을 결합한 지표 관계에서 매도점을 찾습니다.
이 전략의 주요 장점은 다음과 같습니다.
이 전략의 주요 위험은 다음과 같습니다.
위와 같은 위험에 대해, 최적화 매개 변수 설정, 엄격한 손해, 고려 대 환경 요소, 인위 모니터링 등의 방법으로 위험을 회피 할 수 있다.
이 전략의 최적화 방향은 다음과 같습니다.
이 전략은 전체적으로 운영 효과가 좋으며, 평균 PB 지표를 중심으로, 부린 띠를 보조하여 매수점을 결정하고, 조작이 간단하고, 민감도가 높으며, 재검토 성능이 뛰어나다. 지속적으로 최적화 파라미터 설정을 통해, 다른 지표 보조를 추가하고, 엄격한 손해 막는 등의 조치를 통해 전략 수익률과 안정성을 더욱 향상시킬 수 있으며, 실험 검증 및 적용할 가치가 있다.
/*backtest
start: 2024-01-09 00:00:00
end: 2024-01-16 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("BandPass EOS", overlay=false, initial_capital = 1000)
src = input(close, "Source", input.source)
Period1 = input(41, "Fast Period", input.integer)
Period2 = input(54, "Slow Period", input.integer)
showBG = input(false, "Show crosses on background?", input.bool)
UseReversalStop = input(true, "Use additional triggers?", input.bool)
//Super Passband Filter
a1 = 0.0
a2 = 0.0
PB = 0.0
RMS = 0.0
if bar_index > Period1
a1 := 5 / Period1
a2 := 5 / Period2
PB := (a1 - a2) * src + (a2 * (1 - a1) - a1 * (1 - a2)) * src[1] +
(1 - a1 + 1 - a2) * nz(PB[1]) - (1 - a1) * (1 - a2) * nz(PB[2])
for i = 0 to 49 by 1
RMS := RMS + PB[i] * PB[i]
RMS
RMS := sqrt(RMS / 40)
RMS
z = 0
buy = PB > PB [5] and crossover(PB, -RMS) or PB > PB [5] and crossover (PB, RMS) or PB > PB [5] and crossover (PB, z)
sell = PB < PB [5] and crossunder(PB, RMS) or PB < PB [5] and crossunder (PB, -RMS) or PB < PB [5] and crossunder (PB, z)
signal = buy ? 1 : sell ? -1 : 0
bg = buy ? color.green : sell ? color.red : color.white
bg := showBG ? bg : na
upperFill = PB>RMS ? color.lime : na
lowerFill = PB<-RMS ? color.red : na
p1 = plot(PB,"PB",color.red)
p2 = plot(RMS,"+RMS",color.blue)
p3 = plot(-RMS,"-RMS",color.blue)
bgcolor(bg)
fill(p1,p2,upperFill)
fill(p1,p3,lowerFill)
hline(0)
//PERIOD
testStartYear = input(2018, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay, 0, 0)
testStopYear = input(2019, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(31, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay, 0, 0)
testPeriod() => true
lcolor = PB > PB [5] and crossover(PB, -RMS) or PB > PB [5] and crossover (PB, RMS) or PB > PB [5] and crossover (PB, z)
scolor = PB < PB [5] and crossunder(PB, RMS) or PB < PB [5] and crossunder (PB, -RMS) or PB < PB [5] and crossunder (PB, z)
c1 = (PB < PB [5] and crossunder(PB, RMS) or PB < PB [5] and crossunder (PB, -RMS) or PB < PB [5] and crossunder (PB, z))
c2 = (PB > PB [5] and crossover(PB, -RMS) or PB > PB [5] and crossover (PB, RMS) or PB > PB [5] and crossover (PB, z))
plot (c1 ? PB : na, style = plot.style_circles, color = color.red, linewidth = 3)
plot (c2 ? PB : na, style = plot.style_circles, color = color.green, linewidth = 3)
if (PB > PB [5] and crossover(PB, -RMS) or PB > PB [5] and crossover (PB, RMS) or PB > PB [5] and crossover (PB, z))
strategy.entry("long", strategy.long, when = testPeriod())
if (PB < PB [5] and crossunder(PB, RMS) or PB < PB [5] and crossunder (PB, -RMS) or PB < PB [5] and crossunder (PB, z))
strategy.entry("short", strategy.short, when = testPeriod())