Персонализированные стратегии торговли импульсом


Дата создания: 2023-11-23 15:18:27 Последнее изменение: 2023-11-23 15:18:27
Копировать: 0 Количество просмотров: 611
1
Подписаться
1617
Подписчики

Персонализированные стратегии торговли импульсом

Обзор

Это персонализированная торговая стратегия, которая сочетает в себе динамические показатели и фильтрацию на K-линии. Она использует три технических показателя: индекс случайной динамики, быстрый RSI и фильтрацию на K-линии, чтобы достичь динамического прорыва, учитывая при этом стратегию перекупа и перепродажи.

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

В этой стратегии используются три показателя для определения торговых сигналов:

  1. Индекс случайной динамики ((SMI): он объединяет в себе расстояние между объектами K-линии и относительную позицию цены закрытия, чтобы определить, что динамика цен сильна или слаба. При пересечении границы на SMI создается сигнал покупки, а при пересечении границы ниже - сигнал продажи.

  2. Быстрый RSI ((7-дневная линия): он оценивает состояние перекупа и перепродажи цены. RSI ниже 20 дает сигнал о покупке для перепродажи, а выше 80 - сигнал о продаже для перекупа.

  3. Фильтрация K-линейных объектов: рассчитывается средний размер K-линейных объектов за 10 дней, действует, когда сегодняшние K-линейные объекты превышают одну треть этого среднего значения, избегая недействительного сигнала.

Эта стратегия сначала оценивает сигнал SMI и RSI, а затем, если он соответствует требованиям одного из индикаторов, определяет, действителен ли он в сочетании с K-линейной фильтрацией, и, если он действителен, генерирует торговый сигнал.

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

Эта стратегия имеет следующие преимущества:

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

  2. Добавить K-фильтр, чтобы избежать недействительного сигнала.

  3. В сочетании с суждением о перекупке и перепродаже, легче поймать сигнал в момент переворота тренда.

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

  5. Использование частичных торговых позиций, чтобы избежать чрезмерных потерь в одной сделке.

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

Однако есть и другие риски:

  1. Под действием индикатора легко получить ошибочный сигнал, что приводит к убыткам. Можно уменьшить ошибочный сигнал, оптимизировав параметры.

  2. Некоторые позиционные сделки не могут в полной мере использовать возможности тренда в каждом направлении. Вы можете получить более высокую прибыль, увеличив торговые позиции.

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

  4. Многополосные двунаправленные сделки, частота операций, повышение стоимости сделки.

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

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

  1. Оптимизируйте параметры SMI и RSI, чтобы найти оптимальную комбинацию параметров.

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

  3. Увеличение стратегии по сдерживанию убытков и снижение риска одноразовых потерь.

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

  5. Использование эффективных контрактов для снижения затрат на транзакции.

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

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

Исходный код стратегии
/*backtest
start: 2023-10-23 00:00:00
end: 2023-11-22 00:00:00
period: 6h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=2
strategy(title = "Noro's Stochastic Strategy v1.2", shorttitle = "Stochastic str 1.2", overlay = false, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings 
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
usemar = input(false, defval = false, title = "Use Martingale")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %")
usesmi = input(true, defval = true, title = "Use SMI Strategy")
usersi = input(true, defval = true, title = "Use RSI Strategy")
usebod = input(true, defval = true, title = "Use Body-Filter")
a = input(5, "SMI Percent K Length")
b = input(3, "SMI Percent D Length")
limit = input(50, defval = 50, minval = 1, maxval = 100, title = "SMI Limit")
fromyear = input(2017, defval = 2017, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//Fast RSI
fastup = rma(max(change(close), 0), 7)
fastdown = rma(-min(change(close), 0), 7)
fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown))

//Stochastic Momentum Index
ll = lowest (low, a)
hh = highest (high, a)
diff = hh - ll
rdiff = close - (hh+ll)/2
avgrel = ema(ema(rdiff,b),b)
avgdiff = ema(ema(diff,b),b)
SMI = avgdiff != 0 ? (avgrel/(avgdiff/2)*100) : 0
SMIsignal = ema(SMI,b)

//Lines
plot(SMI, color = blue, linewidth = 3, title = "Stochastic Momentum Index")
plot(SMIsignal, color = red, linewidth = 3, title = "SMI Signal Line")
plot(limit, color = black, title = "Over Bought")
plot(-1 * limit, color = black, title = "Over Sold")
plot(0, color = blue, title = "Zero Line")

//Body Filter
nbody = abs(close - open)
abody = sma(nbody, 10)
body = nbody > abody / 3 or usebod == false

//Signals
up1 = SMI < -1 * limit and close < open and body and usesmi
dn1 = SMI > limit and close > open and body and usesmi
up2 = fastrsi < 20 and close < open and body and usersi
dn2 = fastrsi > 80 and close > open and body and usersi
exit = ((strategy.position_size > 0 and close > open) or (strategy.position_size < 0 and close < open)) and body

//Trading
profit = exit ? ((strategy.position_size > 0 and close > strategy.position_avg_price) or (strategy.position_size < 0 and close < strategy.position_avg_price)) ? 1 : -1 : profit[1]
mult = usemar ? exit ? profit == -1 ? mult[1] * 2 : 1 : mult[1] : 1
lot = strategy.position_size == 0 ? strategy.equity / close * capital / 100 * mult : lot[1]

if up1 or up2
    if strategy.position_size < 0
        strategy.close_all()
        
    strategy.entry("long", strategy.long, needlong == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))

if dn1 or dn2
    if strategy.position_size > 0
        strategy.close_all()
        
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    
if time > timestamp(toyear, tomonth, today, 23, 59) or exit
    strategy.close_all()