資源の読み込みに... 荷物...

多トレンドラインブレイクモメント量的な戦略

作者: リン・ハーンチャオチャン開催日:2024年12月20日 14:26:41
タグ:ATRSMA

img

戦略の概要

この戦略は,複数のトレンドラインブレイクに基づいたインテリジェントな取引システムです. 主要なサポートとレジスタンスレベルを動的に特定し,トレンドライン傾斜を計算するために複数の技術指標を組み合わせ,価格がトレンドラインを突破すると取引を実行します. 戦略は,市場のトレンドターニングポイントを捕捉するだけでなく,異なる市場状況に適応するために最適化することもできます.

戦略の原則

基本論理には3つの主要コンポーネントが含まれます. まず,最初のサポートとレジスタンスレベルを確立するためにバックバック期間を使用して主要な高値と低値を特定します. 次に,市場変動により適性するために選択した方法 (ATR,標準偏差,または線形回帰) をベースに動的にトレンドライン傾斜を計算します. 最後に,トレンドラインとの価格関係を監視し,ブレイクアウト時に取引信号を誘発します. システムはバックペイントパラメータを通じてバックテストオーバーフィッティングを防止するメカニズムも含んでいます.

戦略 の 利点

  1. 高い適応性:複数の傾斜計算方法と調整可能なパラメータにより,戦略は異なる市場環境に適応できます
  2. 堅牢なリスク管理:トレンドラインのダイナミックな調整能力は,トレンドの変化を迅速に特定し,偽のブレイクによる損失を減らすのに役立ちます
  3. 優れた可視化:戦略は,トレンドライン拡張やブレイクアウトマーカーを含む明確な視覚的なフィードバックを提供します.
  4. シグナル確認メカニズム: 取引信号の信頼性を確保するために複数の条件の検証を使用します.

戦略リスク

  1. 極端な市場変動の際に誤った信号を生む可能性があります.
  2. トレンドライン計算の遅延は,少し遅れたエントリーポイントにつながる可能性があります.
  3. パラメータの不正な選択は,過大取引または重要な機会を逃す可能性があります.
  4. 変動市場では頻繁に誤ったブレイクシグナルが発生する可能性があります.

戦略の最適化方向

  1. ブレイクアウトの有効性を検証するためのボリューム指標を組み込む
  2. 波動性の高い期間中にパラメータを調整するために市場波動性フィルターを追加する
  3. 信号の正確性を向上させるための追加の技術指標を統合する
  4. 適応性のあるパラメータ調整メカニズムの開発
  5. ストップ・ロストと収益の計算方法をインテリジェントに実施する

概要

この戦略は,様々な技術分析方法を包括的に利用することで,信頼できるトレンドラインブレークアウト取引システムを構築する.その強みは,明確な取引信号を提供しながら,市場の変化に動的に適応する能力にあります.いくつかの固有のリスクが存在しているにもかかわらず,適切なパラメータ設定と継続的な最適化によって戦略の安定性と収益性は大幅に改善できます.


/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-18 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Alexgoldhunter

//@version=5
strategy("Trendlines with Breaks Strategy [AlexGoldHunter]", overlay=true)

// Input parameters
length = input.int(14, title="Swing Detection Lookback")
mult = input.float(1.0, title="Slope", minval=0, step=0.1)
calcMethod = input.string('Atr', title="Slope Calculation Method", options=['Atr','Stdev','Linreg'])
backpaint = input(true, tooltip='Backpainting offset displayed elements in the past. Disable backpainting to see real-time information returned by the indicator.')

// Style settings
upCss = input.color(color.teal, title="Up Trendline Color", group="Style")
dnCss = input.color(color.red, title="Down Trendline Color", group="Style")
showExt = input(true, title="Show Extended Lines")

// Calculations
var upper = 0.0
var lower = 0.0
var slope_ph = 0.0
var slope_pl = 0.0

var offset = backpaint ? length : 0

n = bar_index
src = close

ph = ta.pivothigh(length, length)
pl = ta.pivotlow(length, length)

// Slope Calculation Method
slope = switch calcMethod
    'Atr'    => ta.atr(length) / length * mult
    'Stdev'  => ta.stdev(src, length) / length * mult
    'Linreg' => math.abs(ta.sma(src * n, length) - ta.sma(src, length) * ta.sma(n, length)) / ta.variance(n, length) / 2 * mult

// Get slopes and calculate trendlines
slope_ph := ph ? slope : slope_ph
slope_pl := pl ? slope : slope_pl

upper := ph ? ph : upper - slope_ph
lower := pl ? pl : lower + slope_pl

var upos = 0
var dnos = 0
upos := ph ? 0 : close > upper - slope_ph * length ? 1 : upos
dnos := pl ? 0 : close < lower + slope_pl * length ? 1 : dnos

// Extended Lines
// var uptl  = line.new(na, na, na, na, color=upCss, style=line.style_dashed, extend=extend.right)
// var dntl  = line.new(na, na, na, na, color=dnCss, style=line.style_dashed, extend=extend.right)

// if ph and showExt
//     uptl.set_xy1(n - offset, backpaint ? ph : upper - slope_ph * length)
//     uptl.set_xy2(n - offset + 1, backpaint ? ph - slope : upper - slope_ph * (length + 1))

// if pl and showExt
//     dntl.set_xy1(n - offset, backpaint ? pl : lower + slope_pl * length)
//     dntl.set_xy2(n - offset + 1, backpaint ? pl + slope : lower + slope_pl * (length + 1))

// Plots
plot(backpaint ? upper : upper - slope_ph * length, title="Upper", color=ph ? na : upCss, offset=-offset)
plot(backpaint ? lower : lower + slope_pl * length, title="Lower", color=pl ? na : dnCss, offset=-offset)

// Breakouts
plotshape(upos > upos[1] ? low : na, title="Upper Break", 
  style=shape.labelup, location=location.absolute, color=upCss, text="alex_buy_now", textcolor=color.white, size=size.tiny)
plotshape(dnos > dnos[1] ? high : na, title="Lower Break", 
  style=shape.labeldown, location=location.absolute, color=dnCss, text="alex_sell_now", textcolor=color.white, size=size.tiny)

// Strategy: Buy and Sell conditions
if (upos > upos[1])
    strategy.entry("Buy", strategy.long)
if (dnos > dnos[1])
    strategy.entry("Sell", strategy.short)

// Alerts
alertcondition(upos > upos[1], title="Upward Breakout", message="Price broke the down-trendline upward")
alertcondition(dnos > dnos[1], title="Downward Breakout", message="Price broke the up-trendline downward")


関連性

もっと