戦略に従った二線性回帰傾向

作者: リン・ハーンチャオチャン,日付: 2023年11月17日 16:51:33
タグ:

img

概要

双線回帰トレンドフォローする戦略は,価格トレンドを決定するために,高速回帰と遅い線形回帰の違いを使用し,エントリー信号として使用する.高速回帰が値を超えると長引き,下を突破すると退出する.また,価格がEMAを超えると EMAをフィルターとして入力する.

戦略の論理

この戦略は,まず,異なる期間の2つの線形回帰線を計算し,一つは短い期間の高速で,もう一つは長い期間の遅い.次に,両者の差を計算し,高速回帰が遅い回帰よりも高くなった場合,差は正であり,上昇傾向を示します.高速が遅い以下である場合,差は負であり,下落傾向を示します.

この戦略は,差線が値を超えるとロングに入ります.また,トレンドではない動きをフィルタリングするために,価格が200期 EMAを超える必要があります.

利点分析

  1. 双線性回帰は 価格動向をうまく捉えることができます

  2. EMAフィルターは,トレンドではない動きからいくつかの誤った信号を排除します.

  3. シンプルで明快な論理で 分かりやすく実行できます

リスク分析

  1. 誤った LR 期間が過剰な騒音を生む可能性があります.

  2. EMAフィルターは 強いトレンドの機会を見逃す可能性があります

  3. 市場変動で失敗し損をする傾向があります

解決策:

  1. LR 期間を最適化してノイズを減らす

  2. 市場状況に基づいて EMA 期間を動的に調整する.

  3. ストップ損失をコントロール損失に追加します

最適化

戦略は以下の側面で最適化できます.

  1. 最適な組み合わせを見つけるために,高速と遅い LR 期間を最適化します.

  2. Bollinger BandsやKDJのようなフィルターで EMAではなく

  3. リスク制御に動的ストップ損失を追加する.

  4. 株の選抜と組み合わせて 傾向の株を選択します

  5. 市場状況に基づいて適応パラメータを開発する.

概要

双線回帰戦略は,二重線形回帰とEMAフィルターでトレンドを捕捉する上でシンプルで直接的です. しかし,パラメータ最適化,ストップ損失などを通じて対処する必要があるリスクもあります.適切に調整された場合,トレンド市場を効果的に取引することができます.


/*backtest
start: 2022-11-10 00:00:00
end: 2023-11-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 trend", overlay=false, 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"),   input(1, "Month"),   input(1, "Day"),   0, 0)
_testPeriod() =>
    iff(time >= startP and time <= end, true, false)

src = close
len1 = input(defval=13, minval=1, title="Fast LR")
len2 = input(defval=55, minval=1, title="Slow LR")

lag1 = input(0, title="Lag for fast")
lag2 = input(0, title="Lag for slow")

threshold  = input(0,step=0.5, title="Threshold")

fast_lr = linreg(src, len1, lag1)
slow_lr = linreg(src, len2, lag2)
lr = fast_lr - slow_lr
plot_fast = plot(lr, color = lr > 0 ? color.green : color.red)
plot(threshold, color=color.purple)

long_condition = crossover(lr, threshold) and close > ema(close, 200) and _testPeriod()
strategy.entry('BUY', strategy.long, when=long_condition) 

short_condition = crossunder(lr, threshold) 
strategy.close('BUY', when=short_condition) 



もっと