اعلانات المواقع والشركات

المجنون هذا الاسبوع  
[ 1 من 10 ] [ الكاتب : حكيم سلماني ] [ آخر مشاركة : جمال ] [ عدد الزوار : 243505 ] [ عدد الردود : 4617 ]
تحليلات Fxcmtr التابعة لشركة Fxcm  
[ 2 من 10 ] [ الكاتب : سمير صيام ] [ آخر مشاركة : أبوعبدالرشيد ] [ عدد الزوار : 92079 ] [ عدد الردود : 5134 ]
EUR\CHF اختراق+نموذج W  
[ 3 من 10 ] [ الكاتب : samer20 ] [ آخر مشاركة : faissal ] [ عدد الزوار : 18 ] [ عدد الردود : 1 ]
توصيات عاشق الذبذبة متعددة الاهداف !!!  
[ 4 من 10 ] [ الكاتب : عاشق الذبذبـة ] [ آخر مشاركة : fesall ] [ عدد الزوار : 63354 ] [ عدد الردود : 1681 ]
** موضوع خاص عن ( الأسهم المصرية ) **  
[ 5 من 10 ] [ الكاتب : نور المصرى ] [ آخر مشاركة : المتألق ] [ عدد الزوار : 33749 ] [ عدد الردود : 1748 ]
النيوزلندي دولار ونموذج (M) قيد التكوين.....! _-_ للمتابعة _-_  
[ 6 من 10 ] [ الكاتب : Mr.Lonely ] [ آخر مشاركة : Mr.Lonely ] [ عدد الزوار : 58 ] [ عدد الردود : 5 ]
***** حصريا التحليل الشامل لشهر اغسطس 2008*****  
[ 7 من 10 ] [ الكاتب : hanimedia ] [ آخر مشاركة : hanimedia ] [ عدد الزوار : 3315 ] [ عدد الردود : 100 ]
ورشة عمل موجات اليوت  
[ 8 من 10 ] [ الكاتب : Forex Elite ] [ آخر مشاركة : متدول-متميز ] [ عدد الزوار : 118114 ] [ عدد الردود : 3658 ]
اعطونا رأيكو يا زعماء؟  
[ 9 من 10 ] [ الكاتب : maita ] [ آخر مشاركة : متدول-متميز ] [ عدد الزوار : 30 ] [ عدد الردود : 2 ]
علي بركة الله توصيات سريعه للعملات%  
[ 10 من 10 ] [ الكاتب : متداول طموح ] [ آخر مشاركة : fesall ] [ عدد الزوار : 3163 ] [ عدد الردود : 163 ]

اعلانات منتجات وخدمات المتداول العربي

العودة   منتديات المتداول العربي > مـنـتـديــات الـمـتـداول الـعـربي > منتدى المؤشرات والاكسبيرتات والبرمجة
التسجيل مركز رفع الملفات الأسئلة الشائعة التقويم اجعل كافة المشاركات مقروءة

رد
 
LinkBack أدوات الموضوع
قديم 21-03-2008, 08:19 PM   #31 (permalink)
معلومات العضو
مشرف الإكسبيرتات والمؤشرات
 
الصورة الرمزية وضاح عطار

إحصائية العضو
افتراضي رد: دورة صناعة الاكسبيرتات

المتحولات العامة Global Variable

تحتوي لغة الميتاتريدر على تقنية تسمى Global Variable

يستطيع المبرمج من خلالها تخزين واسترجاع المعلومات ومشاركتها بين جميع المؤشرات أو الاكسبيرتات أو حتى
المستخدم نفسه .

يمكنك يدويا أو برمجيا إنشاء متحول عام وإسناد قيمة ما له .

يمكنك تغيير هذه القيمة في أي وقت تريد يدويا أو برمجيا .

هذه المتحولات يمكن قراءة قيمها من أي مؤشر أو اكسبيرت آخر .
بهذه الطريقة يمكن تبادل المعلومات بين مجموعة من المؤشرات أو الاكسبيرتات .

يمكن مثلا برمجة مؤشر يقوم بحسابات معقدة ثم يعطي اشارة بيع أو شراء ويخزنها داخل متحول عام .

ثم هناك اكسبيرت يفحص هذا المتحول الذي يعرف اسمه ويرى ما هي الإشارة الأخيرة هل هي بيع أم شراء ليقوم بتنفيذ صفقة حقيقية .

