Эта стратегия использует измененный объем на балансе (OBV) и MACD для генерации торговых сигналов. Она сочетает в себе индекс цен MACD и измененный OBV в качестве комплексного индикатора объема и цены, направленного на захват торговых возможностей при прорыве цены и объема.
Для определения рыночной тенденции вычислить простую скользящую среднюю величину (SMA).
Он изменяет расчет OBV на основе ценовой близости и предыдущей ценовой близости, чтобы сделать OBV более чувствительным.
Расчет MACD на измененной OBV. MACD состоит из быстрой линии, медленной линии и гистограммы для определения изменения импульса объема.
Когда MACD пересекает золото и поднимается, генерируется сигнал покупки.
Когда MACD пересекается и падает, запускается сигнал продажи.
Проверяйте SMA, чтобы избежать ненужных сделок во время без тренда на рынке.
Измененная OBV более чувствительна к ранним изменениям объема.
MACD четко показывает изменение динамики объема и ключевые уровни.
Объем и цена сочетания сигналов повышают точность.
SMA фильтрует ложный сигнал, определяя тенденцию рынка.
Ясная логика стратегии и большое пространство для оптимизации.
Измененная OBV может генерировать ложные сигналы, нужды фильтруются другими показателями.
Неправильное установление параметров MACD может привести к пропуску сделок или ложным сигналам.
Обратите внимание на особенности акций, чтобы избежать потерь.
Следите за состоянием рынка, так как стратегия может не работать для особых сценариев.
Риск перегрузки с помощью обратного теста может привести к ухудшению результатов торговли в режиме реального времени.
Испытать различные комбинации периодов SMA для оптимизации определения тенденции рынка.
Проверить параметры MACD для лучшего определения изменения импульса объема.
Добавьте другие индикаторы в качестве фильтра, такие как KDJ, RSI и т.д.
Добавить стоп-лосс к лимиту по сделке.
Оптимизировать управление деньгами для повышения общей прибыльности.
Различия в параметрах испытаний между запасами.
Стратегия сочетает в себе измененные OBV и MACD для достижения синтеза объема и цены. Она может зафиксировать изменение импульса объема и генерировать торговые сигналы. По сравнению с использованием OBV или MACD в одиночку, эта стратегия обеспечивает более надежные торговые возможности. Однако существует риск ложных сигналов и необходимы дальнейшие оптимизации показателей и параметров, а также управление деньгами для получения устойчивой прибыли в живой торговле. В целом, стратегия имеет четкую логику и стоит тестировать и оптимизировать для изучения своего потенциала.
/*backtest start: 2022-11-14 00:00:00 end: 2023-11-14 00:00:00 period: 1d basePeriod: 1h 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/ // © stocktechbot //@version=5 strategy("Altered OBV On MACD", overlay=true, margin_long=100, margin_short=100) // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © stocktechbot //@version=5 //SMA Tredline out = ta.sma(close, 200) outf = ta.sma(close, 50) outn = ta.sma(close, 90) outt = ta.sma(close, 21) outthree = ta.sma(close, 9) //sma plot offset = input.int(title="Offset", defval=0, minval=-500, maxval=500) plot(out, color=color.blue, title="MA200", offset=offset) plot(outf, color=color.maroon, title="MA50", offset=offset) plot(outn, color=color.orange, title="MA90", offset=offset) plot(outt, color=color.olive, title="MA21", offset=offset) plot(outthree, color=color.fuchsia, title="MA9", offset=offset) fast_length = input(title="Fast Length", defval=12) slow_length = input(title="Slow Length", defval=26) chng = 0 obv = ta.cum(math.sign(ta.change(close)) * volume) if close < close[1] and (open < close) chng := 1 else if close > close[1] chng := 1 else chng := -1 obvalt = ta.cum(math.sign(chng) * volume) //src = input(title="Source", defval=close) src = obvalt signal_length = input.int(title="Signal Smoothing", minval = 1, maxval = 50, defval = 9) sma_source = input.string(title="Oscillator MA Type", defval="EMA", options=["SMA", "EMA"]) sma_signal = input.string(title="Signal Line MA Type", defval="EMA", options=["SMA", "EMA"]) // Calculating fast_ma = sma_source == "SMA" ? ta.sma(src, fast_length) : ta.ema(src, fast_length) slow_ma = sma_source == "SMA" ? ta.sma(src, slow_length) : ta.ema(src, slow_length) macd = fast_ma - slow_ma signal = sma_signal == "SMA" ? ta.sma(macd, signal_length) : ta.ema(macd, signal_length) hist = macd - signal //hline(0, "Zero Line", color=color.new(#787B86, 50)) //plot(hist, title="Histogram", style=plot.style_columns, color=(hist>=0 ? (hist[1] < hist ? col_grow_above : col_fall_above) : (hist[1] < hist ? col_grow_below : col_fall_below))) //plot(macd, title="MACD", color=col_macd) //plot(signal, title="Signal", color=col_signal) [macdLine, signalLine, histLine] = ta.macd(close, 12, 26, 9) //BUY Signal mafentry =ta.sma(close, 50) > ta.sma(close, 90) //matentry = ta.sma(close, 21) > ta.sma(close, 50) matwohun = close > ta.sma(close, 200) twohunraise = ta.rising(out, 2) twentyrise = ta.rising(outt, 2) macdrise = ta.rising(macd,2) macdlong = ta.crossover(macd, signal) longCondition=false if macdlong and macdrise longCondition := true if (longCondition) strategy.entry("My Long Entry Id", strategy.long) //Sell Signal mafexit =ta.sma(close, 50) < ta.sma(close, 90) matexit = ta.sma(close, 21) < ta.sma(close, 50) matwohund = close < ta.sma(close, 200) twohunfall = ta.falling(out, 3) twentyfall = ta.falling(outt, 2) shortmafall = ta.falling(outthree, 1) macdfall = ta.falling(macd,1) macdsell = macd < signal shortCondition = false if macdfall and macdsell and (macdLine < signalLine) and ta.falling(low,2) shortCondition := true if (shortCondition) strategy.entry("My Short Entry Id", strategy.short)