Esta estratégia é um sistema de seguimento de tendências baseado em sinais cruzados de média móvel dupla, incorporando um mecanismo dinâmico de take-profit e stop-loss. Utiliza médias móveis simples (SMA) de 5 períodos e 12 períodos para gerar sinais de negociação, otimizando a relação risco-recompensação através do ajuste dinâmico dos níveis de take-profit e stop-loss.
A lógica central baseia-se na relação cruzada entre médias móveis rápidas (5 períodos) e lentas (12-períodos). Um sinal de compra é gerado quando o MA rápido cruza acima do MA lento, enquanto as posições são fechadas quando o MA rápido cruza abaixo do MA lento. A singularidade da estratégia está em seu mecanismo dinâmico de gerenciamento de risco: após a entrada da posição, o sistema monitora continuamente o movimento dos preços e ajusta dinamicamente os níveis de take-profit e stop-loss para maximizar os lucros enquanto controla o risco.
Esta estratégia capta efetivamente as tendências e controla dinamicamente o risco, combinando sinais de cruzamento de média móvel clássica com gestão de risco dinâmica inovadora. O design da estratégia é claro, a implementação é eficiente e demonstra boa praticidade e escalabilidade. Através da otimização e melhoria contínua, esta estratégia mostra promessa para alcançar retornos estáveis na negociação real.
/*backtest start: 2019-12-23 08:00:00 end: 2024-12-25 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=6 strategy("My Moving Average Crossover Strategy with Take Profit and Stop Loss", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100) //risk_free_rate = float(request.security("IRUS", "D", close)/request.security("IRUS", "D", close[1]) - 1 )) // MA periods fastLength = input.int(5, title="Fast MA Length") slowLength = input.int(12, title="Slow MA Length") // Take Profit and Stop Loss takeProfitLevel = input(10, title="Take Profit (пункты)") // Take profit % from the last price stopLossLevel = input(5, title="Stop Loss (пункты)") // Stop loss % from the last price takeProfitLevel_dyn = input(20, title="Dynamic Take Profit (пункты)") // Move TP if current_price higher buy_px stopLossLevel_dyn = input(2.5, title="Dynamic Stop Loss (пункты)") // S Move SL if current_price higher buy_px // Вычисление скользящих средних fastMA = ta.sma(close, fastLength) slowMA= ta.sma(close, slowLength) // Conditions for Sell and Buy longCondition = ta.crossover (fastMA, slowMA) // покупаем, если короткая MA персекает длинную снизу-вверх shortCondition = ta.crossunder(fastMA, slowMA) // продаем, если короткая MA персекает длинную сверху-вниз // Buy position condition if (longCondition) strategy.entry("Buy", strategy.long) // Dynamic TP SL leveles takeProfitPrice = strategy.position_avg_price * (1+ takeProfitLevel / 100) stopLossPrice = strategy.position_avg_price * (1-stopLossLevel / 100) entryPrice = strategy.position_avg_price if (strategy.position_size > 0) // если есть открытая позиция // takeProfitPrice := entryPrice * (1+ takeProfitLevel / 100) // stopLossPrice := entryPrice * (1-stopLossLevel / 100) // // Перемещение Stop Loss и Take Profit if (close > entryPrice) takeProfitPrice := close * (1+ takeProfitLevel_dyn / 100) stopLossPrice := close * (1- stopLossLevel_dyn/ 100) if (shortCondition) strategy.close("Buy") strategy.exit("Take Profit/Stop loss", "Buy", limit=takeProfitPrice, stop=stopLossPrice) // Drawing MA lines plot(fastMA, color=color.blue, title="Fast Moving Average") plot(slowMA, color=color.orange, title="Slow Moving Average") // Визуализация plot(longCondition ? na : takeProfitPrice, title="Take Profit Level", color=color.green, linewidth=1, style=plot.style_line) plot(longCondition ? na: stopLossPrice, title="Stop Loss Level", color=color.red, linewidth=1, style=plot.style_line)