هذا مثال بسيط لما يمكن عمله بواسطة هذه التقنية الرائعة .

العمل اليدوي على المتحولات العامة هو عن طريق برنامج الميتاتريدر نفسه .

من القائمة Tools اختر Global Variable أو اضغط F3 مباشرة .

ستظهر لك نافذة المتحولات العامة لتظهر لك المتحولات الحالية مع قيمها .

يمكنك إضافة متحول جديد أو حذف متحول موجود أو تغيير قيمته كما تريد .

العمل مع المتحولات العامة من خلال البرمجة :

تحتوي لغة MQL4 على كافة الوظائف المناسبة للعمل مع هذه المتحولات .

وهذه الوظائف هي :

كود PHP:
bool GlobalVariableCheckstring name


تقوم بفحص هل يوجد متحول عام له الاسم المحدد ..

تعيد هذه الوظيفة القيمة true في حال وجدت المتحول والقيمة false في حال لم يكن المتحول موجودا .

كود PHP:
bool GlobalVariableDelstring name


تقوم بحذف المتحول ذو الاسم المحدد وتعيد القيمة true في حال نجحت في عملية الحذف والقيمة false في حال لم تنجح لأي سبب من الأسباب .

كود PHP:
double GlobalVariableGetstring name


تقوم بقراءة قيمة المتحول ذو الاسم المحدد .

كود PHP:
datetime GlobalVariableSetstring namedouble value


تقوم بوضع قيمة رقمية في المتحول ذو الاسم المحدد وتعيد زمن آخر قراءة تمت على هذا المتحول .

أو تعيد القيمة صفر إذا كانت هذه أول مرة يتم تخزين قيمة في هذا المتحول .

كود PHP:
int GlobalVariablesDeleteAllstring prefix_name=NULL
تقوم بحذف كافة المتحولات العامة أو يمكنك حذف فقط المتحولات التي يبدأ اسمها ببادئة محددة .


تعيد هذه الوظيفة عدد المتحولات التي قامت بحذفها .

كود PHP:
int GlobalVariablesTotal( ) 
تقوم بإعادة عدد المتحولات العامة المتوفرة حاليا .


كود PHP:
string GlobalVariableNameint index


تقوم بإعادة اسم المتحول من خلال رقمه الذي يبدأ من الصفر حتى آخر متحول .

أمثلة :

كود PHP:
// check variable before use
  
if(!GlobalVariableCheck("g1"))
    
GlobalVariableSet("g1",1); 


يقوم هذا المثال بفحص هل يوجد متحول اسمه g1 .
في حال لم يجد هذا المتحول فإنه ينشئه ويضع فيه القيمة 1 .

كود PHP:
GlobalVariableDel("gvar_1"); 


يقوم هذا المثال بحذف المتحول ذو الاسم gvar_1 .

كود PHP:
double v1=GlobalVariableGet("g1"); 


يقوم هذا المثال بقراءة قيمة المتحول g1 وتخزينه في المتحول v1 .

كود PHP:
int    var_total=GlobalVariablesTotal();
  
string name;
  for(
int i=0;i<var_total;i++)
    {
     
name=GlobalVariableName(i);
     Print(
i,": Global variable name - ",name);
    } 


يقوم هذا المثال بقراءة وطباعة أسماء جميع المتحولات المتوفرة حاليا

فقط أسمائها وليس قيمها .

التوقيع

لا إله إلا الله ---- محمد رسول الله
____________________

وضاح عطار متواجد حالياً   رد باقتباس
قديم 22-03-2008, 01:32 AM   #32 (permalink)
معلومات العضو
عضو نشيط
 
الصورة الرمزية wajdyss

إحصائية العضو
افتراضي رد: دورة صناعة الاكسبيرتات

جزاك الله كل خير

التوقيع



wajdyss غير متواجد حالياً   رد باقتباس
قديم 23-03-2008, 08:05 PM   #33 (permalink)
معلومات العضو
المتداول العربي

إحصائية العضو
افتراضي رد: دورة صناعة الاكسبيرتات

جزاك الله خير

وبارك الله في عملك

شايب 2000 غير متواجد حالياً   رد باقتباس
قديم 05-04-2008, 11:38 PM   #34 (permalink)
معلومات العضو
عضو نشيط
 
الصورة الرمزية wajdyss

إحصائية العضو
افتراضي رد: دورة صناعة الاكسبيرتات

طولت الغيبة يا مهندس وضاح

التوقيع



