Chiến lược hồi phục trung bình di chuyển

Tác giả:ChaoZhang, Ngày: 2023-12-28 15:25:29
Tags:

img

## Tổng quan Chiến lược phục hồi trung bình động là một chiến lược kết hợp các chỉ số kỹ thuật và mô hình giá để giao dịch dài và ngắn xung quanh mức hỗ trợ và kháng cự. Chiến lược sử dụng trung bình động để xác định hướng xu hướng thị trường, các chỉ số mô hình để hỗ trợ xác định các điểm chuyển đổi và các điểm cao / thấp trước đó để phát hiện các mức hỗ trợ và kháng cự chính cho giao dịch chống xu hướng.

Nguyên tắc chiến lược

Các bước chính để xác định mục nhập thương mại là:

  1. Sử dụng chỉ số trung bình di chuyển Alligator để đánh giá hướng xu hướng.

  2. Xác định các khu vực đảo ngược tiềm năng với chỉ số mẫu Peak-Through khi ở các khu vực mua quá mức / bán quá mức.

  3. Kết hợp với hỗ trợ/kháng cự để xác định các điểm vào giao dịch ngược xu hướng xung quanh các mức chính.

  4. Sử dụng EMAS để giúp xác định xu hướng dài hạn tổng thể.

  5. Sử dụng lệnh dừng lỗ để kiểm soát số tiền lỗ giao dịch duy nhất.

Ưu điểm

Ưu điểm của chiến lược:

  1. Kết hợp các tín hiệu từ nhiều chỉ số cải thiện độ chính xác.

  2. Giao dịch ngược xu hướng từ các khu vực hỗ trợ / kháng cự chính có khả năng cao.

  3. Các loại giao dịch được liệt kê trong mục 1 của mục 1 của mục 1 của mục 2 của mục 1 của mục 2 của mục 2 của mục 1 của mục 2 của mục 2 của mục 2 của mục 2 của mục 3 của mục 3 của mục 3 của mục 3 của mục 4 của mục 4 của mục 4 của mục 4 của mục 4 của mục 4 của mục 4 của mục 4 của mục 4 của mục 4 của mục 4 của mục 4 của mục 4 của mục 4 của mục 4 của mục 4 của mục 4 của mục 4 của mục 4 của mục 4 của mục 4 của mục 4 của mục 4 của mục 4 của mục 4 của mục 4 của mục 4 của mục 4 của mục 4 của mục 4 của mục 4 của mục 4 của mục 4 của mục 4 của mục 4 của mục 4 của mục 4 của mục 4 của mục 4 của mục 4 của mục 4 của mục 4 của mục 4 của mục 4 của mục 4 của mục 4 của mục 4 của mục 4 của mục 4 của mục 4 của mục 4 của mục 4 của mục 4 của mục 4 của mục 4 của mục 4 của mục 4 của mục 4 của mục 4 của mục 4 của mục 4 của mục 4 của mục 4 của mục 4 của mục 4 của mục 4 của mục

Rủi ro

Rủi ro liên quan:

  1. Nhiều chỉ số có thể dẫn đến tần suất giao dịch cao hơn và cần kiểm soát chi phí giao dịch.

  2. Mức hỗ trợ / kháng cự thất bại là rủi ro lớn nhất. Giá có thể không đảo ngược như mong đợi dẫn đến tổn thất lớn.

  3. Dừng lỗ có thể được thực hiện trong các động thái biến động lớn.

Các lĩnh vực cải tiến

Các lĩnh vực cần cải thiện:

  1. Tối ưu hóa trọng lượng giữa các chỉ số để tìm kết hợp hiệu suất tốt nhất.

  2. Sử dụng máy học để cải thiện độ chính xác mức hỗ trợ / kháng cự chính.

  3. Thêm các chỉ số khối lượng để tránh giao dịch khi môi trường biến động nhưng khối lượng thấp.

  4. Cải thiện các mô hình dừng lỗ thích ứng để cân bằng hiệu quả và dừng không cần thiết.

Tóm lại

Tóm lại, Chiến lược hồi phục trung bình chuyển động sử dụng một sự hợp nhất của các chỉ số bao gồm trung bình chuyển động, mô hình giá và hỗ trợ / kháng cự cho các mục nhập. Một chiến lược kỹ thuật điển hình với độ chính xác cao hơn từ nhiều tín hiệu. Theo dõi rủi ro xung quanh sự thất bại của các mức chính và trượt dừng lỗ. Tăng cường tối ưu hóa thêm về trọng lượng chỉ số, học máy và khối lượng có thể cải thiện hiệu suất.


