ข้ามไปที่เนื้อหา

ความรู้สึกของสัญลักษณ์

อินเทอร์เฟซ SymbolSentiment และคลาส SymbolSentimentUpdatedEventArgs ช่วยให้คุณเข้าถึงข้อมูลความรู้สึกของตลาดแบบเรียลไทม์ผ่าน API สำหรับสัญลักษณ์ที่กำหนด:

  • Symbol.Sentiment.BuyPercentage ให้เปอร์เซ็นต์รวมของกิจกรรมการซื้อ ในขณะที่ Symbol.Sentiment.SellPercentage ส่งคืนเปอร์เซ็นต์รวมของกิจกรรมการขาย
  • SymbolSentimentUpdatedEventArgs เป็นตัวพาข้อมูลสำหรับเหตุการณ์อัปเดตความรู้สึก คลาสนี้ช่วยให้คุณเข้าถึงข้อมูลความรู้สึกที่อัปเดตสำหรับสัญลักษณ์ที่เกี่ยวข้อง

คำเตือน

ออบเจ็กต์ API ความรู้สึกของสัญลักษณ์รองรับเฉพาะในอัลกอริทึม .NET 6 และไม่ทำงานใน Cloud หรือ cTrader CLI

เคล็ดลับ

ผสานข้อมูลความรู้สึกของตลาดเข้ากับกลยุทธ์การเทรดอัตโนมัติเพื่อเพิ่มประสิทธิภาพการตัดสินใจ เพิ่มโอกาสในการทำกำไรจากการเทรด และเสริมสร้างการจัดการความเสี่ยง

ออบเจ็กต์ API ความรู้สึกของสัญลักษณ์สามารถใช้ในการทำสิ่งต่อไปนี้ในอัลกอริทึม:

ฟีเจอร์หรือการดำเนินการ ตัวอย่าง
การเทรดตามความรู้สึก เทรดตามอคติของความรู้สึก
เทรดตรงข้ามกับความรู้สึกที่สุดโต่ง
ผสมผสานความรู้สึกกับแท่งเทียน
ออกจากการเทรดเมื่อความรู้สึกแตกต่าง
การกำหนดค่าความเสี่ยงแบบปรับตัวได้ กรองการเทรดที่มีสัญญาณรบกวน
ปรับขนาดการเทรดตามความรู้สึก
ควบคุมกลยุทธ์ตามกิจกรรมของตลาด
ตั้งค่า Stop Loss ตามความรู้สึก
การติดตามและวิเคราะห์ สร้างการแจ้งเตือนตามความรู้สึก
ใช้กลยุทธ์แผนที่ความร้อนของความรู้สึก
ตรวจจับการเบรกเอาท์ผ่านความรู้สึก
ตรวจสอบสัญญาณอินดิเคเตอร์

หมายเหตุ

เนื่องจากข้อมูลความรู้สึกมีเฉพาะในเวลาจริงเท่านั้น จึงไม่สามารถใช้สำหรับการทดสอบย้อนหลังหรือการปรับให้เหมาะสมได้ เพราะไม่มีข้อมูลในอดีตหรือข้อมูลที่จัดเก็บไว้

การเทรดตามความรู้สึก

เทรดตามอคติของความรู้สึก

คุณสามารถเขียนโปรแกรม cBot เพื่อยืนยันอคติของแนวโน้มก่อนเข้าเทรด หรือเทรดเฉพาะเมื่อความรู้สึกตรงกับทิศทาง ตัวอย่างเช่น cBot จะดำเนินการซื้อหากความรู้สึกเป็นขาขึ้นอย่างน้อย 70% และขายหากเป็นขาลง 70%

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

เทรดตรงข้ามกับความรู้สึกที่สุดโต่ง

พิจารณา cBot ที่เข้าเทรดตรงข้ามกับฉันทามติของความรู้สึกที่แข็งแกร่ง แนวทางการกลับตัวในอัลกอริทึมสันนิษฐานว่ากลุ่มคนมักจะผิดพลาดในจุดที่สุดโต่ง หรือเชื่อว่าเมื่อนักเทรดส่วนใหญ่อยู่ฝั่งเดียวกัน ตลาดอาจพร้อมที่จะเปลี่ยนทิศทาง ตัวอย่างเช่น หากมากกว่า 80% ของนักเทรดกำลังซื้อ cBot จะดำเนินการขาย โดยคาดหวังการกลับตัว ตรรกะเดียวกันนี้ใช้ได้เมื่อคนส่วนใหญ่กำลังขาย

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

ผสมผสานความรู้สึกกับแท่งเทียน

คุณสามารถกำหนดค่า cBot ให้ทำงานเฉพาะเมื่อทั้งความรู้สึกของตลาดและทิศทางของแท่งเทียนสอดคล้องกัน หากได้รับแท่งเทียนขาขึ้นและความรู้สึกเป็นขาขึ้นมากกว่า 60% cBot จะซื้อ หากแท่งเทียนเป็นขาลงและความรู้สึกสอดคล้องกัน cBot จะขาย แนวทางนี้ช่วยให้คุณกรองสัญญาณที่อ่อนแอและหลีกเลี่ยงการเข้าเทรดที่ผิดพลาด

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

ออกจากการเทรดเมื่อความรู้สึกแตกต่าง

