Стратегия контроля риска на основе Super Trend и MACD


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

Стратегия контроля риска на основе Super Trend и MACD

Обзор

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

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

  1. Используйте функцию ta.supertrend для вычисления показателя супертренда с параметрами ATR-периодов и множительным фактором.
  2. Полярный тренд оценивается по изменению направления индикатора супертенденции, когда направление становится больше, чем 0, но меньше, чем 0, считается восходящим; наоборот, считается понижающим.
  3. Используйте функцию request.security, чтобы получить 30-минутный цикл MACD-индикаторов, включая MACD-линии, сигнальные линии и столбиковые диаграммы.
  4. В восходящем тренде, если MACD-полюс больше 0, открывается дополнительная позиция, при этом ликвидируется предыдущая пустая позиция.
  5. В нисходящем тренде, если MACD-пост меньше 0, открывается свободная позиция, а также ликвидируется предыдущая позиция.

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

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

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

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

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

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

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

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

Исходный код стратегии
/*backtest
start: 2024-02-01 00:00:00
end: 2024-02-29 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Samsuga supertrend", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)


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

[supertrend, direction] = ta.supertrend(factor, atrPeriod)

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 = 3
macdp2=10
macdp3=6

[macdLine, signalLine, histLine] =request.security(symbol = syminfo.tickerid, timeframe = "30",expression = ta.macd(close,macdp1,macdp2,macdp3),lookahead=barmerge.lookahead_on)
// 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-----------------////////////////
// log.info(str.tostring(syminfo.tickerid)+str.tostring(histLine[0]))
if(longcondition)
    if(histLine[0] > 0)    
        strategy.close("Short",comment = "E-S", alert_message = "E-S",disable_alert = true)
        strategy.entry(id= "Long", direction=strategy.long,  comment = "L",alert_message = "L")
else if(shortCondition) 
    if(histLine[0] < 0)    
        strategy.close("Long",comment = "E-L",alert_message = "E-L",disable_alert = true)
        strategy.entry(id= "Short", direction=strategy.short,  comment = "S",alert_message = "S")