デュアル時間軸ボラティリティスプレッド取引戦略


作成日: 2024-02-18 15:31:32 最終変更日: 2024-02-18 15:31:32
コピー: 0 クリック数: 608
1
フォロー
1617
フォロワー

デュアル時間軸ボラティリティスプレッド取引戦略

概要

双時間軸波動率差取引戦略は,異なる時間周期の2つのRSI指標の間の差を計算することによって,市場の超買い超売り状態を判断し,低リスクのトレンド取引を実現する.

戦略原則

この戦略の核心指標は,ショートタームXtrenderとロングタームXtrenderである.ショートタームXtrenderは,短時間軸のRSI価格差を計算し,ロングタームXtrenderは,長期時間軸のRSI価格差を計算する.

短期時間軸は7日EMAと4日LMAの価格差を計算し,RSIを計算し,50との価格差を計算し,ShortTermXtrenderを形成する.長期時間軸は4日EMAのRSIと50との価格差を計算し,LongTermXtrenderを形成する.

ショートTermXtrenderに0をかけたとき,多めにする;ロングTermXtrenderに0をかけたとき,多めにする.多めにした後の止損原則は,ショートTermXtrenderの下に0をかけたとき止損する.ロングTermXtrenderの下に0をかけたときも止損する.

タイム軸を2つに分けて判断することで,偽の突破をフィルタリングできます.

優位分析

この戦略の最大の利点は,トレンド判断の正確さにある.二重タイム軸の組み合わせを使用すると,ノイズを効果的にフィルターし,ターゲットトレンドの方向をロックすることができます.これは,低リスクのトレンド追跡取引を保証します.

また,戦略はパラメータの最適化スペースを提供します. ユーザーは,異なる品種と時間周期,SMA周期,RSIパラメータなどに合わせて,戦略の効果を最適化することができます.

リスク分析

この戦略の主なリスクは,空白判断の誤りである.震動の状況では,誤ったシグナルが生じやすい.このとき,まだポジションを開けた場合,損失のリスクに直面する.

また,パラメータの設定が不適切である場合,効果が悪くなる.時間周期パラメータが短すぎると,誤判の可能性が大きく増加する.時間周期パラメータが長すぎると,トレンドの機会が逃れる.これは,ユーザーが異なる市場に対してパラメータのテストと最適化を要求する.

最適化の方向

この戦略は,以下のような点で最適化できます.

  1. ストップメカニズムの追加 ストップメカニズムは,現在の戦略では設定されていません.目標利益を達成した後にタイムストップすることができます.

  2. ポジション管理を増やす.資金規模,波動率などの指標に基づいてポジションを動的に調整することができる.

  3. 異なる品種のパラメータ設定をテストする. ユーザーは,日光,60分など,異なる時間周期から反測して,最適なパラメータ組み合わせをテストすることができます.

  4. 機械学習補助判断を追加する. 状況のタイプを判断するモデルを訓練して,戦略パラメータを動的に調整し,勝利率を上げる.

要約する

双時間軸の波動率差取引戦略は,双時間軸の指標を構築することによって,高効率のトレンドキャプチャを実現する.戦略の最適化スペースは大きい.ユーザーは,パラメータ調整,ストップ管理,ポジション管理などの方法によって最適化することができ,その結果,より良い戦略効果を得ることができる.この戦略は,ある程度の取引経験を持つユーザーの使用に適している.

ストラテジーソースコード
/*backtest
start: 2024-01-18 00:00:00
end: 2024-02-17 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//study("MavXtrender")
strategy("MavXtrender")

ShortTermSMA = input(7)
ShortTermLMA = input(4)
ShortTermRSI = input(2)

LongTermMA  = input(4)
LongTermRSI  = input(2)

UseFactors = input(true)
TradeShortTerm = input(true)
TradeLongTerm = input(true)

count = TradeShortTerm == true ? 1 : 0
count := TradeLongTerm == true ? count + 1 : count
// set position size
Amount = strategy.equity / (close * count)

ShortTermLMA := UseFactors == true ? round(ShortTermSMA * ShortTermLMA) : ShortTermLMA
ShortTermRSI := UseFactors == true ? round(ShortTermSMA * ShortTermRSI) : ShortTermRSI
LongTermMA := UseFactors == true ? round(ShortTermSMA * LongTermMA) : LongTermMA
LongTermRSI := UseFactors == true ? round(ShortTermSMA * LongTermRSI) : LongTermRSI

shortTermXtrender = rsi(ema(close, ShortTermSMA) - ema(close, ShortTermLMA), ShortTermRSI ) - 50
longTermXtrender  = rsi( ema(close, LongTermMA), LongTermRSI ) - 50

// === INPUT BACKTEST RANGE ===
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromYear  = input(defval = 2018, title = "From Year", minval = 2012)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToYear    = input(defval = 2020, title = "To Year", minval = 2012)

// === FUNCTION EXAMPLE ===
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => true

strategy.entry("ShortTerm", strategy.long, qty = Amount, when = window() and crossover(shortTermXtrender,0) and TradeShortTerm)
strategy.entry("LongTerm", strategy.long, qty = Amount, when = window() and crossover(longTermXtrender,0) and TradeLongTerm)

strategy.close("ShortTerm", when = crossunder(shortTermXtrender,0) or time > finish)
strategy.close("LongTerm", when = crossunder(longTermXtrender,0) or time > finish)

shortXtrenderCol = shortTermXtrender > 0 ? shortTermXtrender > shortTermXtrender[1] ? color.lime : #228B22 : shortTermXtrender > shortTermXtrender[1] ? color.red : #8B0000
plot(shortTermXtrender, color=shortXtrenderCol, style=plot.style_columns, linewidth=1, title="B-Xtrender Osc. - Histogram", transp = 50)

longXtrenderCol = longTermXtrender> 0 ? longTermXtrender > longTermXtrender[1] ? color.lime : #228B22 : longTermXtrender > longTermXtrender[1] ? color.red : #8B0000
plot(longTermXtrender , color=longXtrenderCol, style=plot.style_histogram, linewidth=2, title="B-Xtrender Trend - Histogram", transp = 80)
plot(longTermXtrender , color=color.white,     style=plot.style_line,      linewidth=1, title="B-Xtrender Trend - Line",      transp = 80)