Многочасовые циклы MACD нулевая стратегия перекрестного переворота

Автор:Чао Чжан, Дата: 2024-02-18 15:27:21
Тэги:

多时间周期MACD零轴交叉反转策略

Обзор

Многочасовой MACD нулевой оси перекрестного переворота стратегии путем расчета различных циклов MACD показателей, выявления сигналов, что цена может перевернуться, использования тенденции следить за методом остановки убытков, в целях достижения более высокой эффективности использования капитала.

Принципы стратегии

Стратегия одновременно рассчитывает 3-цикличные и 10-цикличные движущиеся средние SMA, строит линию быстрого замедления, затем рассчитывает индикаторы MACD и сигнальные линии. Когда скоростные линии и сигнальные линии пересекаются с нулевой оси вверх или вниз, это указывает на то, что цена достигает критической точки и возможен реверсив. Кроме того, стратегия также сочетает в себе многопространственные суждения о состоянии торговли, RSI и т. д., чтобы определить надежность сигналов реверсии.

В частности, стратегия реверсии цены использует следующие методы: 1. Ценовой переход MACD, который указывает на то, что цена достигла критической точки
2. Пыль покупок и продажи в объеме сделок определяет многопроходность
3. RSI показывает понижающуюся динамику в сочетании с изменением наклонности MACD, чтобы определить мощность сигналов реверсии
4. Скоростная и сигнальная линии пересекаются обратно, образуя обратный сигнал

При высокой надежности обратного сигнала стратегия вступает в игру с использованием метода отслеживания тенденций и прекращения потерь в поисках более высокой прибыли.

Анализ преимуществ

По словам одного из них, "это очень важно".

  1. Рассмотрение по нескольким показателям делает сигналы обратного движения более надежными
  2. Использование MACD нулевого перекрестного определения поворотной точки с более высокой точностью
  3. Индекс RSI и объем сделок, высокая надежность
  4. Тенденции отслеживания сдерживания потерь, стремление к более высокой эффективности использования капитала

Анализ рисков

В то же время в этой стратегии есть некоторые риски:

  1. MACD имеет больше шансов выдавать ложные сигналы и легко быть застигнутым.
  2. В процессе многопространственного чередования больше вероятность того, что остановка будет пробита.
  3. Неправильная настройка параметров может привести к слишком частому трейдингу, увеличению стоимости трейдинга и потере сдвига

Уменьшить риск можно следующими способами: 1. Соответствующее расслабление прерывания, чтобы избежать сцепления
2. Оптимизировать параметры, снизить частоту транзакций
3. Принимать участие только в районе ключевой опоры сопротивления

Оптимизация

Также в этой стратегии есть несколько направлений, которые можно оптимизировать:

  1. Добавление алгоритмов машинного обучения, которые помогают определить надежность обратного сигнала
  2. Увеличение эмоциональных показателей, определяющих психологическую сторону пустоты
  3. В сочетании с ключевыми поддерживающими уровнями сопротивления повышается точность входа.
  4. Оптимизировать способы прекращения потерь и еще больше повысить эффективность использования средств
  5. Проверка оптимальной комбинации параметров, снижение частоты торговли

Подведение итогов

Многочасовой MACD нулевой оси перекрестного реверсии стратегии, комплексные учитывает информацию из нескольких измерений, таких как цена, готовность к торговле и волатильность показателей, с помощью множества индикаторов, чтобы определить время реверсии вход в поле, вовремя остановить убытки после полной прибыли, чтобы получить лучшую прибыль в реверсии рынка. Эта стратегия, как ожидается, будет улучшена с помощью машинного обучения и оптимизации ключевых точек, чтобы уменьшить частоту и риск торговли и увеличить пространство для прибыли.


