本策略是一个基于多维技术指标分析的量化交易系统,通过整合相对强弱指标(RSI)、移动平均线趋同散度指标(MACD)和指数移动平均线(EMA)等技术指标,构建了一个全自动化的交易决策体系。策略采用模块化设计,支持灵活配置交易参数,并集成了动态止盈止损机制以及追踪止损功能,旨在实现风险可控下的稳健收益。
策略核心逻辑基于三大技术指标的协同分析: 1. RSI指标用于识别超买超卖区域,当RSI低于30时产生买入信号,高于70时产生卖出信号 2. MACD指标通过快慢线交叉判断趋势转换,快线上穿慢线视为买入信号,下穿则视为卖出信号 3. EMA指标利用20日与50日均线的交叉确认趋势方向,短期均线上穿长期均线为买入信号,反之为卖出信号
策略在任一指标产生信号时即可触发交易,同时集成了百分比止损、固定止盈以及追踪止损三重风控机制。当价格达到预设盈利目标后,自动激活追踪止损功能,确保已获利润不会大幅回撤。
该策略通过多维度技术指标的协同分析构建了一个系统化的交易决策框架,并通过完善的风险控制机制实现对交易全过程的精确管理。虽然在某些市场环境下可能面临特定挑战,但通过持续优化和改进,策略有望在不同市场周期中保持稳定表现。策略的模块化设计思路也为后续功能扩展和优化提供了良好基础。
/*backtest
start: 2024-11-21 00:00:00
end: 2024-11-28 00:00:00
period: 4h
basePeriod: 4h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © rfssocal
//@version=5
strategy("Quantico Bot MILLIONARIO", overlay=true)
// Configuração inicial de parâmetros
capital_inicial = input.float(100, "Capital Inicial ($)", minval=10)
risco_por_trade = input.float(1, "Risco por Trade (%)", minval=0.1, maxval=100)
take_profit_percent = input.float(2, "Take Profit (%)", minval=0.1)
stop_loss_percent = input.float(1, "Stop Loss (%)", minval=0.1)
trailing_stop_percent = input.float(5, "Trailing Stop Gatilho (%)", minval=0.1)
// Configuração de indicadores
usar_rsi = input.bool(true, "Usar RSI como Indicador")
usar_macd = input.bool(true, "Usar MACD como Indicador")
usar_ema = input.bool(true, "Usar EMA como Indicador")
// Indicadores
rsi_value = ta.rsi(close, 14)
[macd_line, signal_line, _] = ta.macd(close, 12, 26, 9)
ema_20 = ta.ema(close, 20)
ema_50 = ta.ema(close, 50)
// Condições de compra
compra_rsi = usar_rsi and rsi_value < 30
compra_macd = usar_macd and macd_line > signal_line
compra_ema = usar_ema and ema_20 > ema_50
compra = compra_rsi or compra_macd or compra_ema
// Condições de venda
venda_rsi = usar_rsi and rsi_value > 70
venda_macd = usar_macd and macd_line < signal_line
venda_ema = usar_ema and ema_20 < ema_50
venda = venda_rsi or venda_macd or venda_ema
// Calcular stop loss e take profit
stop_loss_price = strategy.position_avg_price * (1 - stop_loss_percent / 100)
take_profit_price = strategy.position_avg_price * (1 + take_profit_percent / 100)
// Adiciona trailing stop automático
if (strategy.position_size > 0 and close >= strategy.position_avg_price * (1 + trailing_stop_percent / 100))
strategy.exit("Trailing Stop", from_entry="Compra", stop=close * 0.99)
// Executa as ordens automáticas
if (compra)
strategy.entry("Compra", strategy.long)
if (venda)
strategy.entry("Venda", strategy.short)
// Variável para calcular o lucro total
var float total_profit = 0.0
total_profit := strategy.netprofit
// Exibição de dados no gráfico
label.new(bar_index, na, "Take Profit: " + str.tostring(take_profit_price) + "\nStop Loss: " + str.tostring(stop_loss_price),
style=label.style_label_down, color=color.green, textcolor=color.white)
// Exibe o balanço
label.new(bar_index, na, "Balanço Atual\nDiário: " + str.tostring(total_profit), style=label.style_label_down, color=color.blue, textcolor=color.white)