Aller au contenu

Sentiment du symbole

L'interface SymbolSentiment et la classe SymbolSentimentUpdatedEventArgs vous permettent d'accéder aux données de sentiment du marché en temps réel via l'API. Pour tout symbole donné :

  • Symbol.Sentiment.BuyPercentage fournit le pourcentage global d'activité d'achat, tandis que Symbol.Sentiment.SellPercentage renvoie le pourcentage global d'activité de vente.
  • SymbolSentimentUpdatedEventArgs est un porteur de données pour les événements de mise à jour du sentiment. Cette classe vous permet d'accéder aux données de sentiment mises à jour pour le symbole correspondant.

Avertissement

Les objets API de sentiment du symbole ne sont pris en charge que dans les algorithmes .NET 6 et ne fonctionnent pas dans le cloud ou cTrader CLI.

Conseil

Intégrez les données de sentiment du marché dans les stratégies de trading automatisées pour améliorer la prise de décision, augmenter la probabilité de trades rentables et renforcer la gestion des risques.

Les objets API de sentiment du symbole peuvent être utilisés pour effectuer les opérations suivantes dans les algorithmes :

Fonctionnalité ou opération Exemples
Trading basé sur le sentiment Trader avec un biais de sentiment
Trader contre un sentiment extrême
Combiner le sentiment avec les bougies
Sortir en cas de divergence du sentiment
Configuration adaptative du risque Filtrer les trades bruités
Ajuster les trades en fonction du sentiment
Réguler la stratégie en fonction de l'activité du marché
Définir le stop loss en fonction du sentiment
Surveillance et analyse Créer des alertes basées sur le sentiment
Exécuter une stratégie de carte thermique du sentiment
Repérer les cassures grâce au sentiment
Valider les signaux des indicateurs

Remarque

Étant donné que les données de sentiment ne sont disponibles qu'en temps réel, elles ne peuvent pas être utilisées pour le backtesting ou l'optimisation, car il n'existe pas de données historiques ou stockées.

Trading basé sur le sentiment

Trader avec un biais de sentiment

Vous pouvez programmer un cBot pour confirmer le biais de tendance avant d'entrer dans des trades ou trader uniquement si le sentiment correspond à la direction. Par exemple, le cBot exécute un achat si au moins 70 % du sentiment est haussier, et une vente si 70 % est baissier.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
protected override void OnBar()
{
    if (Symbol.Sentiment.BuyPercentage > 70)
    {
        ExecuteMarketOrder(TradeType.Buy, "EURUSD", 10000);
    }
    else if (Symbol.Sentiment.SellPercentage > 70)
    {
        ExecuteMarketOrder(TradeType.Sell, "EURUSD", 10000);
    }
}

Trader contre un sentiment extrême

Considérez un cBot qui entre dans des trades contre un fort consensus de sentiment. L'approche de retournement dans l'algorithme suppose que la foule a souvent tort aux extrêmes ou estime que lorsqu'une très forte proportion de traders est d'un côté, le marché peut être prêt à se retourner. Par exemple, si plus de 80 % des traders achètent, le cBot exécute une vente, en s'attendant à un retournement. La même logique s'applique lorsque la plupart vendent.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
protected override void OnBar()
{
    if (Symbol.Sentiment.BuyPercentage > 80)
    {
        // Everyone is buying. Consider selling
        ExecuteMarketOrder(TradeType.Sell, "EURUSD", 10000);
    }
    else if (Symbol.Sentiment.SellPercentage > 80)
    {
        // Everyone is selling. Consider buying
        ExecuteMarketOrder(TradeType.Buy, "EURUSD", 10000);
    }
}

Combiner le sentiment avec les bougies

