Artikel ini memperkenalkan strategi perdagangan trend berdasarkan pelbagai purata bergerak yang dipanggil
Strategi ini menggunakan tiga purata bergerak mudah (SMA): jangka panjang (default 200 tempoh), jangka sederhana (default 21 tempoh), dan jangka pendek (default 9 tempoh). Isyarat beli diaktifkan apabila harga berada di atas purata bergerak jangka panjang dan jangka sederhana dan melintasi di atas purata bergerak jangka pendek, dengan syarat tidak ada kedudukan terbuka. Strategi ini juga menetapkan tahap stop-gain dan stop-loss titik tetap untuk menguruskan risiko. Di samping itu, semua kedudukan ditutup pada pukul 17:00 setiap hari dagangan.
Mengira purata mudah bergerak jangka panjang (default 200 tempoh), jangka sederhana (default 21 tempoh), dan jangka pendek (default 9 tempoh).
Tentukan sama ada harga semasa di atas purata bergerak jangka panjang dan jangka sederhana.
Periksa sama ada harga semasa melintasi di atas purata bergerak jangka pendek.
Apabila kedua-dua syarat 2 dan 3 dipenuhi, dan tidak ada kedudukan terbuka, isyarat beli dicetuskan.
Selepas membeli, tetapkan tahap stop-gain dan stop-loss titik tetap. Tutup kedudukan apabila harga mencapai mana-mana tahap.
Tutup semua kedudukan pada jam 17:00 setiap hari dagangan.
Sederhana dan mudah difahami: Strategi ini berdasarkan purata bergerak, menjadikannya mudah difahami dan dilaksanakan.
Mengikuti trend: Dengan menganalisis kedudukan harga berbanding dengan purata bergerak dari tempoh yang berbeza, strategi secara berkesan menangkap trend pasaran menaik.
Kawalan risiko: Strategi ini menggabungkan tahap stop-gain dan stop-loss titik tetap, membantu menguruskan risiko untuk perdagangan individu.
Penutupan kedudukan automatik: Strategi secara automatik menutup semua kedudukan pada masa tertentu setiap hari dagangan, mengelakkan risiko semalam.
Pengoptimuman parameter: Prestasi strategi mungkin sensitif kepada parameter purata bergerak tempoh, yang memerlukan pengoptimuman untuk pasaran dan instrumen yang berbeza.
Pasaran yang bergelora: Dalam keadaan pasaran yang bergelora, isyarat silang yang kerap boleh menyebabkan prestasi strategi yang kurang optimum.
Risiko tergelincir: Semasa turun naik pasaran yang tinggi, tahap stop-gain dan stop-loss titik tetap mungkin tidak dilaksanakan seperti yang dimaksudkan, mengakibatkan risiko tergelincir.
Stop-gain dan stop-loss dinamik: Sesuaikan tahap stop-gain dan stop-loss secara dinamik berdasarkan turun naik pasaran atau trend harga untuk mengoptimumkan nisbah risiko-balasan.
Penapis trend: Sertakan penunjuk teknikal tambahan, seperti ADX, untuk mengesahkan kekuatan trend dan menapis isyarat palsu dalam pasaran yang bergelora.
Penyesuaian pelbagai instrumen: Memperbetulkan strategi untuk menyesuaikan diri dengan instrumen niaga hadapan dan ciri pasaran yang berbeza.
Pengurusan wang: Memperkenalkan peraturan pengurusan wang yang lebih canggih, seperti saiz kedudukan dan kawalan risiko, untuk meningkatkan kekuatan 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()