
線形回帰通路戦略は,線形回帰分析と均線指標に基づくショートライン取引戦略である.この戦略は,線形回帰通路とハル移動平均を組み合わせ,トレンドの方向を識別し,より低いリスクのある入場点を発見することを目的としている.
線形回帰通路の戦略は主に2つの指標に基づいています.
線形回帰チャネル (Linear Regression Channel): 線形回帰分析によって計算されたチャネル範囲. 戦略では,価格の長期的傾向を表す55日の長さの線形回帰ラインが設定されています. 同時に,チャネル上限ラインを計算し,より熱い価格領域を表しています.
ハル移動平均 (Hull Moving Average):移動平均に似たトレンド追跡指標で,長さが400日設定され,価格の全体的な動きと方向を判断する.
取引の論理は以下の通りです.
価格が通路上限線以下で400日ハル移動平均を下回ったとき,多めに行います.価格が線形回帰の中線上方に戻ったとき,平仓を停止します.
価格が上昇するチャネルに戻ったときに利益を得るために,収支期間中に低値を購入することができます.
この戦略には以下の利点があります.
線形回帰通路は,価格の熱度と長期トレンドの方向をより正確に判断し,波動的な状況で盲目入場を避けることができます.
Hull移動平均は,短期市場の騒音をフィルタリングして,入場タイミングをより明確にする.
策略操作の頻度は低く,撤回リスクは低い.市場の揺れが起きたときに高殺低を追うことはない.
利得は明確で,通常は中短線で良い利益を得ることができます.
線形回帰通路の策略にはいくつかのリスクがあります.
牛市では,線形回帰通路が平らになるか,弱く下落する可能性があるため,買い機会が逃れることになる.適切なパラメータの調整によって最適化することができる.
突発的な事件が重大な調整を起こす場合,ストップラインは突破され,大きな損失が生じることがあります.単一の損失を制御するためにストップライン比率を設定できます.
もし,Hull平均線を下回った場合,平準ポジションを取ることができません.Hull平均線パラメータを調整したり,ストップ・ローンを設定することもできます.
取引頻度が過度に低い場合がある. 線形回帰周期を適切に短縮し,取引頻度を高めることができる.
線形回帰通路の戦略は,以下の点で最適化できます.
ダイナミックな調整は,実際の価格変動に近い方法で,線形回帰チャネルパラメータを調整します.
ハル平均線パラメータを最適化して,トレンド転換点をよりよく判断できるようにする.
経路内のトラッキングストップポイントを設定することで,単一の損失のリスクを効果的に制御できます.
波動性指数を増やして,震災の激しい状況でポジションを開くのを避ける.
取引量指数と組み合わせて,本当の突破を判断する.
線形回帰チャネル戦略は,全体としてより堅牢なトレンド追跡戦略である.市場騒音を回避し,トレンドが始まるときに正しい方向に進むことができる.パラメータ最適化と指標の組み合わせによって,取引リスクをさらに軽減し,収益率を向上させることができる.この戦略は,中長線保有に適しており,頻繁な操作を必要としない.全体として,強力なリールディスクの運用価値を持つ.
/*backtest
start: 2023-01-10 00:00:00
end: 2024-01-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © TradingAmmo
//@version=4
strategy("Linear Channel", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.075, currency='USD')
startP = timestamp(input(2017, "Start Year"), input(12, "Month"), input(17, "Day"), 0, 0)
end = timestamp(input(9999, "End Year"), 1, 1, 0, 0)
_testPeriod() => true
//linreg
length = input(55)
linreg = linreg(close, length, 0)
plot(linreg, color=color.white)
//calc band
Value = input(-2)
sub = (Value/100)+1
Band2 = linreg*sub
plot(Band2, color=color.red)
//HMA as a filter
HMA = input(400, minval=1)
plot(hma(close, HMA), color=color.purple)
long_condition = close < Band2 and hma(close, HMA) < close and _testPeriod()
strategy.entry('BUY', strategy.long, when=long_condition)
short_condition = close > linreg
strategy.close('BUY', when=short_condition)