Стратегия количественного тренда JBravo - это стратегия, основанная на скользящих средних. Она использует 9-дневную простую скользящую среднюю, 20-дневную экспоненциальную скользящую среднюю и 180-дневную простую скользящую среднюю для определения направления тренда рынка, а также окончательных сигналов купли и продажи.
Название стратегии вдохновлено персонажем мультфильма Джонни Браво, который представляет собой уверенное и решительное торговое решение.
Сигнал покупки генерируется, когда цена закрытия пересекает 9-дневную простую скользящую среднюю; Сигнал продажи генерируется, когда цена закрытия пересекает 20-дневную экспоненциальную скользящую среднюю.
Если 9-дневные, 20-дневные и 180-дневные скользящие средние все движутся вверх, и 9-дневная скользящая средняя выше 20-дневной скользящей средней, 20-дневная скользящая средняя выше 180-дневной скользящей средней, генерируется сильный сигнал покупки.
Если 9-дневные, 20-дневные и 180-дневные скользящие средние все движутся вниз, и 9-дневная скользящая средняя находится ниже 20-дневной скользящей средней, 20-дневная скользящая средняя находится ниже 180-дневной скользящей средней, генерируется сильный сигнал продажи.
Когда линия средневзвешенной цены объема пересекает 20-дневную экспоненциальную скользящую среднюю вверх, генерируется сигнал
Эта стратегия сочетает в себе идеи следующего тренда и стратегии прорыва. Движущиеся средние могут четко определить направление тенденции рынка и уменьшить вероятность ошибочных сделок. В то же время, она гибко использует индикатор VWAP для определения времени входа, контролируя риски, одновременно способствуя прорывам на рынке.
По сравнению с использованием только скользящих средних, эта стратегия добавляет агрессивный механизм входа
В целом эта стратегия имеет небольшие затраты и стабильную прибыльность.
Несмотря на то, что стратегия увеличивает силу входов, точки остановки потери часто могут быть задействованы на боковых рынках.
Это означает, что стратегия может генерировать определенное количество виртуальных сделок, которые на самом деле не отражают движения рыночных цен. Кроме того, агрессивные записи также увеличивают риск потерь.
Чтобы уменьшить риски, мы можем скорректировать цикл скользящих средних по мере необходимости; или добавить модуль остановки потери, чтобы остановить потерю, когда потери достигают определенного уровня.
Стратегия может быть оптимизирована в следующих направлениях:
Настройка параметров скользящей средней и оптимизация параметров цикла для поиска оптимальной комбинации параметров
Добавление показателей объема для предотвращения ложных сигналов во время бурных колебаний цен
Увеличить количество модулей стоп-лосса и установить правила выхода для контроля по торговым потерям
Объединить выбор горячих секторов рынка, чтобы сделать стратегии более целевыми
Оптимизировать пропорции позиции открытия, оптимизировать разные шкалы для разных параметров
JBravo Quantitative Trend Strategy объединяет в себе анализы скользящих средних и суждение о тренде VWAP. Она преследует стабильную долгосрочную прибыль, имея при этом определенную степень агрессивных торговых механизмов. Стратегия подходит для средне-долгосрочных холдингов, с средне-высокими рисками и высокой доходностью. Она может стать частью стратегий торговли портфелем с очень хорошей адаптивностью рынка.
[/trans]
/*backtest start: 2022-12-20 00:00:00 end: 2023-12-26 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © bradvaughn //@version=4 strategy("JBravo Swing", overlay = false) var buy_in_progress = false //Moving Averages smaInput1 = input(title="Display SMA 9", type=input.bool, defval=true) smaInput2 = input(title="Display EMA 20", type=input.bool, defval=true) smaInput4 = input(title="Display SMA 180", type=input.bool, defval=true) colored_180 = input(false, title="Color-code 180 trend direction") vwapInput = input(title="Display VWAP", type=input.bool, defval=true) sma9 = sma(close, 9) ema20 = ema(close, 20) sma180 = sma(close, 180) //Plot Moving Averages plot(smaInput1 ? sma9 : na, color= color.red, title="SMA 9") plot(smaInput2 ? ema20 : na, color = color.yellow, title="EMA 20") // Plot VWAP vwap1 = vwap(hlc3) plot(vwapInput ? vwap1 : na, color = color.blue, title="VWAP") vwaplong = vwap1 > ema20 vwapshort = vwap1 < ema20 //Color SMA 180 trend direction if selected sma180_uptrend = sma(close, 180) > sma(close[2], 180) colr = sma180_uptrend == true or colored_180 == false ? color.white : colored_180 == true ? color.gray : na plot(smaInput4 ? sma180 : na, color = colr, title="SMA 180") //Get value of lower end of candle buyLow = iff(lowest(open, 1) < lowest(close, 1), lowest(open, 1), lowest(close, 1)) sellLow = lowest(close, 1) // Find the lower MA for crossover sell condition sellma = iff((sma9<ema20), sma9, ema20) //SMA 9 trend direction sma9_uptrend = sma(close, 9) > sma(close[2], 9) //EMA 20 trend direction ema20_uptrend = ema(close, 20) > sma(close[2], 20) //Buy or sell if conditions are met // Buy when the candle low is above the SMA9 // Sell when the candle low is below the lower of SMA9 and EMA20 Buy = iff(buy_in_progress == false and buyLow > sma9 == true, true, false) Sell = iff(buy_in_progress == true and sellLow < sellma == true, true, false) // Determine stong buy and strong sell conditions. // If moving averages are all up, then this will qualify a buy as a strong buy. // If the moving averages are not up (ie. down) then this will qualify a sell as a strong sell StrongBuy = iff (Buy and sma9_uptrend and sma180_uptrend and ema20_uptrend and (sma9 > ema20) and (ema20 > sma180), true, false) StrongSell = iff (Sell and not sma9_uptrend and not sma180_uptrend and not ema20_uptrend and (sma9 < ema20) and (ema20 < sma180), true, false) //Update Trading status if bought or sold if Buy buy_in_progress := true if Sell buy_in_progress := false // Clear Buy and Sell conditions if StrongBuy or StrongSell conditions exist. // This disables plotting Buy and Sell conditions if StrongBuy Buy := false if StrongSell Sell := false //Display BUY/SELL indicators plotshape(Buy,title="Buy", color=color.green, style=shape.arrowup,location=location.belowbar, text="Buy") plotshape(StrongBuy,title="Strong Buy", color=color.green, style=shape.arrowup,location=location.belowbar, text="Strong Buy") plotshape(Sell,title="Sell", color=color.red, style=shape.arrowdown,text="Sell") plotshape(StrongSell,title="Strong Sell", color=color.red, style=shape.arrowdown,text="Strong Sell") strategy.entry("GoGo Long", strategy.long, 1, when=vwaplong and vwapInput) strategy.entry("GoGo Short", strategy.short, 1, when=vwapshort and vwapInput) strategy.close("GoGo Long", when = vwapshort and vwapInput) strategy.close("GoGo Short", when = vwaplong and vwapInput) alertcondition(Buy, title="Buy Signal", message="Buy") alertcondition(Sell, title="Sell Signal", message="Sell")