
この戦略は,線形回帰線と移動平均をベースにシンプルなトレンド追跡取引システムを設計した.線形回帰線上を移動平均を横切るときは多し,線形回帰線下を移動平均を横切るときは空にする.線形回帰線の斜率を組み合わせて,トレンド信号の一部をフィルターし,トレンド方向が合っている場合にのみ入場する.
トレンドフォローリグレッショントレーディング戦略
この戦略には以下の重要な要素が含まれています.
線形回帰線は,最近のトレンドの方向にうまく適合する.これは,全体的なトレンドの方向を判断するのに役立つ.価格がSMA線を破るとき,線形回帰線の方向がこの突破と一致するかどうかをさらに判断する必要があります.両者の方向が一致するときにのみ,取引信号が生成されます.これは,部分的な偽突破をフィルターすることができます.
さらに,ストップ・ロスの仕組みも設定されている. 価格がストップ・ロスのラインに触れたとき,平仓のストップ・ロスが設定されている. また,ストップ・ストップ・ラインも設定され,利益の一部をロックしている.
この戦略の利点は以下の通りです.
この戦略にはいくつかのリスクがあります.
このリスクに対して,以下のような方法で最適化することができます.
この戦略は,以下のような点で最適化できます.
この戦略は,移動平均のトレンド追跡機能と線形回帰のトレンド判断機能を統合し,比較的シンプルで使いやすいトレンド追跡取引システムを形成する.傾向が顕著な市場では,この戦略は優れた効果を得ることができる.また,パラメータと規則を大量にリテックし,最適化し,リスク制御を行う必要があります.この戦略は,安定した投資収益を得ることができます.
/*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))