Telegram. التعامل مع تيليجرام في ميتاتريدر. قنوات تيليجرام والروبوت
أسراري حول أوتولوت (Autolot). اللوت الديناميكي (Dynamic Lot) أو أوتولوت. المخاطرة من الرصيد.
Telegram. التعامل مع تيليجرام في ميتاتريدر. قنوات تيليجرام والروبوت
أسراري حول أوتولوت (Autolot). اللوت الديناميكي (Dynamic Lot) أو أوتولوت. المخاطرة من الرصيد.

الوصف

تنبيه (Alert): إن أكثر الاستفسارات شيوعًا في محركات البحث والموضوعات الرائجة في المنتديات تتضمن العبارات التالية.

يمكن أن يساعدك التنبيه حول هذه الموضوعات في البقاء على اطلاع بأحدث التوجهات.

  • “مؤشر التنبيه”
  • “كيف تضيف إشارة صوتية إلى المؤشر؟”
  • “ساعدني في إدراج إشارة صوتية في المؤشر”
  • “كيفية إدراج التنبيهات والسهام”
  • “كيف أرسل رسالة إلى البريد أو الهاتف عند ظهور إشارة من المؤشر؟”

في هذه المقالة، سأشرح بالتفصيل طريقة سهلة لإضافة تنبيه وبريد ودفع (Push) وسهم لأي مؤشر باستخدام شفرة إضافية متوفرة في Expforex.

  

مقدمة 

لتركيب التنبيهات بشكل صحيح في المؤشر، يجب توفر الشفرة المصدرية المفتوحة للمؤشر.

لا يُنصح باستخدام الشفرة المفككة؛ لأنها للمبتدئين لن تقدم معلومات كافية، وستكون صعبة الفهم.  الشفرة المفككة غالبًا تسبب مشاكل عند الترجمة البرمجية بعد التعديل.

قد تواجه أيضًا مشكلات في الترجمة البرمجية بعد التحرير. 

xCustomEA

إذا كنت تبحث عن طريقة أسهل لأتمتة استراتيجيتك التداولية دون الخوض في برمجة معقدة، ففكر في xCustomEA.

يأتي هذا المستشار الخبير من Expforex متوافقًا مع المؤشرات التي تولّد إشارات السهام. يتيح لك xCustomEA أتمتة أي مؤشر يعرض سهام شراء أو بيع بسهولة، مما يساعدك على إنشاء استراتيجية آلية قوية دون تعقيدات البرمجة المخصصة.

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

لمزيد من المعلومات، تفضل بزيارة صفحة xCustomEA أو استكشف باقي المستشارين الخبراء على Expforex.

بداية العمل لإدراج التنبيه

أولاً، عليك تحديد أي من مخازن المؤشر يقدم إشارات محددة، والغرض من إنشاء التنبيه، وشروط تحديد الإشارة على المؤشر. 

مهم: يمكن عرض المخازن الخارجية فقط التي تم تعريفها في بداية شفرة المتغيرات:

#property indicator_buffers 1

على الرغم من ذلك، قد يحتوي المؤشر أيضًا على مخازن مخفية يتم تعيينها في دالة init() وتُعرّف كمتغيرات:

IndicatorBuffers(7): نحتاج فقط للمخازن الأولى. 

إذا كان لديك مثلاً مخزن خارجي واحد، فتفحص المتغير:

SetIndexBuffer(0, SarBuffer);
  • 0 هو أول مخزن
  • 1 هو ثاني مخزن

يمكن التعرّف على هذه المخازن أو أسمائها بوضع المؤشر فوق خط معين من المؤشر على الرسم البياني.

Value1 – هذا هو أول مخزن أو فهرس 0 في نظام الفهرسة بالشفرة. 

SetIndexBuffer(0, SarBuffer); // اسم المخزن الذي نحتاجه  

إذا كان اسمه SarBuffer، فسنستخدمه.

مخزن مؤشر SAR في منصة التداول
مثال لقيم SarBuffer في واجهة المؤشر

بعد ذلك، يبقى الجانب الفني لتحديد كيفية تفعيل الإشارة؛

على سبيل المثال، إذا كان ذلك تقاطعًا مع الخط 0 من الأعلى (أو الأسفل) متجهًا للأسفل (أو للأعلى)، فسيكون بالشكل:

SarBuffer[shift+1] >= 0 && SarBuffer[shift] < 0

أو إذا كان ذلك تقاطع المؤشر مع السعر الحالي أو الشمعة، أو كسر الشمعة من قبل المؤشر، وما إلى ذلك:

SarBuffer[shift+1] >= Close[shift] && SarBuffer[shift] < Close[shift]

وإذا كان تقاطع مستويات محددة، مثل مؤشرات الستوكاستيك:

SarBuffer[shift+1] <= 75 && SarBuffer[shift] > 75;

SarBuffer[shift+1] >= 25 && SarBuffer[shift] < 25;

