Bài viết này giới thiệu một chiến lược giao dịch xu hướng dựa trên nhiều đường trung bình động được gọi là Chiến lược giao dịch xu hướng trung bình đa động. Chiến lược này chủ yếu được áp dụng cho thị trường tương lai Nasdaq và nắm bắt xu hướng thị trường tăng bằng cách phân tích vị trí giá tương đối với đường trung bình động dài, trung bình và ngắn hạn. Nó cũng đóng tất cả các vị trí vào một thời điểm cụ thể mỗi ngày.
Chiến lược này sử dụng ba mức trung bình động đơn giản (SMA): dài hạn (thất định 200 thời gian), trung hạn (thất định 21 thời gian) và ngắn hạn (thất định 9 thời gian). Một tín hiệu mua được kích hoạt khi giá vượt quá mức trung bình động dài hạn và trung hạn và vượt qua mức trung bình động ngắn hạn, miễn là không có vị trí mở. Chiến lược cũng thiết lập mức stop-gain và stop-loss cố định để quản lý rủi ro. Ngoài ra, tất cả các vị trí được đóng cửa lúc 17:00 mỗi ngày giao dịch.
Tính toán các trung bình di chuyển đơn giản dài hạn (đủ 200 thời gian), trung hạn (đủ 21 thời gian) và ngắn hạn (đủ 9 thời gian).
Xác định xem giá hiện tại có cao hơn trung bình động dài hạn và trung hạn không.
Kiểm tra xem giá hiện tại có vượt quá đường trung bình động ngắn hạn không.
Khi cả hai điều kiện 2 và 3 đều được đáp ứng và không có vị trí mở, tín hiệu mua được kích hoạt.
Sau khi mua, đặt mức dừng lợi nhuận và dừng lỗ tại điểm cố định.
Đóng tất cả các vị trí lúc 17:00 mỗi ngày giao dịch.
Đơn giản và dễ hiểu: Chiến lược dựa trên đường trung bình động, làm cho nó đơn giản để hiểu và thực hiện.
Theo dõi xu hướng: Bằng cách phân tích vị trí giá so với trung bình động của các giai đoạn khác nhau, chiến lược có hiệu quả nắm bắt xu hướng tăng của thị trường.
Kiểm soát rủi ro: Chiến lược bao gồm mức dừng lợi nhuận và dừng lỗ cố định, giúp quản lý rủi ro cho các giao dịch cá nhân.
Khóa vị trí tự động: Chiến lược tự động đóng tất cả các vị trí vào một thời điểm cụ thể mỗi ngày giao dịch, tránh rủi ro qua đêm.
Tối ưu hóa tham số: Hiệu suất của chiến lược có thể nhạy cảm với các tham số trung bình động trong thời gian, đòi hỏi tối ưu hóa cho các thị trường và công cụ khác nhau.
Thị trường hỗn loạn: Trong điều kiện thị trường hỗn loạn, các tín hiệu chéo thường xuyên có thể dẫn đến hiệu suất chiến lược kém tối ưu.
Rủi ro trượt: Trong thời gian biến động thị trường cao, mức dừng lợi nhuận và dừng lỗ điểm cố định có thể không thực hiện như dự định, dẫn đến rủi ro trượt.
Stop-gain và stop-loss động: Điều chỉnh mức stop-gain và stop-loss theo động dựa trên biến động thị trường hoặc xu hướng giá để tối ưu hóa tỷ lệ rủi ro-lợi nhuận.
Bộ lọc xu hướng: Bao gồm các chỉ số kỹ thuật bổ sung, chẳng hạn như ADX, để xác nhận sức mạnh của xu hướng và lọc ra các tín hiệu sai trong thị trường hỗn loạn.
Điều chỉnh nhiều công cụ: Cải thiện chiến lược để thích nghi với các công cụ tương lai và đặc điểm thị trường khác nhau.
Quản lý tiền: Đưa ra các quy tắc quản lý tiền phức tạp hơn, chẳng hạn như kích thước vị trí và kiểm soát rủi ro, để tăng cường tính vững chắc của chiến lược.
Chiến lược giao dịch xu hướng trung bình chuyển động đa là một chiến lược theo xu hướng đơn giản và dễ hiểu nắm bắt xu hướng tăng của thị trường bằng cách phân tích vị trí giá so với mức trung bình chuyển động của các giai đoạn khác nhau. Chiến lược này kết hợp các mức stop-gain và stop-loss tại điểm cố định và tự động đóng tất cả các vị trí vào một thời điểm cụ thể mỗi ngày để quản lý rủi ro. Tuy nhiên, chiến lược có thể hoạt động kém trong các thị trường hỗn loạn và phải đối mặt với những thách thức như tối ưu hóa tham số và rủi ro trượt.
/*backtest start: 2024-04-01 00:00:00 end: 2024-04-30 23:59:59 period: 3h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Médias Móveis de MarcosJR", overlay=true) // Inputs para data inicial e final start_year = input.int(2020, title="Ano Inicial") start_month = input.int(1, title="Mês Inicial") start_day = input.int(1, title="Dia Inicial") end_year = input.int(2020, title="Ano Final") end_month = input.int(12, title="Mês Final") end_day = input.int(31, title="Dia Final") // Convertendo dia, mês e ano para timestamp start_date = timestamp(start_year, start_month, start_day, 00, 00) end_date = timestamp(end_year, end_month, end_day, 23, 59) // Condição para verificar se a data está dentro do intervalo especificado date_within_range = true // Parâmetros para os períodos das médias móveis ma_short_period = input.int(9, title="MA Curta") ma_medium_period = input.int(21, title="MA Média") ma_long_period = input.int(200, title="MA Longa") // Definindo médias móveis ma_short = ta.sma(close, ma_short_period) ma_medium = ta.sma(close, ma_medium_period) ma_long = ta.sma(close, ma_long_period) // Plotando as médias móveis no gráfico com espessura aumentada plot(ma_short, color=color.blue, title="MA Curta", linewidth=2) plot(ma_medium, color=color.orange, title="MA Média", linewidth=2) plot(ma_long, color=color.red, title="MA Longa", linewidth=2) // Verificando se o preço está acima das médias móveis above_ma_long = close > ma_long above_ma_medium = close > ma_medium // Verificando se o preço tocou na média móvel curta touch_ma_short = ta.crossover(close, ma_short) // Condições de compra buy_condition = date_within_range and above_ma_long and above_ma_medium and touch_ma_short // Sinais de entrada e saída de compra var float entry_price = na if (buy_condition and strategy.opentrades == 0) // Verifica se não há operações em andamento entry_price := close // Define o preço de entrada ao comprar // Parâmetros para o tamanho do stop gain e stop loss em pontos stop_gain_points = input.int(100, title="Stop Gain (pontos)", minval=1) stop_loss_points = input.int(100, title="Stop Loss (pontos)", minval=1) // Calcular o preço de saída alvo (Stop Gain) e de stop loss target_price = entry_price + stop_gain_points * syminfo.mintick stop_loss_price = entry_price - stop_loss_points * syminfo.mintick // Sair da operação de compra quando o preço atingir o stop gain ou stop loss if (strategy.position_size > 0) strategy.exit("Venda", "Compra", limit=target_price, stop=stop_loss_price) // Sinais de entrada de compra if (buy_condition and strategy.opentrades == 0) // Verifica se não há operações em andamento strategy.entry("Compra", strategy.long) // Plotando setas de compra plotshape(series=buy_condition, title="Sinal de Compra", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small) // Função para verificar se é 17:00 do mesmo dia is_17_oclock_same_day = hour == 17 and minute == 0 and hour[1] < 17 // Sair de todas as operações às 17:00 do mesmo dia if (is_17_oclock_same_day) strategy.close_all()