スーパートレンドチャンネルに基づく量子取引戦略

作者: リン・ハーンチャオチャン,日付: 2024-02-05 13:57:28
タグ:

img

概要

この戦略は,スーパートレンドチャネル指標に基づいてエントリーとアウトシグナルを生成し,自動的な量子取引を実現する.スーパートレンドチャネル指標は,トレンド方向を明確に決定するためにブレイクポイントとサポート/レジスタンスレベルを明確に識別することができます.この戦略は,長期と短期の両方の取引を行うためにこの指標の利点を取り入れています.

戦略原則

この戦略は,ロングとショートポジションのストップロスの2つのラインを計算するために,ATRとドンチアンチャネルを使用する.具体的には,ATR期間と倍数パラメータを使用してATR値を計算し,その後,最も高い最高値と最も低い低値の平均から足し減して,ロングとショートストップロスのラインを得ます.閉じる価格がロングストップロスのラインを上向きに突破すると,ロング信号が生成されます.閉じる価格がショートストップロスのラインを下向きに突破すると,ショート信号がトリガーされます.

ロングまたはショートポジションを取った後,ストップ・ロスは動的に更新され,利益をロックします.新しいストップ・ロスは,ストップ・ロスの浸透を避けるため,以前のものよりも低くも高くもなりません.現在のストップ・ロスのラインと前のストップ・ロスのラインの間に新しい高値または低値が現れるとき,ストップ・ロスは最新の価格に調整されます.

利点分析

この戦略の最大の利点は,スーパートレンドチャネルインジケーターがトレンド方向と主要なサポート/レジスタンスレベルを明確に特定できることです.動的なATRストップロスの組み合わせにより,単一のトレード損失を効果的に制御できます.

SuperTrendチャネルインジケーターの2つのストップ・ロスは,ポジションコストベースと最新のサポート/レジスタンスを表しています.入口と出口の非常に明確なガイドラインを提供します.一方,ストップ・ロスは,収益をロックし,ストップ・ロスの浸透を防ぐために動的に更新されます.

一般的には,この戦略は,傾向が決定されたときにタイミングで導入され,動的ストップロスの経由でリスクを制御し,比較的堅牢な定量的な取引戦略となります.

リスク分析

この戦略の主なリスクは,ストップ・ロスの浸透の可能性にあります.価格が激しく変動すると,新しいストップ・ロスの線は,前のものより低くまたは高くなり,ストップ・ロスの浸透と損失の増加を引き起こす可能性があります.

さらに,スーパートレンドチャネルインジケーターによって生成されるエントリー信号は,変動市場ではうまく機能せず,時には間違った取引につながる.戦略を有効にする前にトレンド方向を決定するために手動介入が必要です.

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

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

  1. ATR 期間と倍数パラメータを最適化して バックテストによって最良の組み合わせを見つけ ターンとシャープ比率などのメトリックを分析します

  2. シグナルフィルタリングのための他の指標を追加して,誤ったエントリを避ける. 変動市場では,移動平均値,ボリンジャー帯など,トレンド方向を決定するために使用できます.

  3. ストップ・ロスのポジションを細かく調整するためにボリュームインジケーターを組み込む.ストップ・ロスのラインは,ボリューム急上昇に基づいて調整され,さらに利益を固定することができます.

  4. アダプティブパラメータ最適化のための機械学習モデルを導入する. 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)




もっと