この戦略は,短期高低,短期・長期平均コストとの間の偏差を利用して傾向を決定する.これは,短期間の敏感性を高め,トレンドが現れるときに有意な利益を維持しながら,統合中に小さな損失を減らすために,以前のおよび後の平滑平均関数を拡大することによって統合コストを削減することを目的としています.
短期コストを計算する:最近の短期キャンドルの最高価格と最低価格を計算するために,最高値と最低値の関数を使用し,短期コストとして平均を取ります.
長期コストを計算する: タ.スマ関数を使用して,最近の長期キャンドルの閉店価格の単純な移動平均を計算します.
計算偏差: 短期コストから長期コストを引く
滑らかな偏差: 単純な移動平均のtas.smaを使用して誤判を減らすために偏差を滑らかにします.
傾向を決定する: 滑らかな偏差が 限界値よりも大きい場合,上向きの傾向として判断する. 負の限界値よりも小さい場合,下向きの傾向として判断する.
入口と出口: 上向きトレンドを追跡するときにロング,下向きトレンドを追跡するときにショート.
リスク解決:
一般的に,これは非常にシンプルで直接的なトレンドフォロー戦略である.移動平均値のような一般的な指標と比較して,短期および長期間のコストの間の偏差を計算することによって,傾向の変化をより早く判断することができる.一方,スムージング処理はパラメータ最適化にもより柔軟性を提供し,スムージングパラメータを調整することで,敏感性と誤判率をバランスできるようにする.要するに,この戦略は敏捷性,直接性,高いカスタマイズ可能性などの特徴を持っています.これはより深く探求する価値のある有望な戦略です.パラメータを引き続き最適化し,補助判断条件を追加することで,戦略のパフォーマンスをさらに向上させる可能性があります.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © dead0001ing1 //@version=5 strategy("Trend-Following Indicator", overlay=true) // 設置參數 shortTerm = input(5, "Short Term") longTerm = input(20, "Long Term") smooth = input(5, "Smoothing") threshold = input(0, "Threshold") // 計算短期成本 shortH = ta.highest(high, shortTerm) shortL = ta.lowest(low, shortTerm) shortCost = (shortH + shortL) / 2 // 計算長期成本 longCost = ta.sma(close, longTerm) // 計算均差 deviation = shortCost - longCost // 平滑均差 smoothedDeviation = ta.sma(deviation, smooth) // 判斷順勢 isTrendingUp = smoothedDeviation > threshold isTrendingDown = smoothedDeviation < -threshold // 顯示順勢信號 plotshape(isTrendingUp, title="Trending Up", location=location.belowbar, color=color.green, style=shape.labelup, text="Up", size=size.small) plotshape(isTrendingDown, title="Trending Down", location=location.abovebar, color=color.red, style=shape.labeldown, text="Down", size=size.small) // 定義進出場策略 if isTrendingUp strategy.entry("Long", strategy.long) strategy.close("Long", when=isTrendingDown) if isTrendingDown strategy.entry("Short", strategy.short) strategy.close("Short", when=isTrendingUp)