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


Дата создания: 2024-03-11 11:33:47 Последнее изменение: 2024-03-11 11:33:47
Копировать: 0 Количество просмотров: 692
1
Подписаться
1617
Подписчики

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

Обзор стратегии

Дневная многополосная динамическая сбалансированная стратегия в сочетании со средней линией и сверхтройками - это количественная торговая стратегия, написанная на основе Pine ScriptTM 5. Стратегия использует индикатор MACD и индикатор супертройков для захвата тенденциозных возможностей на рынке, а также для управления риском с помощью динамических многополосных переключений и остановок убытков.

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

В основе этой стратегии лежит объединение MACD и супертенденциальных индикаторов для определения направления рынка.

  1. Используйте индикатор супертенденции, чтобы определить текущее направление тренда. Когда индикатор супертенденции меняется, это указывает на обратный тренд.
  2. Используйте MACD-полюс для определения изменения движения. Когда MACD-полюс с отрицательным поворотом, показывает повышенную энергию наклона; когда MACD-полюс с положительным поворотом, показывает повышенную энергию наклона.
  3. Открытие позиции, когда индикатор супертенденции и индикатор MACD одновременно посылают сигналы о том, что нужно сделать больше; открытие позиции, когда индикатор супертенденции и индикатор MACD одновременно посылают сигналы о том, что нужно сделать меньше.
  4. В фиксированное время каждого торгового дня (например, в 15:15) ликвидируйте все свои позиции, чтобы избежать риска на ночь.
  5. В новые торговые дни (например, в 9:30), в соответствии с указаниями индикатора супертенденции и индикатора MACD, возобновляется открытие позиции.

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

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

  1. Следить за тенденциями: эта стратегия позволяет эффективно улавливать тенденционные возможности рынка, объединяя индикаторы супертенденции и MACD.
  2. Динамический многополюсный переключатель: Стратегия динамически корректирует направление позиции в зависимости от изменения показателя, адаптируя его к изменениям рынка.
  3. Контроль риска: стратегия позволяет лучше контролировать риски с помощью фиксированного времени и динамического переключения.
  4. Гибкость параметров: параметры стратегии (например, циклы ATR, факторы и т. Д.) могут быть скорректированы в зависимости от рыночных особенностей и личных предпочтений, имея определенную гибкость.

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

  1. Риск сбоя индикатора: в некоторых рыночных условиях индикаторы MACD и супертенденции могут подавать ошибочные сигналы, что приводит к сбою стратегии.
  2. Риск оптимизации параметров: эффективность стратегии зависит от выбора параметров, неправильные параметры могут привести к плохой эффективности стратегии.
  3. Стоп-лош риск: стратегия не имеет четкой логики стоп-лош, что может привести к большим потерям в экстремальных рыночных условиях.
  4. Однодневные риски: Хотя эта стратегия может быть использована для ликвидации позиции в течение дня, она может быть использована для открытия позиции в течение ночи.

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

  1. Увеличение логики стоп-лома: включение в стратегию четкой логики стоп-лома, такой как фиксированная стопроцентная стоп-лома или ATR-стоп-лома, для дальнейшего контроля риска.
  2. Параметрическая оптимизация: оптимизация ключевых параметров стратегии, таких как ATR-циклы, факторы, MACD-параметры и т. Д., Для повышения устойчивости и прибыльности стратегии.
  3. Фильтрация сигналов: добавление дополнительных условий фильтрации сигналов, таких как ценовые прорывы, объемы сделок и т. д., для повышения надежности сигналов.
  4. Многорыночное тестирование: тестирование стратегии на различных рынках и разновидностях, оценка ее применимости и стабильности.

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

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

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

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

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

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © smj31071995

//@version=5
strategy("EQ - INTRA - Samsuga supertrend prod", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, calc_on_every_tick = false)


atrPeriod = input.int(7,    "ATR Length", minval = 1)
factor =    input.float(1.0, "Factor",     minval = 0.01, step = 0.01)
st_tf = "3"
macd_tf="30"

[supertrend, direction] =request.security(symbol = syminfo.tickerid, timeframe = st_tf,expression =  ta.supertrend(factor, atrPeriod),lookahead=barmerge.lookahead_on)

supertrend := barstate.isfirst ? na : supertrend
upTrend =    plot(direction <= 0 ? supertrend : na, "Up Trend",   color = color.green, style = plot.style_linebr)
downTrend =  plot(direction <= 0 ? na : supertrend, "Down Trend", color = color.red,   style = plot.style_linebr)
bodyMiddle = plot(barstate.isfirst ? na : (open + close) / 2, "Body Middle",display = display.none)
longcondition = direction[1] > direction 
shortCondition = direction[1] < direction 

macdp1 = 2
macdp2=8
macdp3=4

[macdLine, signalLine, histLine] =request.security(symbol = syminfo.tickerid, timeframe = macd_tf,expression = ta.macd(close,macdp1,macdp2,macdp3),lookahead=barmerge.lookahead_on)
// log.info(str.tostring(syminfo.tickerid)+str.tostring(histLine[0]))
timezone_input = input("Asia/Kolkata", title="Timezone")
// log.info(timezone_input)
if(hour==15 and minute==15)
    strategy.close_all(comment = "DAY EXIT",alert_message = "X-D")
else if(hour==9 and minute==30)
    if(longcondition or histLine[1]>0)
        strategy.entry(id= "Long", direction=strategy.long,  comment = "DL",alert_message = "L")
    else if(shortCondition or histLine[1]<0) 
        strategy.entry(id= "Short", direction=strategy.short,  comment = "DS",alert_message = "S")
else
    if(longcondition)
        strategy.close("Short",comment = "X-S", alert_message = "X-S")
        if(histLine[1]>0)    
            strategy.entry(id= "Long", direction=strategy.long,  comment = "L",alert_message = "L")
    else if(shortCondition) 
        strategy.close("Long",comment = "X-L",alert_message = "X-L")
        if(histLine[1]<0)    
            strategy.entry(id= "Short", direction=strategy.short,  comment = "S",alert_message = "S")


// plot(macdLine,   title = "MACD",   color = #2962FF)
// plot(signalLine, title = "Signal", color = #FF6D00)
// 8, 21, 5
// 8,13,9
// 12,26,9
//  1--> 3, 17, 5
// 3, 10, 16
// log.info(str.tostring(syminfo.tickerid)+str.tostring(histLine[0]))
//  /////////----------------METHOD 1-----------------////////////////
// if(longcondition)
//     if(strategy.opentrades>0)
//         strategy.close("Long","Prev Exit", immediately = true)
//     if( histLine[0] > 0.1)
//         strategy.entry(id= "Long", direction=strategy.long,  comment = "update long")

    
// else if(shortCondition and strategy.openprofit<=0.1) 
//     strategy.close("Long",comment = "Close",immediately = true)
//  /////////----------------METHOD 2-----------------////////////////
// if(longcondition)
//     if(histLine[0] > 0)
//         strategy.entry(id= "Long", direction=strategy.long,  comment = "update long" )
//         strategy.exit("Long", loss = close*0.2)


    
// else if(shortCondition ) 
//     strategy.close("Long",comment = "Close",immediately = true)
//  /////////----------------METHOD 3-----------------////////////////