Тенденция системы SMA в соответствии со стратегией

Автор:Чао Чжан, Дата: 2024-02-23 12:29:51
Тэги:

img

Обзор

Стратегия называется SMA System Trend Following Strategy. Основная идея заключается в построении торговых сигналов на основе линий SMA с различными длинами параметров и вхождении на рынок в точку прерывания, с механизмом остановки потери для контроля риска.

Принцип стратегии

Стратегия использует две линии 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 может часто пересекаться, что приводит к ненужным торговым сигналам. В этот момент могут произойти большие потери без эффективного стоп-лосса.

Руководство по оптимизации

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

  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)


Больше