
この戦略は,超トレンドチャネル指標設計のエントリーとエグジットの信号に基づいて,自動化された定量取引を実現します.超トレンドチャネル指標は,突破点とサポートレジスタンス値を明確にし,トレンドの方向を判断するのに役立ちます.この戦略は,この指標の優位性を融合し,長短双方向取引を行います.
この策略はATRと唐通路を使って2つの長いストップラインを計算する.具体的には,ATRの値をATR周期とATR倍数パラメータで計算し,それから最高値と最低値の平均値と加算して2つの長いストップラインが得られる.閉盘価格が下から上方までの長ストップラインを突破すると多信号が発生し,閉盘価格が上から下方までの短ストップラインを突破すると空信号が発生する.
余分な空白を行った後,利益をロックするためにストップラインをリアルタイムで更新する.新しいストップラインは,以前の値より低くまたは高くならないので,ストップが打ち破られることを防ぐ.ストップラインと以前のストップラインの間に新しい高値または新しい低値が発生すると,ストップラインを最新の価格に更新する.
この戦略の最大の利点は,超トレンドチャネルの指標がトレンドの方向と重要なサポートのレジスタンス値を明確に判断できることです.ATRのダイナミックストップと組み合わせて,単一損失を効果的に制御できます.
具体的には,超トレンドチャネル指標の2つのストップライン,一方は保有コスト,もう一方は最近のサポートまたはプレッシャーレベル.これはエントリーとエクジットの非常に明確な根拠を提供します.同時に,ストップラインはリアルタイムで更新され,利益をロックしてストップが破られることを防ぐことができます.
全体として,この戦略は,動的ストップ・ローズ制御によるトレンドを特定した後のタイムリーエントリーで,比較的安定した量化取引戦略である.
この戦略の主なリスクは,ストップラインが突破される可能性のある状況にある.価格が激しく変動するときに,新しいストップラインが以前の値より低くまたは高くなり,ストップラインが突破され,損失が増加する可能性がある.
さらに,震動状況では,超トレンドチャネル指標によって生成されるエントリー信号は,効果が悪く,誤った取引が形成されやすい.このとき,人為介入が必要であり,トレンドを判断して,戦略を起動する必要があります.
この戦略は以下の点で最適化できます.
ATR周期とATR倍数パラメータを最適化して,最適な組み合わせを見つける.異なるパラメータを反測することで,利回り率,シャープ比率などの指標を分析することができる.
他の指標のフィルタを追加し,震動の状況で誤りを避ける Entries 移動平均,ブリン帯などの指標をトレンドの方向を判断するために追加することを考えることができます.
結合量能指数は,ストップ・ロスの位置を最適化する.取引量突破の位置に応じてストップ・ロスのラインを調整して,さらに利益をロックすることができる.
機械学習モデルを追加してパラメータ自在化最適化を行う.RNN,LSTMなどのモデルを使用してパラメータ値を予測して,パラメータ動態最適化を実現することができる.
この戦略は,超トレンドチャネル指標設計に基づいて,トレンド方向を明確に判断し,高い勝利率を持っています. 同時に,ATRの動的トラッキングストロップを適用して単一の損失を制御します.パラメータ最適化,指標最適化などの手段によって戦略の効果をさらに強化できます.全体的には,自動化量化取引に適した安定した戦略です.
/*backtest
start: 2024-01-05 00:00:00
end: 2024-02-04 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
//EU ESCREVI ISSO TUDO, PARA FICAR BEM CLARO
strategy("SuperTrend Strategy", overlay=true)
//AQUI OS INPUTS PARA A SUPERTREND
length = input(title="ATR Period", type=input.integer, defval=7)
mult = input(title="ATR Multiplier", type=input.float, step=0.1, defval=7)
showLabels = input(title="Show Buy/Sell Labels ?", type=input.bool, defval=true)
//AQUI O CALCULO DO ATR STOPS
atr = mult * atr(length)
//AQUI A TRANSFORMAÇÃO DO ATR STOPS EM SUPERTREND
//-
//A LÓGICA PARA LONGSTOP
longStop = hl2 - atr
longStopPrev = nz(longStop[1], longStop)
longStop := close[1] > longStopPrev ? max(longStop, longStopPrev) : longStop
//A LÓGICA PARA SELLSTOP
shortStop = hl2 + atr
shortStopPrev = nz(shortStop[1], shortStop)
shortStop := close[1] < shortStopPrev ? min(shortStop, shortStopPrev) : shortStop
//DIREÇÃO DO INDICADOR
dir = 1
dir := nz(dir[1], dir)
dir := dir == -1 and close > shortStopPrev ? 1 :
dir == 1 and close < longStopPrev ? -1 : dir
//DEFININDO AS CORES DAS LINHAS DA SUPERTREND
longColor = color.lime
shortColor = color.red
//PLOTANDO NO GRÁFICO A SUPERTREND E A ESTRATÉGIA
plot(dir == 1 ? longStop : na, title="Long Stop", style=plot.style_linebr, linewidth=3, color=longColor)
buySignal = dir == 1 and dir[1] == -1
plot(dir == 1 ? na : shortStop, title="Short Stop", style=plot.style_linebr, linewidth=3, color=shortColor)
sellSignal = dir == -1 and dir[1] == 1
//DEFININDO AS FUNÇÕES DE COMPRA E VENDA
strategy.entry("long", strategy.long, when = buySignal)
strategy.entry("short", strategy.short, when = sellSignal)