Modèle à trois facteurs de jugement auxiliaire de choc de prix


Date de création: 2024-02-26 15:32:27 Dernière modification: 2024-02-26 15:32:27
Copier: 0 Nombre de clics: 591
1
Suivre
1617
Abonnés

Modèle à trois facteurs de jugement auxiliaire de choc de prix

Aperçu

Le modèle à trois facteurs d’aide à la détermination des fluctuations des prix est une stratégie de négociation de courte distance qui combine plusieurs facteurs de jugement. La stratégie prend en compte les facteurs de jugement du ratio de transaction, de l’indicateur RSI, de l’indicateur MACD et de l’indicateur de ligne de signal, pour juger du comportement des fluctuations des prix et découvrir des opportunités de négociation de courte distance.

Principe de stratégie

La logique de cette stratégie est la suivante:

  1. Calculer les indicateurs techniques tels que les moyennes mobiles rapides, les moyennes mobiles lentes, les courbes MACD et les lignes de signal;

  2. les conditions multifactorielles pour le taux de transaction, le RSI, le MACD et le signal line;

  3. En évaluant les facteurs globaux, il a confirmé que les prix sont en phase de fluctuation et que des opportunités d’achat et de vente se présentent.

  4. entrer dans une position longue ou courte et mettre en place un stop loss;

  5. La position de placement est nettoyée lorsque le prix atteint les conditions de stop ou de stop loss.

Cette stratégie utilise une flexibilité en utilisant des jugements multifactoriels tels que le ratio de transaction, l’indicateur RSI, l’indicateur MACD et l’indicateur de ligne de signal pour juger du comportement de la volatilité des prix afin de capturer des opportunités de négociation en ligne courte. Le jugement combiné de plusieurs facteurs permet d’éviter les signaux erronés causés par un seul facteur et d’améliorer la précision du signal.

Analyse des avantages

Cette stratégie présente les avantages suivants:

  1. Le système d’alarme de l’alarme de l’alarme de l’alarme de l’alarme de l’alarme de l’alarme de l’alarme de l’alarme de l’alarme de l’alarme de l’alarme de l’alarme est également utilisé.
  2. Le prix de l’or est le prix le plus élevé au monde, mais il est aussi le prix le plus élevé de l’or au monde.
  3. Les réglages automatiques de l’arrêt de la perte de frein permettent de contrôler le risque.
  4. La logique de transaction est simple et claire, facile à mettre en œuvre.

Analyse des risques

La stratégie présente également les risques suivants:

  1. Les algorithmes sont trop dépendants des données historiques et sensibles aux changements du marché.
  2. La combinaison multifonctionnelle peut nécessiter une optimisation supplémentaire et peut entraîner des erreurs de jugement.
  3. La définition d’un point de rupture peut avoir une incidence directe sur la stabilité de la stratégie.

Les risques ci-dessus peuvent être optimisés par:

  1. L’augmentation des cycles d’échantillonnage des données et la réduction de l’impact des variations des données du marché;
  2. La mise en œuvre d’une approche multifonctionnelle de l’adaptation et de l’optimisation
  3. Testez différents points de perte pour trouver la meilleure position de perte.

Direction d’optimisation

La stratégie peut être optimisée principalement dans les domaines suivants:

  1. Optimisation des pondérations multifactorielles et adaptation dynamique. Les jugements multifactoriels peuvent être ajustés en fonction des circonstances, ce qui améliore l’adaptabilité;

  2. L’optimisation auto-adaptative de facteurs multiples, combinée à des algorithmes d’apprentissage automatique. L’optimisation autonome des paramètres est réalisée par l’entraînement de modèles multiples à l’aide d’algorithmes tels que les réseaux neuronaux et les algorithmes génétiques.

  3. Optimiser les stratégies de stop loss. Vous pouvez tester différentes combinaisons de stop loss de suivi et de stop loss de déplacement pour trouver les meilleures stratégies de stop loss.

  4. Combiné à des indicateurs techniques avancés, il est possible de tester d’autres indicateurs tels que les fluctuations de la fréquence d’oscillation, les vibrations de la dynamique et une combinaison riche de facteurs.

Résumer

La stratégie de coupe utilise les caractéristiques multifonctionnelles de la zone de fluctuation des prix pour une stratégie de négociation de courte durée efficace. La stratégie utilise des jugements multifonctionnels tels que le volume de transaction, le RSI, le MACD et la ligne de signal pour déterminer le meilleur moment d’achat et de vente.

Code source de la stratégie
/*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)