Двойное отклонение скользящей средней в сочетании со стратегией следования за трендом индикатора ATR


Дата создания: 2023-11-16 11:25:23 Последнее изменение: 2023-11-16 11:25:23
Копировать: 0 Количество просмотров: 567
1
Подписаться
1226
Подписчики

Двойное отклонение скользящей средней в сочетании со стратегией следования за трендом индикатора ATR

Обзор

Эта стратегия использует двойной EMA средний линии золотой форк, мертвой форк формирование сигнала, в сочетании с ATR показатель, чтобы определить рыночную волатильность, чтобы реализовать низкий покупать высокий продавать тенденции следовать стратегии. Когда быстрая линия золотой форк медленная линия, и ATR показатель ниже, чем в предыдущий день считается многоголовый сигнал делать больше; когда быстрая линия мертвой форк медленная линия, и ATR показатель выше, чем в предыдущий день считается пустой сигнал делать пусто.

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

  1. Используйте двойную среднюю линию EMA длиной 20 и 55. Когда прохождение медленной линии на быстрой линии приводит к появлению золотой форки, это считается многоголовым сигналом; когда прохождение медленной линии под быстрой линией приводит к появлению мертвой форки, это считается пустым сигналом.

  2. Используйте индикатор ATR длиной 14. ATR индикатор может отражать уровень волатильности и риска на рынке. Когда ATR ниже предыдущего дня, означает ослабление рыночной волатильности, подходящее для вмешательства больше; когда ATR выше предыдущего дня, означает усиление рыночной волатильности, подходящее для вмешательства.

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

  4. Индекс ATR также используется для установки стоп-лосса и стоп-листа. Стоп-лосса - это текущая цена минус ATR умноженный на стоп-модель; стоп-лосса - это текущая цена плюс ATR умноженный на стоп-модель.

  5. По умолчанию стоп-множитель имеет 3xATR, а стоп-коп-множитель - 3xATR. Это позволяет динамически отслеживать колебания рынка как стоп-стоп, так и стоп-стоп-стоп.

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

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

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

  3. Динамический стоп-стоп ATR позволяет установить стоп-стоп в зависимости от уровня рыночных колебаний.

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

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

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

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

  2. При высоких колебаниях ATR повышается, возможно, пропускается время вмешательства.

  3. При длительном удержании позиции, стоп-пост может быть слишком близким, и следует сочетать с соответствующим ослаблением силы тренда.

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

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

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

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

  2. Можно ввести другие показатели, такие как MACD, KD и т. Д., чтобы подтвердить перекрестный сигнал равновесия и повысить Entscheidungssicherheit.

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

  4. Можно настроить ATR-фактор как регулируемую переменную, чтобы динамически регулировать позицию остановки в зависимости от силы тренда.

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

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

Стратегия объединяет тенденционное суждение двойной средней линии EMA и управление рисками показателя волатильности ATR, создавая более полную систему отслеживания тенденций. Основное внимание в оптимизации стратегии уделяется корректировке средней линии и параметров ATR, чтобы они были более соответствующими характеристикам разновидности, а также разработке динамического стоп-стоп-лома для отслеживания изменений в интенсивности тренда.

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

//@version=4
// **********************************************
// PtahX EMA/ATR Strategy Public Release
// EMA Strategy with ATR & "Fear Factor" built in 
// written by PtahX October 2019
// * modifications welcome 
// * please let me know if you improve it so I can continue to learn :) 
// * use at your own risk - I'm a new programmer and still learning
// * Best of luck on your trades!!

// Take Profit (TP) option based on ATR or MA Crossover 
//***********************************************

strategy(title="PtahX EMA/ATR Strategy", overlay=true, pyramiding=1, calc_on_every_tick=true, default_qty_value=1, initial_capital=10000, slippage=2)

//***************************** 
// Global Inputs
//***************************** 

fastMA = input(title="Fast Moving Average", defval=20, step=1)
slowMA = input(title="Slow Moving Average", defval=55, step=1)
source = input(close, title="Source")
atrLength = input(title="ATR Length", defval=14, minval=7, step=1)
slMultiplier = input(title="Stop Loss Multiple", type=input.float, defval=3, minval=1, step=0.2)
tpMultiplier = input(title= "Take Profit Multiple", type=input.float, defval=3, minval=1, step=0.2)
maPlot = input(true, title="Plot EMA?")
maCrossoverExit =  input(false, title="Exit with Slow MA Crossover?")
atrExit = input(true, title="Exit with ATR?")
//***********************************
// ATR
//***********************************
atr = atr(atrLength)


//***********************************
// Volatility Filter
//**********************************
// During uptrends the ATR indicator tends to post lower volatility. 
// During downtrends, the ATR indicator tends to post higher volatility

volatilityBullish = atr < atr[1] 
volatilityBearish = atr > atr[1]


//***********************************
// Moving Averages
//***********************************
    
// Double Line Plot Code (used for Entries & Exits not plotted by default)
fast = ema(source, fastMA)
slow = ema(source, slowMA)
maLong = crossover(fast, slow)
maShort = crossunder(fast, slow) 

// Single Line Plot Code
bullish = slow > slow[1]
bearish = slow < slow[1]
barColor = bullish ? color.green : bearish ? color.red : color.blue


//***************************** 
// Entries
//***************************** 

entryLong = maLong and volatilityBullish
entryShort = maShort and volatilityBearish

if entryLong
    sLoss = source - atr * slMultiplier
    strategy.entry("Long", strategy.long, qty=10)
    strategy.exit("Long Exit", "Long", stop=sLoss)


if entryShort
    sLoss = source + atr * slMultiplier
    tProfit = close > slowMA
    strategy.entry("Short", strategy.short, qty=10)
    strategy.exit("Short Exit", "Short", stop=sLoss)


//***************************** 
// Exits
//*****************************

exitLong = 0
exitShort = 0

if maCrossoverExit
    exitLong = maShort
    exitShort = maLong
    strategy.exit("Long Exit", "Long", when = exitLong)
    strategy.exit("Short Exit", "Short", when = exitShort)

if atrExit
    exitLong = source + atr * tpMultiplier
    exitShort = source - atr * tpMultiplier
    strategy.exit("Long Exit", "Long", limit = exitLong)
    strategy.exit("Short Exit", "Short", limit = exitShort)


//******************************
// ATR Based Exit/ Stop Plotting 
//******************************

// Stop Loss Calculations
longStopLoss = source - atr(atrLength) * slMultiplier
shortStopLoss = source + atr(atrLength) * slMultiplier

longTakeProfit = source - atr(atrLength) * slMultiplier
shortTakeProfit = source + atr(atrLength) * slMultiplier
  

//*********************************
//Chart Plotting
//*********************************

//ATR Based Stop Losses
plot(shortStopLoss, color=color.fuchsia, offset=0, transp=0, show_last=5, linewidth=2, style=plot.style_stepline, title="Short Stop Loss")
plot(longStopLoss, color=color.fuchsia, offset=0, transp=0, show_last=5, linewidth=2, style=plot.style_stepline, title="Long Stop Loss")


// Single Slow EMA Option
plot(slow and maPlot ? slow : na, title="EMA", color=barColor, linewidth=3)