Chiến lược giao dịch dựa trên ba nến đen liên tiếp và đường trung bình động kép

SMA SMA200
Ngày tạo: 2024-05-14 17:30:35 sửa đổi lần cuối: 2024-05-14 17:30:35
sao chép: 3 Số nhấp chuột: 506
1
tập trung vào
1617
Người theo dõi

Chiến lược giao dịch dựa trên ba nến đen liên tiếp và đường trung bình động kép

Tổng quan

Chiến lược này là một chiến lược giao dịch dựa trên ba đường dương và hai đường ngang liên tiếp. Ý tưởng chính của chiến lược là: khi có ba đường dương liên tiếp và giá đóng cửa hiện tại cao hơn đường trung bình 200 ngày, hãy đặt nhiều; khi đường trung bình 10 ngày giao nhau với giá, hoặc khi giá đạt đến điểm dừng hoặc dừng lỗ.

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

  1. Tính số lần liên tiếp. Nếu giá đóng cửa giảm, số lần liên tiếp được cộng với 1; nếu không, số lần liên tiếp được đặt lại là 0
  2. Tính trung bình 10 ngày và trung bình 200 ngày.
  3. Xác định giá đóng cửa hiện tại có cao hơn đường trung bình 10 ngày hay không.
  4. Xác định xem điều kiện nhập cảnh có được không: ba đường âm liên tiếp, thời gian hiện tại trong phạm vi được chỉ định và giá đóng cửa hiện tại cao hơn đường trung bình 200 ngày.
  5. Xác định liệu điều kiện ra đi đã được đáp ứng: đường trung bình 10 ngày giao nhau với giá, hoặc giá đạt điểm dừng hoặc điểm dừng lỗ.
  6. Nếu đáp ứng các điều kiện tham gia và không có vị trí hiện tại, hãy mở thêm vị trí.
  7. Nếu đáp ứng các điều kiện ra sân và hiện đang nắm giữ vị trí, thì vị trí bằng phẳng.

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

  1. Các nhà đầu tư có thể nắm bắt cơ hội trong các tình huống xu hướng và biến động khi xem xét các yếu tố biến động giá và đường trung bình.
  2. Cài đặt Stop Loss để kiểm soát rủi ro hiệu quả.
  3. Giới hạn thời gian hoạt động của chiến lược để tránh rủi ro quá lớn trong một số thời gian nhất định.
  4. Khóa học có logic rõ ràng, dễ đọc, dễ hiểu và tối ưu hóa.

Rủi ro chiến lược

  1. Đối với các sợi dây liên tục, phán đoán có thể quá đơn giản và dễ gây ra tín hiệu sai.
  2. Các thiết lập dừng lỗ có thể không linh hoạt, có thể dẫn đến giao dịch thường xuyên hoặc mất cơ hội khi thị trường biến động lớn.
  3. Các yếu tố bất thường như sự kiện đột ngột, tin tức quan trọng không được cân nhắc đầy đủ, có thể gây ra thêm rủi ro.

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

  1. Có thể xem xét việc giới thiệu nhiều chỉ số kỹ thuật hơn, chẳng hạn như RSI, MACD, v.v., để xây dựng logic phán đoán tín hiệu vững chắc hơn.
  2. Có thể tối ưu hóa các thiết lập dừng dừng, giới thiệu dừng dừng động hoặc dừng dựa trên các chỉ số biến động như ATR.
  3. Có thể nghiên cứu tác động của các thiết lập tham số khác nhau đối với chiến lược, chẳng hạn như số gốc âm liên tục, chu kỳ trung bình, v.v., để tìm kiếm sự kết hợp tham số tối ưu.
  4. Có thể tham gia quản lý vị trí, điều chỉnh vị trí theo các biến động của môi trường thị trường khác nhau, nâng cao hiệu quả sử dụng vốn.

Tóm tắt

Chiến lược này xây dựng một mô hình giao dịch đơn giản và dễ hiểu thông qua sự kết hợp của các đường nhị phân liên tục và hai đường đồng đều. Chiến lược này nắm bắt cơ hội theo xu hướng, đồng thời cũng đặt ra một số biện pháp kiểm soát rủi ro. Tuy nhiên, chiến lược vẫn còn không gian để tối ưu hóa hơn nữa về việc đánh giá tín hiệu và kiểm soát rủi ro.

Mã nguồn chiến lược
/*backtest
start: 2023-05-08 00:00:00
end: 2024-05-13 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Estrategia de Trading", overlay=true)

// Definir el número de cierres de velas decrecientes consecutivas
var int cierres_decrecientes_consecutivos = 0
num_cierres_decrecientes = input.int(3, title="Número de cierres decrecientes", minval=1)

// Definir el porcentaje de cambio para cerrar la operación
porcentaje_cierre_arriba = input.float(1.5, title="Porcentaje de cierre arriba (%)", step=0.1)
porcentaje_cierre_abajo = input.float(1.0, title="Porcentaje de cierre abajo (%)", step=0.1)

// Definir las medias móviles para el cierre de la operación
periodos_media_movil_cierre = input.int(10, title="Períodos de la media móvil para cierre")
periodos_media_movil_200 = input.int(200, title="Períodos de la media móvil de 200")

// Definir el rango de fechas para la simulación
start_date = timestamp(2024, 1, 1, 0, 0)
end_date = timestamp(2024, 12, 31, 23, 59)

// Calcular la media móvil para el cierre de la operación
sma_cierre = ta.sma(close, periodos_media_movil_cierre)
sma_200 = ta.sma(close, periodos_media_movil_200)

// Calcular si el precio está por encima o por debajo de la media móvil para el cierre de la operación
precio_por_encima_sma_cierre = close > sma_cierre
precio_por_debajo_sma_cierre = close < sma_cierre

// Calcular si se han producido num_cierres_decrecientes consecutivos
if (ta.change(close) < 0)
    cierres_decrecientes_consecutivos := cierres_decrecientes_consecutivos + 1
else
    cierres_decrecientes_consecutivos := 0

es_cierres_consecutivos = cierres_decrecientes_consecutivos >= num_cierres_decrecientes

// Definir condiciones de entrada y salida de la estrategia dentro del rango de fechas y con el precio por encima de la SMA de 200
condicion_entrada = es_cierres_consecutivos and close > sma_200
condicion_cierre_sma = (precio_por_encima_sma_cierre[1] and not precio_por_encima_sma_cierre) or (not precio_por_encima_sma_cierre[1] and precio_por_encima_sma_cierre)

// Calcular precios de salida basados en porcentajes
precio_salida_arriba = strategy.position_avg_price * (1 + porcentaje_cierre_arriba / 100)
precio_salida_abajo = strategy.position_avg_price * (1 - porcentaje_cierre_abajo / 100)

// Ejecutar operación en largo dentro del rango de fechas y con el precio por encima de la SMA de 200
if (condicion_entrada and strategy.opentrades == 0)
    strategy.entry("Long", strategy.long)

// Cerrar operación en largo si se cumple la condición de salida por cambio en el cruce de la media móvil dentro del rango de fechas
if (strategy.position_size > 0 and condicion_cierre_sma)
    strategy.close("Long")

// Cerrar operación en largo si el precio alcanza el porcentaje de cierre arriba o abajo dentro del rango de fechas
strategy.exit("Stop Loss", "Long", limit=precio_salida_arriba, stop=precio_salida_abajo)

// Plot para visualizar la media móvil para el cierre de la operación
plot(sma_cierre, color=color.red)

// Plot para visualizar la SMA de 200
plot(sma_200, color=color.blue)