Динамическая стратегия остановки потерь и получения прибыли, основанная на VWAP и межвременных сигналах

Автор:Чао Чжан, Дата: 2024-03-08 17:37:21
Тэги:

img

Обзор

Эта стратегия использует VWAP (Volume Weighted Average Price) из ежедневных временных рамок в качестве сигнала для входа и выхода сделок. Когда цена закрытия пересекает выше VWAP, она запускает длинный вход со стоп-лосом, установленным на уровне предыдущих свечей, если он ниже VWAP, и целевая цена устанавливается на 3 пункта выше входной цены. Напротив, когда цена закрытия пересекает ниже VWAP, она запускает короткий вход со стоп-лосом, установленным на уровне предыдущих свечей, если он выше VWAP, и целевая цена устанавливается на 3 пункта ниже входной цены. Эта стратегия не включает условия выхода, поэтому сделки остаются открытыми до наступления противоположного сигнала.

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

  1. Получить данные VWAP из ежедневных временных рамок, которые служат основой для определения тренда и торговых сигналов.
  2. Определить, пересекает ли текущая цена закрытия выше/ниже VWAP, выступая в качестве триггера для длинных и коротких записей соответственно.
  3. Для длинных записей, если предыдущий минимум свечи находится ниже VWAP, он используется в качестве стоп-лосса; в противном случае используется сам VWAP.
  4. После входа в позицию, установите фиксированный уровень получения прибыли в 3 пункта.
  5. Стратегия продолжает работать до тех пор, пока обратный сигнал не запустит позицию для закрытия и открытия новой.

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

Анализ преимуществ

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

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

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

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

  1. Фильтрация трендов: включить другие индикаторы тренда, такие как скользящие средние, MACD и т. Д., Чтобы подтвердить тенденции и улучшить надежность сигнала.
  2. Динамическая прибыль: динамическая корректировка показателей прибыли на основе волатильности рынка, ATR или других показателей, чтобы лучше адаптироваться к рыночным условиям.
  3. Размер позиции: динамически регулируйте размер позиции для каждой сделки на основе размера счета, толерантности к риску и других факторов.
  4. Выбор торговой сессии: выбирать оптимальные торговые сессии на основе характеристик и ликвидности инструмента для повышения эффективности стратегии.

Резюме

Эта стратегия использует кросс-временные данные VWAP для определения тренда и запуска сигнала при использовании динамических стоп-потерь и фиксированных точек получения прибыли для контроля рисков и блокировки прибыли. Это простая и эффективная количественная торговая стратегия. Благодаря оптимизации фильтрации тренда, динамической прибыли, размеров позиций и выбора торговой сессии можно еще больше повысить надежность и потенциал прибыли стратегии. Однако при применении стратегии на практике следует обратить внимание на характеристики рынка, торговые затраты и оптимизацию параметров для достижения лучшей стратегии производительности.


/*backtest
start: 2024-03-06 00:00:00
end: 2024-03-07 00:00:00
period: 45m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy('Pine Script Tutorial Example Strategy 1', overlay=true, initial_capital=1000, default_qty_value=100, default_qty_type=strategy.percent_of_equity)
// fastEMA = ta.ema(close, 24)
// slowEMA = ta.ema(close, 200)
// Higher Time Frame
float sl = na
float tgt = na
posSize = 1
vwap_1d = request.security(syminfo.tickerid, "1D", ta.vwap(close))
// plot(vwap_1d)

// To avoid differences on historical and realtime bars, you can use this technique, which only returns a value from the higher timeframe on the bar after it completes:
// indexHighTF = barstate.isrealtime ? 1 : 0
// indexCurrTF = barstate.isrealtime ? 0 : 1
// nonRepaintingVWAP = request.security(syminfo.tickerid, "1D", close[indexHighTF])[indexCurrTF]
// plot(nonRepaintingVWAP, "Non-repainting VWAP")

enterLong = ta.crossover(close, vwap_1d)
exitLong  = ta.crossunder(close, vwap_1d)

enterShort = ta.crossunder(close, vwap_1d)
exitShort  = ta.crossover(close, vwap_1d)

if enterLong
    sl := low[1]>vwap_1d ?low[1]:vwap_1d
    tgt:=close+3
    strategy.entry("EL", strategy.long, qty=posSize)
    strategy.exit('exitEL', 'EL', stop=sl, limit=tgt)
if enterShort
    sl := high[1]<vwap_1d ?high[1]:vwap_1d
    tgt := close-3
    strategy.entry("ES", strategy.short, qty=posSize)
    strategy.exit('exitES', 'ES', stop=sl, limit=tgt)

// if exitLong
//     strategy.close("EL")
// if exitShort
//     strategy.close("ES")





// goLongCondition1 = ta.crossover(close, vwap_1d)
// timePeriod = time >= timestamp(syminfo.timezone, 2021, 01, 01, 0, 0)
// notInTrade = strategy.position_size <= 0
// if goLongCondition1 and timePeriod and notInTrade
//     stopLoss = low[1]
//     takeProfit = close+3
//     strategy.entry('long', strategy.long)
//     strategy.exit('exit', 'long', stop=stopLoss, limit=takeProfit)
plot(close, color=color.new(#00c510, 0))
plot(vwap_1d, color=color.new(#f05619, 0))
plot(sl, color=color.new(#fbff00, 0))
plot(tgt, color=color.new(#00e1ff, 0))

Больше