
Стратегия использует технические показатели акций STC, MA и ATR в сочетании с различными техническими показателями для определения тенденции, что позволяет достичь относительно стабильной торговли.
STC-индикатор определяет обратный тренд. Он использует быструю линию, чтобы замедлить линию, а затем производит вторую гладкую обработку, чтобы сформировать согласованный сигнал тренда. Когда индикатор проходит по 0-ой оси, это сигнал покупки, а когда он проходит по 0-ой оси, это сигнал продажи.
Подвижная средняя МА определяет направление тренда. Когда цена акции выходит за пределы МА, она рассматривается как сигнал, что она все еще находится на подъеме.
ATR устанавливает стоп-стоп. ATR может динамически регулироваться в зависимости от рыночных колебаний. И использует ATR в качестве сигнала направления торговли.
Стратегия выбирает момент, когда STC выбирает обратную сторону в качестве основного пункта покупки и продажи, а MA - в качестве вспомогательного определения тренда, с использованием ATR для остановки убытков. Когда STC выпускает сигнал покупки, если MA также находится в тенденции к росту, ATR находится на подъеме, то открывается дополнительная позиция; Если STC выпускает сигнал продажи, если MA находится в тенденции к снижению, ATR находится на снижении, то открывается пустая позиция.
Эта стратегия использует различные индикаторы для определения тенденций и переменных, что повышает точность торговых сигналов.
STC-индикатор улавливает обратные сигналы, чтобы избежать попадания на рынок. MA-индикатор фильтрует нестабильные обратные сигналы, чтобы обеспечить следование за основными тенденциями.
Показатель ATR может устанавливать стоп-лосс в зависимости от рыночных колебаний, чтобы избежать больших потерь. И использует ATR в качестве вспомогательного сигнала для определения тенденции.
Многоиндикаторная комбинация позволяет создать более сильную способность отслеживать тенденции, а историческая обратная связь имеет лучшую стабильную прибыльность.
STC имеет временную задержку и может пропустить оптимальный момент для переворота цены.
При резком изменении цены, индикатор MA может отстать от своего местоположения, что может привести к ошибочному сигналу.
ATR-стоп может быть выведен на секунду, а ATR-множитель должен быть соответствующим образом ослаблен или временно закрыт в большом тренде.
Несмотря на то, что комбинация с несколькими показателями повышает коэффициент выигрыша, она также увеличивает шансы на возникновение стоп-убытков, поэтому следует соответствующим образом скорректировать параметры, чтобы снизить ненужные стоп-убытки.
Настройка параметров STC для поиска комбинации параметров, которые быстрее реагируют на обратный ход
Оптимизация циклических параметров MA для лучшего отслеживания тенденций
Влияние на стратегию параметров, используемых при тестировании различных ATR
Попробуйте заменить STC другими показателями, чтобы найти более подходящий показатель
Добавление алгоритмов машинного обучения для автоматической оптимизации нескольких параметров
Повышение оценки тенденций Большого цикла, разграничение различных этапов Большого цикла
Стратегия STC MA ATR использует три показателя для фиксации обратных точек тренда и стабильного отслеживания тренда. Комбинация показателей фильтрует ложные сигналы, контролирует риск остановки, обладает сильной совместимостью и стабильностью. Благодаря оптимизации параметров и внедрению алгоритмов можно еще больше улучшить эффективность стратегии.
/*backtest
start: 2023-09-16 00:00:00
end: 2023-10-16 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Romedius
//@version=5
strategy("My Strategy", overlay=true, margin_long=100, margin_short=100)
// STC
EEEEEE=input(12,"Length",group="STC")
BBBB=input(26,"FastLength",group="STC")
BBBBB=input(50,"SlowLength",group="STC")
AAAA(BBB, BBBB, BBBBB) =>
fastMA = ta.ema(BBB, BBBB)
slowMA = ta.ema(BBB, BBBBB)
AAAA = fastMA - slowMA
AAAA
AAAAA(EEEEEE, BBBB, BBBBB) =>
//AAA=input(0.5)
var AAA = 0.5
var CCCCC = 0.0
var DDD = 0.0
var DDDDDD = 0.0
var EEEEE = 0.0
BBBBBB = AAAA(close,BBBB,BBBBB)
CCC = ta.lowest(BBBBBB, EEEEEE)
CCCC = ta.highest(BBBBBB, EEEEEE) - CCC
CCCCC := (CCCC > 0 ? ((BBBBBB - CCC) / CCCC) * 100 : nz(CCCCC[1]))
DDD := (na(DDD[1]) ? CCCCC : DDD[1] + (AAA * (CCCCC - DDD[1])))
DDDD = ta.lowest(DDD, EEEEEE)
DDDDD = ta.highest(DDD, EEEEEE) - DDDD
DDDDDD := (DDDDD > 0 ? ((DDD - DDDD) / DDDDD) * 100 : nz(DDDDDD[1]))
EEEEE := (na(EEEEE[1]) ? DDDDDD : EEEEE[1] + (AAA * (DDDDDD - EEEEE[1])))
EEEEE
mAAAAA = AAAAA(EEEEEE,BBBB,BBBBB)
stc = mAAAAA > mAAAAA[1] ? true : false
stc_sig = stc == true and stc[1] == false ? 1 : stc == false and stc[1] == true ? -1 : 0
stc_long = stc_sig == 1
stc_short = stc_sig == -1
// STC end
// ATR stops
nATRPeriod = input(5,group="ATR Stops")
nATRMultip = input(3.5,group="ATR Stops")
xATR = ta.atr(nATRPeriod)
nLoss = nATRMultip * xATR
xATRTrailingStop = 0.0
xATRTrailingStop := close > nz(xATRTrailingStop[1], 0) and close[1] > nz(xATRTrailingStop[1], 0) ? math.max(nz(xATRTrailingStop[1]), close - nLoss) : close < nz(xATRTrailingStop[1], 0) and close[1] < nz(xATRTrailingStop[1], 0) ? math.min(nz(xATRTrailingStop[1]), close + nLoss) : close > nz(xATRTrailingStop[1], 0) ? close - nLoss : close + nLoss
pos = 0
pos := close[1] < nz(xATRTrailingStop[1], 0) and close > nz(xATRTrailingStop[1], 0) ? 1 : close[1] > nz(xATRTrailingStop[1], 0) and close < nz(xATRTrailingStop[1], 0) ? -1 : nz(pos[1], 0)
atr_sig = pos == -1 ? false : true
// ATR stops end
// ma
ma_len = input(200, title="MA Length", group="Moving Average")
ma = ta.sma(close, 200)
ma_sig = close < ma ? false : true
// ma end
// strategy entries
tp_mult = input(2, title="Take Profit ATR Multiplier", group="Strategy")
sl_mult = input(1, title="Stop Loss ATR Multiplier", group="Strategy")
early_stop = input(true, title="Close position when ATR changes color")
atr_stop = if close < xATRTrailingStop
close - (close - xATRTrailingStop) * sl_mult
else
close + (xATRTrailingStop - close) * sl_mult
longCondition = atr_sig == true and stc_sig == 1 and ma_sig == true
shortCondition = atr_sig == false and stc_sig == -1 and ma_sig == false
if (longCondition)
strategy.entry("Long", strategy.long)
strategy.exit("Exit Long", "Long", limit=close + xATR * tp_mult, stop=atr_stop)
else if atr_sig == false and early_stop
strategy.close("Long")
if (shortCondition)
strategy.entry("Short", strategy.short)
strategy.exit("Exit Short", "Short", limit=close - xATR * tp_mult, stop=atr_stop)
else if atr_sig == true and early_stop
strategy.close("Short")
// plot stuff
atr_color = pos == -1 ? color.red: pos == 1 ? color.green : color.blue
plot(atr_stop, title="ATR Stop", color=atr_color)
ma_color = ma_sig ? color.green : color.red
plot(ma, title="Moving Average", color=ma_color)
stc_color = stc_long ? color.green : color.red
plotshape(stc_long, style=shape.triangleup, color=stc_color, title="STC Long Signal", size=size.tiny)
plotshape(stc_short, style=shape.triangledown, color=stc_color, title="STC Short Signal", size=size.tiny)
// plot stuff end