/*backtest
start: 2022-12-21 00:00:00
end: 2023-12-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © vhurtadocos


//@version=5
strategy('Estrategia EMA Resistencia Soporte', shorttitle='Estrategia EMA RESISTENCIA Y SOPORTE', overlay=true, margin_long=100, margin_short=100, pyramiding = 10 )

//INICIO DE CONDICIONES BASICAS
/// Alligator
smma(src, length) =>
    smma = 0.0
    sma_1 = ta.sma(src, length)
    smma := na(smma[1]) ? sma_1 : (smma[1] * (length - 1) + src) / length
    smma
lipsLength = input(title='🐲 Lips Length', defval=5)
teethLength = input(title='🐲 Teeth Length', defval=8)
jawLength = input(title='🐲 Jaw Length', defval=13)
lipsOffset = input(title='🐲 Lips Offset', defval=3)
teethOffset = input(title='🐲 Teeth Offset', defval=5)
jawOffset = input(title='🐲 Jaw Offset', defval=8)
lips = smma(hl2, lipsLength)
teeth = smma(hl2, teethLength)
jaw = smma(hl2, jawLength)


// Fractals
n = input.int(title='📌 Period', defval=2, minval=2)
upFractal = high[n + 2] < high[n] and high[n + 1] < high[n] and high[n - 1] < high[n] and high[n - 2] < high[n] or high[n + 3] < high[n] and high[n + 2] < high[n] and high[n + 1] == high[n] and high[n - 1] < high[n] and high[n - 2] < high[n] or high[n + 4] < high[n] and high[n + 3] < high[n] and high[n + 2] == high[n] and high[n + 1] <= high[n] and high[n - 1] < high[n] and high[n - 2] < high[n] or high[n + 5] < high[n] and high[n + 4] < high[n] and high[n + 3] == high[n] and high[n + 2] == high[n] and high[n + 1] <= high[n] and high[n - 1] < high[n] and high[n - 2] < high[n] or high[n + 6] < high[n] and high[n + 5] < high[n] and high[n + 4] == high[n] and high[n + 3] <= high[n] and high[n + 2] == high[n] and high[n + 1] <= high[n] and high[n - 1] < high[n] and high[n - 2] < high[n]
dnFractal = low[n + 2] > low[n] and low[n + 1] > low[n] and low[n - 1] > low[n] and low[n - 2] > low[n] or low[n + 3] > low[n] and low[n + 2] > low[n] and low[n + 1] == low[n] and low[n - 1] > low[n] and low[n - 2] > low[n] or low[n + 4] > low[n] and low[n + 3] > low[n] and low[n + 2] == low[n] and low[n + 1] >= low[n] and low[n - 1] > low[n] and low[n - 2] > low[n] or low[n + 5] > low[n] and low[n + 4] > low[n] and low[n + 3] == low[n] and low[n + 2] == low[n] and low[n + 1] >= low[n] and low[n - 1] > low[n] and low[n - 2] > low[n] or low[n + 6] > low[n] and low[n + 5] > low[n] and low[n + 4] == low[n] and low[n + 3] >= low[n] and low[n + 2] == low[n] and low[n + 1] >= low[n] and low[n - 1] > low[n] and low[n - 2] > low[n]
plotshape(title='📌 Up-Fractal', series=upFractal, style=shape.triangleup, location=location.abovebar, offset=-2, color=color.new(color.olive, 0), text="R")
plotshape(title='📌 Down-Fractal', series=dnFractal, style=shape.triangledown, location=location.belowbar, offset=-2, color=color.new(color.maroon, 0), text="S", textcolor = color.new(color.maroon,0))

// Resistance, Support
showRS = input(title='⤒⤓ Show Res-Sup', defval=true)
lengthRS = input(title='⤒⤓ Res-Sup Length', defval=13)
highRS = ta.valuewhen(high >= ta.highest(high, lengthRS), high, 0)
lowRS = ta.valuewhen(low <= ta.lowest(low, lengthRS), low, 0)
plot(title='⤒ Resistance', series=showRS and highRS ? highRS : na, color=highRS != highRS[1] ? na : color.olive, linewidth=1, offset=0)
plot(title='⤓ Support', series=showRS and lowRS ? lowRS : na, color=lowRS != lowRS[1] ? na : color.maroon, linewidth=1, offset=0)




// EMA de 8 períodos
ema8 = ta.ema(close, 8)
plot(title='ema8', series=ema8, color=color.new(#dbef41, 0), offset=0)

// EMA de 21 períodos
ema21 = ta.ema(close, 21)
plot(title='ema21', series=ema21, color=color.new(#e12c0c, 0), offset=0)

// EMA de 50 períodos
ema50 = ta.ema(close, 50)
plot(title='ema50', series=ema50, color=color.new(#3419de, 0), offset=0)

// EMA de 200 períodos
ema200 = ta.ema(close, 200)
plot(title='ema200', series=ema200, color=color.new(#f6f6f4, 0), offset=0)



// Definiciones originales...
// ... (incluyendo tus definiciones de Alligator, Fractals, etc.)

// Guardamos el último soporte y resistencia
var float lastSupport = na
var float lastResistance = na

// Detectando un nuevo soporte y resistencia
newSupportDetected = low == lowRS


if newSupportDetected
    lastSupport := low

// Lógica de entrada y salida

// Condiciones de entrada basadas en soportes recién formados
longCondition = low == lowRS
if longCondition
    strategy.entry("Long", strategy.long)

// Salida (take profit) cuando detectamos una nueva resistencia después de entrar en una posición long
newResistanceDetected = high == highRS
if newResistanceDetected and strategy.position_size > 0
    strategy.close("Long")

// Agregar una condición para el stop loss
longStopLossPrice = close * 0.95
if strategy.position_size > 0 and close <= longStopLossPrice
    strategy.close("Long")

// Pintamos los soportes y resistencias
plotshape(longCondition, style=shape.triangledown, location=location.belowbar, color=color.red)
plotshape(newResistanceDetected, style=shape.triangleup, location=location.abovebar, color=color.green)

// Resto del código para plotear las EMAs y fractales
// ...




Thêm nữa