Chiến lược tích lũy hồi phục trung bình động


Ngày tạo: 2023-12-28 15:25:29 sửa đổi lần cuối: 2023-12-28 15:25:29
sao chép: 1 Số nhấp chuột: 701
1
tập trung vào
1621
Người theo dõi

Chiến lược tích lũy hồi phục trung bình động

Tổng quan

Chiến lược thu hút hồi phục đồng bằng là một chiến lược kết hợp cả chỉ số kỹ thuật và hình thức giá để thực hiện nhiều thao tác ngắn hạn ở mức kháng cự hỗ trợ. Chiến lược này sử dụng chỉ số đường thẳng để xác định hướng xu hướng thị trường, sử dụng chỉ số hình thức dựa trên giá trị cực đoan hỗ trợ xác định điểm đảo ngược, kết hợp với các điểm cao và thấp trong giai đoạn trước để xác định vị trí hỗ trợ và kháng cự quan trọng, hoạt động ngược tại các điểm này, thuộc về chiến lược đảo ngược có ý nghĩa điển hình.

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

Chiến lược này chủ yếu đánh giá thời gian hoạt động bằng các bước sau:

  1. Sử dụng chỉ số Alligator ba đường trung bình để xác định hướng xu hướng. Khi đường giá phá vỡ đường môi của chỉ số, nó được coi là có tín hiệu phá vỡ mạnh hơn.

  2. Sử dụng chỉ số mô hình Peak-Trough để xác định thời điểm giá đảo ngược trong khu vực quá mua quá bán. Đánh giá là tín hiệu đảo ngược có thể xảy ra khi phá vỡ điểm cực đoan của một hướng Peak-Trough.

  3. Kết hợp các điểm hỗ trợ và kháng cự để xác định điểm vào cụ thể của hoạt động đảo ngược. Khi giá gần với mức hỗ trợ hoặc kháng cự trước đó, hãy mở thêm lỗ.

  4. Sử dụng chỉ số đường trung bình của EMA để xác định định hướng xu hướng dài hạn. Ví dụ: trong tình huống dao động, hoạt động ngắn hạn chủ yếu là đảo ngược nhảy vọt, trong tình huống xu hướng chủ yếu là hoạt động thuận lợi.

  5. Sử dụng phương pháp dừng lỗ di động để kiểm soát tổn thất đơn lẻ.

Lợi thế chiến lược

Chiến lược này có một số lợi thế:

  1. Trong khi đó, kết hợp nhiều tín hiệu chỉ số, tăng độ chính xác của phán đoán.

  2. Sử dụng kháng cự hỗ trợ quan trọng để đảo ngược là hoạt động có xác suất cao.

  3. Sử dụng phương pháp dừng di chuyển, bạn có thể hạn chế tổn thất đơn lẻ.

Rủi ro chiến lược

Chiến lược này cũng có những rủi ro sau:

  1. Các nhà phân tích cho rằng các giao dịch có thể có tần suất cao hơn và cần phải chú ý đến việc kiểm soát chi phí giao dịch.

  2. Mức thất bại quan trọng là rủi ro lớn nhất, nếu giá không đảo ngược gần mức hỗ trợ hoặc kháng cự dự kiến, thì tổn thất có thể lớn hơn.

  3. Trong một thời điểm có sự biến động mạnh mẽ của thị trường, lệnh dừng di chuyển có thể bị phá vỡ, dẫn đến sự gia tăng lỗ.

Hướng tối ưu hóa chiến lược

Chiến lược này có thể được tối ưu hóa theo các khía cạnh sau:

  1. Điều chỉnh tối ưu hóa trọng số đa chỉ số để tìm ra sự kết hợp tham số tốt nhất.

  2. Tăng các thuật toán học máy để giúp xác định tỷ lệ thành công của các điểm quan trọng.

  3. Tham gia chỉ số khối lượng giao dịch để tránh bị ảnh hưởng khi giá dao động mạnh nhưng khối lượng giao dịch không đủ.

  4. Tối ưu hóa mô hình dừng chân di động, giảm thiểu khả năng dừng chân không cần thiết trong khi đảm bảo hiệu quả của dừng chân.

Tóm tắt

Nói tóm lại, chiến lược thu hồi phản hồi đồng bằng này sử dụng nhiều chỉ số như đường trung bình, hình dạng giá và mức kháng cự hỗ trợ để phán đoán đồng thời, đây là một chiến lược kỹ thuật điển hình. Nó có lợi thế về độ chính xác phán đoán cao, khả năng hoạt động cao, nhưng cũng cần lưu ý đến rủi ro thất bại của các vị trí quan trọng và dừng chân di chuyển bị phá vỡ.

Mã nguồn chiến lược
/*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
// ...