Lewati ke isi

Sentimen simbol

Antarmuka SymbolSentiment dan kelas SymbolSentimentUpdatedEventArgs memungkinkan Anda untuk mengakses data sentimen pasar real-time melalui API. Untuk simbol apa pun:

  • Symbol.Sentiment.BuyPercentage memberikan persentase agregat aktivitas beli, sementara Symbol.Sentiment.SellPercentage mengembalikan persentase agregat aktivitas jual.
  • SymbolSentimentUpdatedEventArgs adalah pembawa data untuk peristiwa pembaruan sentimen. Kelas ini memungkinkan Anda untuk mengakses data sentimen yang diperbarui untuk simbol yang sesuai.

Peringatan

Objek API sentimen simbol hanya didukung dalam algoritma .NET 6 dan tidak berfungsi di Cloud atau cTrader CLI.

Tip

Integrasikan data sentimen pasar ke dalam strategi trading otomatis untuk meningkatkan pengambilan keputusan, meningkatkan kemungkinan trading yang menguntungkan dan memperkuat manajemen risiko.

Objek API sentimen simbol dapat digunakan untuk melakukan hal-hal berikut dalam algoritma:

Fitur atau operasi Contoh
Trading berbasis sentimen Trading dengan bias sentimen
Trading melawan sentimen ekstrem
Menggabungkan sentimen dengan candlestick
Keluar pada divergensi sentimen
Konfigurasi risiko adaptif Menyaring trading yang berisik
Menskala trading dengan sentimen
Membatasi strategi berdasarkan aktivitas pasar
Mengatur Stop Loss berdasarkan sentimen
Pemantauan dan analisis Buat peringatan berbasis sentimen
Jalankan strategi peta panas sentimen
Deteksi breakout melalui sentimen
Validasi sinyal indikator

Catatan

Karena data sentimen hanya tersedia secara real-time, data tersebut tidak dapat digunakan untuk backtesting atau optimisasi, karena tidak ada data historis atau tersimpan.

Trading berbasis sentimen

Trading dengan bias sentimen

Anda dapat memprogram cBot untuk mengonfirmasi bias tren sebelum memasuki trading atau hanya melakukan trading jika sentimen sesuai dengan arahnya. Misalnya, cBot mengeksekusi pembelian jika setidaknya 70% sentimen bullish, dan penjualan jika 70% bearish.

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

Trading melawan sentimen ekstrem

Pertimbangkan cBot yang memasuki trading melawan konsensus sentimen yang kuat. Pendekatan pembalikan dalam algoritma mengasumsikan bahwa kerumunan sering salah pada titik ekstrem atau percaya bahwa ketika proporsi trader yang sangat tinggi berada di satu sisi, pasar mungkin siap untuk berubah. Misalnya, jika lebih dari 80% trader membeli, cBot mengeksekusi penjualan, mengharapkan pembalikan. Logika yang sama berlaku ketika sebagian besar menjual.

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

Kombinasikan sentimen dengan lilin

Anda dapat mengonfigurasi cBot untuk bertindak hanya ketika sentimen pasar dan arah lilin sama-sama setuju. Jika mendapatkan lilin bullish dan sentimen di atas 60% bullish, cBot membeli. Jika lilin bearish dan sentimen setuju, cBot menjual. Pendekatan ini membantu Anda menyaring sinyal lemah dan menghindari entri palsu.

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

Keluar pada divergensi sentimen

cBot dapat membantu Anda keluar dari trading ketika sentimen tidak lagi mendukung posisi Anda. Misalnya, jika Anda memegang pembelian dan sentimen berubah menjadi lebih dari 60% bearish, cBot menutupnya. Hal yang sama dilakukan untuk trading penjualan ketika sentimen berubah menjadi bullish.

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

Konfigurasi risiko adaptif

Saring trading yang berisik

Anda dapat mengembangkan cBot yang menghindari trading ketika tidak ada bias sentimen yang jelas. Misalnya, jika sentimen hampir terbagi dan perbedaannya di bawah 10%, cBot melewatkan trading. Pengaturan ini menyaring kebisingan dan melindungi Anda dari pasar yang ragu-ragu.

 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
}

Skala trading dengan sentimen

Anda dapat mengatur cBot untuk menyesuaikan ukuran posisi berdasarkan seberapa kuat sentimen condong ke satu arah. Misalnya, jika sentimen bullish melebihi bearish dengan margin besar, cBot meningkatkan volume trading. Jika sentimen mendekati netral, cBot melakukan trading lebih kecil.

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

Throttle strategi berdasarkan aktivitas pasar

Strategi Anda dapat diatur untuk menghentikan trading sementara ketika sentimen menunjukkan tanda-tanda pasar yang ramai. Misalnya, jika lebih dari 90% trader membeli atau menjual, cBot berhenti trading untuk menghindari memasuki posisi tepat ketika pasar kemungkinan akan berbalik arah.

 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
}

Atur stop loss sesuai dengan sentimen

Anda dapat menginstruksikan cBot untuk mengukur kekuatan sentimen dan merespons dengan ukuran stop loss yang sesuai. Misalnya, ketika sentimen bullish melebihi 80%, cBot menggunakan stop yang lebih ketat sebesar 20 pip. Jika sentimen kurang yakin, cBot mengatur stop yang lebih lebar sebesar 50 pip untuk memberikan ruang gerak lebih.

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

Pemantauan dan analisis

Buat peringatan berbasis sentimen

Pertimbangkan cBot yang memantau sentimen secara real-time dan memberi peringatan kepada Anda ketika level ekstrem tercapai. Misalnya, jika sentimen beli melebihi 90%, cBot mencatat atau mencetak peringatan bullish. Jika sentimen jual melewati ambang batas yang sama, cBot memberi tahu Anda tentang bearish yang ekstrem.

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

Jalankan strategi peta panas sentimen

Pertimbangkan cBot yang menjalankan pemindaian sentimen di berbagai aset dan mengidentifikasi peluang trading terbaik. Misalnya, cBot melakukan loop melalui semua simbol yang tersedia dan mencetak persentase beli dan jual, dan kemudian Anda dapat fokus pada yang memiliki sentimen bullish atau bearish paling ekstrem.

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

Deteksi breakout melalui sentimen

cBot dapat diprogram untuk mendeteksi perubahan cepat dalam sentimen sebagai tanda potensial breakout atau volatilitas pasar yang meningkat. Misalnya, jika sentimen beli naik atau turun lebih dari 15%, cBot mencatat lonjakan tersebut sebagai indikasi awal pergerakan yang 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;
}

Validasi sinyal indikator

Daripada hanya mengandalkan indikator, Anda dapat meningkatkan strategi Anda dengan memprogram cBot Anda untuk hanya bertindak ketika kondisi indikator dan sentimen selaras. Misalnya, ketika RSI menunjukkan oversold dan sentimen di atas 70% bullish, cBot membeli. Jika RSI menandakan overbought dan sentimen melebihi 70% bearish, cBot menjual.

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