
골드 크로스 거래 전략은 중장선 트렌드 추적 전략이다. 그것은 주식 가격의 SR 지표와 SR 신호 지표를 계산하여 주식 가격의 트렌드 방향을 식별하고, 신경망과 결합하여 트렌드 채널을 그리는 트렌드 추적 동작을 구현한다. SR 지표가 SR 신호를 통과할 때 구매 신호를 생성하고, SR 지표가 SR 신호를 통과할 때 판매 신호를 생성한다. 이 전략은 또한 자기 적응형 선형 회귀 필러브 기술을 사용하여 채널 곡선을 최적화하여 잘못된 신호를 효과적으로 억제한다.
이 전략의 핵심 지표는 SR 지표와 SR 신호 지표이다. SR 지표는 8주기 파라미터로 계산된 WMA 평균선과 SMA 평균선의 2차 합성이다. SR 신호 지표는 20주기 파라미터로 계산된 SR 지표이다.
이 전략은 신경망 알고리즘을 사용하여 주식 가격의 상하계를 자동으로 도출하여 자기 적응 통로를 형성한다. 상하계는 SR 지표의 역사 극치를 입력하고, 하하계는 역사 극치를 입력하고, 회귀 곡선을 각각 통로의 상하계로 계산한다. 통로 곡선은 자기 적응적 선형 회귀 파를 통과한 후 더욱 부드럽게 된다.
SR 지표 상에서 SR 신호를 통과하면 구매 신호가 발생하고, SR 지표 아래에서 SR 신호를 통과하면 판매 신호가 발생한다. 더 많은 공백 신호가 발신된 후, 채널 상하계와 주가 가격의 관계는 중지 손실 중지 위치를 결정한다.
이 전략은 주로 트렌드 추적에 기반을 두고 있으며, 다음과 같은 주요 위험들이 있습니다.
위험을 제어하기 위해, 다른 전략을 조합하여 단일 전략 동작을 피하는 것이 좋습니다. 동시에 다양한 시장 환경에 적응하기 위해 매개 변수 설정을 최적화하십시오.
이 전략은 다음과 같은 부분에서 최적화될 수 있습니다.
SR 지표와 신호 지표의 매개 변수를 최적화하여 교차 신호의 안정성을 향상시킵니다.
통로의 길이를 최적화하고 통로의 곡선을 평형화합니다.
다른 필터 지표를 추가하여 오작동을 방지합니다. 예를 들어 양력 지표, 변동률 지표 등;
딥러닝 알고리즘과 결합하여 실시간으로 통로 곡선을 최적화하여 적응력을 향상시킵니다.
골드 크로스 트레이딩 전략은 중장선 트렌드를 효과적으로 추적하는 정량화 전략이다. 트렌드 방향을 올바르게 판단할 확률이 높고, 운용 위험은 낮다. 알고리즘 모델 최적화 공간이 넓어짐에 따라 이 전략은 주식 트렌드 변화를 추적하는 강력한 도구가 될 전망이다.
/*backtest
start: 2023-11-15 00:00:00
end: 2023-11-22 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
//
// ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ //
strategy(title = " Strategy PyramiCover",
shorttitle = "S-PC",
overlay = true,
precision = 8,
calc_on_order_fills = true,
calc_on_every_tick = true,
backtest_fill_limits_assumption = 0,
default_qty_type = strategy.fixed,
default_qty_value = 2,
initial_capital = 10000,
pyramiding=50,
currency = currency.USD,
linktoseries = true)
//
// ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ //
backTestSectionFrom = input(title = "═══════════════ From ═══════════════", defval = true, type = input.bool)
FromMonth = input(defval = 1, title = "Month", minval = 1)
FromDay = input(defval = 1, title = "Day", minval = 1)
FromYear = input(defval = 2014, title = "Year", minval = 2014)
backTestSectionTo = input(title = "════════════════ To ════════════════", defval = true, type = input.bool)
ToMonth = input(defval = 31, title = "Month", minval = 1)
ToDay = input(defval = 12, title = "Day", minval = 1)
ToYear = input(defval = 9999, title = "Year", minval = 2014)
backTestPeriod() => (time > timestamp(FromYear, FromMonth, FromDay, 00, 00)) and (time < timestamp(ToYear, ToMonth, ToDay, 23, 59))
//
// ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ //
per = input(14,title="🔹 Length")
//
up = 0.0
nup= 0.0
lowl = 0.0
nin = 0.0
//
srl=wma(close,8)
srr = sma(close,8)
sr = 2*srl - srr
//
srsl=wma(close,20)
srsr= sma(close,20)
srsignal = 2*srsl - srsr
//
if sr>srsignal
up := highest(sr,round(150))
nup :=highest(srsignal,round(20))
else
up := highest(srsignal,round(150))
nup := highest(sr,round(20))
//
if sr<srsignal
lowl := lowest(sr,round(150))
nin := lowest(srsignal,round(20))
else
lowl := lowest(sr,round(150))
nin := lowest(srsignal,round(20))
//reg alexgrover
f_reg(src,length)=>
x = bar_index
y = src
x_ = sma(x, length)
y_ = sma(y, length)
mx = stdev(x, length)
my = stdev(y, length)
c = correlation(x, y, length)
slope = c * (my / mx)
inter = y_ - slope * x_
reg = x * slope + inter
reg
//
up_=f_reg(up,per)
lowl_=f_reg(lowl,per)
nup_=f_reg(nup,per)
nin_=f_reg(nin,per)
//
plot(sr, title='SR', color=color.green, linewidth=2, style=plot.style_line,transp=0)
plot(srsignal, title='SR-Signal', color=color.red, linewidth=2, style=plot.style_line,transp=0)
plot(up_, title='Upper limit', color=color.blue, linewidth=3, style=plot.style_line,transp=0)
plot(lowl_, title='Lower limit', color=color.blue, linewidth=3, style=plot.style_line,transp=0)
a=plot(nup_, title='Neuronal Upper', color=color.gray, linewidth=1, style=plot.style_line,transp=0)
b=plot(nin_, title='Neuronal Lower', color=color.gray, linewidth=1, style=plot.style_line,transp=0)
fill(a, b, color=color.gray)
plotshape(crossunder(sr,nup_)? sr+atr(20):na, title="Sell", text="🐻", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.red, textcolor=color.black,transp=0)
plotshape(crossover(sr,nin_)? sr-atr(20):na, title="Buy", text="🐂", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.green, textcolor=color.black,transp=0)
//
// ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ //
if backTestPeriod()
strategy.entry("Buy", true, 1, when = crossover(sr,nin_))
strategy.entry("Short", false, 1, when = crossunder(sr,nup_))