Трехфакторная модель вспомогательного суждения о ценовом шоке


Дата создания: 2024-02-26 15:32:27 Последнее изменение: 2024-02-26 15:32:27
Копировать: 0 Количество просмотров: 591
1
Подписаться
1617
Подписчики

Трехфакторная модель вспомогательного суждения о ценовом шоке

Обзор

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

Стратегический принцип

Основная логика этой стратегии заключается в следующем:

  1. вычисление технических показателей, таких как быстрое и медленное перемещение средних значений, кривые MACD, сигнальные линии;

  2. определение многофакторных условий для коэффициентов купли-продажи, RSI, MACD и сигнальных линий;

  3. В результате комплексного многофакторного анализа было подтверждено, что в настоящее время наблюдается период колебаний цен и возможности для покупки и продажи;

  4. Вход в позицию LONG или SHORT с установкой Stop Loss;

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

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

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

Эта стратегия имеет следующие преимущества:

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

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

Также существуют следующие риски:

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

В отношении вышеуказанных рисков можно оптимизировать:

  1. Увеличение циклов выборки данных, снижение влияния изменений в рыночных данных;
  2. Применение многофакторных весов для оптимизации адаптации;
  3. Проверьте различные точки остановки, чтобы найти оптимальное место для остановки.

Направление оптимизации

Эта стратегия может быть оптимизирована в следующих аспектах:

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

  2. в сочетании с алгоритмами машинного обучения, для самостоятельной оптимизации многофакторных процессов. Использование нейронных сетей, генетических алгоритмов и других алгоритмов для обучения многофакторной модели, для самостоятельной оптимизации параметров;

  3. Оптимизация стратегии остановки убытков. Можно тестировать различные комбинации отслеживания остановок, перемещения остановок, чтобы найти оптимальную стратегию остановки;

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

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

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

Исходный код стратегии
/*backtest
start: 2024-01-26 00:00:00
end: 2024-02-25 00:00:00
period: 4h
basePeriod: 15m
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.7)
shortLookBack = input( title="Short LookBack", defval=3)
longLookBack = input( title="Long LookBack", defval=6)
takeProfit = input( title="Take Profit", defval=2)
stopLoss = input( title="Stop Loss", defval=0.7)

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")
plot(macdSlope, color=color.green, title="MACD Slope")
plot(signalSlope, color=color.red, title="Signal Slope")
intrabarRange = high - low
rsi = ta.rsi(close, 14)
rsiSlope = rsi - rsi[1]
plot(rsiSlope, color=color.black, title="RSI Slope")

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 )


// 202.30 Profit 55.29% 5m
if ( ( getVolBias(longLookBack) == false ) and rsi <= 41 and math.abs(rsi - rsi[shortLookBack]) > 1 and hasNoSignalBias and rsiSlope > 1.5 and close > open)
    strategy.entry("5C1", strategy.long, qty=1.0)
strategy.exit("TPS", "5C1", limit=strategy.position_avg_price + takeProfit, stop=strategy.position_avg_price - stopLoss)

// 171.70 Profit 50.22% 5m
if ( getVolBias(longLookBack) == true and rsi > 45 and rsi < 55 and macdSlope > 0 and signalSlope > 0)
    strategy.entry("5C2", strategy.long, qty=1.0)
strategy.exit("TPS", "5C2", limit=strategy.position_avg_price + takeProfit, stop=strategy.position_avg_price - stopLoss)

// 309.50 Profit 30.8% 5m 2 tp .7 sl 289 trades
if ( macd > macdBiasValue and macdSlope > 0)
    strategy.entry("5P1", strategy.short, qty=1.0)
strategy.exit("TPS", "5P1", limit=strategy.position_avg_price - takeProfit, stop=strategy.position_avg_price + stopLoss)