Tài nguyên đang được tải lên... tải...

Chiến lược giao dịch dựa trên ba ngọn nến giảm liên tiếp và trung bình di chuyển kép

Tác giả:ChaoZhang, Ngày: 2024-05-14 17:30:35
Tags:SMASMA200

img

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ọn nến giảm liên tiếp và trung bình di chuyển kép. Ý tưởng chính của chiến lược là: khi có ba ngọn nến giảm liên tiếp và giá đóng hiện tại cao hơn mức trung bình di chuyển 200 ngày, mở một vị trí dài; khi trung bình di chuyển 10 ngày vượt qua giá, hoặc giá đạt mức lấy lợi nhuận hoặc dừng lỗ, đóng vị trí. Chiến lược chỉ chạy trong một khoảng thời gian nhất định.

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

  1. Tính toán số lượng nến giảm liên tiếp. Nếu giá đóng giảm, số lượng nến giảm liên tiếp tăng thêm 1; nếu không, nó sẽ được đặt lại với 0.
  2. Tính toán trung bình động 10 ngày và 200 ngày.
  3. Xác định xem giá đóng cửa hiện tại có cao hơn trung bình động 10 ngày không.
  4. Kiểm tra xem các điều kiện nhập cảnh có được đáp ứng không: ba ngọn nến giảm liên tiếp, thời gian hiện tại nằm trong phạm vi được chỉ định và giá đóng hiện tại cao hơn trung bình động 200 ngày.
  5. Kiểm tra xem các điều kiện thoát được đáp ứng: trung bình động 10 ngày giao thoa với giá, hoặc giá đạt mức lấy lợi nhuận hoặc dừng lỗ.
  6. Nếu các điều kiện nhập cảnh được đáp ứng và không có vị trí hiện tại, mở vị trí dài.
  7. Nếu các điều kiện thoát được đáp ứng và có một vị trí hiện tại, đóng vị trí.

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

  1. Nó xem xét biến động giá và các yếu tố trung bình động, cho phép nó nắm bắt các cơ hội trong cả xu hướng và các thị trường dao động.
  2. Nó thiết lập mức lợi nhuận và dừng lỗ, có thể kiểm soát rủi ro hiệu quả.
  3. Nó hạn chế phạm vi thời gian thực hiện chiến lược, tránh rủi ro quá mức trong một số thời gian cụ thể.
  4. Logic mã là rõ ràng và dễ đọc, làm cho nó dễ hiểu và tối ưu hóa.

Rủi ro chiến lược

  1. Phán quyết của các nến giảm liên tiếp có thể quá đơn giản, dễ dàng kích hoạt các tín hiệu sai.
  2. Việc thiết lập mức lợi nhuận và dừng lỗ có thể không đủ linh hoạt, dẫn đến giao dịch thường xuyên hoặc bỏ lỡ cơ hội khi thị trường biến động mạnh.
  3. Nó thiếu tính đến các sự kiện bất ngờ, tin tức lớn và các yếu tố khác không thông thường, có khả năng đảm nhận rủi ro bổ sung.

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

  1. Xem xét việc giới thiệu các chỉ số kỹ thuật hơn, chẳng hạn như RSI và MACD, để xây dựng một logic đánh giá tín hiệu mạnh mẽ hơn.
  2. Tối ưu hóa việc thiết lập mức lợi nhuận và dừng lỗ, giới thiệu mức lợi nhuận / dừng lỗ hoặc dừng lỗ năng động dựa trên các chỉ số biến động như ATR.
  3. 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ố lượng nến giảm liên tiếp, thời gian trung bình động, v.v., để tìm ra sự kết hợp tham số tối ưu.
  4. Kết hợp quản lý vị trí để điều chỉnh vị trí năng động dựa trên môi trường thị trường khác nhau, cải thiện hiệu quả sử dụng vốn.

Tóm lại

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 nến giảm liên tiếp và trung bình động kép. Trong khi nắm bắt các cơ hội xu hướng, chiến lược cũng đặt ra một số biện pháp kiểm soát rủi ro. Tuy nhiên, có thêm không gian để tối ưu hóa trong phán đoán tín hiệu và kiểm soát rủi ro. Bằng cách giới thiệu nhiều chỉ số kỹ thuật hơn, tối ưu hóa cài đặt tham số, thực hiện lợi nhuận / dừng lỗ và quản lý vị trí năng động, độ mạnh mẽ và lợi nhuận của chiến lược có thể được cải thiện hơn nữa.


/*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)


Có liên quan

Thêm nữa