إذا كانت هناك سهام أصلًا في المؤشر، فربما تكون الإشارة من النوع:

DnTrend[1] != EMPTY_VALUE && DnTrend[1] != 0 && UpTrend[2] != EMPTY_VALUE

على أي حال، عليك تطبيق المنطق والإبداع لتسجيل الإشارة بشكل صحيح. إن واجهت أي صعوبات، اكتب في هذا الموضوع، وأرفق المؤشر، وحدد الأسطر على الرسم البياني، ووضح بالتفصيل ما الذي تعجز عن فعله. أما طلب “تحتاج إلى إدراج تنبيه في المؤشر” دون توضيح أين وما المطلوب، أو بدون توفير المؤشر نفسه، فلن يفيد أحداً.

كود “التنبيهات والسهام من www.expforex.com”

الخطوة التالية لإضافة التنبيه إلى مؤشرك تتكون من عدة مراحل:

الخطوة 1

قم بإدراج الشفرة التالية في بداية ملف المستشار الخبير (قبل دالة OnCalculate) :

//+==+//+ www.expforex.com edit AlertArrow +//+==+
extern string Alerts="Alerts and arrows from www.expforex.com";
extern bool AlerT=true; // Issue an alert to the screen
extern bool Mail=true; // Send message
extern bool Push=true; // Send PUSH to phone
extern bool Arrow=true; // Put arrows on signals
extern int shift=1; // On which bar to count the signal 0 - on the current one, 1 - on the closed
int timeee;
// Internal variable
string nameInd;
void SetArrow(int cd, color cl, string nm="", datetime t1=0, double p1=0, int sz=3)
{
  if(nm=="")
    nm=DoubleToStr(Time[0], 0);
  if(t1 <= 0)
    t1=Time[0];
  if(p1 <= 0)
    p1=Bid;
  nameInd=WindowExpertName();
  int wind=WindowFind(nameInd);
  wind=0;
  if(ObjectFind(nm) < 0)
    ObjectCreate(nm, OBJ_ARROW, wind, 0, 0);
  ObjectSet(nm, OBJPROP_TIME1, t1);
  ObjectSet(nm, OBJPROP_PRICE1, p1);
  ObjectSet(nm, OBJPROP_ARROWCODE, cd);
  ObjectSet(nm, OBJPROP_COLOR, cl);
  ObjectSet(nm, OBJPROP_WIDTH, sz);
}

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void Expforex_AlertArrow(string text="", int arrowdir=0, bool history=false, int i=0)
{
  nameInd=WindowExpertName();
  int wind=WindowFind(nameInd);
  if(wind==-1)
    wind=0;
  ObjectCreate("Originalalert", OBJ_LABEL, wind, 0, 0);
  ObjectSetText("Originalalert", "Modification AlertArrow www.expforex.com", 10, "Arial Bold", Red);
  ObjectSet("Originalalert", OBJPROP_CORNER, 2);
  ObjectSet("Originalalert", OBJPROP_XDISTANCE, 200);
  ObjectSet("Originalalert", OBJPROP_YDISTANCE, 10);
  if(!history)
  {
    if(AlerT)
      Alert(text);
    if(Arrow)
      if(arrowdir==1)
        SetArrow(241, Blue, nameInd + DoubleToStr(Time[shift], 0), Time[shift], Low[shift]);
    if(Arrow)
      if(arrowdir==2)
        SetArrow(242, Red, nameInd + DoubleToStr(Time[shift], 0), Time[shift], High[shift]);
    if(!IsTesting())
      if(Mail)
        SendMail(text, text);
    if(!IsTesting())
      if(Push)
        SendNotification(text);
  }
  if(history)
  {
    if(Arrow)
      if(arrowdir==1)
        SetArrow(241, Blue, nameInd + DoubleToStr(Time[shift + i2], 0), Time[shift + i2], Low[shift + i2]);
    if(Arrow)
      if(arrowdir==2)
        SetArrow(242, Red, nameInd + DoubleToStr(Time[shift + i2], 0), Time[shift + i2], High[shift + i2]);
  }
}//+==+//+ www.expforex.com edit AlertArrow +//+==+

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
  for(int i=ObjectsTotal(); i>=0; i--)
  {
    if(StringFind(ObjectName(i), nameInd)!=-1)
      ObjectDelete(ObjectName(i));
  }
}
//+------------------------------------------------------------------+

الخطوة 2

قبل إغلاق دالة OnCalculate () (أي قبل سطر return(rates_total); })، أضف الشفرة التالية:

//+==+//+ www.expforex.com edit AlertArrow +//+==+

nameInd=WindowExpertName();

if(timeee != Time[0] && SarBuffer[shift+1] <= 75 && SarBuffer[shift] > 75)
{
  Expforex_AlertArrow(Symbol() + " " + Period() + nameInd + " UP", 1);
  timeee=Time[0];
}
if(timeee != Time[0] && SarBuffer[shift+1] >= 25 && SarBuffer[shift] < 25)
{
  Expforex_AlertArrow(Symbol() + " " + Period() + nameInd + " DN", 2);
  timeee=Time[0];
}//+==+//+ www.expforex.com edit AlertArrow +//+==+