wajdyss غير متواجد حالياً   رد باقتباس
قديم 03-05-2008, 04:56 AM   #35 (permalink)
معلومات العضو
عضو نشيط

إحصائية العضو
افتراضي رد: دورة صناعة الاكسبيرتات

اخى الحبيب وضاح
السلام عليكم

بدايه اشكرك على هذا المجهود الرائع فى الشرح ومحاوله لإفادة الأخوه والأخوات , وبكل تأكيد نترك جزائك عند المولى عز وجل فهو القادر على مكافأتك نظرا لما تبذله من جهد ثقيل فى الشرح وانا اعلم معنى شرح البرمجه

اخى الحبيب لقد قمت بتنفيذ الأوامر فى الأكسبيرت الأول الذى قمت بشرحه واللذى يعمل على وضع ارودرات معلقه على بعد معين عند اغلاق شمعه الديلى
ولقد قمت ببعض التعديلات عليه - وذلك من خلال تعلمى لشرحك الوافر ما شاء الله - لأجعله يضع أوردرات الشراء فوق الهاى لليوم السابق واوردرات البيع فوق اللو لليوم السابق ولكن ...

تظل الأوردرات المعلقه مفتوحه ويعجز الأكسبيرت عن تنفيذ اى ارودرات اخرى لحين اغلاق المعلق

وها هو الكود فأرجوا ان تقول لى ما هو الخطأ كى اتفاداه ولك جزيل الشكر

بارك الله فيك

الكود

كود PHP:
int start()
{
  if(
Hour()==&& Minute()<&& MyOrdersTotal(Magicnumber)>0)
  {
    
DeletePendingOrders(Magicnumber);
    
CloseOrders(Magicnumber);
  }
  if(
Hour()==&& Minute()>&& MyOrdersTotal(Magicnumber)==0)
  {
    
double Dayhigh=iHigh(Symbol(),PERIOD_D1,1);
    
double Daylow=iLow(Symbol(),PERIOD_D1,1);
    
double BuyPrice=Dayhigh+Step*Point;
    
double BuyTP=BuyPrice+Takeprofit*Point;
    
double BuySL=BuyPrice-Stoploss*Point;
 
    
double SellPrice=Daylow-Step*Point;
    
double SellTP=SellPrice-Takeprofit*Point;
    
double SellSL=SellPrice+Stoploss*Point;
 
    
OrderSend(Symbol(),OP_BUYSTOP,Lots,BuyPrice,3,BuySL,BuyTP,"",Magicnumber,0,Green);
    
OrderSend(Symbol(),OP_SELLSTOP,Lots,SellPrice,3,SellSL,SellTP,"",Magicnumber,0,Red);
 
 
  }
  return(
0);
}
int MyOrdersTotal(int Magic)
{
  
int c=0;
  
int total  OrdersTotal();
 
  for (
int cnt cnt total cnt++)
  {
    
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
    if (
OrderMagicNumber() == Magic && OrderSymbol()==Symbol())
    {
      
c++;
    }
  }
  return(
c);
}
 
