Bỏ qua

Tâm lý ký hiệu

Giao diện SymbolSentiment và lớp SymbolSentimentUpdatedEventArgs cho phép bạn truy cập dữ liệu tâm lý thị trường theo thời gian thực thông qua API. Đối với bất kỳ ký hiệu nào:

  • Symbol.Sentiment.BuyPercentage cung cấp tỷ lệ phần trăm tổng hợp của hoạt động mua, trong khi Symbol.Sentiment.SellPercentage trả về tỷ lệ phần trăm tổng hợp của hoạt động bán.
  • SymbolSentimentUpdatedEventArgs là một đơn vị chứa dữ liệu cho các sự kiện cập nhật tâm lý. Lớp này cho phép bạn truy cập dữ liệu tâm lý đã cập nhật cho ký hiệu tương ứng.

Cảnh báo

Các đối tượng API tâm lý ký hiệu chỉ được hỗ trợ trong các thuật toán .NET 6 và không hoạt động trong Cloud hoặc cTrader CLI.

Mẹo

Tích hợp dữ liệu tâm lý thị trường vào các chiến lược giao dịch tự động để nâng cao việc ra quyết định, tăng khả năng giao dịch có lợi nhuận và tăng cường quản lý rủi ro.

Các đối tượng API tâm lý ký hiệu có thể được sử dụng để thực hiện những điều sau trong thuật toán:

Tính năng hoặc hoạt động Ví dụ
Giao dịch dựa trên tâm lý Giao dịch theo xu hướng tâm lý
Giao dịch ngược lại với tâm lý cực đoan
Kết hợp tâm lý với nến
Thoát khi tâm lý phân kỳ
Cấu hình rủi ro thích ứng Lọc bỏ các giao dịch nhiễu
Điều chỉnh quy mô giao dịch theo tâm lý
Điều tiết chiến lược dựa trên hoạt động thị trường
Đặt cắt lỗ dựa trên tâm lý
Giám sát và phân tích Tạo cảnh báo dựa trên tâm lý
Chạy chiến lược bản đồ nhiệt tâm lý
Phát hiện đột phá thông qua tâm lý
Xác nhận tín hiệu chỉ báo

Ghi chú

Vì dữ liệu tâm lý chỉ có sẵn trong thời gian thực, nó không thể được sử dụng cho backtest hoặc tối ưu hóa, do không có dữ liệu lịch sử hoặc dữ liệu được lưu trữ.

Giao dịch dựa trên tâm lý

Giao dịch với xu hướng tâm lý

Bạn có thể lập trình một cBot để xác nhận xu hướng trước khi vào lệnh hoặc chỉ giao dịch nếu tâm lý phù hợp với hướng giao dịch. Ví dụ, cBot thực hiện lệnh mua nếu ít nhất 70% tâm lý là tăng giá, và bán nếu 70% là giảm giá.

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

Giao dịch ngược với tâm lý cực đoan

Hãy xem xét một cBot vào lệnh ngược với sự đồng thuận tâm lý mạnh mẽ. Cách tiếp cận đảo chiều trong thuật toán giả định rằng đám đông thường sai ở mức cực đoan hoặc tin rằng khi tỷ lệ rất cao các nhà giao dịch đứng về một phía, thị trường có thể sẵn sàng đảo chiều. Ví dụ, nếu hơn 80% nhà giao dịch đang mua, cBot thực hiện lệnh bán, kỳ vọng một sự đảo chiều. Cùng một logic được áp dụng khi hầu hết đang bán.

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

Kết hợp tâm lý với nến

Bạn có thể cấu hình một cBot để chỉ hành động khi cả tâm lý thị trường và hướng nến đều đồng thuận. Nếu nó nhận được một cây nến tăng và tâm lý trên 60% tăng giá, cBot sẽ mua. Nếu nến giảm và tâm lý đồng thuận, cBot sẽ bán. Cách tiếp cận này giúp bạn lọc bỏ các tín hiệu yếu và tránh vào lệnh sai.

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

Thoát lệnh khi tâm lý phân kỳ

