Chiến lược giao dịch theo xu hướng dựa trên nhiều đường trung bình động

SMA MA
Ngày tạo: 2024-05-11 17:32:49 sửa đổi lần cuối: 2024-05-11 17:32:49
sao chép: 2 Số nhấp chuột: 608
1
tập trung vào
1617
Người theo dõi

Chiến lược giao dịch theo xu hướng dựa trên nhiều đường trung bình động

Tổng quan

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 di chuyển. Chiến lược này được áp dụng chủ yếu cho thị trường tương lai Nasdaq, bằng cách phân tích vị trí của giá so với đường trung bình di chuyển dài, trung bình và ngắn hạn, để nắm bắt xu hướng tăng của thị trường và thanh toán tất cả các vị trí tại một thời điểm cụ thể.

Chiến lược này sử dụng ba đường trung bình di chuyển đơn giản (SMA): dài (chỉ số 200 mặc định), trung bình (chỉ số 21 mặc định) và ngắn (chỉ số 9 mặc định). Chiến lược sẽ kích hoạt tín hiệu mua khi giá cao hơn đường trung bình dài hạn và trung bình và có sự giao thoa trên đường trung bình ngắn hạn.

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

  1. Tính toán trung bình di chuyển đơn giản trong dài hạn (bằng 200 chu kỳ mặc định), trung hạn (bằng 21 chu kỳ mặc định) và ngắn hạn (bằng 9 chu kỳ mặc định).

  2. Xác định liệu giá hiện tại có cao hơn đường trung bình dài hạn và đường trung bình trung hạn hay không.

  3. Xác định liệu giá hiện tại có nằm trên đường trung bình ngắn hạn hay không.

  4. Khi điều kiện 2 và điều kiện 3 được đáp ứng và không có vị trí hiện tại, kích hoạt tín hiệu mua.

  5. Sau khi mua, thiết lập các điểm dừng và dừng cố định, và khi giá chạm mức dừng hoặc dừng lỗ, hãy dừng.

  6. Tất cả các vị trí đều được thanh lý vào lúc 17:00 mỗi ngày giao dịch.

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

  1. Đơn giản và dễ hiểu: Chiến lược này dựa trên trung bình di chuyển, nguyên tắc đơn giản, dễ hiểu và thực hiện.

  2. Theo dõi xu hướng: Bằng cách phân tích vị trí của giá so với các đường trung bình theo chu kỳ khác nhau, chiến lược có thể nắm bắt hiệu quả xu hướng tăng của thị trường.

  3. Kiểm soát rủi ro: Chiến lược thiết lập các điểm dừng và dừng cố định để giúp kiểm soát rủi ro của một giao dịch.

  4. Tự động thanh lý: Chiến lược tự động thanh lý vào một thời gian nhất định trong mỗi ngày giao dịch, tránh rủi ro qua đêm.

Rủi ro chiến lược

  1. 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 tham số chu kỳ trung bình, cần được tối ưu hóa cho các thị trường và giống khác nhau.

  2. Thị trường chấn động: Trong môi trường thị trường chấn động, các tín hiệu giao thoa thường xuyên có thể dẫn đến hiệu suất chiến lược kém.

  3. Rủi ro trượt: Khi thị trường biến động mạnh, các điểm dừng và dừng cố định có thể không được thực hiện như dự kiến, dẫn đến rủi ro trượt.

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

  1. Động lực dừng lỗ: tùy thuộc vào biến động của thị trường hoặc biến động giá, động lực điều chỉnh điểm dừng và điểm dừng để tối ưu hóa tỷ lệ lợi nhuận rủi ro.

  2. Bộ lọc xu hướng: giới thiệu các chỉ số kỹ thuật khác, chẳng hạn như ADX, để xác nhận cường độ của xu hướng, lọc tín hiệu giả trong thị trường dao động.

  3. Khả năng thích ứng với nhiều loại: cải tiến chiến lược để thích ứng với các loại tương lai và đặc điểm thị trường khác nhau.

  4. Quản lý tài chính: giới thiệu các quy tắc quản lý tài chính phức tạp hơn, chẳng hạn như quản lý vị trí và kiểm soát rủi ro, nâng cao tính ổn định của chiến lược.

Tóm tắt

Chiến lược giao dịch xu hướng dựa trên nhiều đường trung bình là một chiến lược theo dõi 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í của giá so với các đường trung bình theo chu kỳ khác nhau. Chiến lược này thiết lập điểm dừng cố định và tự động thanh toán vị trí để kiểm soát rủi ro vào một thời gian nhất định mỗi ngày. Tuy nhiên, chiến lược có thể hoạt động kém trong thị trường bất ổn và đối mặt với các vấn đề như tối ưu hóa tham số và rủi ro trượt.

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