この戦略は,線形回帰線と移動平均線をベースとした単純なトレンドをフォローする取引システムを設計する. 線形回帰線が移動平均線を横切ると長くなって,線形回帰線が下を横切ると短くなります. 一方,回帰線の傾きを使用して一部の取引信号をフィルタリングし,トレンド方向が一致するときにのみ入力します.
逆転トレード戦略に続く傾向
この戦略の主な要素は以下の通りです.
線形回帰線は,最近の期間にトレンド方向によく適合する.それは全体的なトレンド方向を判断するのに役立ちます.価格がSMA線を突破すると,線形回帰線の方向がこのブレイクと一致するかどうかをさらに決定する必要があります. 2つの方向が一致するときにのみ,取引信号が生成されます.これはいくつかの偽ブレイクをフィルタリングすることができます.
また,ストップ・ロスのメカニズムも設定する.価格がストップ・ロスのラインに達すると,ストップ・ロスのラインを閉じます.また,いくつかの利益をロックするために,利益のラインを設定します.
この戦略には以下の利点があります.
この戦略にはいくつかのリスクもあります:
これらのリスクについては,次の側面から最適化することができます:
戦略をさらに最適化するための主な側面は以下の通りである.
この戦略は,移動平均値のトレンドフォロー機能と線形回帰のトレンド判断能力を統合し,比較的単純なトレンドフォロー取引システムを形成する. 強いトレンド市場では良い結果を達成することができる. 我々はまだパラメータとルールに関する広範なバックテストと最適化,および適切なリスク管理を必要としている. その後,この戦略は安定した投資収益を得ることができるべきである.
/*backtest start: 2023-11-17 00:00:00 end: 2023-12-05 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy(title="Regression Trading Strategy", shorttitle="RTS", overlay=true) // Input parameters n = input(14, title="SMA Period") stop_loss_percentage = input(2, title="Stop Loss Percentage") take_profit_percentage = input(2, title="Take Profit Percentage") // Calculate the SMA sma = sma(close, n) // Linear regression function linear_regression(src, length) => sumX = 0.0 sumY = 0.0 sumXY = 0.0 sumX2 = 0.0 for i = 0 to length - 1 sumX := sumX + i sumY := sumY + src[i] sumXY := sumXY + i * src[i] sumX2 := sumX2 + i * i slope = (length * sumXY - sumX * sumY) / (length * sumX2 - sumX * sumX) intercept = (sumY - slope * sumX) / length line = slope * length + intercept line // Calculate the linear regression regression_line = linear_regression(close, n) // Plot the SMA and regression line plot(sma, title="SMA", color=color.blue) plot(regression_line, title="Regression Line", color=color.red) // Trading strategy conditions long_condition = crossover(close, sma) and close > regression_line short_condition = crossunder(close, sma) and close < regression_line // Exit conditions stop_loss_price = close * (1 - stop_loss_percentage / 100) take_profit_price = close * (1 + take_profit_percentage / 100) // Plot entry and exit points on the chart plotshape(series=long_condition, title="Long Entry", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small) plotshape(series=short_condition, title="Short Entry", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small) plotshape(series=crossunder(close, stop_loss_price), title="Stop Loss", location=location.abovebar, color=color.red, style=shape.labeldown, text="SL") plotshape(series=crossover(close, take_profit_price), title="Take Profit", location=location.belowbar, color=color.green, style=shape.labelup, text="TP") // Strategy orders strategy.entry("Long", strategy.long, when = long_condition) strategy.entry("Short", strategy.short, when = short_condition) strategy.exit("Exit", from_entry = "Long", when = crossover(close, stop_loss_price) or crossover(close, take_profit_price)) strategy.exit("Exit", from_entry = "Short", when = crossunder(close, stop_loss_price) or crossunder(close, take_profit_price))