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

複数のパターン認識とSRレベル取引戦略

作者: リン・ハーンチャオチャン開催日:2024年12月5日 16時30分14秒
タグ:SR血圧TPFIBOATRSMA

img

概要

この戦略は,複数の技術分析パターン認識とサポートとレジスタンスレベルを組み合わせた包括的な取引戦略システムである.この戦略は主にダブルボトムパターン (アダムとイヴの底) を特定し,フィボナッチリトレースメントレベルを統合し,取引決定のためのサポートとレジスタンスラインを利用することによって機能する.主な強みは,多次元的な技術指標検証にあります.これは,リスク管理のための重要な参照としてサポートとレジスタンスレベルを使用しながら,取引信号の信頼性を向上させます.

戦略の原則

この戦略は,取引決定のための三重検証メカニズムを使用している.まず,より鋭いアダム底とより丸いエブ底を含む特定のアルゴリズムを通じてダブルボトムパターンを識別する.次に,ターゲットゾーンを決定するためにフィボナッチリトレースメントレベル (0.618および1.618) を使用する.最後に,サポートとレジスタンスレベルの検証を通じて取引信号を確認する.パターンの認識,フィボナッチレベル,サポート/レジスタンスレベル条件が同時に満たされた場合にのみ取引信号が生成される.特に,サポート/レジスタンスレベルが1.618フィボナッチリトレースメントの上にあるとき,ロング信号が起動し,サポート/レジスタンスレベルが0.618フィボナッチリトレースメントの下にあるとき,ショート信号が起動する.

戦略 の 利点

  1. 複数の検証メカニズムは,取引信号の信頼性を大幅に向上させる.
  2. パターン認識アルゴリズムは 市場のターニングポイントを正確に把握します
  3. フィボナッチレベルは,正確なターゲットゾーンを提供します.
  4. サポート/レジスタンスレベルの検証は取引の安全性を高める
  5. 高度に調整可能なパラメータは,異なる市場条件に適応
  6. 高度な自動化が主観的な判断の偏見を減らす

戦略リスク

  1. パターン認識には遅延があり,入力タイミングに影響を与える
  2. 高波動性のある市場では誤った信号が発生する可能性があります.
  3. サポート/レジスタンスレベルの有効性は,市場状況に影響されます.
  4. パラメータの設定が正しくない場合,過剰取引が起こる可能性があります.
  5. より長い観察期間が必要で,迅速な機会を逃す可能性があります

戦略の最適化方向

  1. 市場条件をフィルタリングするための変動指標を導入する
  2. パターン認識の精度を向上させるためにトレンドフィルターを追加する
  3. サポート/レジスタンスレベル計算方法を最適化
  4. 確認として 容量指標を 含める
  5. より柔軟なストップ・ロスト・メカニズムと 利益を引き出すメカニズムを 開発する
  6. パターン認識の精度を高めるための機械学習アルゴリズムを実装する

概要

この戦略は,パターン認識,フィボナッチレベル,サポート/レジスタンスラインを含む複数の技術分析方法を包括的に活用することで,比較的完全な取引システムを構築する.その強みは複数の検証メカニズムによって提供される高い信頼性にある.その調整性は,異なる市場状況に適応することを可能にします.いくつかの固有のリスクが存在しているにもかかわらず,継続的な最適化と改善を通じて,戦略は実際の取引で安定したパフォーマンスを約束しています.追加の技術指標と最適化アルゴリズムを組み込むことで,パフォーマンスの向上に重要な余地があります.


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

//@version=5
strategy("Double Bottom with Support/Resistance Strategy - Aynet", overlay=true)

// Inputs
lookbackPeriod = input(21, "Lookback Period")
swingLowThreshold = input(1.5, "Swing Low Threshold")
fibLevel1 = input(0.618, "Fibonacci Level 1")
fibLevel3 = input(1.618, "Fibonacci Level 2")
srPeriod = input(21, "Support/Resistance Period") 
srThreshold = input(3, "Support/Resistance Touch Points")

// Support/Resistance Function
get_sr_level(idx) =>
    var level = 0.0
    var count = 0
    
    if bar_index % srPeriod == 0
        highCount = 0
        lowCount = 0
        for i = 0 to srPeriod - 1
            if math.abs(high[i] - high) < (high * 0.001)
                highCount += 1
            if math.abs(low[i] - low) < (low * 0.001)
                lowCount += 1
                
        if highCount >= srThreshold
            level := high
            count := highCount
        if lowCount >= srThreshold
            level := low
            count := lowCount
            
    [level, count]

// Pattern Detection Functions
isSwingLow(src, left, right) =>
    isLow = true
    for i = 0 to left + right
        if src[i] < src[right]
            isLow := false
    isLow

getSpikeSharpness(index) =>
    priceRange = high[index] - low[index]
    bodyRange = math.abs(close[index] - open[index])
    sharpness = priceRange / bodyRange
    sharpness

// Pattern Variables
var float firstBottom = na
var float secondBottom = na
var bool isAdam = false
var bool isEve = false
var float level1Value = na
var float level3Value = na

// Pattern Detection
bottom = isSwingLow(low, lookbackPeriod, lookbackPeriod)
if bottom
    sharpness = getSpikeSharpness(0)
    if na(firstBottom)
        firstBottom := low
        isAdam := sharpness > swingLowThreshold
    else if low <= firstBottom * 1.02 and low >= firstBottom * 0.98
        secondBottom := low
        isEve := sharpness <= swingLowThreshold

// Calculate Fibonacci
if not na(secondBottom)
    highPoint = ta.highest(high, lookbackPeriod)
    fibDistance = highPoint - math.min(firstBottom, secondBottom)
    level1Value := math.min(firstBottom, secondBottom) + fibDistance * fibLevel1
    level3Value := math.min(firstBottom, secondBottom) + fibDistance * fibLevel3

// Get S/R Level
[srLevel, srCount] = get_sr_level(0)

// Trading Logic
longCondition = srLevel > level3Value
shortCondition = srLevel < level1Value

if longCondition
    strategy.entry("Long", strategy.long)

if shortCondition
    strategy.entry("Short", strategy.short)

// Reset Pattern
if high > ta.highest(high[1], lookbackPeriod)
    firstBottom := na
    secondBottom := na
    isAdam := false
    isEve := false
var table logo = table.new(position.top_right, 1, 1)
table.cell(logo, 0, 0, 'Double Bottom with Support/Resistance Strategy - Aynet', text_size=size.large, text_color=color.white)
// Plots
plot(level1Value, "0.236", color=color.rgb(245, 0, 0), style=plot.style_line)
plot(level3Value, "0.618", color=color.rgb(82, 166, 255), style=plot.style_line)
plot(srLevel, "S/R Level", color=color.white)

plotshape(bottom and not na(firstBottom) and na(secondBottom), "Adam Bottom", shape.circle, location.belowbar, color.green)
plotshape(bottom and not na(secondBottom), "Eve Bottom", shape.circle, location.belowbar, color.yellow)

関連性

もっと