Zum Inhalt

Symbolstimmung

Die Schnittstelle SymbolSentiment und die Klasse SymbolSentimentUpdatedEventArgs ermöglichen Ihnen den Zugriff auf Echtzeit-Marktstimmungsdaten über die API. Für jedes beliebige Symbol:

  • Symbol.Sentiment.BuyPercentage liefert den aggregierten Prozentsatz der Kaufaktivität, während Symbol.Sentiment.SellPercentage den aggregierten Prozentsatz der Verkaufsaktivität zurückgibt.
  • SymbolSentimentUpdatedEventArgs ist ein Datenträger für Stimmungsaktualisierungsereignisse. Diese Klasse ermöglicht Ihnen den Zugriff auf die aktualisierten Stimmungsdaten für das entsprechende Symbol.

Warnung

Symbolstimmungs-API-Objekte werden nur in .NET 6-Algorithmen unterstützt und funktionieren nicht in der Cloud oder cTrader CLI.

Tipp

Integrieren Sie Marktstimmungsdaten in automatisierte Handelsstrategien, um die Entscheidungsfindung zu verbessern, die Wahrscheinlichkeit profitabler Transaktionen zu erhöhen und das Risikomanagement zu stärken.

Symbolstimmungs-API-Objekte können verwendet werden, um Folgendes in Algorithmen zu tun:

Funktion oder Vorgang Beispiele
Stimmungsgesteuertes Handeln Mit Stimmungsbias handeln
Gegen extreme Stimmung handeln
Stimmung mit Kerzen kombinieren
Bei Stimmungsdivergenz aussteigen
Adaptive Risikokonfiguration Verrauschte Transaktionen herausfiltern
Transaktionen mit Stimmung skalieren
Strategie basierend auf Marktaktivität drosseln
Stop-Loss basierend auf Stimmung festlegen
Überwachung und Analyse Stimmungsbasierte Alarme erstellen
Stimmungs-Heatmap-Strategie ausführen
Ausbrüche durch Stimmung erkennen
Indikatorsignale validieren

Hinweis

Da Stimmungsdaten nur in Echtzeit verfügbar sind, können sie nicht für Backtesting oder Optimierung verwendet werden, da es keine historischen oder gespeicherten Daten gibt.

Stimmungsgesteuertes Handeln

Mit Stimmungsbias handeln

Sie können einen cBot so programmieren, dass er den Trendbias bestätigt, bevor er Transaktionen eingeht, oder nur handelt, wenn die Stimmung mit der Richtung übereinstimmt. Beispielsweise führt der cBot einen Kauf aus, wenn mindestens 70 % der Stimmung bullisch ist, und einen Verkauf, wenn 70 % bärisch sind.

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

Gegen extreme Stimmung handeln

Betrachten Sie einen cBot, der Transaktionen gegen einen starken Stimmungskonsens eingeht. Der Umkehransatz im Algorithmus geht davon aus, dass die Masse bei Extremen oft falsch liegt oder glaubt, dass der Markt bereit sein könnte, sich zu drehen, wenn ein sehr hoher Anteil der Händler auf einer Seite ist. Wenn beispielsweise mehr als 80 % der Händler kaufen, führt der cBot einen Verkauf aus und erwartet eine Umkehr. Die gleiche Logik gilt, wenn die meisten verkaufen.

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

Stimmung mit Kerzen kombinieren

Sie können einen cBot so konfigurieren, dass er nur dann handelt, wenn sowohl die Marktstimmung als auch die Kerzenrichtung übereinstimmen. Wenn er eine bullische Kerze erhält und die Stimmung über 60 % bullisch ist, kauft der cBot. Wenn die Kerze bärisch ist und die Stimmung übereinstimmt, verkauft der cBot. Dieser Ansatz hilft Ihnen, schwache Signale herauszufiltern und falsche Einstiege zu vermeiden.

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

Bei Stimmungsdivergenz aussteigen

