
Движущаяся стратегия прорыва средней линии - это стратегия торговли акциями, использующая сочетание сигналов пересечения средней линии с динамическими индикаторами. Эта стратегия использует множество технических индикаторов, таких как индексы сдвигающейся средней ((EMA), простой подвижной средней ((SMA), сдвигающийся средний сжатый индекс ((MACD) и относительно сильный индекс после его изменения ((StockRSI), чтобы сформировать сигнал покупки при условии, что долгосрочная тенденция подтверждена.
Стратегия включает в себя следующие компоненты:
EMA/SMA среднелинейный пересечение: устанавливается 9-циклическая EMA-быстрая линия и 21-циклическая SMA-медленная линия, которая генерирует сигнал покупки, когда быстрая линия проходит медленную линию.
Индекс MACD: MACD-индикатор включает в себя MACD-линию, сигнальную линию и MACD-пост. В качестве дополнительной подтверждения, когда столбики являются положительными и синхронизированы с сигналом покупки, генерируемым EMA/SMA.
Индекс StockRSI: StockRSI для улучшенной версии RSI. Показательная линия выше линии OVERBOUGHT ((80) или ниже линии OVERSOLD ((20) создает сигнал покупки.
Брин-пояс: средняя траектория бурин - 20-дневная SMA, диапазон - разница между двумя стандартами. Требуется, чтобы цена находилась в пределах буринской зоны, чтобы создать торговый сигнал.
Остановка убытков и остановка позицийСтоп-стоп и стоп-призы рассчитаны на основе ATR за последние 14 дней.
Эта стратегия требует, чтобы по крайней мере 2 из вышеуказанных индикаторов одновременно подавали сигнал о покупке, а цена была в пределах Бринской зоны и долгосрочная тенденция была вверх, чтобы создать окончательный сигнал о покупке. Когда индикатор MACD перевернулся вниз, StockRSI входил в зону перекупа и создал сигнал о продаже.
Эта стратегия, сочетающая в себе преимущества равнолинейного скрещивания, динамического показателя и показателя волатильности, имеет следующие основные преимущества:
Отзывы отлично.: многочисленные показатели и зрелые показатели, стратегические результаты лучше, чем крупные и одиночные показатели.
Оптимизированные параметрыОсновные параметры, такие как циклы EMA, каналы пояса Брин, были оптимизированы, что позволило повысить стабильность системы.
Автоматическая остановка / остановкаБрин-пояса и ATR могут регулировать стоп-позиции в реальном времени, что способствует контролю риска.
Не слишком сложноКод прост, показатели доступны, практическая работа не так сложна.
Несмотря на хорошую эффективность, существуют следующие основные риски:
Показатель подает ошибочный сигналПри этом следует учитывать долгосрочные тенденции.
Неправильный параметрНеправильная настройка параметров может привести к слишком частым сделкам или нечувствительной реакции. Следует адаптироваться в зависимости от разных сортов и рыночных условий.
Слишком маленький или слишком большой стоп-убыток: Слишком маленький стоп-убыток легко поддается обману, слишком большой - слишком большой убыток. Стоп-убыток должен быть сбалансирован с остановкой.
В связи с вышеуказанными рисками могут быть приняты следующие меры:
Человеческое вмешательство и модификация: В случае возникновения аномалий, можно вручную подтвердить сигнал, изменить параметры или приостановить политику.
Оптимизация параметровПрименение более научных и объективных методов, таких как генетические алгоритмы, для оптимизации параметров.
Стоп-стоп в сочетании с коэффициентом колебаний: может автоматически корректироваться в зависимости от колебаний, например, в 1-3 раза ATR.
Эта стратегия может быть улучшена в следующих аспектах:
Повышение устойчивости механизмов сдерживания убытков: можно добавить отслеживание стоп или индексные скользящие средние для стоп.
Фильтр объема транзакцийВключение показателя объема сделок, чтобы избежать неэффективного прорыва.
Динамические параметры настройки: можно автоматически оптимизировать средний цикл в зависимости от рыночной среды, ширины каналов и т. д.
Внедрение алгоритмов машинного обучения: Динамическая оптимизация параметров с использованием алгоритмов RNN, LSTM и др.
Движение прорыв равнолинейной стратегии комплексного применения технических показателей преимущества, в случае длинных и коротких пробежек, хорошая прибыль. Эта стратегия стоп-убыток контролируется в месте, реализация не имеет больших трудностей. Следующий шаг будет дальнейшее совершенствование механизма стоп-убыток, и использование более интеллектуального метода для параметров оптимизации и фильтрации сигналов, стремится получить более стабильную сверхприбыль.
/*backtest
start: 2022-11-20 00:00:00
end: 2023-11-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Improved Custom Strategy", shorttitle="ICS", overlay=true)
// Volatility
volatility = ta.atr(14)
// EMA/MA Crossover
fast_length = 9
slow_length = 21
fast_ma = ta.ema(close, fast_length)
slow_ma = ta.sma(close, slow_length)
crossover_signal = ta.crossover(fast_ma, slow_ma)
// MACD
[macdLine, signalLine, macdHistogram] = ta.macd(close, 12, 26, 9)
macd_signal = crossover_signal and (macdHistogram > 0)
// Bollinger Bands
source = close
basis = ta.sma(source, 20)
upper = basis + 2 * ta.stdev(source, 20)
lower = basis - 2 * ta.stdev(source, 20)
// Fractal-based Support and Resistance levels
isFractalHigh = high[2] < high[1] and high[1] > high[0]
isFractalLow = low[2] > low[1] and low[1] < low[0]
resistance = ta.valuewhen(isFractalHigh, high[1], 0)
support = ta.valuewhen(isFractalLow, low[1], 0)
// StockRSI
length = 14
K = 100 * (close - ta.lowest(close, length)) / (ta.highest(close, length) - ta.lowest(close, length))
D = ta.sma(K, 3)
overbought = 80
oversold = 20
stockrsi_signal = ((K < D) and (K < oversold)) or ((K > D) and (K > overbought))
// Buy and sell conditions
mandatory_buy_conditions = (crossover_signal ? 1 : 0) + (macd_signal ? 1 : 0) + (stockrsi_signal ? 1 : 0)
// Long-term Trend Check
long_term_ma = ta.sma(close, 200)
long_term_bullish = close > long_term_ma
long_term_bearish = close < long_term_ma
// Plot the long-term MA for visual clarity
plot(long_term_ma, color=color.gray, title="200-Day MA", linewidth=1)
// Simplified Buy and Sell conditions
buy_condition = long_term_bullish and (mandatory_buy_conditions >= 2) and (close > lower) and (close < upper)
sell_condition = (macdHistogram < 0) and (K > D) and (K > overbought)
// Potential SL and TP based on volatility
potential_SL = close - volatility
potential_TP = close + 2 * volatility
plot(potential_SL, title="SL Level", color=color.red, linewidth=1, style=plot.style_linebr)
plot(potential_TP, title="TP Level", color=color.green, linewidth=1, style=plot.style_linebr)
// ... (rest of your code above)
// State variable to track if we're in a position, a counter for trades, and a delayed counter for plotting
var bool inPosition = false
var tradeCounter = 0
var tradeCounterDelayed = 0 // Declaration of the variable
// Buy logic: Check if tradeCounter is 0 and the buy condition is met
if tradeCounter == 0 and buy_condition
strategy.entry("BUY", strategy.long, stop=potential_SL, limit=potential_TP)
inPosition := true
tradeCounter := tradeCounter + 1
// Sell logic: Check if tradeCounter is 1, the sell condition is met, and we are in a position
if tradeCounter == 1 and inPosition and sell_condition
strategy.close("BUY")
inPosition := false
tradeCounter := tradeCounter - 1
// Update the delayed trade counter:
tradeCounterDelayed := tradeCounter
// Plotting
bgcolor(buy_condition ? color.new(color.green, 90) : sell_condition ? color.new(color.red, 90) : na)
plotshape(series=buy_condition and tradeCounterDelayed == 0, style=shape.labelup, location=location.belowbar, color=color.green, text="BUY", size=size.small)
plotshape(series=sell_condition and tradeCounterDelayed == 1, style=shape.labeldown, location=location.abovebar, color=color.red, text="SELL", size=size.small)
// ... (rest of your code if any)