В процессе загрузки ресурсов... загрузка...

Динамическая стратегия стоп-лосса и прибыли Bollinger Bands

Автор:Чао Чжан, Дата: 2024-05-17 15:11:50
Тэги:SMA

img

Обзор

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

  1. Вычислите верхнюю, среднюю и нижнюю полосы Боллинджера.
  2. Сгенерировать сигнал покупки, когда цена пересекает нижнюю полосу, и сигнал продажи, когда цена пересекает верхнюю полосу.
  3. При продаже устанавливайте уровень стоп-лосса по самой высокой цене за прошедший период и пока не устанавливайте уровень получения прибыли.
  4. Сбросить уровень прибыли на пустой, когда появляется новый сигнал покупки или продажи.

Преимущества стратегии

  1. Болинджерские полосы являются зрелым и широко используемым техническим индикатором, который может эффективно отражать волатильность рынка.
  2. Динамические параметры стоп-лосса и прибыли могут адаптироваться к различным рыночным условиям, улучшая адаптивность стратегии.
  3. Установление уровня стоп-лосса может эффективно контролировать риск и предотвращать чрезмерные потери от одной сделки.
  4. Логика стратегии ясна и легко понятна и реализована.

Стратегические риски

  1. Стратегия не учитывает направление тренда и может упустить возможности на рынках с сильным трендом.

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

  1. Внедрить индикаторы оценки тренда, такие как скользящие средние, для торговли в направлении тренда и улучшить адаптивность стратегии к тренду.
  2. Добавление дополнительных условий фильтрации сигналов покупки и продажи, таких как объем торговли и волатильность, для повышения надежности сигналов.
  3. Оптимизировать параметры, такие как длина и множитель стандартного отклонения полос Боллинджера, чтобы найти лучшую комбинацию параметров.

Резюме


/*backtest
start: 2024-04-01 00:00:00
end: 2024-04-30 23:59:59
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Bollinger Bands Strategy", overlay=true)

// Bollinger Bands settings
length = 20
src = close
mult = 2.0

// Calculate Bollinger Bands
basis = ta.sma(src, length)
dev = mult * ta.stdev(src, length)
upper = basis + dev
lower = basis - dev

// Plot Bollinger Bands
plot(basis, color=color.blue, title="Middle Band")
plot(upper, color=color.red, title="Upper Band")
plot(lower, color=color.green, title="Lower Band")

// Trade logic
// Buy when the price crosses below the lower Bollinger Band
buySignal = ta.crossover(lower, src)
// Sell when the price crosses above the upper Bollinger Band
sellSignal = ta.crossover(src, upper)

// Define stop loss and take profit levels
var float stopLoss = na
var float takeProfit = na

// Calculate stop loss and take profit levels
if (buySignal)
    stopLoss := ta.lowest(low, length)
    takeProfit := na
if (sellSignal)
    stopLoss := ta.highest(high, length)
    takeProfit := na

// Update take profit on new signals
if (buySignal)
    takeProfit := na
if (sellSignal)
    takeProfit := na

// Execute trades
if (buySignal)
    strategy.entry("Buy", strategy.long, stop=stopLoss, limit=takeProfit)

if (sellSignal)
    strategy.entry("Sell", strategy.short, stop=stopLoss, limit=takeProfit)

// Plot signals on chart
plotshape(series=buySignal, location=location.belowbar, color=color.green, style=shape.labelup, text="Buy", title="Buy Signal")
plotshape(series=sellSignal, location=location.abovebar, color=color.red, style=shape.labeldown, text="Sell", title="Sell Signal")

// Alert conditions
alertcondition(buySignal, title="Buy Alert", message="Buy Signal detected")
alertcondition(sellSignal, title="Sell Alert", message="Sell Signal detected")

Связанные

Больше