動向平均戦略による傾向偏差指数

作者: リン・ハーンチャオチャン開催日:2023年11月06日 14:46:40
タグ:

img

概要

この戦略は,価格のトレンドデバイエーションインデックス (TSI) を計算し,TSIを移動平均値で処理し,TSIの移動平均線を形成する.価格キャンドルストイック方向と組み合わせると,現在の価格が上昇傾向か下落傾向にあるかどうかを決定し,したがって購入・売却信号を生成する.

原則

この戦略の主なステップは以下の通りです.

  1. 価格変動の割合を計算する
  2. HMA でダブルスムース pct を取得するには,ダブル_スムース_pc を取得します.
  3. 絶対 pct の HMA の倍を計算して double_smoothed_abs_pc を取得します
  4. 計算する TSI 値: (100 * (double_smoothed_pc / double_smoothed_abs_pc))
  5. HMA を使ったプロセス TSI の値で TSI の移動平均線 tsihmaline を取得する
  6. 移動平均線と TSI の値を比較する 移動平均線の上は上昇傾向,下は減少傾向
  7. 上昇傾向では,価格も上昇している場合,購入信号を生成します
  8. ダウントレンドでは,価格も下がっている場合,販売信号を生成します

上記のステップを通じて,実際の価格動きと組み合わせて,全体的なトレンド方向性を決定し,取引信号を生成します.

利点

  1. HMAの二重スムーズ化は,短期間のノイズと主要なトレンドのロックをフィルター
  2. 動向平均線とTSIは,全体的な傾向の方向性を決定する
  3. 価格キャンドルスタイクと組み合わせると 偽のブレイクを回避し 信号の信頼性を向上させます
  4. 調整可能なパラメータは,異なるサイクル市場に適応します
  5. グラフィカルビジュアライゼーション,アップトレンドは緑色,ダウントレンドは赤色

リスク

  1. 範囲限定市場中に複数の誤った信号を生成する可能性があります.
  2. ターニングポイントにおける移動平均線遅延,おそらく最良のエントリーポイントが欠けている
  3. 変化する市場に適応するために必要なパラメータの頻繁な調整
  4. 単一の TSI 指標に基づいて,他の指標と最適化できます

強化

  1. 統合中に誤った信号を避けるためにフィルターを追加する
  2. トレンド逆転点を確認するための他の指標を追加する
  3. 機械学習などによってパラメータを自動最適化
  4. 単一の取引損失を制御するためにストップ損失を導入する

結論

この戦略は,トレンド方向を決定するためにTSIを使用し,価格キャンドルスタイクと組み合わせてトレンド信号を生成し,上昇傾向で購入し,ダウントレンドで販売することで,効果的にトレンドを捉えることができます.しかし,安定性を向上させるために最適化を必要とするリスクもあります.全体として,この戦略は直感的で分かりやすいので,技術指標に慣れているトレーダーに適しています.


/*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)

もっと