الخطوة 3

هذه الشفرة ستمثل إشارتنا.

بالطبع عليك استبدال بعض الأجزاء بشفرتك الخاصة. 

على سبيل المثال، سيكون كود الإشارة للتقاطع على الخط 0 أو ما شابه بالشكل:

1. التقاطع من الأعلى إلى الأسفل (أو العكس):

SarBuffer[shift+1] >= 0 && SarBuffer[shift] < 0

2. تقاطع المؤشر مع السعر الحالي أو الشمعة:

SarBuffer[shift+1] >= Close[shift] && SarBuffer[shift] < Close[shift]

3. تقاطع مستويات خاصة (مثل الستوكاستيك):

SarBuffer[shift+1] <= 75 && SarBuffer[shift] > 75;

SarBuffer[shift+1] >= 25 && SarBuffer[shift] < 25;

بعد الاستخدام

لإضافة إشارة صوتية للمؤشر، اتبع الخطوات التالية:

  • 1. افتح إعدادات المؤشر.
  • 2. ابحث عن قسم “تنبيه” أو “أسهم”.
  • 3. اختر خيار إضافة تنبيه صوتي.
  • 4. اختر ملف الصوت الذي تريد استخدامه.
  • 5. احفظ التعديلات.

بإضافة الإشارة الصوتية للمؤشر، يمكنك تلقي تنبيه مسموع عند تحقق شروط معينة، ما يساعدك في اتخاذ قرارات تداول أفضل.

إذا احتجت إلى سهام على التاريخ السابق، افعل الآتي:

بعد الشفرة أعلاه، أضف ما يلي:

//+==+//+ www.expforex.com edit AlertArrow +//+==+

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
if(counted_bars > 0)
   counted_bars--;
int limit2 = Bars - counted_bars;
for(int i2 = 0; i2 < limit2; i2++) {
    nameInd = WindowExpertName();
    if(SarBuffer[shift+1+i2] <= 75 && SarBuffer[shift+i2] > 75)
    {
        Expforex_AlertArrow(Symbol() + " " + Period() + nameInd + " UP" + i2, 1, true, i2);
    }
    if(SarBuffer[shift+1+i2] >= 25 && SarBuffer[shift+i2] < 25)
    {
        Expforex_AlertArrow(Symbol() + " " + Period() + nameInd + " DN" + i2, 2, true, i2);
    }
}
//+==+//+ www.expforex.com edit AlertArrow +//+==+

أمثلة

هذه الأمثلة مأخوذة من القسم المخصص في منتدانا. وقد عدّلت المؤشرات وفقًا للمبادئ المذكورة أعلاه. 

مثال على مؤشر تم تعديله لإضافة تنبيه
لقطة شاشة تظهر سهمًا وتنبيهًا في المؤشر

الخلاصة

في هذه المقالة، شرحت بالتفصيل عملية إنشاء الإشارات للمؤشر بأبسط شكل ممكن.

يمكن استخدام الشفرة المذكورة دون قيود على أي مؤشر. من المهم عدم تغيير اسم المؤلف عند إضافة الشفرة إلى المؤشر.

إذا أعجبتك هذه المقالة ووجدت هذه الطريقة لإدراج الإشارات مفيدة، فيرجى ترك تعليقك وتقييم الموضوعات.

شمعة الإشارة: معلومات مهمة

أسئلة؟

إذا كان لديك أي أسئلة، يُرجى طرحها. نحن لا نبيع وعودًا واهية.

بالإضافة إلى ذلك، يمكن اختبار كل منتج من منتجاتنا قبل شرائه.

نحن نقدر اهتمامك ودعمك لمنتجاتنا ونسعى للحفاظ على جودة عالية.

شكرًا لوجودك معنا!

هل لديك سؤال؟

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

هذا المنشور متاح أيضًا باللغة: English Українська Portuguese Español Deutsch Chinese Русский Français Italiano Türkçe 日本語 한국어 العربية Indonesian ไทย Tiếng Việt


    يرجى الانتظار، جاري الاتصال...

    تحذير المخاطر:


    الأداء التجاري السابق لا يضمن النتائج المستقبلية.

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

    يرجى العلم أن استخدام روبوتات التداول (trading robots) ينطوي على مخاطر كبيرة، وقد تخسر أكثر من استثمارك الأولي.

    يرجى المتابعة بحذر، وتقييم وضعك المالي بعناية، والنظر في استشارة متخصص مؤهل.

    Disclaimer

    يستخدم هذا الموقع ملفات تعريف الارتباط لتحسين تجربتك. من خلال استخدام هذا الموقع فإنك توافق على سياسة حماية البيانات وإخلاء المسؤولية.
    اقرأ المزي