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