Стратегия следования за трендом на основе системы скользящей средней SMA


Дата создания: 2024-02-23 12:29:51 Последнее изменение: 2024-02-23 12:29:51
Копировать: 0 Количество просмотров: 613
1
Подписаться
1617
Подписчики

Стратегия следования за трендом на основе системы скользящей средней SMA

Обзор

Эта стратегия, получившая название “Стратегия слежения за трендом”, основана на системе среднелинейных SMA, основной идеей которой является создание торгового сигнала с использованием среднелинейных SMA различных длин параметров, ввод в точку прорыва, а также контроль риска в сочетании с механизмом остановки.

Стратегический принцип

Стратегия использует две средние линии SMA, SMA1 и SMA2. Среди них SMA1 длиной 1 и SMA2 длиной 3. С помощью вычисления этих двух средних линий SMA, стратегия генерирует сигнал покупки при прохождении SMA2 над SMA1 и сигнал продажи при прохождении SMA2 под SMA1, чтобы захватить тенденцию цены.

В частности, стратегия использует функции ta.crossover и ta.crossunder, чтобы определить прорывную связь средней линии SMA, в результате чего образуются буровые переменные longCondition и shortCondition. Когда longCondition истинно, генерируется сигнал покупки; когда shortCondition истинно, генерируется сигнал продажи. Стратегия совершает вход в точку сигнала и одновременно обновляет переменные profitAccumulated и lastTradeProfit для отслеживания накопленной прибыли.

Для контроля риска в стратегии также установлен механизм остановки, основанный на фиксированном количестве очков. Начиная с точки входа, если цена достигнет установленной точки остановки, то будет вызвана ликвидация ордера на остановку.

Стратегические преимущества

Наибольшее преимущество этой стратегии заключается в том, что она использует функцию отслеживания тенденций средней средней линии SMA, чтобы эффективно улавливать изменения в ценовых тенденциях. По сравнению с однолинейной стратегией, двулинейная стратегия может использовать перекрестную связь между равнолинейными линиями для определения направления тенденции, что создает торговый сигнал. Кроме того, стратегия включает в себя механизм остановки потерь, который может эффективно контролировать одиночные потери.

Анализ рисков

Основным риском, связанным с этой стратегией, является то, что она может легко создавать ложные сигналы. При колебаниях цены, средняя линия SMA может часто пересекаться, что приводит к ненужным торговым сигналам. В этом случае, если нет эффекта остановки, могут быть большие потери.

Направление оптимизации

Эта стратегия может быть оптимизирована в следующих аспектах:

  1. Настройка параметров SMA в поисках оптимальной комбинации средней длины линии. Оптимальные параметры можно получить путем повторного измерения.

  2. Добавление фильтрационных условий, установка условий прорыва цены вблизи пересечения равномерных линий, чтобы избежать ложных сигналов.

  3. Можно тестировать различные типы сбоев, такие как сбои на передвижении, сбои на подвеске и т. д.

  4. Повышение контроля над размером позиции и оптимизация эффективности использования средств.

Подвести итог

В целом, эта стратегия является типичной стратегией отслеживания тенденций. Она использует прорывную связь средней линии 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)