
ゴールド・クロス取引戦略は,中長線トレンド追跡戦略である.これは,株価のSR指数とSR信号指数を計算し,株価のトレンド方向を識別し,神経ネットワークと組み合わせてトレンドチャネルを図画し,トレンド追跡操作を実現する.SR指数が上を横切った時に買取信号を生成し,SR指数が下を横切った時に売り信号を生成する.この戦略は,自己適応的線形回帰波技術を使用してチャネル曲線を最適化し,誤信号を効果的に抑制する.
この戦略の核心指標は,SR指標とSR信号指標である.SR指標は,8周期のパラメータとしてWMA平均線とSMA平均線の二次合成である.SR信号指標は,20周期のパラメータとして計算されたSR指標である.SR指標と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_))