Langkau tajuk talian

Sentimen simbol

Antara muka SymbolSentiment dan kelas SymbolSentimentUpdatedEventArgs membolehkan anda mengakses data sentimen pasaran masa nyata melalui API. Untuk mana-mana simbol yang diberikan:

  • Symbol.Sentiment.BuyPercentage memberikan peratusan agregat aktiviti beli, manakala Symbol.Sentiment.SellPercentage mengembalikan peratusan agregat aktiviti jual.
  • SymbolSentimentUpdatedEventArgs adalah pembawa data untuk peristiwa kemas kini sentimen. Kelas ini membolehkan anda mengakses data sentimen yang dikemas kini untuk simbol yang berkaitan.

Amaran

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

Petua

Integrasikan data sentimen pasaran ke dalam strategi dagangan automatik untuk meningkatkan pembuatan keputusan, meningkatkan kemungkinan dagangan yang menguntungkan dan menguatkan pengurusan risiko.

Objek API sentimen simbol boleh digunakan untuk melakukan perkara berikut dalam algoritma:

Ciri atau operasi Contoh
Dagangan berdasarkan sentimen Berdagang dengan bias sentimen
Berdagang bertentangan dengan sentimen melampau
Gabungkan sentimen dengan lilin
Keluar berdasarkan perbezaan sentimen
Konfigurasi risiko adaptif Tapis dagangan yang bising
Skala dagangan dengan sentimen
Kawal strategi berdasarkan aktiviti pasaran
Tetapkan henti rugi berdasarkan sentimen
Pemantauan dan analisis Cipta pemakluman berasaskan sentimen
Jalankan strategi peta haba sentimen
Kesan terobosan melalui sentimen
Sahkan isyarat indikator

Nota

Oleh kerana data sentimen hanya tersedia dalam masa nyata, ia tidak boleh digunakan untuk ujian belakang atau pengoptimuman, kerana tiada data sejarah atau yang disimpan.

Dagangan berdasarkan sentimen

Berdagang dengan bias sentimen

Anda boleh mengaturcarakan cBot untuk mengesahkan bias trend sebelum memasuki dagangan atau berdagang hanya jika sentimen sepadan dengan arah. Contohnya, cBot melaksanakan pembelian jika sekurang-kurangnya 70% sentimen adalah menaik, dan penjualan jika 70% adalah menurun.

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

Berdagang bertentangan dengan sentimen melampau

Pertimbangkan cBot yang memasuki dagangan bertentangan dengan konsensus sentimen yang kuat. Pendekatan pembalikan dalam algoritma mengandaikan bahawa orang ramai sering salah pada tahap melampau atau percaya bahawa apabila sebahagian besar pedagang berada di satu pihak, pasaran mungkin bersedia untuk berubah. Contohnya, jika lebih daripada 80% pedagang membeli, cBot melaksanakan penjualan, menjangkakan pembalikan. Logik yang sama digunakan apabila kebanyakan pedagang 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);
    }
}

Gabungkan sentimen dengan lilin

Anda boleh mengkonfigurasi cBot untuk bertindak hanya apabila kedua-dua sentimen pasaran dan arah lilin bersetuju. Jika ia mendapat lilin menaik dan sentimen melebihi 60% menaik, cBot membeli. Jika lilin menurun dan sentimen bersetuju, cBot menjual. Pendekatan ini membantu anda menapis isyarat lemah dan mengelakkan kemasukan 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 berdasarkan perbezaan sentimen

cBot boleh membantu anda keluar dari dagangan apabila sentimen tidak lagi menyokong posisi anda. Contohnya, jika anda memegang pembelian dan sentimen bertukar kepada lebih 60% menurun, cBot menutupnya. Ia melakukan perkara yang sama untuk dagangan jual apabila sentimen bertukar menaik.

 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

Tapis dagangan yang bising

Anda boleh membangunkan cBot yang mengelakkan dagangan apabila tiada bias sentimen yang jelas. Contohnya, jika sentimen hampir terbahagi dan perbezaannya kurang daripada 10%, cBot melangkau dagangan. Persediaan ini menapis bunyi bising dan melindungi anda daripada pasaran yang tidak menentu.

 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 dagangan dengan sentimen

Anda boleh menyediakan cBot untuk melaraskan saiz posisi berdasarkan sejauh mana sentimen cenderung ke satu arah. Contohnya, jika sentimen menaik melebihi sentimen menurun dengan margin yang besar, cBot meningkatkan volum dagangan. Jika sentimen hampir neutral, cBot berdagang dalam jumlah yang 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);
    }
}

Strategi pendikit berdasarkan aktiviti pasaran

Strategi anda boleh diatur untuk menghentikan dagangan apabila sentimen menunjukkan tanda-tanda pasaran yang sesak. Contohnya, jika lebih daripada 90% pedagang sama ada membeli atau menjual, cBot akan berhenti berdagang untuk mengelakkan memasuki posisi ketika pasaran berkemungkinan akan berbalik.

 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
}

Tetapkan henti rugi mengikut sentimen

Anda boleh mengarahkan cBot untuk mengukur kekuatan sentimen dan bertindak balas dengan saiz henti rugi yang sesuai. Contohnya, apabila sentimen kenaikan melebihi 80%, cBot menggunakan henti yang lebih ketat sebanyak 20 pip. Jika sentimen kurang yakin, cBot menetapkan henti yang lebih luas sebanyak 50 pip untuk memberi ruang bernafas yang 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

Cipta amaran berasaskan sentimen

Pertimbangkan cBot yang memantau sentimen secara masa nyata dan memberi amaran kepada anda apabila tahap ekstrem dicapai. Contohnya, jika sentimen beli melebihi 90%, cBot akan mencatat atau mencetak amaran kenaikan. Jika sentimen jual melepasi ambang yang sama, ia akan memberitahu anda tentang kejatuhan yang melampau.

 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 haba sentimen

Pertimbangkan cBot yang menjalankan imbasan sentimen merentasi pelbagai aset dan mengenal pasti peluang dagangan terbaik. Contohnya, cBot akan mengulangi semua simbol yang tersedia dan mencetak peratusan beli dan jual, dan kemudian anda boleh memberi tumpuan kepada yang mempunyai sentimen kenaikan atau kejatuhan yang paling melampau.

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

Kesan terobosan melalui sentimen

cBot boleh diprogramkan untuk mengesan perubahan pesat dalam sentimen sebagai tanda berpotensi berlakunya terobosan atau turun naik pasaran yang tinggi. Contohnya, jika sentimen beli melonjak atau jatuh lebih daripada 15%, cBot akan mencatat lonjakan tersebut sebagai petunjuk awal pergerakan turun naik.

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

Sahkan isyarat indikator

Daripada bergantung pada indikator sahaja, anda boleh meningkatkan strategi anda dengan mengaturcarakan cBot anda untuk bertindak hanya apabila kedua-dua keadaan indikator dan sentimen sejajar. Contohnya, apabila RSI menunjukkan terlebih jual dan sentimen melebihi 70% kenaikan, cBot akan membeli. Jika RSI menandakan terlebih beli dan sentimen melebihi 70% kejatuhan, cBot akan 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);
    }
}