線形回帰と二重移動平均の短期戦略

作者: リン・ハーンチャオチャン,日付: 2024-01-26 12:33:14
タグ:

img

概要

この戦略は,線形回帰指標と二重指数移動平均を組み合わせて短期追跡操作を実施する.この戦略は,価格が上下線を突破するとショートポジションを確立し,価格が再び突破するとポジションを閉鎖する.同時に,この戦略は,価格の動向を決定するための補助条件として二重指数移動平均を使用する.

戦略原則

この戦略は,主に線形回帰指標を使用して価格ブレイクを決定します.線形回帰指標は,上下レールを取得するために線形回帰を使用して,一定の期間の最高値と最低値に基づいて計算されます.価格が上下レールから崩れ落ちたり,下下下レールから崩れ落ちたりすると,それは取引信号であると信じています.

また,この戦略は,中間トレンドを決定するために二重指数関数移動平均も導入する.二重指数関数移動平均は価格変化により早く反応することができる.価格が上方レールから崩れ落ちると,二重指数関数移動平均がすでに価格の上方にある場合,それは現在下落傾向にあることを示唆する.我々はショートポジションを確立する.価格が再び上部レールを突破するか,二重指数関数移動平均を突破したとき,我々はポジションを平坦にする.

具体的には,戦略の主なポイントは以下のとおりです.

  1. 線形回帰を計算する 上下線線
  2. 2つの指数関数移動平均を計算する
  3. 価格が上部レールからダウンし,二重指数関数移動平均値が価格以上になると,ショートポジションを設定します.
  4. 価格が上方レールを再び突破したり,二重指数的な移動平均値を超えたとき,ショートポジションをフラット化します.

利点分析

この戦略は,従来の移動平均値や他の指標と比較して,以下の利点があります.

  1. 線形回帰指標は価格変化をより早く捉えることができ,エントリー信号としてより効果的です
  2. 二重指数移動平均は,より敏感にトレンドを決定し,誤ったブレイクを回避することができます.
  3. 二重指標と条件を組み合わせることで 雑音をフィルタリングして取引を安定させることができます

リスク分析

この戦略には注意すべきリスクもあります.

  1. 線形回帰指標はパラメータに敏感で,異なるサイクルで異なる結果が得られる.
  2. 二重指数移動平均値が偏り 判断が間違っている場合
  3. 突破策は,滑り込みリスクを増加させる
  4. 波動性のある市場では,ポジションの頻繁な開閉が起こり得る.

上記のリスクについては,パラメータの最適化,厳格なストップ損失,突破幅の適正な緩和などで解決できます

オプティマイゼーションの方向性

この戦略は,次の側面でも最適化できます.

  1. 最適なパラメータ組み合わせを見つけるために線形回帰サイクルと二重指数移動平均サイクルを最適化
  2. 軽い価格突破による誤りを避けるために価格変動判断を追加する
  3. 突破の有効性を確保するために,取引量などの補助条件を増やす
  4. 単一の損失を減らすためのストップ損失レベルを設定する
  5. 特定の品種のパラメータを調整する

概要

この戦略は,線形回帰指標と二重指数移動平均を包括的に使用しており,理論と実践の両方で一定の利点があります.継続的な最適化と調整によって安定性と戦略の結果のさらなる改善を達成できます.この戦略は短期取引に適しており,定量的なトレーダーに良いアルファをもたらすことができます.


/*backtest
start: 2023-12-26 00:00:00
end: 2024-01-25 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy('LR&SSL_Short', overlay=true)
startP = timestamp(input(2017, "Start Year"), input(12, "Month"), input(17, "Day"), 0, 0)
end   = timestamp(9999,1,1,0,0)
_testPeriod() => true

len = input(title="Period", defval=89)
smaHigh = linreg(high, len, 0)
smaLow = linreg(low, len, -1)
Hlv = 0.0
Hlv := close > smaHigh ? 1 : close < smaLow ? -1 : Hlv[1]
sslDown = Hlv < 0 ? smaHigh : smaLow
sslUp = Hlv < 0 ? smaLow : smaHigh

plot(sslDown, linewidth=2, color=color.red)
plot(sslUp, linewidth=2, color=color.lime)



length = input(200, title="DEMA") 
d1 = ema(close, length)                                               
d2 = 2 * d1 - ema(d1, length)                                         
trendColour = d2 > d1 ? #AAFFAA : #FFAAAA 
dema=sma(d2,length) 

turnGreen = d2 > d1 and d2[1] <= d1[1]  
turnRed   = d2 <= d1 and d2[1] > d1[1]  

up =turnGreen 
down=turnRed 
  
plotshape(down, title="down", style=shape.triangledown,location=location.abovebar, color=color.red, transp=0, size=size.small) 
plotshape(up,  title="up", style=shape.triangleup,location=location.belowbar, color=color.green, transp=0, size=size.small) 
plot(dema, color = trendColour,linewidth=3 ,transp = 0)
bgcolor(close > dema ? color.green : color.red)

strategy.entry("short", strategy.short, when= crossunder(sslUp, sslDown) and dema > close and _testPeriod())
strategy.close("short", when = crossover(sslUp, sslDown) or crossover(close, dema))


もっと