
A estratégia é um sistema de negociação que combina vários indicadores técnicos, principalmente baseado em EMA cruzamento de linha média, RSI oversell e MACD Gold Fork triplo sinal de confirmação para abrir posições, através de um único preço de entrada e de saída múltiplos mecanismo de gestão de risco. A estratégia utiliza o índice de 9 ciclos e 21 ciclos de média móvel (EMA) como o principal indicador de tendência, combinado com um índice relativamente forte (RSI) e a média móvel de tendência atrás do indicador (MACD) para filtrar os sinais de negociação, através da definição de um único limite de preço e um número fixo de pontos de stop loss para controlar o risco.
A lógica de negociação central da estratégia inclui as seguintes partes-chave:
A estratégia de admissão a um único preço limitado permite a construção de posições em melhores posições de preços, aumentando a precisão da negociação através da combinação de vários indicadores técnicos.
Trata-se de uma estratégia de negociação multi-indicadores, estruturada e com lógica clara, que identifica tendências por meio de um sistema uniforme, filtra os sinais RSI e MACD, limita os pedidos e controla o risco por meio de vários mecanismos de parada. A vantagem da estratégia reside na alta confiabilidade do sinal e no controle perfeito do risco, mas há também problemas de atraso do sinal e otimização de parâmetros.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-09 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("SMA 9 & 21 with RSI and MACD Buy Strategy", overlay=true)
// Inputs for Simple Moving Averages
sma_short = ta.ema(close, 9)
sma_long = ta.ema(close, 21)
// Plotting SMA
plot(sma_short, color=color.green, title="SMA 9")
plot(sma_long, color=color.red, title="SMA 21")
// RSI Calculation
rsi_length = input.int(14, title="RSI Length")
rsi_threshold = input.int(70, title="RSI Threshold")
rsi = ta.rsi(close, rsi_length)
// MACD Calculation
macd_fast = input.int(8, title="MACD Fast Length")
macd_slow = input.int(18, title="MACD Slow Length")
macd_signal = input.int(6, title="MACD Signal Length")
[macd_line, signal_line, _] = ta.macd(close, macd_fast, macd_slow, macd_signal)
// Inputs for Limit Order Offset
limit_offset = input.int(50, title="Limit Order Offset", minval=1) // 50 points below 9 EMA
// User input for specific date
simulationStartDate = input(timestamp("2024-12-01 00:00"), title="Simulation Start Date", group = "Simulation Dates")
simulationEndDate = input(timestamp("2024-12-30 00:00"), title="Simulation End Date", group = "Simulation Dates")
// Declare limit_price as float
var float limit_price = na
// Calculate Limit Order Price
if (sma_short[1] < sma_long[1] and sma_short > sma_long) // 9 EMA crosses above 21 EMA
limit_price := sma_short - limit_offset
// Buy Signal Condition (only on the specified date)
buy_condition = not na(limit_price) and rsi < rsi_threshold and ta.crossover(macd_line, signal_line)
// Sell Signal Condition (MACD crossover down)
sell_condition = ta.crossunder(macd_line, signal_line)
// Track Entry Price for Point-Based Exit
var float entry_price = na
if (buy_condition )
strategy.order("Buy", strategy.long, comment="Limit Order at 9 EMA - Offset", limit=limit_price)
label.new(bar_index, limit_price, "Limit Buy", style=label.style_label_up, color=color.green, textcolor=color.white)
entry_price := limit_price // Set entry price
// Exit Conditions
exit_by_macd = sell_condition
exit_by_points = not na(entry_price) and ((close >= entry_price + 12) or (close <= entry_price - 12)) // Adjust as per exit points
// Exit all positions at the end of the day
if hour == 15 and minute > 10 and strategy.position_size > 0
strategy.close_all() // Close all positions at the end of the day
strategy.cancel_all()
// Exit based on sell signal or point movement
if (exit_by_macd or exit_by_points and strategy.position_size > 0 )
strategy.close("Buy")
label.new(bar_index, close, "Close", style=label.style_label_down, color=color.red, textcolor=color.white)