Ini adalah sistem strategi dagangan yang komprehensif yang menggabungkan banyak pengiktirafan corak analisis teknikal dengan tahap sokongan dan rintangan. Strategi ini terutamanya berfungsi dengan mengenal pasti corak bawah berganda (bawah Adam dan Hawa), mengintegrasikan tahap retracement Fibonacci, dan menggunakan garis sokongan dan rintangan untuk keputusan dagangan. Kekuatan terasnya terletak pada pengesahan penunjuk teknikal berbilang dimensi, yang meningkatkan kebolehpercayaan isyarat dagangan sambil menggunakan tahap sokongan dan rintangan sebagai rujukan penting untuk kawalan risiko.
Strategi ini menggunakan mekanisme pengesahan tiga kali untuk keputusan perdagangan: Pertama, ia mengenal pasti corak bawah berganda melalui algoritma tertentu, termasuk
Strategi ini membina sistem perdagangan yang agak lengkap dengan menggunakan pelbagai kaedah analisis teknikal termasuk pengenalan corak, tahap Fibonacci, dan garis sokongan / rintangan. Kekuatannya terletak pada kebolehpercayaan yang tinggi yang disediakan oleh pelbagai mekanisme pengesahan, sementara penyesuaiannya membolehkan penyesuaian dengan keadaan pasaran yang berbeza. Walaupun terdapat beberapa risiko yang melekat, melalui pengoptimuman dan peningkatan berterusan, strategi menunjukkan janji untuk prestasi yang stabil dalam perdagangan sebenar. Dengan menggabungkan penunjuk teknikal tambahan dan algoritma pengoptimuman, terdapat ruang yang signifikan untuk peningkatan prestasi.
/*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)