この戦略は,線形回帰点を計算するために線形回帰点技術を使用し,定量的な取引戦略を構築するための取引信号として使用する.この戦略は,株の価格時間系列を分析することによって,線形回帰点のトレンドラインに適合し,線形回帰点を使用し,価格が過大評価されているか過小評価されているか判断し,それによって取引信号を生成する.
線形回帰切断は,時間系列値Xが0であるとき,Yの予測値 (通常価格) を示す.この戦略はパラメータLengthを事前に設定し,閉じる価格をソースシーケンスとして取り,最新のLength日の線形回帰切断 (xLRI) を計算する.閉じる価格がxLRIより高いとき,ロング;閉じる価格がxLRIより低いとき,ショート.
特定の計算式は次のとおりです.
xX = Length *(Length - 1)* 0.5
xDivisor = xX *xX - Length* Length *(Length - 1) *(2 * Length - 1) / 6
xXY = Σ(i *Closing Price[i]), i from 0 to Length-1
xSlope = (Length *xXY - xX* Σ(Closing Price, Length))/ xDivisor
xLRI = (Σ(Closing Price, Length) - xSlope * xX) / Length
このような計算を通じて,最も最近の長さの日間の線形回帰切断 xLRI を得ることができます. 戦略は,取引信号を生成するために,価格の高値と低値を判断します.
この戦略には以下の利点があります.
この戦略にはいくつかのリスクもあります:
対策:
この戦略は,次の側面でも最適化できます.
この戦略は,線形回帰交差点に基づいた単純な定量的な取引戦略を構築する. 全体的に,この戦略にはいくつかの経済的価値がありますが,注意すべきいくつかのリスクもあります. 継続的な最適化によって,戦略の安定性と収益性をさらに向上させることが期待されています.
/*backtest start: 2023-11-28 00:00:00 end: 2023-12-28 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 //////////////////////////////////////////////////////////// // Copyright by HPotter v1.0 21/03/2018 // Linear Regression Intercept is one of the indicators calculated by using the // Linear Regression technique. Linear regression indicates the value of the Y // (generally the price) when the value of X (the time series) is 0. Linear // Regression Intercept is used along with the Linear Regression Slope to create // the Linear Regression Line. The Linear Regression Intercept along with the Slope // creates the Regression line. // // You can change long to short in the Input Settings // WARNING: // - For purpose educate only // - This script to change bars colors. //////////////////////////////////////////////////////////// strategy(title="Line Regression Intercept Backtest", overlay = true) Length = input(14, minval=1) xSeria = input(title="Source", defval=close) reverse = input(false, title="Trade reverse") xX = Length * (Length - 1) * 0.5 xDivisor = xX * xX - Length * Length * (Length - 1) * (2 * Length - 1) / 6 xXY = 0 for i = 0 to Length-1 xXY := xXY + (i * xSeria[i]) xSlope = (Length * xXY - xX * sum(xSeria, Length)) / xDivisor xLRI = (sum(xSeria, Length) - xSlope * xX) / Length pos = iff(close > xLRI, 1, iff(close < xLRI, -1, nz(pos[1], 0))) possig = iff(reverse and pos == 1, -1, iff(reverse and pos == -1, 1, pos)) if (possig == 1) strategy.entry("Long", strategy.long) if (possig == -1) strategy.entry("Short", strategy.short) barcolor(possig == -1 ? red: possig == 1 ? green : blue ) plot(xLRI, color=blue, title="LRI")