
Эта стратегия использует в качестве входного сигнала пересечение показателя Stoch в зоне перепродажи, в сочетании с показателем EMA, чтобы определить направление текущей тенденции, а также проводит многооперационные операции только в условиях продолжающейся тенденции к росту EMA, а в условиях продолжающейся тенденции к снижению EMA проводит дисконтные операции, что является типичной стратегией отслеживания тенденции.
Стратегия состоит из трех основных частей:
Используя два различных параметра EMA, быстро и медленно, быстрое EMA будет оцениваться как тенденция к росту, когда оно находится выше медленного EMA, а быстрое EMA будет оцениваться как тенденция к снижению, когда оно находится ниже медленного EMA.
Сточ состоит из %K и %D линий, которые дают сигнал к покупке при перекрёстке золота с %D линией над зоной перекупа, и сигнал к продаже при перекрёстке смерти с %D линией ниже зоны перепродажи. Эта стратегия дает сигнал к сделке только при перекрёстке сточа в зоне перекупа.
В этой стратегии одновременно устанавливается механизм остановки и остановки. При проведении многопозиционных позиций, если цена опустится ниже установленной остановки, то будет остановлена позиция; если цена опустится ниже установленной остановки, то будет остановлена позиция.
В целом, эта стратегия относится к более типичным количественным торговым стратегиям, используя комбинацию индикаторов для определения направления тенденций и торговых сигналов, а также при помощи строгих правил управления рисками, которые могут эффективно снизить торговые риски.
Основные преимущества этой стратегии:
Используйте EMA, чтобы оценить тенденции в основных и второстепенных уровнях, чтобы избежать рыночных колебаний.
Особенностью Stoch является то, что он хорошо отражает, находится ли в настоящее время в зоне перекупа или перепродажи, поэтому в сочетании с получением перекрестного сигнала можно совершать сделки в зоне перекупа или перепродажи.
Эта стратегия определяет условия, в которых могут возникнуть переоценки и понижения цены, что позволяет дополнительно отфильтровывать сигналы, снижая вероятность ошибочных сигналов, а также избегать слепого открытия позиций на сложных рынках.
Строгие механизмы управления рисками помогают контролировать убытки от одноразовых сделок, контролируя как максимальный вывод в целом, так и оставляя достаточно места для прибыльных сделок.
Однако эта стратегия несет в себе определенные риски:
Показатели EMA, Stoch и другие имеют определенную отсталость, что может затруднить эту стратегию и привести к возможности поймать рыночный поворот вовремя.
Очень легко сделать предвзятое суждение о рынке, полагаясь только на показатели, и, таким образом, упустить реальные возможности для торговли.
Кроме того, сам механизм управления рисками может ограничивать стратегические возможности для получения прибыли, особенно осторожно следует подходить к установке стоп-позиций и остановок потерь в больших тенденциях.
При выборе параметров данная стратегия также несет определенные риски, влияние различных параметров на результаты требует большого количества обратной связи и оптимизации для получения оптимальной комбинации параметров.
Эта стратегия может быть оптимизирована в следующих аспектах:
Попробуйте различные типы ЭМА, такие как весомое скользящее среднее, Hull MA и другие, чтобы определить тенденцию и провести сравнительный анализ.
Попытка создания многоиндикаторной торговой системы в сочетании с другими индикаторами для получения торговых сигналов, таких как MACD, KDJ и т. д.
Оптимизация параметров стоп-лосс и стоп-стоп, чтобы они были более адаптированы к реальным колебаниям на рынке. Можно установить более мягкие стоп-лосс и более строгие стоп-стоп-стоп.
Тестирование различных видов и различных циклов эффективности стратегии для поиска оптимального сочетания видов и циклов.
Подумайте о том, чтобы использовать модели машинного обучения или нейронных сетей для определения направления тенденций и торговых сигналов, чтобы сделать стратегию более интеллектуальной.
В целом, эта стратегия использует общие показатели для комбинирования и создания более зрелого набора стратегий для отслеживания тенденций. Она учитывает как тенденции, так и конкретные торговые сигналы, а также имеет механизм управления рисками.
/*backtest
start: 2024-01-05 00:00:00
end: 2024-02-04 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
//by Wugamlo
//Strategy combining Stochastic Crosses in the Overbought/Oversold Area with a trend determined by two EMAs
//Default setup seems to work best on 4HR timeframe for BTC
strategy(title = "Strategy Stoch/EMA Cross", shorttitle = "Strategy Stoch/EMA Cross", overlay = true, pyramiding = 0, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, currency = currency.USD, commission_value=0.01,commission_type=strategy.commission.percent, initial_capital=1000)
// === GENERAL INPUTS ===
SectionInd = input(defval = true ,title = "════════════ INDICATORS ════════════")
maFastLength = input(defval = 55, title = "Fast MA Period", minval = 1)
maSlowLength = input(defval = 89, title = "Slow MA Period", minval = 1)
StochLength = input(defval = 14, title = "Stochastic Length", minval=1)
smoothK = input(defval = 6, title = "%K Smooth", minval=1)
smoothD = input(defval = 3, title = "%D Smooth", minval=1)
overbought = 80
oversold = 20
HighlightOBOS = input(defval = true, title = "Highlight Stoch Cross?")
HighlightTrend = input(defval = true, title = "Highlight Trend?")
//DATE AND TIME
SectionFrom = input(defval = true ,title = "═══════════════ FROM ═══════════════")
fromDay = input(defval = 01, title = "From day", minval=1)
fromMonth = input(defval = 1, title = "From month", minval=1)
fromYear = input(defval = 2019, title = "From year", minval=2014)
SectionTo = input(defval = true, title = "════════════════ TO ════════════════")
toDay = input(defval = 31, title = "To day", minval=1)
toMonth = input(defval = 12, title = "To month", minval=1)
toYear = input(defval = 2020, title = "To year", minval=2014)
// === STRATEGY RELATED INPUTS ===
SectionStra = input(defval = true ,title = "═════════════ STRATEGY ═════════════")
// Include Shorts or only trade Long Positions?
includeShorts = input(defval = true, title = "Include Short Positions?")
// Risk Management inputs
useTakeProfit = input(defval = true, title = "User Take Profit?")
inpTakeProfit = input(defval = 8, title = "Take Profit (%)", minval = 0)
useStopLoss = input(defval = false, title = "User Stop Loss?")
inpStopLoss = input(defval = 2, title = "Stop Loss (%)", minval = 0)
StopLossPerc = inpStopLoss * 0.01
TakeProfitPerc = inpTakeProfit * 0.01
// === EMA SERIES SETUP ===
maFast = ema(close, maFastLength)
maSlow = ema(close, maSlowLength)
diff = maFast - maSlow
// === STOCHASTIC SETUP ===
k = sma(stoch(close, high, low, StochLength), smoothK)
d = sma(k, smoothD)
// Stochastic Long/Short Entry determination
stochLong = crossover(k,d) and (k < oversold)
stochShort = crossunder(k,d) and (k > overbought)
// Stochastic Long/Short Exit determination
stochLongEx = crossover (k, overbought)
stochShortEx = crossunder(k, oversold)
// === PLOTTING EMAs ===
fast = plot(maFast, title = "Fast MA", color = yellow, linewidth = 1, style = line, transp = 10)
slow = plot(maSlow, title = "Slow MA", color = white, linewidth = 1, style = line, transp = 10)
// === Vertical Coloring for Crosses in Overbought/Oversold zone and for MA Trend Zones ===
b_color = stochLong ? green : stochShort ? red : na
bgcolor(HighlightOBOS ? b_color : na, title="Overbought / Oversold", transp=65) //Highlight the Overbought/Oversold Stoch Crossings
t_color = diff>=0 ? green : diff<0 ? red : na
bgcolor(HighlightTrend ? t_color : na, title="Trend up / Trend down", transp=75) //Highlight the EMA Trend
// === STRATEGY LOGIC ===
// Time Restriction
timeInRange = true
// === STRATEGY - LONG POSITION EXECUTION ===
if stochLong and (diff >=0) and timeInRange //Open Long when Stoch crossing in Oversold area and EMATrend is up
strategy.entry(id = "Long", long = true)
if stochLong and (diff <0) and timeInRange //Close Long when another Long Stoch cross signal is given after Trend has changed to down (avoid fake signals)
strategy.close(id = "Long")
if stochLongEx and timeInRange //Close Long when Stoch is getting Overbought
strategy.close(id = "Long")
// === STRATEGY - SHORT POSITION EXECUTION ===
if stochShort and (diff <0) and timeInRange and includeShorts //Open Short when Stoch crossing in Overbought area and EMA Trend is down
strategy.entry(id = "Short", long = false)
if stochShort and (diff >=0) and timeInRange //Close Short when another Short Stoch cross signal is given after Trend has changed to up (avoid fake signals)
strategy.close(id = "Short")
if stochShortEx and timeInRange //Close Short when Stoch is getting Oversold
strategy.close(id = "Short")
// === STRATEGY RISK MANAGEMENT EXECUTION ===
//Stop Loss
if useStopLoss //Exit when Stop Loss is hit
strategy.exit("Exit Long SL", from_entry = "Long", loss = close * StopLossPerc / syminfo.mintick )
strategy.exit("Exit Short SL", from_entry = "Short", loss = close * StopLossPerc / syminfo.mintick )
//Take Profit
if useTakeProfit //Exit when Take Profit Limit is hit
strategy.exit("Exit Long TP", from_entry = "Long", profit = close * TakeProfitPerc / syminfo.mintick)
strategy.exit("Exit Short TP", from_entry = "Short", profit = close * TakeProfitPerc / syminfo.mintick)