Готовые торговые стратегии машинного обучения


Дата создания: 2024-01-29 11:20:42 Последнее изменение: 2024-01-29 11:20:42
Копировать: 0 Количество просмотров: 401
1
Подписаться
1166
Подписчики

Готовые торговые стратегии машинного обучения

Обзор

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

Стратегический принцип

Эта стратегия основана на следующих принципах:

  1. Уровень хулл для определения направления рыночных тенденций
  2. Использование EMA для определения краткосрочных и среднесрочных тенденций
  3. Ключевые позиции SUPPORT/RESISTANCE определяются с помощью K-линейного объективного канала
  4. Использование многоциклических цен открытия и закрытия SECURITY для принятия решений

В частности, стратегия рисует среднюю линию корпуса, 13-циклическую ЭМА и 21-циклическую ЭМА. Популярность ЭМА определяет направление краткосрочной и среднесрочной тенденции. В сочетании с средней линией корпуса определяется тенденция более длительного периода. Это дает указание на направление последующих торговых сигналов.

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

Наконец, стратегия вызывает 60-циклическую цену открытия и цену закрытия, которая создает сигнал покупки, когда цена закрытия пересекает цену открытия, и сигнал продажи, когда она пересекает цену закрытия. Таким образом, вся логика торговли завершена.

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

Основным преимуществом этой стратегии является объединение машинного обучения и технического анализа, что позволяет реализовать автоматизированную торговую программу с четкой логикой, с регулируемыми параметрами и простой в использовании.

  1. Комплексные показатели для повышения точности сигналов

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

  1. Гибкая параметровая настройка

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

  1. Автоматизированные торговые сигналы

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

  1. Визуализированное представление

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

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

Несмотря на многостороннюю оптимизацию этой стратегии, существуют некоторые возможные риски:

  1. Невозможно отследить масштабы событий

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

  1. Сигнальная погрешность

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

  1. Риски многопространственного MIX

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

  1. Оптимизация риска

Настройка параметров слишком сложна и рискует быть оптимизированной. Это требует упрощения системы, контроля количества комбинаций параметров.

Направление оптимизации стратегии

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

  1. Добавить дополнительные сигналы

В дополнение к существующим показателям можно ввести дополнительные показатели, такие как BOLL-каналы, показатели KD и т. Д., чтобы обогатить основы для системного суждения.

  1. Применение моделей глубокого обучения

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

  1. Основные данные

Добавление базовых факторов, таких как макроэкономические данные и политическая информация, для оптимизации макроциклических решений.

  1. Управление рисками и позициями

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

Подвести итог

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

Исходный код стратегии
/*backtest
start: 2023-01-22 00:00:00
end: 2024-01-28 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title='Ali Jitu Abus', shorttitle='Ali_Jitu_Abis_Strategy', overlay=true, pyramiding=0, initial_capital=1000, currency=currency.USD)

//Candle body resistance Channel-----------------------------//
len = 34
src = input(close, title="Candle body resistance channel")
out = sma(src, len)
last8h = highest(close, 13)
lastl8 = lowest(close, 13)
bearish = cross(close,out) == 1 and falling(close, 1)
bullish = cross(close,out) == 1 and rising(close, 1)
channel2=input(false, title="Bar Channel On/Off")
ul2=plot(channel2?last8h:last8h==nz(last8h[1])?last8h:na, color=black, linewidth=1, style=linebr, title="Candle body resistance level top", offset=0)
ll2=plot(channel2?lastl8:lastl8==nz(lastl8[1])?lastl8:na, color=black, linewidth=1, style=linebr, title="Candle body resistance level bottom", offset=0)
//fill(ul2, ll2, color=black, transp=95, title="Candle body resistance Channel")

//-----------------Support and Resistance 
RST = input(title='Support / Resistance length:',  defval=10) 
RSTT = valuewhen(high >= highest(high, RST), high, 0)
RSTB = valuewhen(low <= lowest(low, RST), low, 0)
RT2 = plot(RSTT, color=RSTT != RSTT[1] ? na : red, linewidth=1, offset=+0)
RB2 = plot(RSTB, color=RSTB != RSTB[1] ? na : green, linewidth=1, offset=0)

//--------------------Trend colour ema------------------------------------------------// 
src0 = close, len0 = input(13, minval=1, title="EMA 1")
ema0 = ema(src0, len0)
direction = rising(ema0, 2) ? +1 : falling(ema0, 2) ? -1 : 0
plot_color = direction > 0  ? lime: direction < 0 ? red : na
plot(ema0, title="EMA", style=line, linewidth=1, color = plot_color)

//-------------------- ema 2------------------------------------------------//
src02 = close, len02 = input(21, minval=1, title="EMA 2")
ema02 = ema(src02, len02)
direction2 = rising(ema02, 2) ? +1 : falling(ema02, 2) ? -1 : 0
plot_color2 = direction2 > 0  ? lime: direction2 < 0 ? red : na
plot(ema02, title="EMA Signal 2", style=line, linewidth=1, color = plot_color2)

//=============Hull MA//
show_hma = input(false, title="Display Hull MA Set:")
hma_src = input(close, title="Hull MA's Source:")
hma_base_length = input(8, minval=1, title="Hull MA's Base Length:")
hma_length_scalar = input(5, minval=0, title="Hull MA's Length Scalar:")
hullma(src, length)=>wma(2*wma(src, length/2)-wma(src, length), round(sqrt(length)))
plot(not show_hma ? na : hullma(hma_src, hma_base_length+hma_length_scalar*6), color=black, linewidth=2, title="Hull MA")

//============ signal Generator ==================================//
Period=input('60')
ch1 = request.security(syminfo.tickerid, Period, open)
ch2 = request.security(syminfo.tickerid, Period, close)
longCondition = crossover(request.security(syminfo.tickerid, Period, close),request.security(syminfo.tickerid, Period, open))
if (longCondition)
    strategy.entry("BUY", strategy.long)
shortCondition = crossunder(request.security(syminfo.tickerid, Period, close),request.security(syminfo.tickerid, Period, open))
if (shortCondition)
    strategy.entry("SELL", strategy.short)

plot(request.security(syminfo.tickerid, Period, close), color=red, title="Period request.security Close")
plot(request.security(syminfo.tickerid, Period, open), color=green, title="Period request.security Open")

///////////////////////////////////////////////////////////////////////////////////////////