Стратегия Трампа-Боллинджера EMAcandlestick

Автор:Чао Чжан, Дата: 2023-10-07 15:30:27
Тэги:

Обзор

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

Принципы

Стратегия состоит из следующих частей:

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

  2. ЕМА Вычислить 21-дневную экспоненциальную скользящую среднюю и генерировать торговые сигналы, когда цена пересекает EMA.

  3. Модели свечей Определить точки перемены цен, такие как нижнее покрытие темными облаками и верхний формат пирсинга, чтобы запустить торговлю.

  4. Игровые игры с двумя линиями Идите длинным и коротким одновременно, основываясь на сигналах от Боллинджера, EMA кроссовера и моделей свечей.

Логика такова:

Используйте полосы Боллинджера, чтобы определить потенциальные точки переворота, идти коротко на верхней рельсе и длинный на нижней рельсе. Вычислить 21-дневную EMA и идти долго на золотом кресте, идти коротко на кресте смерти. Также используйте шаблоны свечей, чтобы определить перевороты, идти долго на нижнем темном облаке и короткий на верхнем пирсинге. Объедините все три сигнала, чтобы принять окончательные решения о двойном направлении торговли.

Стратегия включает в себя несколько подтверждающих сигналов для повышения эффективности торговых решений.

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

Основными преимуществами этой стратегии являются:

  1. Улучшенная точность при многократном подтверждении сигнала

Использование Bollinger, EMA и свечей вместе повышает точность путем проверки сигналов. Это помогает избежать ложных сигналов и ошибочных сделок.

  1. Своевременное реагирование и обнаружение изменений

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

  1. Более высокая рентабельность при торговле двумя линиями

Удерживая как длинные, так и короткие позиции, вы получаете прибыль от больших движений в обоих направлениях.

  1. Гибкость для краткосрочной торговли

Краткосрочные Bollinger и EMA позволяют фиксировать краткосрочные движения, подходящие для частой торговли и реагирующие на высокочастотные колебания.

  1. Непосредственное использование и простая эксплуатация

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

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

Потенциальными рисками являются:

  1. Возможная последовательная стоп-потеря

Сигналы Bollinger, EMA и Candlestick могут вызывать последовательные стоп-лосс.

  1. Более высокие риски при двойной торговле

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

  1. Требуется тщательный мониторинг для краткосрочной торговли

Частая краткосрочная торговля требует тщательного отслеживания рынка.

  1. Ограниченное пространство оптимизации

Болинджер и EMA имеют относительно небольшое пространство оптимизации.

  1. Обычные шаблоны светильников могут быть неясными

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

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

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

  1. Интегрировать больше индикаторных сигналов

Добавляя другие индикаторы, такие как KD, MACD диверсифицирует источники сигналов и улучшает точность принятия решений.

  1. Включить машинное обучение

Использовать алгоритмы ML для анализа исторических данных и увеличения или замены некоторых индикаторных сигналов для уменьшения ручного вмешательства.

  1. Оптимизировать остановку прибыли/убытка

Внедрить адаптивный стоп-профит на основе производительности и отслеживание стоп-профита для снижения риска.

  1. Улучшение управления рисками

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

  1. Количественное обратное тестирование и оптимизация

Используйте обратные тесты и бумажную торговлю для неоднократной оптимизации параметров и оказания помощи в принятии решений о торговле в режиме реального времени.

  1. Автоматизированная торговля

Параметризировать стратегию на основе результатов бэкстеста и включить в автоматизированную торговую систему для выполнения без рук.

Заключение

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