Vous pouvez configurer un cBot pour agir uniquement lorsque le sentiment du marché et la direction de la bougie concordent. S'il obtient une bougie haussière et que le sentiment est supérieur à 60 % haussier, le cBot achète. Si la bougie est baissière et que le sentiment concorde, le cBot vend. Cette approche vous aide à filtrer les signaux faibles et à éviter les fausses entrées.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
protected override void OnBar()
{
    bool bullishCandle = Bars.LastBar.Close > Bars.LastBar.Open;
    if (bullishCandle && Symbol.Sentiment.BuyPercentage > 60)
    {
        ExecuteMarketOrder(TradeType.Buy, "EURUSD", 10000);
    }

    bool bearishCandle = Bars.LastBar.Close < Bars.LastBar.Open;
    if (bearishCandle && Symbol.Sentiment.SellPercentage > 60)
    {
        ExecuteMarketOrder(TradeType.Sell, "EURUSD", 10000);
    }
}

Sortir en cas de divergence du sentiment

Un cBot peut vous aider à sortir des trades lorsque le sentiment ne soutient plus votre position. Par exemple, si vous détenez un achat et que le sentiment bascule à plus de 60 % baissier, le cBot le ferme. Il fait de même pour les ventes lorsque le sentiment devient haussier.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
protected override void OnBar()
{
    foreach (var position in Positions)
    {
        if (position.TradeType == TradeType.Buy && Symbol.Sentiment.SellPercentage > 60)
            ClosePosition(position);
        if (position.TradeType == TradeType.Sell && Symbol.Sentiment.BuyPercentage > 60)
            ClosePosition(position);
    }
}

Configuration adaptative du risque

Filtrer les trades bruités

Vous pouvez développer un cBot qui évite de trader lorsqu'il n'y a pas de biais de sentiment clair. Par exemple, si le sentiment est presque divisé et que la différence est inférieure à 10 %, le cBot ignore le trade. Cette configuration filtre le bruit et vous protège des marchés indécis.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
protected override void OnBar()
{
    var diff = Math.Abs(Symbol.Sentiment.BuyPercentage - Symbol.Sentiment.SellPercentage);

    if (diff < 10)
    {
        // Sentiment is too neutral. Avoid trading
        return;
    }

    // Continue strategy logic here
}

Ajuster les trades en fonction du sentiment

Vous pouvez configurer un cBot pour ajuster la taille de la position en fonction de l'intensité du sentiment dans une direction. Par exemple, si le sentiment haussier l'emporte largement sur le sentiment baissier, le cBot augmente le volume du trade. Si le sentiment est proche de la neutralité, le cBot trade plus petit.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
protected override void OnBar()
{
    double sentimentStrength = Math.Abs(Symbol.Sentiment.BuyPercentage - Symbol.Sentiment.SellPercentage);
    long volume = (long)(10000 * (sentimentStrength / 100.0)); // Adjust volume dynamically

    if (Symbol.Sentiment.BuyPercentage > Symbol.Sentiment.SellPercentage)
    {
        ExecuteMarketOrder(TradeType.Buy, "EURUSD", 10000);
    }
    else
    {
        ExecuteMarketOrder(TradeType.Sell, "EURUSD", 10000);
    }
}

Réguler la stratégie en fonction de l'activité du marché

Votre stratégie peut être configurée pour suspendre le trading lorsque le sentiment montre des signes de marché saturé. Par exemple, si plus de 90 % des traders achètent ou vendent, le cBot arrête de trader pour éviter d'entrer dans une position juste au moment où le marché est susceptible de se retourner.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
protected override void OnBar()
{
    if (Symbol.Sentiment.BuyPercentage > 90 || Symbol.Sentiment.SellPercentage > 90)
    {
        Print("Extreme sentiment detected. Halting trading temporarily.");
        return;
    }

    // Continue normal trading logic
}

Définir le stop loss en fonction du sentiment

Vous pouvez demander à un cBot de mesurer l'intensité du sentiment et de réagir avec un dimensionnement approprié du stop loss. Par exemple, lorsque le sentiment haussier dépasse 80 %, le cBot utilise un stop plus serré de 20 pips. Si le sentiment est moins confiant, le cBot définit un stop plus large de 50 pips pour permettre plus de marge de manœuvre.

