مؤشر للإشارة على الشريط الحالي فقط
مرحبا،
لدي مؤشر تقاطع متوسطات متحركة ينتج تنبيهًا في كل مرة تعبر فيها المتوسطات المتحركة.
أن أستمتع بالمؤشر لإنشاء تنبيه فقط عندما يكون هناك تقاطع (فقط على الشريط الحالي). ومع ذلك ، مع هذا المؤشر ، في كل مرة أقوم بفتح MT4 أو التبديل بين الأطر الزمنية ، أتلقى تنبيهات على الرغم من أن التقاطع قد حدث قبل 2-3 أشرطة.
هنا نسخة من الشفرة تحت. تشكرات.
#property indior_chart_window
#property indior_buffers 2
#property indior_color1 DarkGoldenrod
#property indior_color2 FireBrick
ازدواجية مزدوجة []؛
مزدوج CrossDown []؛
extern int FasterEMA = 1؛
extern Int SlowerEMA = 50؛
extern bool SoundON = true؛
double alertTag
التحكم المزدوج = 2147483647 ؛
// ----------------------------------------------- -------------------
//| وظيفة التهيئة مؤشر مخصص
// ----------------------------------------------- -------------------
int init ()
//- المؤشرات
SetIndexStyle (0، DRAW_ARROW، EMPTY، 1)؛
SetIndexArrow (0، 233)؛
SetIndexBuffer (0 ، CrossUp) ؛
SetIndexStyle (1، DRAW_ARROW، EMPTY، 1)؛
SetIndexArrow (1، 234)؛
SetIndexBuffer (1 ، CrossDown) ؛
//-
عودة (0)؛
// ----------------------------------------------- -------------------
//| وظيفة مخصصة مؤشر تسييل |
// ----------------------------------------------- -------------------
int deinit ()
//-
//-
عودة (0)؛
// ----------------------------------------------- -------------------
//| وظيفة التكرار مؤشر مخصص
// ----------------------------------------------- -------------------
بداية int ()
int الحد ، ط ، عداد ؛
double fasterEMAnow، slowerEMAnow، fasterEMAprevious السابقة، slowerEM السابق، fasterEMAafter، slowerEMAafter؛
نطاق مزدوج ، AvgRange.
int counted_bars = IndiorCounted ()؛
//- تحقق من وجود أخطاء محتملة
إذا (counted_barslt؛ 0) return (-1)؛
//- سيتم إعادة حساب آخر شريط محذوف
إذا (counted_barsgt؛ 0) counted_bars--؛
حد = البارات-counted_bars.
لـ (i = 0؛ i lt؛ = limit؛ i )
مكافحة = ط.
مجموعة = 0؛
AvgRange = 0؛
لـ (counter = i؛ counterlt؛ = i 9؛ counter )
AvgRange = AvgRange MathAbs (عالية [مواجهة] -Low [مواجهة])؛
مجموعة = AvgRange10؛
fasterEMAnow = iMA (NULL، 0، FasterEMA، 0، MODE_EMA، PRICE_CLOSE، i)؛
fasterEMAprevious = iMA (NULL، 0، FasterEMA، 0، MODE_EMA، PRICE_CLOSE، i 1)؛
fasterEMAafter = iMA (NULL، 0، FasterEMA، 0، MODE_EMA، PRICE_CLOSE، i-1)؛
slowerEMAnow = iMA (NULL، 0، SlowerEMA، 0، MODE_EMA، PRICE_CLOSE، i)؛
slowerEMAprevious = iMA (NULL، 0، SlowerEMA، 0، MODE_EMA، PRICE_CLOSE، i 1)؛
slowerEMAafter = iMA (NULL، 0، SlowerEMA، 0، MODE_EMA، PRICE_CLOSE، i-1)؛
if ((fasterEMAnow gt؛ slowerEMAnow) (fasterEMAprevious، slowerEMAprevious) (fasterEMAafter gt؛ slowerEMAafter))
CrossUp [i] = Low [i] - Range * 0.5؛
آخر إذا ((fasterEMAnow lt؛ slowerEMAnow) (fasterEMAprevious gt؛ slowerEMAprevious) (fasterEMAafter lt؛ slowerEMAafter))
CrossDown [i] = High [i] Range * 0.5؛
if (SoundON == true i == 1 CrossUp [i] gt؛ CrossDown [i] alertTag! = Time [0])
تنبيه (MACD 0 cross DOWN on، Symbol ()،، Period ())؛
alertTag = Time [0]؛
SendNotifiion (MACD 0 cross DOWN on _Symbol)؛
إذا (SoundON == دقيقة I == 1 CrossUp [I] lt؛ CrossDown [I] alertTag! = Time [0])
تنبيه (MACD 0 cross up، Symbol ()،، Period ())؛
alertTag = Time [0]؛
SendNotifiion (MACD 0 cross UP on _Symbol)؛
عودة (0)؛