
Эта стратегия представляет собой коротколинейную шокирующую торговую стратегию, которая объединяет показатели EMA и CCI для выявления коротких тенденций на рынке и сверхпокупа и сверхпродажи, чтобы поймать возможности для колебаний цены на короткой линии.
Стратегия основана на использовании трех средних линий 10-й, 21-й и 50-й ЕМА, а также показателя CCI для определения времени входа и выхода из игры.
Вот логика: Когда кратковременная средняя линия ((10-дневная EMA) пересекает среднесрочную среднюю линию ((21-дневная EMA) и кратковременная средняя линия выше долгосрочной средней линии ((50-дневная EMA), а показатель CCI больше 0, рассматривайте его как многоголовый сигнал, сделайте больше; когда кратковременная средняя линия пересекает среднесрочную среднюю линию ниже и кратковременная средняя линия ниже долгосрочной средней линии, а показатель CCI меньше 0, рассматривайте его как пустой сигнал, сделайте пустоту.
Логика равновесия - это равновесие, когда краткосрочная средняя линия снова пересекает среднесрочную среднюю.
В сочетании с равнолинейной системой и показателем CCI, можно эффективно идентифицировать направление тренда колебаний цены короткой линии и состояние перекупа и перепродажи.
Использование равных линейных форков и мертвых форков для определения entries и exists, простое и практичное.
Параметры и периодическая настройка показателя CCI более разумны, что позволяет устранить некоторые ложные сигналы.
Используя многочасовую среднюю линию, можно получить лучшие возможности для работы в колеблющемся городе.
Большие колебания в работе коротких линий, возможны большие последовательные потери.
Неправильная настройка параметров показателя CCI может привести к появлению фальшивых сигналов.
Во время шоковой ликвидации стратегия может иметь несколько небольших убытков.
Подходит только для трейдеров, которые часто работают на коротких линиях, не подходит для длинных линий.
Соответствующие меры реагирования на риск включают: оптимизацию параметров CCI, корректировку стоп-позиции, увеличение условий FILTER и т. д.
Можно тестировать комбинацию средних линий ЭМА различной длины, оптимизировать параметры.
Для фильтрации некоторых ложных сигналов можно добавить другие показатели или условия фильтрации. Например, MACD, KDJ и т. Д.
Одноразовые потери можно контролировать с помощью динамического отслеживания стоп-лосса.
Тенденционный индикатор может быть объединен с более высоким временным циклом, чтобы избежать обратной операции.
Эта стратегия в целом является типичной шокирующей стратегией короткой линии, использующей золотой форк и мертвой форк равновесного индикатора в сочетании с состоянием перекупа и перепродажи показателя CCI для захвата краткосрочных возможностей для реверса цены. Эта стратегия подходит для частого торгового использования короткой линии, но требует определенного давления на остановку.
/*backtest
start: 2023-12-31 00:00:00
end: 2024-01-30 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
//study(title="Strat CCI EMA scalping", shorttitle="EMA-CCI-strat", overlay=true)
strategy("Strat CCI EMA scalping", shorttitle="EMA-CCI-strat", overlay=true)
exponential = input(true, title="Exponential MA")
// the risk management inputs
inpTakeProfit = input(defval = 1000, title = "Take Profit", minval = 0)
inpStopLoss = input(defval = 200, title = "Stop Loss", minval = 0)
inpTrailStop = input(defval = 200, title = "Trailing Stop Loss", minval = 0)
inpTrailOffset = input(defval = 0, title = "Trailing Stop Loss Offset", minval = 0)
// === RISK MANAGEMENT VALUE PREP ===
// if an input is less than 1, assuming not wanted so we assign 'na' value to disable it.
useTakeProfit = inpTakeProfit >= 1 ? inpTakeProfit : na
useStopLoss = inpStopLoss >= 1 ? inpStopLoss : na
useTrailStop = inpTrailStop >= 1 ? inpTrailStop : na
useTrailOffset = inpTrailOffset >= 1 ? inpTrailOffset : na
src = close
ma10 = exponential ? ema(src, 10) : sma(src, 10)
ma21 = exponential ? ema(src, 21) : sma(src, 21)
ma50 = exponential ? ema(src, 50) : sma(src, 50)
xCCI = cci(close, 200)
//buy_cond = cross(ma21, ma50) and ma10 > ma21 and (xCCI > 0)
//sell_cond = cross(ma21, ma50) and ma10 < ma21 and (xCCI < 0)
buy_cond = ma10 > ma21 and ma10 > ma50 and xCCI > 0
sell_cond = ma10 < ma21 and ma10 < ma50 and xCCI < 0
// === STRATEGY - LONG POSITION EXECUTION ===
enterLong() => buy_cond
exitLong() => ma10 < ma21
strategy.entry(id = "Long", long = true, when = enterLong()) // use function or simple condition to decide when to get in
strategy.close(id = "Long", when = exitLong()) // ...and when to get out
// === STRATEGY - SHORT POSITION EXECUTION ===
enterShort() => sell_cond
exitShort() => ma10 > ma21
strategy.entry(id = "Short", long = false, when = enterShort())
strategy.close(id = "Short", when = exitShort())
// === STRATEGY RISK MANAGEMENT EXECUTION ===
// finally, make use of all the earlier values we got prepped
//strategy.exit("Exit Long", from_entry = "Long", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)
//strategy.exit("Exit Short", from_entry = "Short", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)
//longCondition = buy_cond
//if(longCondition)
// strategy.entry("Long", strategy.long)
// strategy.exit("Close Long", "Long", when = exitLong())
//shortCondition = sell_cond
//if(shortCondition)
// strategy.entry("Short", strategy.short)
// strategy.exit("Close Short", "Short", when = exitShort())
//plotshape(buy_cond, style=shape.flag, color=green, size=size.normal)
//plotshape(sell_cond, style=shape.flag, color=red, size=size.normal)
c1 = buy_cond==1 ? lime : sell_cond==1 ? red : #a3a3a3 // color
plot( ma10, color=red, style=line, title="10", linewidth=1)
plot( ma21, color=orange, style=line, title="21", linewidth=1)
plot( ma50, color=c1, style=line, title="50", linewidth=3)
//alertcondition(buy_cond, title = "Buy Condition", message = "Buy Condition Alert")
//alertcondition(sell_cond, title = "Sell Condition", message = "Sell Condition Alert")