2つの時間枠波動性・スプレッド取引戦略

作者: リン・ハーンチャオチャン,日付: 2024-02-18 15:31:32
タグ:

img

概要

2つのタイムフレーム波動性分散取引戦略は,低リスクトレンド取引を実施するために,2つの異なるタイムサイクルのRSI指標間の分散を計算することによって,市場の過剰購入/過剰販売状態を判断します.

戦略原則

この戦略の主な指標は,shortTermXtrenderとlongTermXtrenderです.shortTermXtrenderは短期間のRSI・スペードを計算し,longTermXtrenderは長期間のRSI・スペードを計算します.

短期時間枠は,RSIを計算するために7日間のEMAと4日間のLMAの価格差を採用し,その後50との価格差はshortTermXtrenderを構成する.長期時間枠は,RSIの4日間のEMAと50との価格差を採用し,longTermXtrenderを構成する.

shortTermXtrenderが0を超えるとロング;longTermXtrenderが0を超えるとロング.ロングした後のストップロスの原則は,shortTermXtrenderが0を下回るとストップロスのことです.longTermXtrenderが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)


もっと