
この戦略は,単純移動平均 ((SMA) とローリング線形逆転トレンドラインを組み合わせて,買い条件は,SMAとトレンドラインより高い閉盘価格で多額の取引を行うこと,Exit条件は,SMAとトレンドラインより低い閉盘価格で平仓を行うことを設定している.この戦略は,SMAの均線取引信号とローリングトレンドラインのサポートを主に利用し,上行チャネルを突破する時に入場し,下行チャネルを突破する時に出場する.
この戦略は主に以下の要素に基づいています.
SMA: 簡単な移動平均で,一定の周期 ((smaPeriod) で閉店価格の平均値を計算し,信号線として使う.
ローリングトレンドライン: 線形回帰計算に基づく一定の周期内 (window) の最適合直線をトレンド信号として.計算方法は最小二乗である.
入場条件:閉盤価格がSMA平均線とロールトレンドラインより高いときは,多入場を行う.
終了条件:終了価格がSMA平均線とロールトレンドラインを下回ったとき,平仓に出場する.
このように,この戦略は主に均線取引信号の突破入場と,通路の突破出場に依存している.移動平均の均値回帰特性と,線形回帰通路の均値サポートを利用して,トレンド追跡の突破操作を実現している.
この戦略は均線とトレンドラインのダブルフィルタリングを統合し,偽の突破操作を効果的に減らすことができます.同時に,ローリングトレンドラインはより正確なチャネルサポートを提供し,取引決定をより信頼できます.主な利点は次のとおりです.
この戦略にはいくつかのリスクがあり,以下のような点に重点を置いています.
これらのリスクに対して,以下のポイントから最適化を行うことができます.
この戦略は,以下の側面から最適化できます.
動的にSMA周期と滑点パラメータを調整する機能を追加した.異なる市場環境でパラメータを自動的に最適化する.
価格がトレンドラインを一定比率に突破したときにストップする.
他の指標のフィルタリング信号と組み合わせる.例えば,量能指標,強弱指標など.意思決定の正確性を向上させる.
価格が底に近づき,下行チャネルを突破する時に多めにする.
この戦略は,移動平均取引シグナルとローリングトレンドラインチャネルのサポートを統合し,トレンド追跡操作を実現している.二重フィルタリング機構は,偽突破の確率を低減し,意思決定の質を向上させる. 単純なパラメータ設定,論理の明晰さ,実行しやすく,最適化調整.全体的に,この戦略は,信頼性のある,シンプルで直感的なトレンド突破取引システムを形成している.
/*backtest
start: 2024-01-04 00:00:00
end: 2024-02-03 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("SMA Strategy with Rolling Trendline", overlay=true)
// Input parameters
smaPeriod = input(14, title="SMA Period")
window = input(20, title="Trendline Window")
startDate = input(timestamp("2023-01-01"), title="Start Date")
endDate = input(timestamp("2023-12-31"), title="End Date")
// Calculating SMA
sma = sma(close, smaPeriod)
// Function to calculate linear regression trendline for a window
linreg_trendline(window) =>
sumX = 0.0
sumY = 0.0
sumXY = 0.0
sumX2 = 0.0
for i = 0 to window - 1
sumX := sumX + i
sumY := sumY + close[i]
sumXY := sumXY + i * close[i]
sumX2 := sumX2 + i * i
slope = (window * sumXY - sumX * sumY) / (window * sumX2 - sumX * sumX)
intercept = (sumY - slope * sumX) / window
slope * (window - 1) + intercept
// Calculating the trendline
trendline = linreg_trendline(window)
// Entry and Exit Conditions
longCondition = close > sma and close < trendline
exitLongCondition = close < sma and close > trendline
// Strategy logic
if (true)
if (longCondition)
strategy.entry("Long", strategy.long)
if (exitLongCondition)
strategy.close("Long")
// Plotting
plot(sma, title="Simple Moving Average", color=color.blue)
plot(trendline, title="Rolling Trendline", color=color.red)
plotshape(series=longCondition, title="Enter Trade", location=location.belowbar, color=color.green, style=shape.triangleup)
plotshape(series=exitLongCondition, title="Exit Trade", location=location.abovebar, color=color.red, style=shape.triangledown)