int DeletePendingOrders(int Magic)
{
  
int total  OrdersTotal()-1;
 
  for (
int cnt total cnt cnt--)
  {
    
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
    if (
OrderMagicNumber() == Magic && OrderSymbol()==Symbol() && (OrderType()!=OP_BUY || OrderType()!=OP_SELL))
    {
      
OrderDelete(OrderTicket());
    }
  }
  return(
0);
}
int CloseOrders(int Magic)
{
  
int total  OrdersTotal()-1;
 
  for (
int cnt total cnt cnt--)
  {
    
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
    if (
OrderMagicNumber() == Magic && OrderSymbol()==Symbol())
    {
      if (
OrderType()==OP_BUY)
      {
        
OrderClose(OrderTicket(),OrderLots(),Bid,3);
      }
 
      if (
OrderType()==OP_SELL)
      {
        
OrderClose(OrderTicket(),OrderLots(),Ask,3);
      }
    }
  }
  return(
0);

التوقيع

بسم الله الرحمن الرحيم

سياسة حفلات المجنون ( هنا ) والشرح ( هنا ) والنتائج هنا
الهدف العربى الموحد ( 1 ) ( 2 )
الأن

Amro غير متواجد حالياً   رد باقتباس
قديم 03-05-2008, 11:54 AM   #36 (permalink)
معلومات العضو
عضو نشيط
 
الصورة الرمزية wajdyss

إحصائية العضو
افتراضي رد: دورة صناعة الاكسبيرتات

اقتباس:
المشاركة الأصلية كتبت بواسطة Amro مشاهدة المشاركة
اخى الحبيب وضاح

السلام عليكم

بدايه اشكرك على هذا المجهود الرائع فى الشرح ومحاوله لإفادة الأخوه والأخوات , وبكل تأكيد نترك جزائك عند المولى عز وجل فهو القادر على مكافأتك نظرا لما تبذله من جهد ثقيل فى الشرح وانا اعلم معنى شرح البرمجه

اخى الحبيب لقد قمت بتنفيذ الأوامر فى الأكسبيرت الأول الذى قمت بشرحه واللذى يعمل على وضع ارودرات معلقه على بعد معين عند اغلاق شمعه الديلى
ولقد قمت ببعض التعديلات عليه - وذلك من خلال تعلمى لشرحك الوافر ما شاء الله - لأجعله يضع أوردرات الشراء فوق الهاى لليوم السابق واوردرات البيع فوق اللو لليوم السابق ولكن ...

تظل الأوردرات المعلقه مفتوحه ويعجز الأكسبيرت عن تنفيذ اى ارودرات اخرى لحين اغلاق المعلق

وها هو الكود فأرجوا ان تقول لى ما هو الخطأ كى اتفاداه ولك جزيل الشكر

بارك الله فيك

الكود

كود PHP:
int start()
{
  if(
Hour()==&& Minute()<&& MyOrdersTotal(Magicnumber)>0)
  {
    
DeletePendingOrders(Magicnumber);
    
CloseOrders(Magicnumber);
  }
  if(
Hour()==&& Minute()>&& MyOrdersTotal(Magicnumber)==0)
  {
    
double Dayhigh=iHigh(Symbol(),PERIOD_D1,1);
    
double Daylow=iLow(Symbol(),PERIOD_D1,1);
    
double BuyPrice=Dayhigh+Step*Point;
    
double BuyTP=BuyPrice+Takeprofit*Point;
    
double BuySL=BuyPrice-Stoploss*Point;
 
    
double SellPrice=Daylow-Step*Point;
    
double SellTP=SellPrice-Takeprofit*Point;
    
double SellSL=SellPrice+Stoploss*Point;
 
    
OrderSend(Symbol(),OP_BUYSTOP,Lots,BuyPrice,3,BuySL,BuyTP,"",Magicnumber,0,Green);
    
OrderSend(Symbol(),OP_SELLSTOP,Lots,SellPrice,3,SellSL,SellTP,"",Magicnumber,0,Red);
 
 
  }
  return(
0);
}
int MyOrdersTotal(int Magic)
{
  
int c=0;
  
int total  OrdersTotal();
 
  for (
int cnt cnt total cnt++)
  {
    
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
    if (
OrderMagicNumber() == Magic && OrderSymbol()==Symbol())
    {
      
c++;
    }
  }
  return(
c);
}
 
int DeletePendingOrders(int Magic)
{
  
int total  OrdersTotal()-1;
 
  for (
int cnt total cnt cnt--)
  {
    
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
    if (
OrderMagicNumber() == Magic && OrderSymbol()==Symbol() && (OrderType()!=OP_BUY || OrderType()!=OP_SELL))
    {
      
OrderDelete(OrderTicket());
    }
  }
  return(
0);
}
int CloseOrders(int Magic)
{
  
int total  OrdersTotal()-1;
 
  for (
int cnt total cnt cnt--)
  {
    
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
    if (
OrderMagicNumber() == Magic && OrderSymbol()==Symbol())
    {
      if (
OrderType()==OP_BUY)
      {
        
OrderClose(OrderTicket(),OrderLots(),Bid,3);
      }
 
      if (
OrderType()==OP_SELL)
      {
        
OrderClose(OrderTicket(),OrderLots(),Ask,3);
      }
    }
  }
  return(
0);

اخي الكريم

بعد اذن المهندس وضاح

بعد نظرة سريعة على الكود ، هناك خطأ في دالة DeletePendingOrders

حيث يجب عليك تغيير
كود PHP:
if (OrderMagicNumber() == Magic && OrderSymbol()==Symbol() && (OrderType()!=OP_BUY || OrderType()!=OP_SELL)) 
الى

كود PHP:
if (OrderMagicNumber() == Magic && OrderSymbol()==Symbol() && (OrderType()!=OP_BUYSTOP || OrderType()!=OP_SELLSTOP)) 

التوقيع



wajdyss غير متواجد حالياً   رد باقتباس
قديم 03-05-2008, 03:46 PM   #37 (permalink)
معلومات العضو
مشرف الإكسبيرتات والمؤشرات
 
الصورة الرمزية وضاح عطار

إحصائية العضو
افتراضي رد: دورة صناعة الاكسبيرتات

أهلا بك أخي عمرو

استبدل الوظيفة التالية بمثيلتها في الكود عندك :

كود PHP:
int DeletePendingOrders(int Magic)
{
  
int total  OrdersTotal()-1;
 
  for (
int cnt total cnt cnt--)
  {
    
OrderSelect(0,SELECT_BY_POS,MODE_TRADES);
    if (
OrderMagicNumber() == Magic && OrderSymbol()==Symbol() && (OrderType()!=OP_BUY || OrderType()!=OP_SELL))
    {
      
OrderDelete(OrderTicket());
      
RefreshRates();
      
Sleep(100);
    }
  }
  return(
0);

وأخبرني بالنتيجة


أخي وجدي شكرا لك

لكنك لم تنتبه لإشارة لا يساوي != في الوظيفة

لذلك الوظيفة برمجيا صحيحة ولكن أحيانا لبطيء السيرفر والتنفيذ لا يتم تنفيذ الوظيفة بشكل صحيح .

التوقيع

لا إله إلا الله ---- محمد رسول الله
____________________

وضاح عطار متواجد حالياً   رد باقتباس
قديم 03-05-2008, 04:28 PM   #38 (permalink)
معلومات العضو
عضو نشيط

إحصائية العضو
افتراضي رد: دورة صناعة الاكسبيرتات

اقتباس:
المشاركة الأصلية كتبت بواسطة wajdyss مشاهدة المشاركة
اخي الكريم



بعد اذن المهندس وضاح

بعد نظرة سريعة على الكود ، هناك خطأ في دالة DeletePendingOrders

حيث يجب عليك تغيير

كود PHP:
if (OrderMagicNumber() == Magic && OrderSymbol()==Symbol() && (OrderType()!=OP_BUY || OrderType()!=OP_SELL)) 
كود PHP:
[center][/center

الى

كود PHP:
[center][center]if (OrderMagicNumber() == Magic && OrderSymbol()==Symbol() && (OrderType()!=OP_BUYSTOP || OrderType()!=OP_SELLSTOP))
[/
center][/center

شكرا لك اخ وجدى على اهتمامك وزوقك وحبك لأخوتك
لكن مازال الموضوع كما هو


اقتباس:
المشاركة الأصلية كتبت بواسطة وضاح عطار مشاهدة المشاركة
أهلا بك أخي عمرو
اقتباس:
المشاركة الأصلية كتبت بواسطة وضاح عطار مشاهدة المشاركة


كود PHP:
[center]int DeletePendingOrders(int Magic)
{
  
int total  OrdersTotal()-1;
 
  for (
int cnt total cnt cnt--)
  {
    
OrderSelect(0,SELECT_BY_POS,MODE_TRADES);
    if (
OrderMagicNumber() == Magic && OrderSymbol()==Symbol() && (OrderType()!=OP_BUY || OrderType()!=OP_SELL))
    {
      
OrderDelete(OrderTicket());
      
RefreshRates();
      
Sleep(100);
    }
  }
  return(
0);
}
 
<
div align="center">استبدل الوظيفة التالية بمثيلتها في الكود عندك :
 
</
div
وأخبرني بالنتيجة


أخي وجدي شكرا لك

لكنك لم تنتبه لإشارة لا يساوي != في الوظيفة

لذلك الوظيفة برمجيا صحيحة ولكن أحيانا لبطيء السيرفر والتنفيذ لا يتم تنفيذ الوظيفة بشكل صحيح .
[/center]

كود PHP:
[center]{
  if(
Hour()==&& Minute()<&& MyOrdersTotal(Magicnumber)>0)
  {
    
DeletePendingOrders(Magicnumber);
    
CloseOrders(Magicnumber);
  }
  if(
Hour()==&& Minute()>&& MyOrdersTotal(Magicnumber)==0)
  {
    
double Dayhigh=iHigh(Symbol(),PERIOD_D1,1);
    
double Daylow=iLow(Symbol(),PERIOD_D1,1);
    
double BuyPrice=Dayhigh+<