Стратегия количественного развития JBravo

Автор:Чао Чжан, Дата: 2023-12-27 14:53:07
Тэги:

Обзор стратегии

Стратегия количественного тренда JBravo - это стратегия, основанная на скользящих средних. Она использует 9-дневную простую скользящую среднюю, 20-дневную экспоненциальную скользящую среднюю и 180-дневную простую скользящую среднюю для определения направления тренда рынка, а также окончательных сигналов купли и продажи.

Название стратегии вдохновлено персонажем мультфильма Джонни Браво, который представляет собой уверенное и решительное торговое решение.

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

Сигнал покупки генерируется, когда цена закрытия пересекает 9-дневную простую скользящую среднюю; Сигнал продажи генерируется, когда цена закрытия пересекает 20-дневную экспоненциальную скользящую среднюю.

Если 9-дневные, 20-дневные и 180-дневные скользящие средние все движутся вверх, и 9-дневная скользящая средняя выше 20-дневной скользящей средней, 20-дневная скользящая средняя выше 180-дневной скользящей средней, генерируется сильный сигнал покупки.

Если 9-дневные, 20-дневные и 180-дневные скользящие средние все движутся вниз, и 9-дневная скользящая средняя находится ниже 20-дневной скользящей средней, 20-дневная скользящая средняя находится ниже 180-дневной скользящей средней, генерируется сильный сигнал продажи.

Когда линия средневзвешенной цены объема пересекает 20-дневную экспоненциальную скользящую среднюю вверх, генерируется сигнал GoGo Long; когда линия средневзвешенной цены объема пересекает 20-дневную экспоненциальную скользящую среднюю вниз, генерируется сигнал GoGo Short.

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

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

По сравнению с использованием только скользящих средних, эта стратегия добавляет агрессивный механизм входа GoGo Juice, который может получить более высокую доходность при сильных тенденциях.

В целом эта стратегия имеет небольшие затраты и стабильную прибыльность.

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

Несмотря на то, что стратегия увеличивает силу входов, точки остановки потери часто могут быть задействованы на боковых рынках.

Это означает, что стратегия может генерировать определенное количество виртуальных сделок, которые на самом деле не отражают движения рыночных цен. Кроме того, агрессивные записи также увеличивают риск потерь.

Чтобы уменьшить риски, мы можем скорректировать цикл скользящих средних по мере необходимости; или добавить модуль остановки потери, чтобы остановить потерю, когда потери достигают определенного уровня.

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

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

  1. Настройка параметров скользящей средней и оптимизация параметров цикла для поиска оптимальной комбинации параметров

  2. Добавление показателей объема для предотвращения ложных сигналов во время бурных колебаний цен

  3. Увеличить количество модулей стоп-лосса и установить правила выхода для контроля по торговым потерям

  4. Объединить выбор горячих секторов рынка, чтобы сделать стратегии более целевыми

  5. Оптимизировать пропорции позиции открытия, оптимизировать разные шкалы для разных параметров

Заключение

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")

Больше