Стратегии технических индикаторов, стратегии управления рисками, адаптивные стратегии следования за трендом

EMA SDI
Дата создания: 2024-07-29 17:25:26 Последнее изменение: 2024-07-29 17:25:26
Копировать: 0 Количество просмотров: 470
1
Подписаться
1617
Подписчики

Стратегии технических индикаторов, стратегии управления рисками, адаптивные стратегии следования за трендом

Обзор

Стратегия является адаптивной системой для отслеживания трендов, основанной на индексах, скользящих средних ((EMA) и скользящих показателях направления ((SDI)). Она объединяет в себе несколько технических показателей и инструментов управления рисками, предназначенных для захвата рыночных тенденций и контроля риска. Стратегия использует перекрестки быстрого и медленного EMA, а также направления SDI для определения рыночных тенденций и, в соответствии с этим, генерирует сигналы покупки и продажи.

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

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

  1. Расчетный показатель:

    • Вычисление быстрых и медленных ЭМА, а также их гладкие версии.
    • Расчет SDI, включая показатели по направлению в положительном и отрицательном направлениях.
  2. Сигналы транзакций генерируются:

    • Многоглавое условие: положительное DI больше, чем отрицательное DI, и быстрая EMA больше, чем медленная EMA.
    • Порог: отрицательное DI больше, чем положительное DI, и быстрая EMA меньше, чем медленная EMA.
  3. Управление позициями:

    • Для определения размера сделки используется регулируемый уровень леверинга и доля акционеров.
    • При выполнении условий входа в рынок, выровнять обратную позицию и открывать новую.
  4. Управление рисками:

    • Осуществление опциональных функций остановки, остановки убытков и отслеживания убытков.
    • Динамическая корректировка отслеживает уровень стоп-лосса для закрепления прибыли.
  5. Фильтр времени:

    • Устанавливается дата начала и окончания сделки, автоматически ликвидируется за пределами указанного временного диапазона.

Стратегические преимущества

  1. Способность ловить тенденции: в сочетании с EMA и SDI, эффективно идентифицировать и отслеживать тенденции рынка.

  2. Умение адаптироваться к различным рыночным условиям с помощью регулируемых параметров.

  3. Комплексный риск-менеджмент: интегрированный сдерживание, остановка и отслеживание остановки, всесторонний контроль риска.

  4. Гибкий контроль позиций: можно регулировать уровень использования капитала и используемого рычага в зависимости от предпочтений в отношении риска.

  5. Дружественный отсчет: поддержка отсчета исторических данных для оптимизации стратегий.

  6. Эмоциональный нейтралитет: снижение субъективного эмоционального воздействия на основе объективных показателей.

  7. Многофункциональность: может использоваться в разных временных периодах и торговых разновидностях.

Стратегический риск

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

  2. Отсталость: EMA и SDI являются отсталыми показателями, которые могут медленно реагировать на обратный тренд.

  3. Риск ложного прорыва: возможна ошибочная оценка тенденций в краткосрочных колебаниях, что может привести к ошибочным сделкам.

  4. Чувствительность к параметрам: производительность сильно зависит от параметров и требует постоянной оптимизации.

  5. Зависимость от рыночных условий: в некоторых рыночных условиях может быть плохо.

  6. Риск возникновения рычагов: высокий уровень рычагов может привести к увеличению убытков, поэтому используйте их с осторожностью.

  7. Технологическая зависимость: зависимость от стабильной технической среды, из-за которой возможны потери от сбоев системы.

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

  1. Динамическая корректировка параметров: реализация адаптивной корректировки параметров EMA и SDI для адаптации к различным этапам рынка.

  2. Анализ нескольких временных рамок: объединение сигналов из нескольких временных периодов для повышения точности определения тенденций.

  3. Волатильность фильтра: добавление волатильных показателей, таких как ATR, для корректировки правил торговли в периоды высокой волатильности.

  4. Идентификация состояния рынка: введение классификации состояния рынка ((тренд/шок), целевая оптимизация логики торгов.

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

  6. Пакет индикаторов: рассмотреть возможность добавления других дополнительных индикаторов, таких как RSI или MACD, для повышения надежности сигнала.

  7. Интеграция машинного обучения: внедрение алгоритмов машинного обучения, оптимизация выбора параметров и генерация сигналов.

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

Стратегия самостоятельного отслеживания трендов в сочетании с EMA и SDI демонстрирует сильную рыночную адаптивность и способность управлять рисками. Благодаря гибкой настройке параметров и всеобъемлющим мерам контроля риска, она предоставляет трейдерам надежную количественную торговую структуру.

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

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

Исходный код стратегии
/*backtest
start: 2024-06-01 00:00:00
end: 2024-06-30 23:59:59
period: 1h
basePeriod: 15m
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/
// © erdas0

//@version=5
strategy("Strategy SEMA SDI Webhook", overlay=true, slippage = 1, commission_value = 0.035, default_qty_type=strategy.percent_of_equity, default_qty_value=50, initial_capital = 1000, calc_on_order_fills = true, process_orders_on_close = true)
// Start and end dates
dts=input(false,"",inline="dts")
dte=input(false,"",inline="dte")
start_date = input(timestamp("2023-01-01 00:00:00"), "Start Date",inline="dts") 
end_date = input(timestamp("2124-01-01"), "End Date",inline="dte") 
times = true
// Initial capital
leverage= input.int(10, "Leverage", minval=1,inline="qty") //Leverage Test
usdprcnt= input.int(50, "%", minval=1,inline="qty")
qty= input(false,"Inital USDT ◨",inline="qty")
initial_capital = qty ? (strategy.initial_capital+strategy.netprofit)/close*leverage*usdprcnt/100 : na
//Level Inputs
tpon=input(false,"TP ◨",group ="Take Profit/Stop Loss", inline="1")
sloc=input(true,"SL ◨",group ="Take Profit/Stop Loss", inline="1")
tron=input(true,"Trailing ◨",group ="Take Profit/Stop Loss", inline="1")

tp = tpon ? input.float(25, "Take Profit %", minval=0.1,step=0.1,group ="Take Profit/Stop Loss", inline="2") : na
sl = sloc ? input.float(4.8, "Stop Loss %", minval=0.1,step=0.1,group ="Take Profit/Stop Loss", inline="2") : na
tr = tron ? input.float(1.9, "Trailing Stop ", minval=0.1,step=0.1,group ="Take Profit/Stop Loss", inline="4") : na

// Take profit and stop loss levels
dir=strategy.position_size/math.abs(strategy.position_size) //Directions
newtrade=strategy.closedtrades>strategy.closedtrades[1]
pftpcnt=dir<0 ? (strategy.position_avg_price-low)/strategy.position_avg_price*100 : dir>0 ? (high-strategy.position_avg_price)/strategy.position_avg_price*100 : na //max profit

pftpr= (1 + pftpcnt*dir/100) * strategy.position_avg_price //Trailing Price
take_profit = (1 + tp*dir/100) * strategy.position_avg_price
stop_loss = (1 - sl*dir/100) * strategy.position_avg_price

var float maxpft=na //max profit percent
maxpft := newtrade ? 0 : strategy.openprofit > 0 ?  math.max(pftpcnt,maxpft) : maxpft
var float Tr=na //Trailing
Tr := newtrade ? na : pftpcnt >= tr and maxpft-pftpcnt >= tr ?  close : Tr

//Inputs
ocema=input(true, title='EMA ◨',group="Inputs",inline="2")
ocsd=input(true, title='SDI ◨',group="Inputs",inline="2")
ocsm=input(true, title='Smooth ◨',group="Inputs",inline="2")
lenf = input.int(58, "Fast Ema", minval=1,group ="Inputs", inline="3")
lens = input.int(70, "Slow Ema", minval=1,group ="Inputs", inline="3")
slen = input.int(3, "Smooth", minval=1,group ="Inputs", inline="4")
dilen = input.int(1, title="DI Length", minval=1,group ="SDI", inline="5")
sdi = input.int(6, title="DI Smooth", minval=1,group ="SDI", inline="5")

//EMA
emaf=ta.ema(close,lenf)
emas=ta.ema(close,lens)
semaf=ta.ema(emaf,slen)
semas=ta.ema(emas,slen)
//SDI
dirmov(len,smt) =>
	up = ta.change(high)
	down = -ta.change(low)
	plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
	minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
	truerange = ta.rma(ta.tr, len)
	plus = ta.ema(fixnan(100 * ta.rma(plusDM, len) / truerange),smt)
	minus = ta.ema(fixnan(100 * ta.rma(minusDM, len) / truerange),smt)
	[plus, minus]
[plus,minus]=dirmov(dilen,sdi)
pm=ta.ema(plus-minus,10) 
sdcl= plus>minus ? color.new(color.green,80) :plus<minus ? color.new(color.red,80) : na
cpm= pm>pm[1] ? color.lime : pm<pm[1] ? color.red : color.yellow
barcolor(cpm,title="PM Color")

//Plot
plot(ocsm ? semaf:emaf,"Fast Ema",color=color.green)
plot(ocsm ? semas:semas,"Slow Ema",color=color.red)
// Conditions
Long = (ocsd ? plus>minus:true) and (ocema ? (ocsm ? semaf:emaf)>(ocsm ? semas:emas):true)
Short = (ocsd ? plus<minus:true) and (ocema ? (ocsm ? semaf:emaf)<(ocsm ? semas:emas):true)

// Strategy conditions
if Long and times
    strategy.close("Short","Close S")
    strategy.entry("Long", strategy.long, comment="L",qty = initial_capital)
if strategy.position_size>0
    strategy.exit("Long LTP", "Long", limit=take_profit, stop=stop_loss, comment="LSL",comment_profit = "LTP")
if Tr and strategy.position_size>0
    strategy.exit("Long LTP", "Long", limit=take_profit, stop=pftpr, comment="Tr",comment_profit = "LTP")

if Short and times
    strategy.close("Long","Close L")
    strategy.entry("Short", strategy.short, comment="S",qty = initial_capital)
if strategy.position_size<0
    strategy.exit("Short STP", "Short", limit=take_profit, stop=stop_loss, comment="SSL",comment_profit ="STP" )
if Tr and strategy.position_size<0
    strategy.exit("Short STP", "Short", limit=take_profit, stop=pftpr, comment="Tr",comment_profit = "STP")

if not times
    strategy.close_all()