ダブルラインブレイクスルーゴールデンクロスとデッドクロストレンド追跡戦略


作成日: 2024-02-22 16:01:12 最終変更日: 2024-02-22 16:01:12
コピー: 1 クリック数: 563
1
フォロー
1617
フォロワー

ダブルラインブレイクスルーゴールデンクロスとデッドクロストレンド追跡戦略

概要

双線突破金叉死叉トレンド追跡戦略は,サポートレジスタンスラインと移動平均を予選信号として同時に利用したトレンド追跡型の定量化取引戦略である. この戦略は,価格が異なる時間帯でサポートレジスタンスラインと移動平均の金叉死叉信号を総合的に考慮し,価格突破の重要なサポートとレジスタンスポイントをキャプチャする際に,トレンド指数フィルターと組み合わせて多空のチャンスを作る.

戦略原則

この戦略は以下の4つの部分から構成されています.

  1. 30日間の最低値に設定されたサポートライン
  2. 30週間の最高値に設定されたレジスタンスライン
  3. 10日 単純移動平均線,トレンドフィルター取引信号の確認
  4. Identification モジュールに突破し,価格が重要なサポートレジスタンスを突破する取引機会を識別する

具体的には,戦略はまず,要求Security関数を使用して30日および30週間の最高価格と最低価格を取得し,それぞれ動的なサポートラインとレジスタンスラインを区切る. そして,10日移動平均の金叉と死叉の信号を組み合わせて,取引の機会を突破するためにフィルターする. 30日間のサポートレベルより高く,10日間の平均線より高く価格が多信号を生成する. 30日間のレジスタンスレベルより低く価格が10日間の平均線より低い場合空信号を生成する.

この戦略は,中短線と長線の両方のサポート抵抗を考慮し,より大きなトレンドの機会を捕捉します.移動平均と組み合わせると,揺れ傾向の誤った信号を効果的にフィルターできます.

優位分析

この戦略の利点は以下の通りです.

  1. 中短線と長線の支柱抵抗位を利用して,より大きな突破を捕捉することができる.
  2. 移動平均線のフィルタを増加させることで,誤信号の発生を避けるため,損失を効果的に制御する.
  3. ダイナミックな更新は,新しいトレンドの方向をタイムリーに捉えるため,レジスタンスポイントを支える.
  4. リスク管理によるストップ・ストップ・メカニズムは,収益を保証するのに役立ちます.

リスク分析

この戦略にはいくつかのリスクがあります.

  1. 突破型戦略は取引時間把握の要求が高く,超前または遅滞の問題が発生しやすい.
  2. サポート抵抗位が故障すると,誤信号と大きな損失が生じます.
  3. 移動平均は価格に遅れをとり,トレンドの転換点を逃す可能性があります.
  4. 資金の少ない投資家に適していない.

対応方法:

  1. 突破認識の論理を適切に調整し,より多くのフィルタリング条件を導入する.
  2. 移動平均の周期パラメータを拡大して,トレンドが安定した後にのみ信号を発信することを保証する.
  3. ストップ・ロスを合理的に設定し,単一損失をコントロールする.

最適化の方向

この戦略はさらに改善できる余地があります.

  1. ATRのような波動率指標と組み合わせて,より合理的なストップ・ストップ幅を決定してみてください.
  2. 機械学習モデルの追加により, キーサポートの阻力位の不有効性を判断する.
  3. 移動平均の適応により,トレンドの逆転をより迅速に捉えることができます.
  4. 異なる品種のパラメータに合わせて調整・最適化を行います.

要約する

双線突破金叉死叉トレンド追跡戦略は,中長線のサポートレジスタンスレベルと移動平均指標を取引信号として総合的に考慮し,大きなトレンドの背景で効率的にノイズをフィルタリングして収益性を実現できる,比較的成熟した量化取引戦略である.この戦略の最適化余地はまだ十分であり,止損機構,パラメータ自適応などの面で改善することができる.また,機械学習などの新しい方法を導入して戦略の安定性を向上させることも試すことができる.

ストラテジーソースコード
/*backtest
start: 2024-01-22 00:00:00
end: 2024-02-21 00:00:00
period: 1h
basePeriod: 15m
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/
// © neosaid

//@version=5
strategy("Support and resistant Strategy", overlay=true)

// Function to check for breakout
f_breakoutCondition(closingPrice, highestHigh, lowestLow) =>
    closingPrice > highestHigh or closingPrice < lowestLow

// Step 1: 30 Days Trend Line (Lower Lows)
low30Days = request.security(syminfo.tickerid, "D", low)

// Step 2: 30 Weeks Upper Trend Line (Higher Highs)
high30Weeks = request.security(syminfo.tickerid, "W", high)

// Step 3: Trend Line for Lowest Low within the Last Month
var float lowestLowLastMonth = na
for i = 0 to 29
    lowestLowLastMonth := na(lowestLowLastMonth) ? low[i] : math.min(lowestLowLastMonth, low[i])

lowestLowLastMonthValue = lowestLowLastMonth[1]

// Breakout Strategy
highestHighLast3Candles = request.security(syminfo.tickerid, "D", ta.highest(close, 3))
lowestLowLast3Candles = request.security(syminfo.tickerid, "D", ta.lowest(close, 3))

// Additional conditions to filter signals
buyCondition = f_breakoutCondition(close, highestHighLast3Candles, lowestLowLast3Candles) and close > low30Days

sellCondition = f_breakoutCondition(close, highestHighLast3Candles, lowestLowLast3Candles) and close < high30Weeks

// Additional filters to reduce the number of orders
buyFilter = ta.crossover(close, ta.sma(close, 10)) // Buy only when price crosses above a 10-period SMA
sellFilter = ta.crossunder(close, ta.sma(close, 10)) // Sell only when price crosses below a 10-period SMA

buyCondition := buyCondition and buyFilter
sellCondition := sellCondition and sellFilter

// Plot Buy and Sell signals on the chart
plotshape(series=buyCondition, title="Buy Signal", color=color.green, style=shape.triangleup, location=location.belowbar)
plotshape(series=sellCondition, title="Sell Signal", color=color.red, style=shape.triangledown, location=location.abovebar)

// Strategy entries
strategy.entry("Buy", strategy.long, when = buyCondition)
strategy.entry("Sell", strategy.short, when = sellCondition)