Vai al contenuto

Sentiment del simbolo

L'interfaccia SymbolSentiment e la classe SymbolSentimentUpdatedEventArgs ti consentono di accedere ai dati di sentiment di mercato in tempo reale tramite API. Per qualsiasi simbolo dato:

  • Symbol.Sentiment.BuyPercentage fornisce la percentuale aggregata di attività di acquisto, mentre Symbol.Sentiment.SellPercentage restituisce la percentuale aggregata di attività di vendita.
  • SymbolSentimentUpdatedEventArgs è un vettore di dati per gli eventi di aggiornamento del sentiment. Questa classe ti consente di accedere ai dati di sentiment aggiornati per il simbolo corrispondente.

Avvertenza

Gli oggetti API del sentiment del simbolo sono supportati solo negli algoritmi .NET 6 e non funzionano nel cloud o in cTrader CLI.

Suggerimento

Integra i dati di sentiment di mercato nelle strategie di trading automatizzate per migliorare il processo decisionale, aumentare la probabilità di operazioni redditizie e rafforzare la gestione del rischio.

Gli oggetti API del sentiment del simbolo possono essere utilizzati per effettuare le seguenti operazioni negli algoritmi:

Funzionalità o operazione Esempi
Trading basato sul sentiment Fare trading con bias del sentiment
Fare trading contro sentiment estremi
Combinare sentiment con candele
Uscire in caso di divergenza del sentiment
Configurazione adattiva del rischio Filtrare le operazioni rumorose
Scalare le operazioni con il sentiment
Limitare la strategia in base all'attività di mercato
Impostare lo stop loss in base al sentiment
Monitoraggio e analisi Creare avvisi basati sul sentiment
Eseguire una strategia di heatmap del sentiment
Individuare i breakout attraverso il sentiment
Convalidare i segnali degli indicatori

Nota

Poiché i dati di sentiment sono disponibili solo in tempo reale, non possono essere utilizzati per il backtesting o l'ottimizzazione, dato che non esistono dati storici o archiviati.

Trading basato sul sentiment

Fai trading con bias del sentiment

Puoi programmare un cBot per confermare il bias del trend prima di entrare nelle operazioni o per fare trading solo se il sentiment corrisponde alla direzione. Ad esempio, il cBot esegue un acquisto se almeno il 70% del sentiment è rialzista e una vendita se il 70% è ribassista.

 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);
    }
}

Fai trading contro il sentiment estremo

Considera un cBot che entra nelle operazioni contro un forte consenso del sentiment. L'approccio di inversione nell'algoritmo presuppone che la massa abbia spesso torto agli estremi o ritiene che quando una percentuale molto alta di trader si trova da una parte, il mercato potrebbe essere pronto a invertirsi. Ad esempio, se più dell'80% dei trader sta acquistando, il cBot esegue una vendita, aspettandosi un'inversione. La stessa logica si applica quando la maggior parte sta vendendo.

 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);
    }
}

Combina il sentiment con le candele

Puoi configurare un cBot per agire solo quando sia il sentiment di mercato che la direzione della candela concordano. Se riceve una candela rialzista e il sentiment è superiore al 60% rialzista, il cBot acquista. Se la candela è ribassista e il sentiment concorda, il cBot vende. Questo approccio ti aiuta a filtrare i segnali deboli ed evitare falsi ingressi.

 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);
    }
}

Esci in caso di divergenza del sentiment

Un cBot può aiutarti a uscire dalle operazioni quando il sentiment non supporta più la tua posizione. Ad esempio, se stai mantenendo un acquisto e il sentiment si inverte a oltre il 60% ribassista, il cBot lo chiude. Fa lo stesso per le operazioni di vendita quando il sentiment diventa rialzista.

 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);
    }
}

Configurazione del rischio adattiva

Filtra le operazioni rumorose

Puoi sviluppare un cBot che evita di fare trading quando non c'è un chiaro bias del sentiment. Ad esempio, se il sentiment è quasi diviso e la differenza è inferiore al 10%, il cBot salta l'operazione. Questa configurazione filtra il rumore e ti protegge dai mercati indecisi.

 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
}

Scala le operazioni con il sentiment

Puoi configurare un cBot per regolare la dimensione della posizione in base a quanto fortemente il sentiment si inclina in una direzione. Ad esempio, se il sentiment rialzista supera quello ribassista di un ampio margine, il cBot aumenta il volume dell'operazione. Se il sentiment è vicino al neutro, il cBot opera con dimensioni minori.

 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);
    }
}

Regola la strategia in base all'attività di mercato

La tua strategia può essere configurata per mettere in pausa il trading quando il sentiment mostra segni di un mercato affollato. Ad esempio, se più del 90% dei trader sta acquistando o vendendo, il cBot interrompe il trading per evitare di entrare in una posizione proprio quando il mercato è probabile che si inverta.

 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
}

Imposta lo stop loss in base al sentiment

Puoi istruire un cBot a misurare la forza del sentiment e rispondere con un dimensionamento appropriato dello stop loss. Ad esempio, quando il sentiment rialzista supera l'80%, il cBot utilizza uno stop più stretto di 20 pip. Se il sentiment è meno sicuro, il cBot imposta uno stop più ampio di 50 pip per consentire più margine di manovra.

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);
    }
}

Monitoraggio e analisi

Crea avvisi basati sul sentiment

Considera un cBot che monitora il sentiment in tempo reale e ti avvisa quando vengono raggiunti livelli estremi. Ad esempio, se il sentiment di acquisto supera il 90%, il cBot registra o stampa un avviso rialzista. Se il sentiment di vendita supera la stessa soglia, ti notifica un ribassismo estremo.

 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!");
}

Esegui una strategia heatmap del sentiment

Considera un cBot che esegue una scansione del sentiment su più asset e identifica le migliori opportunità di trading. Ad esempio, il cBot scorre tutti i simboli disponibili e stampa le percentuali di acquisto e vendita, e poi puoi concentrarti su quelli con il sentiment rialzista o ribassista più estremo.

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}");
    }
}

Individua i breakout attraverso il sentiment

Un cBot può essere programmato per rilevare rapidi cambiamenti nel sentiment come potenziale segno di un breakout o di una maggiore volatilità del mercato. Ad esempio, se il sentiment di acquisto aumenta o diminuisce di oltre il 15%, il cBot registra il picco come indicazione precoce di un movimento volatile.

 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;
}

Convalida i segnali degli indicatori

Invece di affidarti solo agli indicatori, puoi migliorare la tua strategia programmando il tuo cBot per agire solo quando le condizioni dell'indicatore e del sentiment si allineano. Ad esempio, quando l'RSI mostra ipervenduto e il sentiment è superiore al 70% rialzista, il cBot acquista. Se l'RSI segnala ipercomprato e il sentiment supera il 70% ribassista, il cBot vende.

 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);
    }
}