トレンド偏差インジケーターKラインと移動平均波戦略の組み合わせ


作成日: 2023-11-06 14:46:40 最終変更日: 2023-11-06 14:46:40
コピー: 0 クリック数: 677
1
フォロー
1617
フォロワー

トレンド偏差インジケーターKラインと移動平均波戦略の組み合わせ

概要

この戦略は,TSI指数から偏った価格のトレンドを計算し,TSIを移動平均処理してTSI指数の移動平均を形成します.価格のK線方向と組み合わせて,現在の株価が上昇傾向にあるか下降傾向にあるかを判断し,買い出荷シグナルを生成します.

原則

この戦略は以下のステップで構成されています.

  1. 価格の変化 pct を計算する
  2. pctにダブルHMA平滑処理を行い,double_smoothed_pcが得られる
  3. pct の絶対値の倍 HMA を計算して double_smoothed_abs_pc となる
  4. 計算するTSIの値は:*(double_smoothed_pc / double_smoothed_abs_pc))
  5. TSI値のHMA移動平均処理を行い,TSIの移動平均tsihmalineが得られる
  6. TSI値とTSI移動平均の関係を比較する.TSI値が移動平均より高いときの上昇傾向,TSI値が移動平均より低いときの減少傾向
  7. 価格が上昇している場合,上昇傾向では,買い信号が生じる
  8. 価格が下がっている場合,下降トレンドでは,セールシグナルが生成されます.

上記のステップは,現在の総動向の方向を判断し,価格の実際の動きと組み合わせて取引シグナルを生成します.

利点

  1. 二重HMA平滑処理により,短期的なノイズを効果的にフィルターし,主要トレンドをロックします.
  2. TSIは移動平均を組み合わせて,全体的なトレンドの方向性を判断します.
  3. 価格のK線方向と結合して,偽突破を回避し,信号の信頼性を高める
  4. パラメータは調整可能で,市場に応じて平滑パラメータを調整し,異なる周期に対応できます
  5. グラフは直感的なものです 緑色は上昇傾向,赤色は下落傾向です

リスク

  1. 震災が起きると,何度も誤信号が作られる.
  2. 移動平均はトレンドの転換点に遅れているので,ベストエントリーポイントを逃す可能性があります.
  3. 市場の変化に対応するためにパラメータを頻繁に調整する必要があります
  4. この戦略は,単一のTSI指標のみに基づいており,他の指標との組み合わせで最適化できます.

最適化の方向

  1. フィルターで誤った信号を防ぐことができます.
  2. 他の指標で判断できれば,トレンドの転換点を確認できます.
  3. 機械学習などの方法でパラメータを自動的に最適化できます.
  4. 単一損失を制御するストップ・損失戦略を導入できます.

要約する

この戦略は,TSI指標を使用してトレンドの方向を判断し,価格のK線と組み合わせて取引信号を生成します.これはトレンドを効果的に捕捉し,上昇傾向で買い,下降傾向で売ることができます.しかし,一定のリスクがあり,安定性を高めるために最適化する必要があります.全体的に,この戦略は直感的に理解しやすく,技術指標に精通したトレーダーに適しています.

ストラテジーソースコード
/*backtest
start: 2023-10-29 00:00:00
end: 2023-11-05 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="TSIHULLBOT", shorttitle="TSICCIHULL", default_qty_type=strategy.percent_of_equity, default_qty_value=100)
long = input(title="Long Length", type=input.integer, defval=50)
short = input(title="Short Length", type=input.integer, defval=50)
signal = input(title="Signal Length", type=input.integer, defval=7)
price = input(title="Source",type=input.source,defval=open)
lineupper = input(title="Upper Line", type=input.integer, defval=250)
linelower = input(title="Lower Line", type=input.integer, defval=-250)
double_smooth(price, long, short) =>
    fist_smooth = hma(price, long)
    hma(fist_smooth, short)
pc = change(price)
double_smoothed_pc = double_smooth(pc, long, short)
double_smoothed_abs_pc = double_smooth(abs(pc), long, short)
tsi_value = (100 * (double_smoothed_pc / double_smoothed_abs_pc))*5
tsihmaline=(hma(tsi_value,signal))*5
clr = tsihmaline < tsi_value ? color.red : color.lime
clr2 = tsi_value < tsi_value[1] ? color.red : color.lime
i1=plot(lineupper+3, color=color.black, linewidth=3)
i2=plot(linelower+3, color=color.black, linewidth=3)
i3=plot(lineupper, color=clr)
i4=plot(linelower, color=clr)
trendv=tsihmaline/5.6
plot(trendv, linewidth=7,  color=color.black)
plot(trendv, linewidth=4,  color=color.yellow)
j1=plot(tsi_value, linewidth=5, color=color.black)
j2=plot(tsi_value[1], linewidth=5, color=color.black)
j3=plot(tsi_value, color=clr2)
j4=plot(tsi_value[1], color=clr2)
fill(i3,i4,color=clr,transp=90)
fill(j3,j4,color=clr2,transp=15)
longCondition = tsihmaline>tsihmaline[1] and price>price[1]
if (longCondition)
    strategy.entry("Buy ⤴️", strategy.long)
shortCondition = tsihmaline<tsihmaline[1] and price<price[1]
if (shortCondition)
    strategy.entry("Sell ⤵️", strategy.short)