cBot สามารถช่วยคุณออกจากการเทรดเมื่อความรู้สึกไม่สนับสนุนโพสิชันของคุณอีกต่อไป ตัวอย่างเช่น หากคุณถือโพสิชันซื้อและความรู้สึกเปลี่ยนเป็นขาลงมากกว่า 60% cBot จะปิดโพสิชัน มันจะทำเช่นเดียวกันสำหรับการเทรดขายเมื่อความรู้สึกเปลี่ยนเป็นขาขึ้น

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

การกำหนดค่าความเสี่ยงแบบปรับตัวได้

กรองการเทรดที่มีสัญญาณรบกวน

คุณสามารถพัฒนา cBot ที่หลีกเลี่ยงการเทรดเมื่อไม่มีอคติของความรู้สึกที่ชัดเจน ตัวอย่างเช่น หากความรู้สึกแบ่งแยกเกือบเท่ากันและความแตกต่างน้อยกว่า 10% cBot จะข้ามการเทรดนั้น การตั้งค่านี้ช่วยกรองสัญญาณรบกวนและปกป้องคุณจากตลาดที่ไม่แน่นอน

 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
}

ปรับขนาดการเทรดตามความรู้สึก

คุณสามารถตั้งค่า cBot ให้ปรับขนาดโพสิชันตามความรู้สึกที่เอนเอียงไปในทิศทางใดทิศทางหนึ่งอย่างแรง ตัวอย่างเช่น หากความรู้สึกขาขึ้นมีน้ำหนักมากกว่าขาลงอย่างมาก cBot จะเพิ่มปริมาณการเทรด หากความรู้สึกใกล้เคียงกับความเป็นกลาง cBot จะเทรดในปริมาณที่น้อยลง

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

ควบคุมกลยุทธ์ตามกิจกรรมของตลาด

กลยุทธ์ของคุณสามารถตั้งค่าให้หยุดการเทรดเมื่อความรู้สึกแสดงสัญญาณของตลาดที่แออัด ตัวอย่างเช่น หากมากกว่า 90% ของนักเทรดกำลังซื้อหรือขาย cBot จะหยุดการเทรดเพื่อหลีกเลี่ยงการเข้าโพสิชันในขณะที่ตลาดมีแนวโน้มที่จะกลับตัว

 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 ตามความรู้สึก

คุณสามารถสั่งให้ cBot วัดความแรงของความรู้สึกและตอบสนองด้วยการกำหนดขนาด Stop Loss ที่เหมาะสม ตัวอย่างเช่น เมื่อความรู้สึกขาขึ้นเกิน 80% cBot จะใช้ Stop Loss ที่แคบกว่าที่ 20 pips หากความรู้สึกมั่นใจน้อยกว่า cBot จะตั้ง Stop Loss ที่กว้างกว่าที่ 50 pips เพื่อให้มีพื้นที่หายใจมากขึ้น

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

การติดตามและวิเคราะห์

สร้างการแจ้งเตือนตามความรู้สึก

พิจารณา cBot ที่ติดตามความรู้สึกแบบเรียลไทม์และแจ้งเตือนคุณเมื่อถึงระดับที่สุดโต่ง ตัวอย่างเช่น หากความรู้สึกซื้อเกิน 90% cBot จะบันทึกหรือพิมพ์การแจ้งเตือนขาขึ้น หากความรู้สึกขายข้ามเกณฑ์เดียวกัน มันจะแจ้งเตือนคุณถึงความรู้สึกขาลงที่สุดโต่ง

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

ใช้กลยุทธ์แผนที่ความร้อนของความรู้สึก

พิจารณา cBot ที่ทำการสแกนความรู้สึกในหลายสินทรัพย์และระบุโอกาสการเทรดที่ดีที่สุด ตัวอย่างเช่น cBot จะวนลูปผ่านสัญลักษณ์ทั้งหมดที่มีและพิมพ์เปอร์เซ็นต์การซื้อและขาย จากนั้นคุณสามารถมุ่งเน้นไปที่สัญลักษณ์ที่มีความรู้สึกขาขึ้นหรือขาลงที่สุดโต่งที่สุด

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

ตรวจจับการเบรกเอาท์ผ่านความรู้สึก

cBot สามารถถูกโปรแกรมให้ตรวจจับการเปลี่ยนแปลงอย่างรวดเร็วในความรู้สึกซึ่งอาจเป็นสัญญาณของการเบรกเอาท์หรือความผันผวนของตลาดที่เพิ่มขึ้น ตัวอย่างเช่น หากความรู้สึกซื้อเพิ่มขึ้นหรือลดลงมากกว่า 15% cBot จะบันทึกการพุ่งขึ้นนี้เป็นสัญญาณเริ่มต้นของการเคลื่อนไหวที่ผันผวน

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

ตรวจสอบสัญญาณอินดิเคเตอร์

แทนที่จะพึ่งพาอินดิเคเตอร์เพียงอย่างเดียว คุณสามารถเพิ่มประสิทธิภาพกลยุทธ์ของคุณโดยการโปรแกรม cBot ให้ทำงานเฉพาะเมื่อทั้งเงื่อนไขของอินดิเคเตอร์และความรู้สึกสอดคล้องกัน ตัวอย่างเช่น เมื่อ RSI แสดงสถานะขายมากเกินไปและความรู้สึกเป็นขาขึ้นมากกว่า 70% cBot จะซื้อ หาก RSI ส่งสัญญาณซื้อมากเกินไปและความรู้สึกเกิน 70% เป็นขาลง 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);
    }
}