Стратегия прорыва зоны стоимости кросс-цикла


Дата создания: 2023-12-12 10:58:22 Последнее изменение: 2023-12-12 10:58:22
Копировать: 0 Количество просмотров: 363
1
Подписаться
1213
Подписчики

Стратегия прорыва зоны стоимости кросс-цикла

Обзор

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

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

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

  1. Вычислите максимумы (Swing High) и минимумы (Swing Low) RSI на более крупных периодах (например, на солнечной линии)
  2. Определить, будет ли более высокий или более низкий RSI в течение данного периода
  3. Если произойдет прорыв, то на меньших циклах (например, в 5-минутную линию) оценивается движение цены (например, плюс или пустота), принимаются соответствующие операции покупки или продажи.

Например, если RSI на дневной линии достигает нового максимума, мы считаем, что мы находимся в состоянии плюс-линия, а если RSI на дневной линии достигает нового минимума, мы считаем, что мы находимся в состоянии пустоты. В обоих случаях мы принимаем операции по покупке и продаже на 5-минутной линии.

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

По сравнению с традиционными стратегиями, ориентированными только на один временной цикл, эта стратегия имеет следующие преимущества:

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

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

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

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

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

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

  1. Ошибки в определении крупноциклических индикаторов. Сигналы могут быть ошибочными, когда такие индикаторы, как RSI на дневную линию, не могут эффективно определить ценные зоны. Для этого необходимо оптимизировать параметры RSI.

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

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

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

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

  1. Оптимизация параметров цикла. Можно тестировать больше комбинаций циклов, чтобы найти оптимальные параметры.

  2. Оптимизация параметров RSI. Можно скорректировать параметры RSI, чтобы увидеть, можно ли повысить точность суждения.

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

  4. Оптимизация механизма стоп-лосса. Стоп-лосса может быть динамически скорректирована в зависимости от ситуации с выводом.

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

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

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

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

//@version=3

strategy("Swing MTF", shorttitle="Swing MTF", overlay=false, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, initial_capital = 10000, slippage = 5)
//
otf_period = input(defval=2, title="Look Back Period (2nd Timeframe)")
otf = input(defval="180", title="Second Momentum Timeframe")

// Function to dectect a new bar
is_newbar(res) =>
    t = time(res)
    change(t) != 0 ? true : false

// Check how many bars are in our upper timeframe
since_new_bar = barssince(is_newbar(otf))
otf_total_bars = na
otf_total_bars := since_new_bar == 0 ? since_new_bar[1] : otf_total_bars[1]

//Calculate RSI Values
ctf_rsi = rsi(open, otf_period)

breakline=input(title="Breaks in lines", defval = true, type=bool)

so = request.security(syminfo.tickerid, otf, rsi(open, otf_period))
sc = request.security(syminfo.tickerid, otf, rsi(close, otf_period))


final_otf_so = na
final_otf_so := barstate.isrealtime ? since_new_bar == otf_total_bars ? so : final_otf_so[1] : so

final_otf_sc = na
final_otf_sc := barstate.isrealtime ? since_new_bar == otf_total_bars ? sc : final_otf_sc[1] : sc

barsback = input(11, title='Bars back to check for a swing')
// showsig = input(false, title='Show Signal Markers')
 
swing_detection(index)=>
    swing_high = false
    swing_low = false
    start = (index*2) - 1 // -1 so we have an even number of
    swing_point_high = final_otf_so[index]
    swing_point_low = final_otf_sc[index]
    
    //Swing Highs
    for i = 0 to start
        swing_high := true
        if i < index 
            if final_otf_so[i] > swing_point_high 
                swing_high := false
                break
        // Have to do checks before pivot and after seperately because we can get
        // two highs of the same value in a row. Notice the > and >= difference
        if i > index
            if final_otf_so[i] >= swing_point_high 
                swing_high := false
                break
        
    //Swing lows
    for i = 0 to start
        swing_low := true
        if i < index
            if final_otf_sc[i] < swing_point_low 
                swing_low := false
                break  
        // Have to do checks before pivot and after seperately because we can get
        // two lows of the same value in a row. Notice the > and >= difference
        if i > index
            if final_otf_sc[i] <= swing_point_low 
                swing_low := false
                break 
        
    [swing_high, swing_low]
 
// Check for a swing
[swing_high, swing_low] = swing_detection(barsback)
 

long =  final_otf_so > final_otf_sc
short = final_otf_so < final_otf_sc

if swing_low and long
    strategy.entry("My Long Entry Id", strategy.long)


if swing_high and short
    strategy.entry("My Short Entry Id", strategy.short)