
Эта количественная торговая стратегия под названием “Стратегия супериндикаторов 7 в 1” использует 7 популярных технических индикаторов, включая относительно сильные и слабые индикаторы (RSI), скользящие средние показатели (MACD), случайные показатели (Stochastic), ленты (Bollinger Bands), простые движущиеся средние показатели (SMA), движущиеся средние показатели (EMA) и объем (Volume). Объединяя сигналы этих индикаторов, стратегия направлена на то, чтобы идентифицировать состояние перекупа и перепродажи на рынке, чтобы найти оптимальные возможности для покупки.
Ключевым принципом стратегии является комбинированное использование нескольких технических индикаторов для получения более всеобъемлющего и надежного торгового сигнала. Каждый из индикаторов имеет свой уникальный метод подсчета и взгляд на то, как интерпретировать движение рынка. Например, RSI измеряет скорость и силу изменения цен; MACD определяет тренды на основе перекрестков с движущимися средними; случайные индикаторы определяют уровни перекупа и перепродажи, сравнивая цены на закрытие с ценовым диапазоном за определенный период;
Стратегия, устанавливая пороговые значения, анализирует силу сигнала нескольких индикаторов. Когда индикатор достигает определенных комбинационных условий, он генерирует сигнал покупки или продажи. В то же время, стратегия также учитывает другую информацию о рынке, такую как объем торгов, чтобы подтвердить движение цены. Кроме того, стратегия включает в себя меры по управлению и оптимизации рисками, такие как стоп-лосс и фильтрация на время торгов, чтобы контролировать риск при одновременном использовании возможностей.
Основным преимуществом стратегии “7 в 1 супериндикаторов” является ее всесторонность и гибкость. Благодаря комплексному рассмотрению нескольких индикаторов, стратегия может проверять рыночные сигналы с разных точек зрения и повышать вероятность создания надежных торговых возможностей. Даже если отдельные индикаторы посылают вводящие в заблуждение сигналы, стратегия может сделать правильный выбор, если большинство индикаторов указывают на то же самое.
Кроме того, стратегия предоставляет богатый выбор параметров, которые пользователи могут корректировать в соответствии со своими предпочтениями и стилем торговли. Различные комбинации параметров позволяют генерировать разную чувствительность и частоту сигналов, адаптируя их к различным рыночным условиям.
Несмотря на многочисленные преимущества этой стратегии, есть и некоторые потенциальные риски. Во-первых, эффективность стратегии в значительной степени зависит от рациональности выбранных параметров. Неправильная настройка параметров может привести к искажению сигналов, что приводит к ошибочным торговым решениям. Во-вторых, стратегия основана на исторических данных и статистических законах, а рыночная ситуация быстро меняется, и законы прошлого не обязательно применяются в будущем.
Кроме того, в экстремальных ситуациях несколько индикаторов могут одновременно потерять эффективность, что приводит к ошибочному суждению стратегии. Стратегии также могут часто создавать противоречивые сигналы на колеблющихся рынках, что приводит к чрезмерной торговле и быстрому истощению средств.
Для дальнейшего повышения устойчивости и потенциала прибыли стратегии можно оптимизировать следующие аспекты:
С помощью этих оптимизаций стратегия может улучшить свою способность реагировать на сложную рыночную среду и привести к более стабильной прибыли для пользователей, сохраняя при этом преимущество.
В целом, “Стратегия суперпоказателей 7 в 1” - это мощная, полностью разработанная количественная торговая стратегия. Она искусно объединяет семь часто используемых технических показателей, способных уловить рыночные пульсы с разных точек зрения и предоставить трейдерам надежные сигналы о покупке и продаже.
Тем не менее, эффективность стратегии по-прежнему зависит от выбора параметров, рыночных условий и т. д. Торговцам необходимо настроить ее на основе собственного опыта и результатов обратной связи. С помощью таких мер, как введение большего количества измерений показателей, оптимизация логики стоп-стоп-лосс и более тонкая фильтрация периодов торговли, стратегия может стать полезным помощником количественным трейдерам.
/*backtest
start: 2024-04-22 00:00:00
end: 2024-05-22 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy(title='Super Indicator 7 in 1', shorttitle='Super Indicator 7 in 1', overlay=true, initial_capital=100, pyramiding=0, default_qty_value=10000, default_qty_type=strategy.cash)
// Defining indicator parameters
show_plots = input(false, title="Show Plots", group="Visibility")
show_indicators = input(false, title="Show Indicators", group="Visibility")
show_trades = input(true, title="Show Trades", group="Visibility")
show_labels = input(false, title="Show Labels", group="Visibility")
start_hour = input.int(0, title="Start Hour (24h format)", group="Time-Based Filter", minval=0, maxval=24)
end_hour = input.int(24, title="End Hour (24h format)", group="Time-Based Filter", minval=0, maxval=24)
stop_trading = input(false, "Stop Trading", group="Time-Based Filter")
trade_time = (hour >= start_hour and hour <= end_hour)
bgcolor(trade_time and (start_hour != 0 or end_hour != 24) ? color.new(color.blue, 90) : na)
volume_length = input.int(1, title="Volume SMA Length", group="Volume", minval=1, step=1)
sma_period = input.int(50, title="SMA Period", group="Moving Averages")
ema_period = input.int(50, title="EMA Period", group="Moving Averages")
bb_length = input.int(20, title='Bollinger Bands Length', group="Bollinger Bands")
mult = input.float(2.0, title='Bollinger Bands MultFactor', group="Bollinger Bands")
src = input(close, title='Bollinger Bands Source', group="Bollinger Bands")
rsi_length = input.int(14, title='RSI Length', group="RSI")
macd_fast_length = input.int(12, title='MACD Fast Length', group="MACD")
macd_slow_length = input.int(26, title='MACD Slow Length', group="MACD")
macd_signal_length = input.int(9, title='MACD Signal Smoothing', group="MACD")
stoch_length = input.int(14, title='Stochastic Length', group="Stochastic")
smoothK = input.int(3, title='Stochastic %K Smoothing', group="Stochastic")
smoothD = input.int(3, title='Stochastic %D Smoothing', group="Stochastic")
tp_percent = input.float(0.14, title="Take Profit (%)", group="Trade Settings", minval=0.01, step=0.01) / 100
sl_percent = input.float(0.25, title="Stop Loss (%)", group="Trade Settings", minval=0.01, step=0.01) / 100
// Calculating indicators
dev = mult * ta.stdev(src, bb_length)
upper = ta.sma(src, bb_length) + dev
lower = ta.sma(src, bb_length) - dev
rsi_value = ta.rsi(close, rsi_length)
stoch_value = ta.stoch(close, high, low, stoch_length)
[macd_line, signal_line, _] = ta.macd(close, macd_fast_length, macd_slow_length, macd_signal_length)
k = ta.sma(stoch_value, smoothK)
d = ta.sma(k, smoothD)
sma = ta.sma(close, sma_period)
ema = ta.ema(close, ema_period)
volume_ma = ta.sma(volume, volume_length)
volume_condition = volume >= volume_ma
// Signal definitions(-10%, Normal, +10% and ! failed indicator)
min_buy_signal = rsi_value < 33 and rsi_value > 30 and stoch_value < 22 and stoch_value > 20 and low < lower and macd_line < 0 and volume_condition
min_sell_signal = rsi_value > 63 and rsi_value < 70 and stoch_value > 72 and stoch_value < 80 and high > upper and macd_line > 0 and volume_condition
buy_signal = rsi_value < 30 and stoch_value < 20 and low < lower and macd_line < 0 and volume_condition
sell_signal = rsi_value > 70 and stoch_value > 80 and high > upper and macd_line > 0 and volume_condition
max_buy_signal = rsi_value < 27 and stoch_value < 18 and low < lower and macd_line < 0 and volume_condition
max_sell_signal = rsi_value > 77 and stoch_value > 80 and high > upper and macd_line > 0 and volume_condition
buy_condition = (rsi_value < 30 ? 1 : 0) + (stoch_value < 20 ? 1 : 0) + (macd_line < 0 ? 1 : 0) + (low < lower ? 1 : 0) + (volume_condition ? 1 : 0) == 4
sell_condition = (rsi_value > 70 ? 1 : 0) + (stoch_value > 80 ? 1 : 0) + (macd_line > 0 ? 1 : 0) + (high > upper ? 1 : 0) + (volume_condition ? 1 : 0) == 4
// Plotting buy and sell signals
plotshape(show_plots and min_buy_signal, style=shape.triangleup, location=location.belowbar, color=#00ffb7, size=size.small, title="Min Buy Signal")
plotshape(show_plots and min_sell_signal, style=shape.triangledown, location=location.abovebar, color=#efa803, size=size.small, title="Min Sell Signal")
plotshape(show_plots and buy_signal and not max_buy_signal, style=shape.triangleup, location=location.belowbar, color=#004cff, size=size.small, title="Buy Signal")
plotshape(show_plots and sell_signal and not max_sell_signal, style=shape.triangledown, location=location.abovebar, color=#ffff00, size=size.small, title="Sell Signal")
plotshape(show_plots and max_buy_signal, style=shape.triangleup, location=location.belowbar, color=#1eff00, size=size.small, title="Max Buy Signal")
plotshape(show_plots and max_sell_signal, style=shape.triangledown, location=location.abovebar, color=#ff0000, size=size.small, title="Max Sell Signal")
plotshape(show_plots and buy_condition and not min_buy_signal and not buy_signal and not max_buy_signal, style=shape.triangleup, location=location.belowbar, color=#ffffff, size=size.small, title="Buy Condition")
plotshape(show_plots and sell_condition and not min_sell_signal and not sell_signal and not max_sell_signal, style=shape.triangledown, location=location.abovebar, color=#ffffff, size=size.small, title="Sell Condition")
// Plotting moving averages
plot(show_indicators ? sma : na, color=#fc0000, linewidth=2, title="SMA")
plot(show_indicators ? ema : na, color=#00aaff, linewidth=2, title="EMA")
// Crossover labels for moving averages
BullCross = ta.crossover(ema, sma)
BearCross = ta.crossunder(ema, sma)
if (show_labels)
if (BullCross)
label.new(bar_index, sma, color=color.green, textcolor=color.white, style=label.style_cross, size=size.huge)
if (BearCross)
label.new(bar_index, sma, color=color.red, textcolor=color.white, style=label.style_cross, size=size.huge)
// Calculating take profit and stop loss
long_take_profit = close * (1 + tp_percent)
long_stop_loss = close * (1 - sl_percent)
short_take_profit = close * (1 - tp_percent)
short_stop_loss = close * (1 + sl_percent)
// Opening long and short orders based on signals
if (show_trades and trade_time and not stop_trading)
if (min_buy_signal or buy_signal or max_buy_signal or buy_condition)
strategy.entry("Open Long", strategy.long)
strategy.exit("TP/SL Long", limit=long_take_profit, stop=long_stop_loss)
if (min_sell_signal or sell_signal or max_sell_signal or sell_condition)
strategy.entry("Open Short", strategy.short)
strategy.exit("TP/SL Short", limit=short_take_profit, stop=short_stop_loss)