ダイナミックサンタクロース回帰戦略 (Dynamic Santa Claus Regression Strategy) は,価格とバーインデックスとの間のダイナミック回帰関係に基づいて潜在的なエントリーと出口点を特定する定量的な取引戦略である.この戦略は,価格の回帰トレンドラインをプロットするために動的に調整可能な移動平均パラメータを使用する.回帰線の方向性を分析することで,入口または出口ポジションを決定する.
この戦略の核は価格とバーインデックス間の線形回帰関係を計算することです.まず,簡単な移動平均値と長さの標準偏差Nを計算します.次にサンプル相関係数と標準偏差比に基づいて,回帰直線の傾きkと交点bを得ます.その結果,動的に調整された線形回帰方程式になります:
y = kx + b
xはバーインデックスで,yは価格です.
逆転線の現在の値と前の値の大きさ関係によって,トレンド方向が決定される.逆転線が上昇し,閉じる価格が開く価格と前一瞬の最高価格よりも高くなった場合,購入信号が生成される.逆転線が落ちて,閉じる価格が開く価格と前一瞬の最低価格よりも低い場合,販売信号が生成される.
N値の設定が不適切である場合,回帰線が滑りすぎたり敏感すぎたりする可能性があります.
短期間の価格変動,回帰関係判断は失敗
リング比は,時間の1つのポイントのみを考慮し,局所的な極端を逃す可能性があります
ダイナミックサンタクロース回帰戦略は,価格と時間の間のダイナミック回帰関係を活用して柔軟で直感的で調整可能な定量取引システムを実装する.この戦略の論理は明確で理解しやすい.パラメータ最適化を通じて,異なる取引製品とサイクルに適用することができます.この戦略の革新性は,動的モデルを確立するために時間因子の導入にあります.判断をより傾向的にします.要約すると,この戦略は定量取引のための価値のあるサンプルを提供します.
/*backtest start: 2023-01-05 00:00:00 end: 2024-01-11 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 // Creator - TradeAI strategy('Moving Santa Claus Strategy | TradeAI', overlay=true) // Set the length of the moving average length = input(64) // Calculate the moving averages and standard deviations x = bar_index y = close x_ = ta.sma(x, length) y_ = ta.sma(y, length) mx = ta.stdev(x, length) my = ta.stdev(y, length) c = ta.correlation(x, y, length) slope = c * (my / mx) // Calculate the parameters of the regression line inter = y_ - slope * x_ reg = x * slope + inter // Set the line color based on whether EMA is moving up or down var color lineColor = na if (reg > reg[1] and (close > open and close > high[1])) lineColor := color.new(#d8f7ff, 0) if (reg < reg[1] and (close < open and close < low[1])) lineColor := color.new(#ff383b, 0) // Plot the EMA line with different thicknesses plot(reg, color=lineColor, title="EMA") var color lineColorrr = na if (reg > reg[1] and (close > open and close > high[1])) lineColorrr := color.new(#d8f7ff, 77) if (reg < reg[1] and (close < open and close < low[1])) lineColorrr := color.new(#ff383b, 77) plot(reg, color=lineColorrr, title="EMA", linewidth=5) var color lineColorr = na if (reg > reg[1] and (close > open and close > high[1])) lineColorr := color.new(#d8f7ff, 93) if (reg < reg[1] and (close < open and close < low[1])) lineColorr := color.new(#ff383b, 93) plot(reg, color=lineColorr, title="EMA", linewidth=10) var color lineColorrrr = na if (reg > reg[1] and (close > open and close > high[1])) lineColorrrr := color.new(#d8f7ff, 97) if (reg < reg[1] and (close < open and close < low[1])) lineColorrrr := color.new(#ff383b, 97) plot(reg, color=lineColorr, title="EMA", linewidth=15) var color lineColorrrrr = na if (reg > reg[1] and (close > open and close > high[1])) lineColorrrrr := color.new(#d8f7ff, 99) if (reg < reg[1] and (close < open and close < low[1])) lineColorrrrr := color.new(#ff383b, 99) plot(reg, color=lineColorr, title="EMA", linewidth=20) // Implement trading strategy based on EMA direction if reg > reg[1] and (close > open and close > high[1]) strategy.entry('buy', strategy.long) if reg < reg[1] and (close < open and close < low[1]) strategy.close('buy')