Strategi perdagangan tren berdasarkan beberapa rata-rata pergerakan

SMA MA
Tanggal Pembuatan: 2024-05-11 17:32:49 Akhirnya memodifikasi: 2024-05-11 17:32:49
menyalin: 1 Jumlah klik: 308
1
fokus pada
1166
Pengikut

Strategi perdagangan tren berdasarkan beberapa rata-rata pergerakan

Ringkasan

Strategi ini terutama diterapkan di pasar NASDAQ futures, menangkap tren naik pasar dengan menganalisis posisi harga relatif terhadap rata-rata bergerak jangka panjang, menengah, dan pendek, dan melakukan posisi yang sama untuk semua posisi pada waktu tertentu.

Strategi ini menggunakan tiga rata-rata bergerak sederhana (SMA): jangka panjang (default 200 cycle), jangka menengah (default 21 cycle), dan jangka pendek (default 9 cycle). Strategi ini akan memicu sinyal beli ketika harga berada di atas rata-rata jangka panjang dan jangka menengah, dan ketika persimpangan terjadi pada rata-rata jangka pendek. Strategi ini juga mengatur stop loss dan stop loss dengan jumlah tetap untuk mengendalikan risiko.

Prinsip Strategi

  1. Hitung rata-rata bergerak sederhana untuk jangka panjang (default 200 cycle), jangka menengah (default 21 cycle), dan jangka pendek (default 9 cycle).

  2. Periksa apakah harga saat ini lebih tinggi dari rata-rata jangka panjang dan rata-rata jangka menengah.

  3. Untuk menentukan apakah harga saat ini berada di atas garis rata-rata jangka pendek.

  4. Ketika kondisi 2 dan kondisi 3 terpenuhi secara bersamaan dan tidak ada posisi yang dipegang saat ini, memicu sinyal beli.

  5. Setelah membeli, atur stop dan stop loss dengan jumlah poin tetap, dan tutup ketika harga mencapai stop atau stop loss.

  6. Pada setiap hari perdagangan pada pukul 17:00, semua posisi akan dihapus.

Keunggulan Strategis

  1. Sederhana: Strategi ini didasarkan pada rata-rata bergerak, prinsipnya sederhana, mudah dipahami dan diterapkan.

  2. Pelacakan tren: Dengan menganalisis posisi harga relatif terhadap garis rata-rata berkala yang berbeda, strategi ini dapat secara efektif menangkap tren naik di pasar.

  3. Pengendalian risiko: Strategi mengatur stop loss dan stop loss dengan jumlah poin tetap untuk membantu mengendalikan risiko dalam satu transaksi.

  4. Otomatis menetap: Strategi ini akan menetap secara otomatis pada waktu tertentu setiap hari perdagangan, menghindari risiko semalam.

Risiko Strategis

  1. Optimisasi parameter: Kinerja strategi mungkin sensitif terhadap parameter siklus rata-rata, yang perlu dioptimalkan sesuai dengan pasar dan varietas yang berbeda.

  2. Pasar bergoyang: Dalam pasar yang bergoyang, sinyal silang yang sering terjadi dapat menyebabkan kinerja strategi yang buruk.

  3. Resiko slippage: Stop dan stop loss dalam jumlah tetap mungkin tidak dapat dilakukan seperti yang diharapkan, menyebabkan risiko slippage ketika pasar bergejolak.

Arah optimasi strategi

  1. Stop Loss Dinamis: Mengubah posisi stop loss dan stop loss secara dinamis sesuai dengan volatilitas pasar atau pergerakan harga, untuk mengoptimalkan rasio risiko / keuntungan.

  2. Filter tren: memperkenalkan indikator teknis lainnya, seperti ADX, untuk mengkonfirmasi kekuatan tren, memfilter sinyal palsu di pasar yang bergoyang.

  3. Adaptasi multi-varietas: Strategi yang ditingkatkan untuk menyesuaikan dengan varietas berjangka yang berbeda dan karakteristik pasar.

  4. Pengelolaan dana: Memperkenalkan aturan manajemen dana yang lebih kompleks, seperti manajemen posisi dan kontrol risiko, meningkatkan kehandalan strategi.

Meringkaskan

Strategi perdagangan tren berdasarkan multi-rata adalah strategi pelacakan tren yang sederhana dan mudah dimengerti yang menangkap tren naik di pasar dengan menganalisis posisi harga relatif terhadap rata-rata periode yang berbeda. Strategi ini menetapkan stop loss dengan jumlah tetap dan secara otomatis melunasi posisi pada waktu tertentu setiap hari untuk mengendalikan risiko. Namun, strategi ini mungkin berkinerja buruk di pasar yang bergolak dan menghadapi masalah optimasi parameter dan risiko slippage.

Kode Sumber Strategi
/*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()