ゴールデンクロス・トレーディング戦略は,中長期のトレンド・トラッキング戦略である. SR指標とSR信号指標を計算することによって株価のトレンド方向を特定し,神経ネットワークアルゴリズムを使用してトレンドチャネルを描き,トレンド・トラッキング操作を実装する. SR指標がSR信号を横切ると購入信号が生成される. SR指標がSR信号を下回ると販売信号が生成される.この戦略は,チャネル曲線を最適化するために適応線性回帰フィルター技術も使用し,誤った信号を効果的に抑制する.
この戦略のコア指標は,SR指標とSR信号指標である.SR指標は,WMA移動平均とSMA移動平均の二次合成であり,期間が8である.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_))