1
2
3
4
5
6
7
8
protected override void OnBar()
{
    double stopLossPips = Symbol.Sentiment.BuyPercentage > 80 ? 20 : 50;
    if (Symbol.Sentiment.BuyPercentage > Symbol.Sentiment.SellPercentage)
    {
        ExecuteMarketOrder(TradeType.Buy, "EURUSD", 10000, "buy", stopLossPips, null);
    }
}

Surveillance et analyse

Créer des alertes basées sur le sentiment

Considérez un cBot qui surveille le sentiment en temps réel et vous alerte lorsque des niveaux extrêmes sont atteints. Par exemple, si le sentiment d'achat dépasse 90 %, le cBot enregistre ou affiche une alerte haussière. Si le sentiment de vente franchit le même seuil, il vous notifie d'un sentiment baissier extrême.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
// This method handles the SymbolSentiment_Updated event
// It is triggered whenever the symbol sentiment data is updated
private void SymbolSentiment_Updated(SymbolSentimentUpdatedEventArgs obj)
{
    if (obj.Sentiment.BuyPercentage > 90)
        Print("Extreme bullish sentiment detected!");

    if (obj.Sentiment.SellPercentage > 90)
        Print("Extreme bearish sentiment detected!");
}

Exécuter une stratégie de carte thermique du sentiment

Considérez un cBot qui effectue une analyse du sentiment sur plusieurs actifs et identifie les meilleures opportunités de trading. Par exemple, le cBot parcourt tous les symboles disponibles et affiche les pourcentages d'achat et de vente, puis vous pouvez vous concentrer sur ceux présentant le sentiment haussier ou baissier le plus extrême.

1
2
3
4
5
6
7
8
protected override void OnStart()
{
    var symbols = Symbols.GetSymbols();
    foreach (var sym in symbols)
    {
        Print($"{sym.Name} - Buy %: {sym.Sentiment.BuyPercentage}, Sell %: {sym.Sentiment.SellPercentage}");
    }
}

Repérer les cassures grâce au sentiment

Un cBot peut être programmé pour détecter les changements rapides de sentiment comme un signe potentiel de cassure ou de volatilité accrue du marché. Par exemple, si le sentiment d'achat augmente ou diminue de plus de 15 %, le cBot enregistre ce pic comme une indication précoce d'un mouvement volatil.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
// Field to store the previous buy percentage value
private double previousBuy;

protected override void OnStart()
{
    previousBuy = Symbol.Sentiment.BuyPercentage;

    // Subscribe to the sentiment updated event
    // This will trigger the SymbolSentiment_Updated method whenever sentiment data is updated    
    Symbol.Sentiment.Updated += SymbolSentiment_Updated;
}

// obj is an instance of SymbolSentimentUpdatedEventArgs, which carries the updated sentiment data
private void SymbolSentiment_Updated(SymbolSentimentUpdatedEventArgs obj)
{
    double change = Math.Abs(obj.Sentiment.BuyPercentage - previousBuy);
    if (change > 15)
        Print("Spike in sentiment detected. Breakout or heightened volatility coming soon");

    previousBuy = obj.Sentiment.BuyPercentage;
}

Valider les signaux des indicateurs

Plutôt que de vous fier uniquement aux indicateurs, vous pouvez améliorer votre stratégie en programmant votre cBot pour qu'il n'agisse que lorsque les conditions de l'indicateur et du sentiment sont alignées. Par exemple, lorsque le RSI indique une survente et que le sentiment est supérieur à 70 % haussier, le cBot achète. Si le RSI signale une surachat et que le sentiment dépasse 70 % baissier, le cBot vend.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
private RelativeStrengthIndex rsi;

protected override void OnStart()
{
    rsi = Indicators.RelativeStrengthIndex(Bars.ClosePrices, 14);
}

protected override void OnBar()
{
    if (rsi.Result.LastValue < 30 && Symbol.Sentiment.BuyPercentage > 70)
    {
        ExecuteMarketOrder(TradeType.Buy, "EURUSD", 10000);
    }

    if (rsi.Result.LastValue > 70 && Symbol.Sentiment.SellPercentage > 70)
    {
        ExecuteMarketOrder(TradeType.Sell, "EURUSD", 10000);
    }
}