/*backtest
start: 2023-02-11 00:00:00
end: 2024-02-17 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("3 10.0 Oscillator Profile Flagging", shorttitle="3 10.0 Oscillator Profile Flagging", overlay=false)

signalBiasValue = input(title="Signal Bias", defval=0.26)
macdBiasValue = input(title="MACD Bias", defval=0.8)
shortLookBack = input( title="Short LookBack", defval=3)
longLookBack = input( title="Long LookBack", defval=10.0)
takeProfit = input( title="Take Profit", defval=0.8)
stopLoss = input( title="Stop Loss", defval=0.75)

fast_ma = ta.sma(close, 3)
slow_ma = ta.sma(close, 10)
macd = fast_ma - slow_ma
signal = ta.sma(macd, 16)
hline(0, "Zero Line", color = color.black)

buyVolume = volume*((close-low)/(high-low))
sellVolume = volume*((high-close)/(high-low))
buyVolSlope = buyVolume - buyVolume[1]
sellVolSlope = sellVolume - sellVolume[1]
signalSlope = ( signal - signal[1] )
macdSlope = ( macd - macd[1] )
plot(macd, color=color.blue, title="Total Volume")
plot(signal, color=color.orange, title="Total Volume")
intrabarRange = high - low
rsi = ta.rsi(close, 14)
rsiSlope = rsi - rsi[1]

getRSISlopeChange(lookBack) =>
    j = 0
    for i = 0 to lookBack
        if ( rsi[i] - rsi[ i + 1 ] ) > -5
            j += 1
    j

getBuyerVolBias(lookBack) =>
    j = 0
    for i = 1 to lookBack
        if buyVolume[i] > sellVolume[i]
            j += 1
    j

getSellerVolBias(lookBack) =>
    j = 0
    for i = 1 to lookBack
        if sellVolume[i] > buyVolume[i]
            j += 1
    j

getVolBias(lookBack) =>
    float b = 0.0
    float s = 0.0
    for i = 1 to lookBack
        b += buyVolume[i]
        s += sellVolume[i]
    b > s

getSignalBuyerBias(lookBack) =>
    j = 0
    for i = 1 to lookBack
        if signal[i] > signalBiasValue
            j += 1
    j

getSignalSellerBias(lookBack) =>
    j = 0
    for i = 1 to lookBack
        if signal[i] < ( 0.0 - signalBiasValue )
            j += 1
    j

getSignalNoBias(lookBack) =>
    j = 0
    for i = 1 to lookBack
        if signal[i] < signalBiasValue and signal[i] > ( 0.0 - signalBiasValue )
            j += 1
    j

getPriceRising(lookBack) =>
    j = 0
    for i = 1 to lookBack
        if close[i] > close[i + 1]
            j += 1
    j


getPriceFalling(lookBack) =>
    j = 0
    for i = 1 to lookBack
        if close[i] < close[i + 1] 
            j += 1
    j

getRangeNarrowing(lookBack) =>
    j = 0
    for i = 1 to lookBack
        if intrabarRange[i] < intrabarRange[i + 1] 
            j+= 1
    j

getRangeBroadening(lookBack) =>
    j = 0
    for i = 1 to lookBack
        if intrabarRange[i] > intrabarRange[i + 1] 
            j+= 1
    j

bool isNegativeSignalReversal = signalSlope < 0.0 and signalSlope[1] > 0.0
bool isNegativeMacdReversal = macdSlope < 0.0 and macdSlope[1] > 0.0

bool isPositiveSignalReversal = signalSlope > 0.0 and signalSlope[1] < 0.0
bool isPositiveMacdReversal = macdSlope > 0.0 and macdSlope[1] < 0.0

bool hasBearInversion = signalSlope > 0.0 and macdSlope < 0.0
bool hasBullInversion = signalSlope < 0.0 and macdSlope > 0.0

bool hasSignalBias = math.abs(signal) >= signalBiasValue
bool hasNoSignalBias = signal < signalBiasValue and signal > ( 0.0 - signalBiasValue )

bool hasSignalBuyerBias = hasSignalBias and signal > 0.0
bool hasSignalSellerBias = hasSignalBias and signal < 0.0

bool hasPositiveMACDBias = macd > macdBiasValue
bool hasNegativeMACDBias = macd < ( 0.0 - macdBiasValue )

bool hasBullAntiPattern = ta.crossunder(macd, signal)
bool hasBearAntiPattern = ta.crossover(macd, signal)

bool hasSignificantBuyerVolBias = buyVolume > ( sellVolume * 1.5 )
bool hasSignificantSellerVolBias = sellVolume > ( buyVolume * 1.5 )

// 393.60 Profit 52.26% 15m
if ( hasBullInversion and rsiSlope > 1.5 and volume > 300000.0 )
    strategy.entry("15C1", strategy.long, qty=10.0)
strategy.exit("TPS", "15C1", limit=strategy.position_avg_price + takeProfit, stop=strategy.position_avg_price - stopLoss)

// 356.10 Profit 51,45% 15m
if ( getVolBias(shortLookBack) == false and rsiSlope > 3.0 and signalSlope > 0)
    strategy.entry("15C2", strategy.long, qty=10.0)
strategy.exit("TPS", "15C2", limit=strategy.position_avg_price + takeProfit, stop=strategy.position_avg_price - stopLoss)

// 124 Profit 52% 15m
if ( rsiSlope < -11.25 and macdSlope < 0.0 and signalSlope < 0.0)
    strategy.entry("15P1", strategy.short, qty=10.0)
strategy.exit("TPS", "15P1", limit=strategy.position_avg_price - takeProfit, stop=strategy.position_avg_price + stopLoss)

// 455.40 Profit 49% 15m
if ( math.abs(math.abs(macd) - math.abs(signal)) < .1 and buyVolume > sellVolume and hasBullInversion)
    strategy.entry("15P2", strategy.short, qty=10.0)
strategy.exit("TPS", "15P2", limit=strategy.position_avg_price - takeProfit, stop=strategy.position_avg_price + stopLoss)

Больше информации