أحاول تطبيق indior الأول الخاص بي وسأقدر بعض المساعدة من مبرمجي MQL المخضرمين.
يتم اشتقاق البرنامج النصي أدناه من نموذج MACD النصي وتم تعديله لوضع سهم UP عندما يتجاوز MACD خط الصفر بعد 3 أشرطة متتالية فوق خط الصفر وأيضًا سهم DOWN عندما يتقاطع MACD أسفل خط الصفر مع 3 أشرطة متتالية تحت الصفر.
أواجه مشاكل - ربما لا أحصل على أي أسهم تظهر على الإطلاق.
إذا كان بإمكانك أن ترى إلى أين أضل ، فستكون هذه مساعدة رائعة.
شكرًا
#property حقوق النشر حقوق الطبع والنشر © 2007 ، Systrader
# رابط الموقع http:/www ....
//- إعدادات داخلية
# خاصية indior_separate_window
# ملكية 4
#property indior_color1 أكوا
#property indior_color2 أحمر
#property indior_color3 أخضر
#property indior_color4 أحمر
# خاصية indior_width1 2
//- المعلمات الداخلية
خارجي int FastEMA = 12 ؛
خارجي int SlowEMA = 26 ؛
خارجي int SignalSMA = 9 ؛
//- مخازن داخلية
جهاز Macd مزدوج [] ؛
إشارة مزدوجة [] ؛
//-- عوض
عداد int
// ----------------------------------------------- -------------------
//| وظيفة التهيئة الداخلية المخصصة |
// ----------------------------------------------- -------------------
الحرف الأول ()
//- تفضيلات الرسم
SetIndexStyle (0، DRAW_HISTOGRAM) ،
SetIndexStyle (1، DRAW_LINE) ،
SetIndexArrow (2،233) ؛
SetIndexArrow (3234) ؛
SetIndexDrawBegin (1 ، SignalSMA) ،
IndiorDigits (أرقام 1) ؛
//- رسم خرائط المخازن المؤقتة الداخلية
SetIndexBuffer (0 ، Macd) ؛
SetIndexBuffer (1 ، إشارة) ؛
//- اسم DataWindow وتسمية النافذة الفرعية الداخلية
IndiorShortName (MACDZC ( FastEMA ، SlowEMA ، SignalSMA )) ؛
SetIndexLabel (0، MACD) ،
SetIndexLabel (1 ، إشارة) ؛
//- تم التهيئة
عودة (0) ؛
// ----------------------------------------------- -------------------
//| تقاربتباعد المتوسطات المتحركة |
// ----------------------------------------------- -------------------
بداية int ()
حد int
int counted_bars = IndiorCounted () ،
//- سيتم إعادة حساب آخر شريط تم عده
إذا (counted_barsgt؛ 0) counted_bars-- ؛
Limit = Bars-counted_bars ؛
//- macd محسوب في المخزن المؤقت الأول
لـ (int I = 0؛ ilt؛ limit؛ I )
Macd [I] = iMA (NULL، 0، FastEMA، 0، MODE_EMA، PRICE_CLOSE، I) -iMA (NULL، 0، SlowEMA، 0، MODE_EMA، PRICE_CLOSE، I) ؛
//- تم حساب خط الإشارة في المخزن المؤقت الثاني
لـ (I = 0؛ ilt؛ Limit؛ I )
الإشارة [I] = iMAOnArray (Macd، Bars، SignalSMA، 0، MODE_SMA، I) ؛
//- عد ما إذا كانت 3 أشرطة من macd أعلى أو أقل من الصفر
عداد = 0 ؛
//ابدأ من الشريط الثالث للسماح بفحص الأشرطة الثلاثة السابقة
لـ (int j = 3 ؛ jlt ؛ limit ؛ j )
إذا (Macd [j] lt؛ 0) عداد-- ؛
إذا (Macd [j] gt؛ 0) عداد ؛
//عد إذا شوهدت 3 أشرطة فوق خط الصفر
إذا (عداد gt ؛ 2)
SetIndexStyle (2، DRAW_ARROW) ،
ObjectCreate (UpAlert، OBJ_ARROW، 0، مرتفع [j]، 0) ،
ObjectSet (UpAlert ، OBJPROP_ARROWCODE ، 74) ،
//عد إذا شوهدت 3 أشرطة تحت خط الصفر
إذا (عداد lt ؛ -2)
SetIndexStyle (3، DRAW_ARROW) ،
ObjectCreate (DnAlert، OBJ_ARROW، 0، منخفض [j]، 0) ؛
ObjectSet (DnAlert ، OBJPROP_ARROWCODE ، 74) ؛
//-- انتهى
عودة (0) ؛
// ----------------------------------------------- -------------------