Ein cBot kann Ihnen helfen, Transaktionen zu beenden, wenn die Stimmung Ihre Position nicht mehr unterstützt. Wenn Sie beispielsweise einen Kauf halten und die Stimmung auf über 60 % bärisch umschlägt, schließt der cBot ihn. Er macht dasselbe bei Verkaufstransaktionen, wenn die Stimmung bullisch wird.

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

Adaptive Risikokonfiguration

Verrauschte Transaktionen herausfiltern

Sie können einen cBot entwickeln, der das Handeln vermeidet, wenn keine klare Stimmungsverzerrung vorliegt. Wenn beispielsweise die Stimmung nahezu ausgeglichen ist und die Differenz unter 10 % liegt, überspringt der cBot die Transaktion. Diese Einstellung filtert Rauschen heraus und schützt Sie vor unentschlossenen Märkten.

 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
}

Transaktionen nach Stimmung skalieren

Sie können einen cBot so einrichten, dass er die Positionsgröße anhand der Stärke der Stimmungsneigung in eine Richtung anpasst. Wenn beispielsweise die bullische Stimmung die bärische um einen großen Spielraum überwiegt, erhöht der cBot das Handelsvolumen. Wenn die Stimmung nahe an neutral liegt, handelt der cBot kleiner.

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

Strategie basierend auf Marktaktivität drosseln

Ihre Strategie kann so eingerichtet werden, dass sie das Handeln pausiert, wenn die Stimmung Anzeichen eines überfüllten Marktes zeigt. Wenn beispielsweise mehr als 90 % der Händler entweder kaufen oder verkaufen, stoppt der cBot das Handeln, um zu vermeiden, dass eine Position eingegangen wird, gerade wenn sich der Markt wahrscheinlich umkehrt.

 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
}

Stop-Loss gemäß Stimmung setzen

Sie können einen cBot anweisen, die Stimmungsstärke zu messen und mit einer angemessenen Stop-Loss-Größe zu reagieren. Wenn beispielsweise die bullische Stimmung 80 % übersteigt, verwendet der cBot einen engeren Stop von 20 Pips. Wenn die Stimmung weniger zuversichtlich ist, setzt der cBot einen weiteren Stop von 50 Pips, um mehr Spielraum zu ermöglichen.

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

Überwachung und Analyse

Stimmungsbasierte Warnungen erstellen

Ziehen Sie einen cBot in Betracht, der die Stimmung in Echtzeit überwacht und Sie warnt, wenn extreme Niveaus erreicht werden. Wenn beispielsweise die Kaufstimmung 90 % übersteigt, protokolliert oder druckt der cBot eine bullische Warnung. Wenn die Verkaufsstimmung dieselbe Schwelle überschreitet, benachrichtigt er Sie über extreme Bärischkeit.

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

Stimmungs-Heatmap-Strategie ausführen

Ziehen Sie einen cBot in Betracht, der einen Stimmungsscan über mehrere Vermögenswerte durchführt und die besten Handelsmöglichkeiten identifiziert. Beispielsweise durchläuft der cBot alle verfügbaren Symbole und druckt die Kauf- und Verkaufsprozentsätze, und dann können Sie sich auf diejenigen mit der extremsten bullischen oder bärischen Stimmung konzentrieren.

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

Ausbrüche durch Stimmung erkennen

Ein cBot kann so programmiert werden, dass er schnelle Änderungen in der Stimmung als potenzielles Zeichen eines Ausbruchs oder erhöhter Marktvolatilität erkennt. Wenn beispielsweise die Kaufstimmung um mehr als 15 % springt oder fällt, protokolliert der cBot den Anstieg als frühen Hinweis auf eine volatile Bewegung.

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

Indikatorsignale validieren

Anstatt sich allein auf Indikatoren zu verlassen, können Sie Ihre Strategie verbessern, indem Sie Ihren cBot so programmieren, dass er nur handelt, wenn sowohl Indikator- als auch Stimmungsbedingungen übereinstimmen. Wenn beispielsweise RSI überverkauft anzeigt und die Stimmung über 70 % bullisch ist, kauft der cBot. Wenn RSI überkauft signalisiert und die Stimmung 70 % bärisch übersteigt, verkauft der cBot.

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