
Двойная равнолинейная стратегия - это количественная торговая стратегия, основанная на равнолинейных показателях. Эта стратегия использует главным образом золотой крест и мертвый крест с движущимися средними для подачи сигналов покупки и продажи.
Стратегия основана на трёх технических показателях:
Супертренд: используется для определения направления основной тенденции цены. Когда индикатор Супертренда меняет направление, он определяется как точка перелома в ценовой тенденции и посылает торговый сигнал.
RSI (Relative Strength Index): показатель колебаний, используемый для определения перекупа и перепродажи. Эта стратегия подает торговый сигнал, когда показатель RSI показывает, что цены перекупаются или перепродаются на короткое время.
ADX-индикатор (Average Directional Indicator): используется для определения силы тренда. Эта стратегия в сочетании с ADX определяет силу тренда, выбирая вход, когда тренд сильнее.
Когда индикатор Supertrend изменяет направление, это означает, что ценовая тенденция переворачивается; в то же время индикатор RSI показывает, что наблюдается перепродажа, что указывает на изменение краткосрочного спроса и предложения, и цена может измениться; Кроме того, индикатор ADX показывает, что тенденция сильна, что дает возможность для входа в эту стратегию. В частности, когда наблюдается изменение направления Supertrend, индикатор RSI показывает перепродажу, и когда ADX> 20, выпускается многосигнал; когда направление Supertrend изменяется, индикатор RSI показывает перепродажу, выпускается сигнал равновесия.
Используя двойную равнолинейную систему, Profit может эффективно отслеживать изменения в ценовых тенденциях и получать прибыль от них.
В сочетании с показателем RSI, чтобы оценить явление перекупа и перепродажи, избегайте преследования высоких и низких цен в точках перемены.
Индекс ADX определяет силу тренда, поэтому эта стратегия используется в основном в более сильных тенденциях, чтобы извлечь выгоду из больших тенденций.
Параметры стратегии были оптимизированы и хорошо проявили себя в сравнительных тестах.
Двойная средняя линия сама по себе чувствительна к изменениям цены и может создавать больше торговых сигналов. Решение заключается в соответствующей корректировке параметров средней линии и уменьшении частоты торгов.
И RSI, и ADX могут быть неэффективными. Решение заключается в оптимизации параметров и корректировке цикла вычисления.
Для этой стратегии необходимо выбрать подходящую стратегию остановки убытков. Решение заключается в установлении разумного подвижного остановки или привязки одного остановки убытков.
Оптимизация частоты торгов. Можно попытаться оптимизировать параметры равнолинейной системы, регулируя частоту торгов.
Можно ввести другие вспомогательные показатели. Например, ввести показатель объема торгов, выбрать вход при входе в большую одиночную площадку.
Параметрическая оптимизация в сочетании с алгоритмами машинного обучения. Использование алгоритмов для прогнозирования оптимального пакета параметров.
Введение механизма остановки убытков. Установка подвижного остановки убытков или привязки остановки убытков для контроля одиночных убытков.
Эта стратегия представляет собой стратегию двойного равновесного отслеживания, основной идеей которой является отслеживание равновесного индикатора для определения ценовой тенденции и выбора времени входа в рынок в сочетании с RSI и ADX. Ее преимущество заключается в том, что она может работать в соответствии с тенденцией, быстро вступать в рынок во время сверхпокупа и сверхпродажи, чтобы извлечь выгоду из большой тенденции.
/*backtest
start: 2022-12-18 00:00:00
end: 2023-12-24 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Supertrend Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=120,
initial_capital=1000, margin_long=0.1)
atrPeriod = input(10, "ATR Length")
factor = input.float(3.0, "Factor", step=0.01)
[_, direction] = ta.supertrend(factor, atrPeriod)
adxlen = input(7, title="ADX Smoothing")
dilen = input(7, title="DI Length")
dirmov(len) =>
up = ta.change(high)
down = -ta.change(low)
plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
truerange = ta.rma(ta.tr, len)
plus = fixnan(100 * ta.rma(plusDM, len) / truerange)
minus = fixnan(100 * ta.rma(minusDM, len) / truerange)
[plus, minus]
adx(dilen, adxlen) =>
[plus, minus] = dirmov(dilen)
sum = plus + minus
adx = 100 * ta.rma(math.abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
sig = adx(dilen, adxlen)
if ta.change(direction) < 0 and ta.rsi(close, 21) < 66 and ta.rsi(close, 3) > 80 and ta.rsi(close, 28) > 49 and sig > 20
strategy.entry("My Long Entry Id", strategy.long)
if ta.change(direction) > 0
strategy.close("My Long Entry Id") // Close long position
//plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)