Стратегия называется
Стратегия использует две линии SMA, SMA1 и SMA2. Длина SMA1 равна 1 и длина SMA2 равна 3. При расчете этих двух линий SMA, когда SMA1 пересекает SMA2, генерируется сигнал покупки. Когда SMA1 пересекает SMA2, генерируется сигнал продажи. Это направлено на улавливание тенденции цены.
В частности, стратегия оценивает перекрестные отношения между линиями SMA с помощью функций ta.crossover и ta.crossunder, генерируя булевые переменные longCondition и shortCondition. Когда longCondition верно, генерируется сигнал покупки. Когда shortCondition верно, генерируется сигнал продажи. Стратегия войдет на рынок в точку сигнала и обновит переменные profitAccumulated и lastTradeProfit для отслеживания накопленных прибылей.
Для контроля риска стратегия также устанавливает механизм стоп-лосса, основанный на фиксированных точках. Если цена достигнет установленной точки стоп-лосса от точки входа, это приведет к закрытию ордера стоп-лосса.
Самое большое преимущество этой стратегии заключается в том, что она использует возможности отслеживания тренда линий SMA для эффективного улавливания изменений в ценовых тенденциях. По сравнению со стратегиями одной линии, стратегии двойной линии могут использовать перекрестные отношения между линиями для определения направления тренда и, таким образом, генерировать торговые сигналы. Кроме того, механизм остановки потери может эффективно контролировать одиночную потерю.
Основной риск этой стратегии заключается в том, что стратегия скользящей средней имеет тенденцию генерировать ложные сигналы. Когда цена колеблется, линия SMA может часто пересекаться, что приводит к ненужным торговым сигналам. В этот момент могут произойти большие потери без эффективного стоп-лосса.
Стратегия может быть оптимизирована в следующих аспектах:
Корректировать параметры SMA, чтобы найти наилучшую комбинацию скользящих средних длин через обратное тестирование.
Увеличить условия фильтрации и установить условия прорыва цены вблизи пересечения скользящей средней точки, чтобы избежать ложных сигналов.
Различные типы методов стоп-лосса могут быть протестированы, например, мобильный стоп-лосс, стоп-лосс ожидания ордера и т.д.
Добавьте управление размером позиции для оптимизации эффективности использования капитала.
В целом, это типичная стратегия, следующая за трендом. Она использует прорывные отношения между линиями SMA для определения направления ценовой тенденции и входа в поворотную точку тренда. В то же время, стратегия имеет фиксированную функцию остановки потери для контроля рисков. Стратегия проста, легко понятна, но все еще требует глубокого тестирования и оптимизации, прежде чем получить стабильную прибыль в реальной торговле.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 period: 1h basePeriod: 15m 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/ // © cesarpieres72 //@version=5 strategy("Estrategia SMA y Ganancias Acumuladas con Stop Loss", shorttitle="SMA_Ganancias", overlay=true) // Definir las variables de las medias móviles sma1_length = input(1, title="SMA 1 Longitud") sma2_length = input(3, title="SMA 2 Longitud") // Calcular las medias móviles sma1 = ta.sma(close, sma1_length) sma2 = ta.sma(close, sma2_length) // Condiciones para las señales de compra y venta longCondition = ta.crossover(sma1, sma2) shortCondition = ta.crossunder(sma1, sma2) // Acumular las ganancias var float profitAccumulated = 0.0 var float lastTradeProfit = na if (longCondition) strategy.entry("Buy", strategy.long) lastTradeProfit := strategy.netprofit - (profitAccumulated + lastTradeProfit) profitAccumulated := strategy.netprofit if (shortCondition) strategy.entry("Sell", strategy.short) lastTradeProfit := strategy.netprofit - (profitAccumulated + lastTradeProfit) profitAccumulated := strategy.netprofit // Mostrar las señales en el gráfico plot(sma1, color=color.blue, title="SMA 1") plot(sma2, color=color.red, title="SMA 2") // Añadir stop loss stopLossPips = input(5000, title="Stop Loss (en pips)") stopLossPrice = strategy.position_avg_price * (1 - stopLossPips * syminfo.mintick) strategy.exit("SL", "Buy", stop=stopLossPrice)