انتقل إلى المحتوى

معنويات الرمز

تتيح واجهة SymbolSentiment وفئة SymbolSentimentUpdatedEventArgs الوصول إلى بيانات معنويات السوق في الوقت الفعلي عبر API. لأي رمز معين:

  • يوفر Symbol.Sentiment.BuyPercentage النسبة المئوية الإجمالية لنشاط الشراء، بينما يعيد Symbol.Sentiment.SellPercentage النسبة المئوية الإجمالية لنشاط البيع.
  • SymbolSentimentUpdatedEventArgs هو ناقل بيانات لأحداث تحديث المعنويات. تتيح هذه الفئة الوصول إلى بيانات المعنويات المحدثة للرمز المقابل.

تحذير

كائنات API لمعنويات الرمز مدعومة فقط في خوارزميات .NET 6 ولا تعمل في Cloud أو cTrader CLI.

نصيحة

قم بدمج بيانات معنويات السوق في استراتيجيات التداول الآلي لتعزيز اتخاذ القرار، وزيادة احتمالية التداولات المربحة وتعزيز إدارة المخاطر."

يمكن استخدام كائنات واجهة برمجة التطبيقات (API) لمشاعر الرمز للقيام بما يلي في الخوارزميات:

الميزة أو العملية أمثلة
التداول المدفوع بالمشاعر التداول مع تحيز المشاعر
التداول ضد المشاعر المتطرفة
الجمع بين المشاعر والشموع
الخروج عند تباين المشاعر
التكوين التكيفي للمخاطر تصفية الصفقات المشوشة
تحجيم الصفقات وفقًا للمشاعر
تقييد الاستراتيجية بناءً على نشاط السوق
تعيين وقف الخسارة بناءً على المشاعر
المراقبة والتحليل إنشاء تنبيهات قائمة على المشاعر
تشغيل استراتيجية خريطة حرارة المشاعر
اكتشاف الاختراقات من خلال المشاعر
التحقق من صحة إشارات المؤشر

ملاحظة

نظرًا لأن بيانات المشاعر متاحة فقط في الوقت الفعلي، فلا يمكن استخدامها للاختبار العكسي أو التحسين، حيث لا توجد بيانات تاريخية أو مخزنة.

التداول المدفوع بالمشاعر

التداول مع تحيز المشاعر

يمكنك برمجة 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
}

تعيين وقف الخسارة وفقًا للمشاعر

يمكنك توجيه cBot لقياس قوة المشاعر والاستجابة بحجم مناسب لوقف الخسارة. على سبيل المثال، عندما تتجاوز المشاعر الإيجابية 80%، يستخدم cBot وقف خسارة أضيق بـ 20 نقطة. إذا كانت المشاعر أقل ثقة، يعين cBot وقف خسارة أوسع بـ 50 نقطة للسماح بمساحة أكبر للتنفس.

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