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، فسنستخدمه.
بعد ذلك، يبقى الجانب الفني لتحديد كيفية تفعيل الإشارة؛
على سبيل المثال، إذا كان ذلك تقاطعًا مع الخط 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 +//+==+
أمثلة
هذه الأمثلة مأخوذة من القسم المخصص في منتدانا. وقد عدّلت المؤشرات وفقًا للمبادئ المذكورة أعلاه.
الخلاصة
في هذه المقالة، شرحت بالتفصيل عملية إنشاء الإشارات للمؤشر بأبسط شكل ممكن.
يمكن استخدام الشفرة المذكورة دون قيود على أي مؤشر. من المهم عدم تغيير اسم المؤلف عند إضافة الشفرة إلى المؤشر.
إذا أعجبتك هذه المقالة ووجدت هذه الطريقة لإدراج الإشارات مفيدة، فيرجى ترك تعليقك وتقييم الموضوعات.
- خدمة Freelance: البرمجة المخصصة على MetaTrader وMQL!
- مؤشر شمعة الإشارة. أي شمعة نستخدم للإشارة؟ ورسم المؤشرات.
- مؤشر CrossObjectALert للتنبيه عند التقاطع مع الكائنات لمنصتي MT4 وMT5
- العمل مع البريد والدفع (Push) في MetaTrader
شمعة الإشارة: معلومات مهمة
أسئلة؟
إذا كان لديك أي أسئلة، يُرجى طرحها. نحن لا نبيع وعودًا واهية.
بالإضافة إلى ذلك، يمكن اختبار كل منتج من منتجاتنا قبل شرائه.
نحن نقدر اهتمامك ودعمك لمنتجاتنا ونسعى للحفاظ على جودة عالية.
شكرًا لوجودك معنا!
هل لديك سؤال؟
هذا المنشور متاح أيضًا باللغة: English Українська Portuguese Español Deutsch Chinese Русский Français Italiano Türkçe 日本語 한국어 العربية Indonesian ไทย Tiếng Việt
اترك تعليقاً