1 مرفق
الرجاء التعديل على هذا المؤشر للماكد
السلام عليكم ورحمة الله وبركاته
هذا مؤشر للماكد يقوم برسم دوائر خضراء وحمراء حسب تقاطع الماكد
والمطلوب اضافة شرط آخر لهذا المؤشر (متغير خارجي منطقي bool لحرية الاختيار)
بحيث يرسم الدوائر الخضراء عند تقاطع الماكد للاعلى بشرط ان يكون الماكد فوق الصفر مثلاً (متغير خارجي double)
ويرسم الدوائر الحمراء عند تقاطع الماكد للاسفل بشرط ان يكون الماكد تحت الصفر مثلاً (متغير خارجي double)
وهذا هو الكود
كود PHP:
//+------------------------------------------------------------------+
[center]//| EMA-Crossover_Signal.mq4 |
//| Copyright © 2005, Jason Robinson (jnrtrading) |
//| http://www.jnrtading.co.uk |
//+------------------------------------------------------------------+/*
+------------------------------------------------------------------+
| Allows you to enter two ema periods and it will then show you at |
| Which point they crossed over. It is more usful on the shorter |
| periods that get obscured by the bars / candlesticks and when |
| the zoom level is out. Also allows you then to remove the emas |
| from the chart. (emas are initially set at 5 and 6) |
+------------------------------------------------------------------+
*/
#property copyright "Copyright © 2005, Jason Robinson (jnrtrading)"
#property link "http://www.jnrtrading.co.uk"#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Blue
#property indicator_color2 Reddouble CrossUp[];
double CrossDown[];
extern int fast_ema_signal = 5;
extern int slow_ema_signal = 10;
extern int signal_period = 5;//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
SetIndexStyle(0, DRAW_ARROW, EMPTY);
SetIndexArrow(0, 163);
SetIndexBuffer(0, CrossUp);
SetIndexStyle(1, DRAW_ARROW, EMPTY);
SetIndexArrow(1, 163);
SetIndexBuffer(1, CrossDown);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//---- //----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start() { static datetime dt = 0;
int limit, i, counter;
double fasterEMAnow, slowerEMAnow, fasterEMAprevious, slowerEMAprevious, fasterEMAafter, slowerEMAafter;
double Range, AvgRange;
int counted_bars=IndicatorCounted();
//---- check for possible errors
if(counted_bars<0) return(-1);
//---- last counted bar will be recounted
if(counted_bars>0) counted_bars--; limit=Bars-counted_bars;
static datetime cDT = 0;
for(i = 0; i <= limit; i++) {
counter=i;
Range=0;
AvgRange=0;
CrossUp[i] = 0; CrossDown[i] = 0;
for (counter=i ;counter<=i+9;counter++)
{
AvgRange=AvgRange+MathAbs(High[counter]-Low[counter]);
}
Range=AvgRange/10;
fasterEMAnow = iMACD(NULL,0,fast_ema_signal,slow_ema_signal,signal_period,PRICE_CLOSE,MODE_MAIN,i);
fasterEMAprevious = iMACD(NULL,0,fast_ema_signal,slow_ema_signal,signal_period,PRICE_CLOSE,MODE_MAIN,i+1);
fasterEMAafter = iMACD(NULL,0,fast_ema_signal,slow_ema_signal,signal_period,PRICE_CLOSE,MODE_MAIN,i-1); slowerEMAnow = iMACD(NULL,0,fast_ema_signal,slow_ema_signal,signal_period,PRICE_CLOSE,MODE_SIGNAL,i);
slowerEMAprevious = iMACD(NULL,0,fast_ema_signal,slow_ema_signal,signal_period,PRICE_CLOSE,MODE_SIGNAL,i+1);
slowerEMAafter = iMACD(NULL,0,fast_ema_signal,slow_ema_signal,signal_period,PRICE_CLOSE,MODE_SIGNAL,i-1);
if ((fasterEMAnow > slowerEMAnow) && (fasterEMAprevious < slowerEMAprevious)) {
CrossUp[i] = Low[i];
if ((i < 2) && (dt != iTime(NULL,0,0)))
{
Print("** Macd Xross up");
PlaySound("Alert2.wav");
dt = iTime(NULL,0,0);
}
}
else if ((fasterEMAnow < slowerEMAnow) && (fasterEMAprevious > slowerEMAprevious)) {
CrossDown[i] = High[i];
if ((i < 2) && (dt != iTime(NULL,0,0)))
{
Print("** Macd Xross down");
PlaySound("Alert2.wav");
dt = iTime(NULL,0,0);
}
}
}
return(0);
}
[/center]
الرجاء توضيح ما تم اضافته للاستفادة
والمؤشر في المرفقات ايضاً
رد: الرجاء التعديل على هذا المؤشر للماكد
اقتباس:
المشاركة الأصلية كتبت بواسطة wajdyss
السلام عليكم ورحمة الله وبركاته
هذا مؤشر للماكد يقوم برسم دوائر خضراء وحمراء حسب تقاطع الماكد
والمطلوب اضافة شرط آخر لهذا المؤشر (متغير خارجي منطقي bool لحرية الاختيار)
بحيث يرسم الدوائر الخضراء عند تقاطع الماكد للاعلى بشرط ان يكون الماكد فوق الصفر مثلاً (متغير خارجي double)
ويرسم الدوائر الحمراء عند تقاطع الماكد للاسفل بشرط ان يكون الماكد تحت الصفر مثلاً (متغير خارجي double)
وهذا هو الكود
كود PHP:
//+------------------------------------------------------------------+
[center]//| EMA-Crossover_Signal.mq4 |
//| Copyright © 2005, Jason Robinson (jnrtrading) |
//| http://www.jnrtading.co.uk |
//+------------------------------------------------------------------+/*
+------------------------------------------------------------------+
| Allows you to enter two ema periods and it will then show you at |
| Which point they crossed over. It is more usful on the shorter |
| periods that get obscured by the bars / candlesticks and when |
| the zoom level is out. Also allows you then to remove the emas |
| from the chart. (emas are initially set at 5 and 6) |
+------------------------------------------------------------------+
*/
#property copyright "Copyright © 2005, Jason Robinson (jnrtrading)"
#property link "http://www.jnrtrading.co.uk"#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Blue
#property indicator_color2 Reddouble CrossUp[];
double CrossDown[];
extern int fast_ema_signal = 5;
extern int slow_ema_signal = 10;
extern int signal_period = 5;//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
SetIndexStyle(0, DRAW_ARROW, EMPTY);
SetIndexArrow(0, 163);
SetIndexBuffer(0, CrossUp);
SetIndexStyle(1, DRAW_ARROW, EMPTY);
SetIndexArrow(1, 163);
SetIndexBuffer(1, CrossDown);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//---- //----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start() { static datetime dt = 0;
int limit, i, counter;
double fasterEMAnow, slowerEMAnow, fasterEMAprevious, slowerEMAprevious, fasterEMAafter, slowerEMAafter;
double Range, AvgRange;
int counted_bars=IndicatorCounted();
//---- check for possible errors
if(counted_bars<0) return(-1);
//---- last counted bar will be recounted
if(counted_bars>0) counted_bars--; limit=Bars-counted_bars;
static datetime cDT = 0;
for(i = 0; i <= limit; i++) {
counter=i;
Range=0;
AvgRange=0;
CrossUp[i] = 0; CrossDown[i] = 0;
for (counter=i ;counter<=i+9;counter++)
{
AvgRange=AvgRange+MathAbs(High[counter]-Low[counter]);
}
Range=AvgRange/10;
fasterEMAnow = iMACD(NULL,0,fast_ema_signal,slow_ema_signal,signal_period,PRICE_CLOSE,MODE_MAIN,i);
fasterEMAprevious = iMACD(NULL,0,fast_ema_signal,slow_ema_signal,signal_period,PRICE_CLOSE,MODE_MAIN,i+1);
fasterEMAafter = iMACD(NULL,0,fast_ema_signal,slow_ema_signal,signal_period,PRICE_CLOSE,MODE_MAIN,i-1); slowerEMAnow = iMACD(NULL,0,fast_ema_signal,slow_ema_signal,signal_period,PRICE_CLOSE,MODE_SIGNAL,i);
slowerEMAprevious = iMACD(NULL,0,fast_ema_signal,slow_ema_signal,signal_period,PRICE_CLOSE,MODE_SIGNAL,i+1);
slowerEMAafter = iMACD(NULL,0,fast_ema_signal,slow_ema_signal,signal_period,PRICE_CLOSE,MODE_SIGNAL,i-1);
if ((fasterEMAnow > slowerEMAnow) && (fasterEMAprevious < slowerEMAprevious)) {
CrossUp[i] = Low[i];
if ((i < 2) && (dt != iTime(NULL,0,0)))
{
Print("** Macd Xross up");
PlaySound("Alert2.wav");
dt = iTime(NULL,0,0);
}
}
else if ((fasterEMAnow < slowerEMAnow) && (fasterEMAprevious > slowerEMAprevious)) {
CrossDown[i] = High[i];
if ((i < 2) && (dt != iTime(NULL,0,0)))
{
Print("** Macd Xross down");
PlaySound("Alert2.wav");
dt = iTime(NULL,0,0);
}
}
}
return(0);
}
[/center]
الرجاء توضيح ما تم اضافته للاستفادة
والمؤشر في المرفقات ايضاً
أخي العزيز
مؤشر الماكد عندما يصعد من تحت الصفر إلى فوق الصفر فهذا يعني تقاطع للأعلى .
والعكس صحيح .
ولا يمكن أن يحدث تقاطع ( لمتوسطات من نفس إعدادات الماكد ) عندما يكون الماكد فوق الصفر أو تحته .
التقاطع يكون دائما عند نقطة الصفر من تحت الصفر لفوق الصفر أو من فوق الصفر لتحت الصفر .
ومستحيل أن يحدث تقاطع والماكد مبتعد عن الصفر سلبا أو ايجابا .
ولذلك فإن الشرط الذي تحاول إضافته مستحيل التحقق .
1 مرفق
رد: الرجاء التعديل على هذا المؤشر للماكد
اقتباس:
المشاركة الأصلية كتبت بواسطة wajdyss
السلام عليكم ورحمة الله وبركاته
هذا مؤشر للماكد يقوم برسم دوائر زرقاء وحمراء حسب تقاطع الماكد
والمطلوب اضافة شرط آخر لهذا المؤشر (متغير خارجي منطقي bool لحرية الاختيار)
بحيث يرسم الدوائر الخضراء عند تقاطع الماكد للاعلى بشرط ان يكون الماكد فوق الصفر مثلاً (متغير خارجي double)
ويرسم الدوائر الحمراء عند تقاطع الماكد للاسفل بشرط ان يكون الماكد تحت الصفر مثلاً (متغير خارجي double)
الرجاء توضيح ما تم اضافته للاستفادة
والمؤشر في المرفقات ايضاً
أرجو أن يكون مافهمته من طلبك صحيحا
تم اضافة شرط أن تكون القيمة أعلى أو أصغر من الصفر حسب نوع التقاطع
fasterEMAnow < 0 في حالة التقاطع لأسفل
والعكس في حالة التقاطع للأعلى
أحيانا تجد أن التقاطع لأعلى قد حدث تحت خط الصفر وأعطى اشارة زرقاء
والسبب أن قيمة الماكد تكون قد تجاوزت خط الصفر في ذلك البار
كما تم تنسيق الدوائر لتظهر بصورة أوضح ولاتلتصق بعمود السعر
وتم وضع المؤشر على اعداداته الافتراضية
وأما غير ذلك فقد يصعب تنفيذه كما تفضل به مشرفنا الحبيب وضاح
تحيتي ومحبتي
رد: الرجاء التعديل على هذا المؤشر للماكد
اقتباس:
المشاركة الأصلية كتبت بواسطة وضاح عطار
أخي العزيز
مؤشر الماكد عندما يصعد من تحت الصفر إلى فوق الصفر فهذا يعني تقاطع للأعلى .
والعكس صحيح .
ولا يمكن أن يحدث تقاطع ( لمتوسطات من نفس إعدادات الماكد ) عندما يكون الماكد فوق الصفر أو تحته .
التقاطع يكون دائما عند نقطة الصفر من تحت الصفر لفوق الصفر أو من فوق الصفر لتحت الصفر .
ومستحيل أن يحدث تقاطع والماكد مبتعد عن الصفر سلبا أو ايجابا .
ولذلك فإن الشرط الذي تحاول إضافته مستحيل التحقق .
اخي الكريم
يبدو اني لم اشرح مطلبي بشكل جيد
فمؤشر الماكد الذي ارفقته في المشاركة الاولى عبارة عن خطين وليس خط واحد وفي بعض الاحيان يتقاطع الخطين للاعلى ويكون التقاطع تحت خط الصفر والعكس في البيع
والاخ مادرو وضع المؤشر بعد التعديل المطلوب
جزاكما الله كل خير
رد: الرجاء التعديل على هذا المؤشر للماكد
اقتباس:
المشاركة الأصلية كتبت بواسطة madro
أرجو أن يكون مافهمته من طلبك صحيحا
تم اضافة شرط أن تكون القيمة أعلى أو أصغر من الصفر حسب نوع التقاطع
fasterEMAnow < 0 في حالة التقاطع لأسفل
والعكس في حالة التقاطع للأعلى
أحيانا تجد أن التقاطع لأعلى قد حدث تحت خط الصفر وأعطى اشارة زرقاء
والسبب أن قيمة الماكد تكون قد تجاوزت خط الصفر في ذلك البار
كما تم تنسيق الدوائر لتظهر بصورة أوضح ولاتلتصق بعمود السعر
وتم وضع المؤشر على اعداداته الافتراضية
وأما غير ذلك فقد يصعب تنفيذه كما تفضل به مشرفنا الحبيب وضاح
تحيتي ومحبتي
هذا هو المطلوب
:0031:
جزاك الله كل خير
رد: الرجاء التعديل على هذا المؤشر للماكد
اقتباس:
المشاركة الأصلية كتبت بواسطة wajdyss
اخي الكريم
يبدو اني لم اشرح مطلبي بشكل جيد
فمؤشر الماكد الذي ارفقته في المشاركة الاولى عبارة عن خطين وليس خط واحد وفي بعض الاحيان يتقاطع الخطين للاعلى ويكون التقاطع تحت خط الصفر والعكس في البيع
والاخ مادرو وضع المؤشر بعد التعديل المطلوب
جزاكما الله كل خير
آسف أخي لهذا الخطأ
ذهب فهمي لاتجاه آخر تماما :doh:
وبارك الله فيك أخي مادرو وشكرا لك
رد: الرجاء التعديل على هذا المؤشر للماكد
اقتباس:
المشاركة الأصلية كتبت بواسطة وضاح عطار
آسف أخي لهذا الخطأ
ذهب فهمي لاتجاه آخر تماما :doh:
وبارك الله فيك أخي مادرو وشكرا لك
جلّ الذي لايسهو
وجزاك الله كل خير أخي الحبيب وضاح
على جهودك ولما قدّمته وتقدّمه لنا
تحيتي ومحبتي
وتقديري