/*backtest
start: 2022-09-30 00:00:00
end: 2023-10-06 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//Design by MrPhu in August,10,2018
strategy("TrumpShipper_Long_Short V26", overlay=true)
filterFractals = input(true, title=" Follow Code #Trump On/Off")
dt = 0.0001
confidence=(request.security(syminfo.tickerid, 'D', close)-request.security(syminfo.tickerid, 'D', close[1]))/request.security(syminfo.tickerid, 'D', close[1])
prediction = confidence > dt ? true : confidence < -dt ? false : prediction[1]

if (prediction)
    strategy.exit("Close", "Short ")
    strategy.entry("Long ", strategy.long)

if (not prediction)
    strategy.exit("Close", "Long ")
    strategy.entry("Short ", strategy.short)
///////////Bollinger Band///////////////
length = 20
crc = close, title="Source"
mult = 2.0
basis = sma(crc, length)
dev = mult * stdev(crc, length)
upper = basis + dev
lower = basis - dev
spanColor = prediction ? green : red, transp=90

p1 = plot(upper, title="Short", style=line, linewidth=1, color=spanColor)
p2 = plot(lower, title="Long", style=line, linewidth=1, color=spanColor)

fill(p1, p2, color=spanColor, transp=90, title="Fill")

/////////////
Optional_TimeFrame = 'D'

M_HIGH = request.security(syminfo.tickerid, Optional_TimeFrame, high)
M_OPEN = request.security(syminfo.tickerid, Optional_TimeFrame, open)
M_LOW = request.security(syminfo.tickerid, Optional_TimeFrame, low)

H_RANGE = M_HIGH-M_OPEN
L_RANGE = M_OPEN-M_LOW

H_236 = M_HIGH - H_RANGE * 0.236
H_382 = M_HIGH - H_RANGE * 0.382
H_500 = M_HIGH - H_RANGE * 0.500
H_618 = M_HIGH - H_RANGE * 0.618
H_764 = M_HIGH - H_RANGE * 0.764

L_236 = M_LOW + L_RANGE * 0.236
L_382 = M_LOW + L_RANGE * 0.382
L_500 = M_LOW + L_RANGE * 0.500
L_618 = M_LOW + L_RANGE * 0.618
L_764 = M_LOW + L_RANGE * 0.764

pl1=plot(M_HIGH, color=M_HIGH != M_HIGH[1] ?na:black, style=line, linewidth=1, transp=80)

pl2=plot(H_236, color=H_236 != H_236[1] ?na:gray, style=line, linewidth=1, transp=80)
pl3=plot(H_382, color=H_382 != H_382[1] ?na:black, style=line, linewidth=1, transp=80)
pl4=plot(H_500, color=H_500 != H_500[1] ?na:red, style=line, linewidth=1, transp=80)
pl5=plot(H_618, color=H_618 != H_618[1] ?na:gray, style=line, linewidth=1, transp=80)
pl6=plot(H_764, color=H_764 != H_764[1] ?na:gray, style=line, linewidth=1, transp=80)

pl7=plot(M_OPEN, color=M_OPEN != M_OPEN[1] ?na:blue, style=line, linewidth=2)

pl8=plot(L_236, color=L_236 != L_236[1] ?na:gray, style=line, linewidth=1, transp=80)
pl9=plot(L_382, color=L_382 != L_382[1] ?na:black, style=line, linewidth=1, transp=80)
pl10=plot(L_500, color=L_500 != L_500[1] ?na:red, style=line, linewidth=1, transp=80)
pl11=plot(L_618, color=L_618 != L_618[1] ?na:black, style=line, linewidth=1, transp=80)
pl12=plot(L_764, color=L_764 != L_764[1] ?na:gray, style=line, linewidth=1, transp=80)

pl13=plot(M_LOW, color=M_LOW != M_LOW[1] ?na:black, style=line, linewidth=1, transp=80)

SHOW_MA = false
MA_SRC = hlc3
MA_LENGTH = 21

_MA = ema(MA_SRC, MA_LENGTH)
pl14=plot(not SHOW_MA ? na : _MA, color=teal, linewidth=2)

SHOW_SIGNALS = true

BUYX(_F) => cross(_F, MA_SRC) and rising(_MA, 1)
SELX(_F) => cross(_F, MA_SRC) and falling(_MA, 1)

SEL_SIGNAL = SELX(H_236) or SELX(H_382) or SELX(H_500) or SELX(H_618) or SELX(H_764) or SELX(L_236) or SELX(L_382) or SELX(L_500) or SELX(L_618) or SELX(H_764)

BUY_SIGNAL = BUYX(H_236) or BUYX(H_382) or BUYX(H_500) or BUYX(H_618) or BUYX(H_764) or BUYX(L_236) or BUYX(L_382) or BUYX(L_500) or BUYX(L_618) or BUYX(H_764)

//================= Chart 30m =================/////
//Jurij
h_left = 10
h_right = 10
//barCount = nz(barCount[1]) + 1
//check history and realtime PTZ
h_left_low = lowest(h_left)
h_left_high = highest(h_left)
newlow = low <= h_left_low
newhigh = high >= h_left_high
central_bar_low = low[h_right + 1]
central_bar_high = high[h_right + 1]
full_zone_low = lowest(h_left + h_right + 1)
full_zone_high = highest(h_left + h_right + 1)
central_bar_is_highest = central_bar_high >= full_zone_high
central_bar_is_lowest = central_bar_low <= full_zone_low
plotchar(central_bar_is_highest ? -1 : 0, offset=-h_right-1 ,color=red, text="Top")
plotchar(central_bar_is_lowest ? 1 : 0, offset=-h_right-1 ,location=location.belowbar, color=green, text="Bottom")

Больше