Эта стратегия использует золотой крест и сигналы мертвого креста, сформированные двойными скользящими средними EMA, в сочетании с индикатором ATR для оценки волатильности рынка, для реализации стратегии низкого покупания-высокой продажи. Когда быстрая линия пересекает линию медленности, а индикатор ATR ниже, чем в предыдущий день, это считается быстрым сигналом для длинного. Когда быстрая линия пересекает линию медленности, а индикатор ATR выше, чем в предыдущий день, это считается медленным сигналом для короткого.
Используйте двойные скользящие средние EMA длины 20 и 55. Когда быстрая линия пересекает над медленной линией и генерирует золотой крест, это считается бычьим сигналом. Когда быстрая линия пересекает ниже медленной линии и генерирует мертвый крест, это считается медленным сигналом.
Используйте индикатор ATR длины 14. Индикатор ATR отражает волатильность и уровень риска рынка. Когда ATR ниже, чем в предыдущий день, это указывает на то, что волатильность рынка ослабевает и он подходит для длинного хода. Когда ATR выше, чем в предыдущий день, это указывает на то, что волатильность рынка увеличивается, и он подходит для короткого хода.
Пройти длинную линию только тогда, когда быстрая линия золотая пересекает медленную линию и ATR ниже, чем в предыдущий день. Пройти короткую линию только тогда, когда быстрая линия мертвая пересекает медленную линию и ATR выше, чем в предыдущий день. Это позволяет избежать вмешательства, когда волатильность рынка высока.
Показатель ATR также используется для установки уровней стоп-лосса и прибыли. Стоп-лосс устанавливается по текущей цене минус ATR умноженный на мультипликатор стоп-лосса. Прибыль устанавливается по текущей цене плюс ATR умноженный на мультипликатор прибыли.
Умножитель стоп-лосса по умолчанию составляет 3xATR, а умножитель прибыли по умолчанию составляет 3xATR. Это позволяет стоп-лос и прибыли динамически отслеживать волатильность рынка.
Использование двойной системы скользящей средней обеспечивает более сильное подтверждение длинного/короткого состояния.
Введение индикатора ATR позволяет стратегии работать только при низкой волатильности. Это фильтрует многие ложные сигналы и снижает риск системы.
Динамическая система ATR Stop Loss/Take Profit позволяет устанавливать стопы и цели в соответствии с уровнем волатильности рынка.
В качестве дополнительного механизма выхода можно установить перекресток скользящей средней, что может еще больше оптимизировать рентабельность системы.
Динамические уровни стоп-лосса и прибыли, основанные на ATR, лучше соответствуют логике трендовой торговли.
Двойные скользящие средние имеют некоторое отставание в сигналах. Это может пропустить более сильные краткосрочные тенденции.
Когда волатильность высока, ATR повышается и может упустить возможности для входа.
Для длительных периодов хранения стоп-лосс может быть слишком близко.
Движущиеся средние показывают плохую динамику на нестабильных рынках.
Параметры ATR необходимо корректировать для различных продуктов и временных рамок. Неправильные параметры негативно повлияют на производительность.
Проверьте различные комбинации скользящих средних длины, чтобы найти параметры, соответствующие характеристикам тренда продукта.
Включить другие индикаторы, такие как MACD, KD, чтобы подтвердить сигналы пересечения скользящих средних и улучшить Entscheidungssicherheit.
Оптимизировать параметры ATR путем обратного тестирования, чтобы лучше соответствовать характеристикам волатильности продукта.
Сделать коэффициент ATR-множителя регулируемым для динамической корректировки стоп-лосса/приобретения прибыли в зависимости от силы тренда.
Включить индикатор силы тренда, чтобы уменьшить требования к остановке потерь в слабых тенденциях и увеличить прибыль в сильных тенденциях.
Эта стратегия интегрирует тенденционное определение двойных 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)