النتائج 1 إلى 7 من 7
الموضوع: اخطاء بسيطة - و راجي منكم التصحيح
- 22-01-2008, 01:53 AM #1
اخطاء بسيطة - و راجي منكم التصحيح
السلام عليكم ..
قمت بكتابة هذا الكود .. و اتضح لي بعد التجربة بعض الاخطاء ..
الكود يعمل الان .. ولكنه لا يحترم بعضا من الامور ..
اولها (و اهمها ) .. ان المحدد باللون الاحمر لا ياُخذ في عين الاعتبار ( كانه غير موجود !!)
و الثاني .. عند الانتقال من Profile الى اخر .. ( اي الانتقال من مجموعة الى اخرى ) يقوم البرنامج بالتنبيه , بالرغم من ان هذه التنبيهات غير مستوفية لاي شرط .
وهذا هو الكود ..
كود://+------------------------------------------------------------------+ //| http://www.****quotes.net | //+------------------------------------------------------------------+ #property copyright " " #property link "http://www.****quotes.net" #property indicator_chart_window extern int MA_Period = 38; extern int MA_Method = MODE_SMA; extern int MA_applied_to = PRICE_CLOSE; extern bool Enabled = true; // MODE_SMA 0 Simple moving average. // MODE_EMA 1 Exponential moving average. // MODE_SMMA 2 Smoothed moving average. // MODE_LWMA 3 Linear weighted moving average. // PRICE_CLOSE 0 Close price. // PRICE_OPEN 1 Open price. // PRICE_HIGH 2 High price. // PRICE_LOW 3 Low price. // PRICE_MEDIAN 4 Median price, (high+low)/2. // PRICE_TYPICAL 5 Typical price, (high+low+close)/3. // PRICE_WEIGHTED 6 Weighted close price, (high+low+close+close)/4. //---- buffers //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { if (!Enabled) return (0); int counted_bars=IndicatorCounted(); //---- if (counted_bars<0) return(-1); //---- last counted bar will be recounted if (counted_bars>0) counted_bars--; int pos=Bars-counted_bars; while(pos>=0) { if((iMA(NULL,PERIOD_H1,MA_Period,0,MA_Method,MA_applied_to,pos)-Bid)< 0 && MathAbs(iMA(NULL,PERIOD_H1,MA_Period,0,MA_Method,MA_applied_to,pos)-Bid)<= 0.0025 && iMACD(NULL,PERIOD_H1,12,26,9,PRICE_CLOSE,MODE_MAIN,0)< 0) { Alert ("Sell " + Symbol()); PlaySound ("alert.wav"); return(-1); } if ((Bid-iMA(NULL,PERIOD_H1,MA_Period,0,MA_Method,MA_applied_to,pos))> 0 && MathAbs(Bid-iMA(NULL,PERIOD_H1,MA_Period,0,MA_Method,MA_applied_to,pos))<= 0.0025 && iMACD(NULL,PERIOD_H1,12,26,9,PRICE_CLOSE,MODE_MAIN,0)> 0) { Alert ("Buy "+ Symbol()); PlaySound ("alert.wav"); return(-1); } pos--; } //---- //---- return(0); } //+------------
تحياتي
- 22-01-2008, 02:37 PM #2
رد: اخطاء بسيطة - و راجي منكم التصحيح
اخي العزيز
لا ارى اي خطأ في الكود
والمؤشر يعمل معي
(iMA(NULL,PERIOD_H1,MA_Period,0,MA_Method,MA_appli ed_to,pos)-Bid)< 0
لو كان سعر Bid = 1.4511
وكانت قيمة MA = 1.4439
إذاً الناتج يكون
MA - Bid = 1.4439 - 1.4511 = -0.0072
الشرط : (MA - Bid) < 0
وهذا صحيح
ولو كانت القيمه اكبر لما خرج لنا تنبيه بالبيع
قل لي اخي ما هي شروط اظهار التنبيه وسأحاول المساعده
- 22-01-2008, 04:55 PM #3
رد: اخطاء بسيطة - و راجي منكم التصحيح
مشكور اخوي ما قصرت .. بسبب طريقة ردك عرفت المشكلة ..
في المحدد باللون الاحمر .. بعد قلب MA - bid <0 الى Bid-MA<0 كل شي تمام ..
اما المشكلة الثانية ما ذكرت عنها شي .. وهي ظهور التنبيه عند تحميل المؤشر .. او ظهور التنبيه عند الانتقال من مجموعة شارتات الى مجموعة اخرى ..
- 24-01-2008, 04:35 PM #4
رد: اخطاء بسيطة - و راجي منكم التصحيح
أهلا بك أخي الكريم
جوابا على سؤالك الثاني فأقول .
عند تحميل المؤشر ( وليس الاكسبيرت ) فإن برنامج الميتاتريدر يقوم بتنفيذه حتى قبل أن يحمل كل معلومات الشارت الأخيرة .
وعند التحميل قد يصادف المؤشر حالة تتحقق فيها الشروط ولكنها قديمة طبعا ويقوم بإصدار التنبيه وفقا لها .
لذلك إذا أردت أن لا يقوم المؤشر بهذا التنبيه في البداية يمكنك وضع مؤخر زمني مقداره مثلا 30 ثانية في الوظيفة init تسمح لبرنامج الميتاتريدر بتحميل الشموع الجديدة ولا يصدر أي تنبيهات قبل تحميل كل المعلومات .
الوظيفة هي :
كود PHP:Sleep(30000);
طبعا هذا أحد الحلول وهناك حلول أخرى .
- 26-01-2008, 09:53 PM #5
رد: اخطاء بسيطة - و راجي منكم التصحيح
مرحبا استاذ وضاح ..
شكرا على اهتمامك ..
وجزاك الله كل خير على هذا التكليف ..
بعد اضافة الكود sleep
int init()
{
Sleep(30000);
//---- indicators
//----
return(0);
}
لم يحدث اي تغيير .. و المشكلة قائمة الى الان .
و ايضا عند الانتقال من و الى مجلد Profile .. يتفعّل الكود ! .
- 26-01-2008, 10:33 PM #6
رد: اخطاء بسيطة - و راجي منكم التصحيح
طيب أخي
جرب الكود التالي :
كود PHP://+------------------------------------------------------------------+
//| http://www.****quotes.net |
//+------------------------------------------------------------------+
#property copyright " "
#property link "http://www.****quotes.net"
#property indicator_chart_window
extern int MA_Period = 38;
extern int MA_Method = MODE_SMA;
extern int MA_applied_to = PRICE_CLOSE;
extern bool Enabled = true;
// MODE_SMA 0 Simple moving average.
// MODE_EMA 1 Exponential moving average.
// MODE_SMMA 2 Smoothed moving average.
// MODE_LWMA 3 Linear weighted moving average.
// PRICE_CLOSE 0 Close price.
// PRICE_OPEN 1 Open price.
// PRICE_HIGH 2 High price.
// PRICE_LOW 3 Low price.
// PRICE_MEDIAN 4 Median price, (high+low)/2.
// PRICE_TYPICAL 5 Typical price, (high+low+close)/3.
// PRICE_WEIGHTED 6 Weighted close price, (high+low+close+close)/4.
//---- buffers
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
if (!Enabled) return (0);
int counted_bars=IndicatorCounted();
//----
if (counted_bars<0) return(-1);
//---- last counted bar will be recounted
if (counted_bars>0) counted_bars--;
int pos=Bars-counted_bars;
while(pos>=0)
{
if(Time[0]<TimeCurrent()) return(0);
if((iMA(NULL,PERIOD_H1,MA_Period,0,MA_Method,MA_applied_to,pos)-Bid)< 0 &&
MathAbs(iMA(NULL,PERIOD_H1,MA_Period,0,MA_Method,MA_applied_to,pos)-Bid)<= 0.0025 &&
iMACD(NULL,PERIOD_H1,12,26,9,PRICE_CLOSE,MODE_MAIN,0)< 0)
{
Alert ("Sell " + Symbol());
PlaySound ("alert.wav");
return(-1);
}
if ((Bid-iMA(NULL,PERIOD_H1,MA_Period,0,MA_Method,MA_applied_to,pos))> 0 &&
MathAbs(Bid-iMA(NULL,PERIOD_H1,MA_Period,0,MA_Method,MA_applied_to,pos))<= 0.0025 &&
iMACD(NULL,PERIOD_H1,12,26,9,PRICE_CLOSE,MODE_MAIN,0)> 0)
{
Alert ("Buy "+ Symbol());
PlaySound ("alert.wav");
return(-1);
}
pos--;
}
//----
//----
return(0);
}
//+----
حيث أضفنا الشرط التالي داخل الحلقة الرئيسية :
كود PHP:if(Time[0]<TimeCurrent()) return(0);
هناك شيء آخر
بما أن المؤشر أصلا يعطيك تنبيه لآخر شمعة فلا داعي أصلا ليقوم بعمل حلقة على كل الشموع
إنما يكتفى بفحص الحالة للشمعات رقم صفر فقط .
ليصبح الكود كما يلي :
كود PHP://+------------------------------------------------------------------+
//| http://www.****quotes.net |
//+------------------------------------------------------------------+
#property copyright " "
#property link "http://www.****quotes.net"
#property indicator_chart_window
extern int MA_Period = 38;
extern int MA_Method = MODE_SMA;
extern int MA_applied_to = PRICE_CLOSE;
extern bool Enabled = true;
// MODE_SMA 0 Simple moving average.
// MODE_EMA 1 Exponential moving average.
// MODE_SMMA 2 Smoothed moving average.
// MODE_LWMA 3 Linear weighted moving average.
// PRICE_CLOSE 0 Close price.
// PRICE_OPEN 1 Open price.
// PRICE_HIGH 2 High price.
// PRICE_LOW 3 Low price.
// PRICE_MEDIAN 4 Median price, (high+low)/2.
// PRICE_TYPICAL 5 Typical price, (high+low+close)/3.
// PRICE_WEIGHTED 6 Weighted close price, (high+low+close+close)/4.
//---- buffers
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
if (!Enabled) return (0);
if((iMA(NULL,PERIOD_H1,MA_Period,0,MA_Method,MA_applied_to,0)-Bid)< 0 &&
MathAbs(iMA(NULL,PERIOD_H1,MA_Period,0,MA_Method,MA_applied_to,0)-Bid)<= 0.0025 &&
iMACD(NULL,PERIOD_H1,12,26,9,PRICE_CLOSE,MODE_MAIN,0)< 0)
{
Alert ("Sell " + Symbol());
PlaySound ("alert.wav");
return(-1);
}
if ((Bid-iMA(NULL,PERIOD_H1,MA_Period,0,MA_Method,MA_applied_to,0))> 0 &&
MathAbs(Bid-iMA(NULL,PERIOD_H1,MA_Period,0,MA_Method,MA_applied_to,0))<= 0.0025 &&
iMACD(NULL,PERIOD_H1,12,26,9,PRICE_CLOSE,MODE_MAIN,0)> 0)
{
Alert ("Buy "+ Symbol());
PlaySound ("alert.wav");
return(-1);
}
return(0);
}
آخر تعديل بواسطة وضاح عطار ، 26-01-2008 الساعة 10:36 PM
- 31-01-2008, 08:40 PM #7
رد: اخطاء بسيطة - و راجي منكم التصحيح
بعد اضافة الكود
if(Time[0]<TimeCurrent()) return(0);
اصبح المؤشر لا يصدر اي نتبيه ..
ولكن بعد حذف الحلقة على كل الشموع .. اصبح المؤشر يعمل بالشكل المطلوب
شكرا على التصحيح ..
المواضيع المتشابهه
-
عضو جديد ويحتاج مساعده بسيطة منكم
By طيب القلب in forum برمجة المؤشرات واكسبرتات التداول - Experts Advisor EAمشاركات: 2آخر مشاركة: 24-10-2009, 05:26 PM -
اشهر اخطاء المبتدئين
By د:محمد العشري in forum سوق تداول العملات الأجنبية والسلع والنفط والمعادنمشاركات: 15آخر مشاركة: 14-03-2009, 12:18 AM -
ال تريد فيه اخطاء احذرو
By hasan ameen in forum سوق تداول العملات الأجنبية والسلع والنفط والمعادنمشاركات: 16آخر مشاركة: 02-03-2008, 03:37 AM -
التصحيح ووقت التصحيح هنا تجدون اراءكم !!!!!
By abouzeed in forum سوق تداول العملات الأجنبية والسلع والنفط والمعادنمشاركات: 18آخر مشاركة: 09-06-2006, 01:11 AM -
اخطاء برنامج التدوال
By YOOOSEF71 in forum سوق تداول العملات الأجنبية والسلع والنفط والمعادنمشاركات: 0آخر مشاركة: 15-08-2005, 03:30 AM