この戦略は,トレード・シグナルにおけるトレンド方向と過買い/過売りレベルを特定するための様々な技術指標を組み合わせています.
主な指標は以下のとおりです.
平均方向指数 (ADX): トレンド強度
比較強度指数 (RSI): 過買い/過売
単純移動平均 (SMA):短期動向
スーパートレンド: 長期・短期トレンド
チャネルブレイク: トレンドブレイクエントリー
取引の論理は
ADXはトレンドの存在と強さを示しています
スーパートレンドは長期・短期トレンドの調整を確認
RSI は,買い過ぎ/売り過ぎの地域を特定する.
SMAクロスオーバーで入力
チャンネルブレイクで入力
複数の指標の組み合わせにより信号の精度が向上します 異なる戦略が体系的なアプローチに結合します
多数の指標が質を向上させる
戦略を組み合わせて体系的な導入を図る
ADX は,傾向,RSI は,買い過ぎ/売り過ぎを特定する.
スーパートレンドはトレンド,SMA,チャネルブレイクエントリーをキャッチします
多パラメータ調節には最適化が必要です
合併症はより頻繁に発生します
矛盾する指標の信号は 解明が難しい
この戦略は,強力なシステムを構築するために様々な指標の強みを完全に利用します. しかし,パラメータ最適化は理想的な取引頻度にとって鍵です. 全体的に,強力なトレンド識別と効率的なエントリを組み合わせます.
/*backtest start: 2023-09-12 00:00:00 end: 2023-09-13 00:00:00 period: 45m basePeriod: 5m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 // strategy("Combined Strategy", overlay=true, default_qty_value=100, initial_capital=1000, margin_long=0.1) adxlen = input(7, title="ADX Smoothing") dilen = input(7, title="DI Length") dirmov(len) => up = ta.change(high) down = -ta.change(low) plusDM = na(up) ? na : (up > down and up > 0 ? up : 0) minusDM = na(down) ? na : (down > up and down > 0 ? down : 0) truerange = ta.rma(ta.tr, len) plus = fixnan(100 * ta.rma(plusDM, len) / truerange) minus = fixnan(100 * ta.rma(minusDM, len) / truerange) [plus, minus] adx(dilen, adxlen) => [plus, minus] = dirmov(dilen) sum = plus + minus adx = 100 * ta.rma(math.abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen) sig = adx(dilen, adxlen) // The same on Pine Script™ pine_supertrend(factor, atrPeriod) => src = hl2 atr = ta.atr(atrPeriod) upperBand = src + factor * atr lowerBand = src - factor * atr prevLowerBand = nz(lowerBand[1]) prevUpperBand = nz(upperBand[1]) lowerBand := lowerBand > prevLowerBand or close[1] < prevLowerBand ? lowerBand : prevLowerBand upperBand := upperBand < prevUpperBand or close[1] > prevUpperBand ? upperBand : prevUpperBand int direction = na float superTrend = na prevSuperTrend = superTrend[1] if na(atr[1]) and ta.rsi(close, 21) < 66 and ta.rsi(close,3) > 80 and ta.rsi(close, 28) > 49 and sig > 20 direction := 1 else if prevSuperTrend == prevUpperBand direction := close > upperBand ? -1 : 1 else direction := close < lowerBand ? 1 : -1 superTrend := direction == -1 ? lowerBand : upperBand [superTrend, direction] [pineSupertrend, pineDirection] = pine_supertrend(3, 10) upTrend = pineDirection < 0 downTrend = pineDirection > 0 // Define the 20-period SMA sma20 = ta.sma(close, 20) a = ta.rsi(close,14) OB = input(70) OS = input(30) os = a > OB ob = a < OS if upTrend and close > pineSupertrend and close > sma20 and os strategy.entry("Buy", strategy.long) if ta.crossunder(close, sma20) or ob strategy.close_all() //define when to breakout of channel //("ChannelBreakOutStrategy", overlay=true) length = input.int(title="Length", minval=1, maxval=1000, defval=5) upBound = ta.highest(high, length) downBound = ta.lowest(low, length) if (not na(close[length])) strategy.entry("ChBrkLE", strategy.long, stop=upBound + syminfo.mintick, comment="ChBrkLE") strategy.entry("ChBrkSE", strategy.short, stop=downBound - syminfo.mintick, comment="ChBrkSE")