Một cBot có thể giúp bạn thoát khỏi các giao dịch khi tâm lý không còn hỗ trợ vị thế của bạn. Ví dụ, nếu bạn đang nắm giữ một lệnh mua và tâm lý chuyển sang hơn 60% giảm giá, cBot sẽ đóng nó lại. Nó cũng làm tương tự cho các giao dịch bán khi tâm lý chuyển sang tăng giá.

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

Cấu hình rủi ro thích ứng

Lọc bỏ các giao dịch nhiễu

Bạn có thể phát triển một cBot tránh giao dịch khi không có xu hướng tâm lý rõ ràng. Ví dụ, nếu tâm lý gần như chia đều và chênh lệch dưới 10%, cBot sẽ bỏ qua giao dịch. Thiết lập này lọc bỏ nhiễu và bảo vệ bạn khỏi thị trường không xác định.

 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
}

Điều chỉnh quy mô giao dịch theo tâm lý

Bạn có thể thiết lập một cBot để điều chỉnh kích thước vị thế dựa trên mức độ nghiêng mạnh của tâm lý theo một hướng. Ví dụ, nếu tâm lý tăng giá vượt trội hơn giảm giá với một biên độ lớn, cBot sẽ tăng khối lượng giao dịch. Nếu tâm lý gần như trung lập, cBot sẽ giao dịch với khối lượng nhỏ hơn.

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

Điều tiết chiến lược dựa trên hoạt động thị trường

Chiến lược của bạn có thể được thiết lập để tạm dừng giao dịch khi tâm lý cho thấy dấu hiệu của thị trường đông đúc. Ví dụ, nếu hơn 90% nhà giao dịch đang mua hoặc bán, cBot sẽ ngừng giao dịch để tránh vào vị thế ngay khi thị trường có khả năng đảo chiều.

 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
}

Đặt cắt lỗ theo tâm lý

Bạn có thể hướng dẫn cBot đo lường sức mạnh tâm lý và phản ứng bằng cách đặt cắt lỗ phù hợp. Ví dụ, khi tâm lý tăng giá vượt quá 80%, cBot sử dụng cắt lỗ chặt chẽ hơn là 20 pip. Nếu tâm lý ít tự tin hơn, cBot đặt cắt lỗ rộng hơn là 50 pip để cho phép nhiều không gian hơn.

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

Giám sát và phân tích

Tạo cảnh báo dựa trên tâm lý

Hãy xem xét một cBot giám sát tâm lý trong thời gian thực và cảnh báo bạn khi đạt đến mức cực đoan. Ví dụ, nếu tâm lý mua vượt quá 90%, cBot sẽ ghi nhật ký hoặc in ra một cảnh báo tăng giá. Nếu tâm lý bán vượt qua ngưỡng tương tự, nó sẽ thông báo cho bạn về tình trạng giảm giá cực đoan.

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

Chạy chiến lược bản đồ nhiệt tâm lý

Hãy xem xét một cBot chạy quét tâm lý trên nhiều tài sản và xác định các cơ hội giao dịch tốt nhất. Ví dụ, cBot lặp qua tất cả các ký hiệu có sẵn và in ra tỷ lệ phần trăm mua và bán, sau đó bạn có thể tập trung vào những ký hiệu có tâm lý tăng giá hoặc giảm giá cực đoan nhất.

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

Phát hiện đột phá thông qua tâm lý

Một cBot có thể được lập trình để phát hiện những thay đổi nhanh chóng trong tâm lý như một dấu hiệu tiềm năng của sự đột phá hoặc biến động thị trường gia tăng. Ví dụ, nếu tâm lý mua tăng vọt hoặc giảm hơn 15%, cBot sẽ ghi lại đợt tăng vọt này như một dấu hiệu sớm của một động thái biến động.

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

Xác nhận tín hiệu chỉ báo

Thay vì chỉ dựa vào các chỉ báo, bạn có thể nâng cao chiến lược của mình bằng cách lập trình cBot chỉ hành động khi cả điều kiện chỉ báo và tâm lý đều phù hợp. Ví dụ, khi RSI cho thấy quá bán và tâm lý trên 70% tăng giá, cBot sẽ mua. Nếu RSI báo hiệu quá mua và tâm lý vượt quá 70% giảm giá, cBot sẽ bán.

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