Динамическая внутридневная стратегия длинно-короткого балансирования, объединяющая скользящую среднюю величину и супертенд

Автор:Чао Чжан, Дата: 2024-03-11 11:33:47
Тэги:

img

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

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

Принципы стратегии

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

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

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

Преимущества стратегии

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

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

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

Руководство по оптимизации

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

Резюме

Динамическая внутридневная долгосрочная балансирующая стратегия, объединяющая скользящую среднюю и супертенденцию, является торговой стратегией, основанной на отслеживании тренда и оценке импульса. Объединяя индикатор Supertrend и индикатор 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-----------------////////////////



Больше