منتديات بورصات

منتديات بورصات (https://forum.borsaat.com/)
-   منتدى المؤشرات و الاكسبرتات (https://forum.borsaat.com/f14/)
-   -   تبادل الخبرات في برمجة MQL (https://forum.borsaat.com/t933685.html)

سمير محمد ارمان 23 - 09 - 2018 01:36 PM

رد: تبادل الخبرات في برمجة MQL
 
اقتباس:

المشاركة الأصلية كتبت بواسطة kazamadrid (المشاركة 2519723)
اين يتم وضع هاذا الكود
//+------------------------------------------------------------------+
//| Check the correctness of the order volume |
//+------------------------------------------------------------------+
bool CheckVolumeValue(double volume,string &description)
{
//--- minimal allowed volume for trade operations
double min_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME _MIN);
if(volume<min_volume)
{
description=StringFormat("Volume is less than the minimal allowed SYMBOL_VOLUME_MIN=%.2f",min_volume);
return(false);
}

//--- maximal allowed volume of trade operations
double max_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME _MAX);
if(volume>max_volume)
{
description=StringFormat("Volume is greater than the maximal allowed SYMBOL_VOLUME_MAX=%.2f",max_volume);
return(false);
}

//--- get minimal step of volume changing
double volume_step=SymbolInfoDouble(Symbol(),SYMBOL_VOLUM E_STEP);

int ratio=(int)MathRound(volume/volume_step);
if(MathAbs(ratio*volume_step-volume)>0.0000001)
{
description=StringFormat("Volume is not a multiple of the minimal step SYMBOL_VOLUME_STEP=%.2f, the closest correct volume is %.2f",
volume_step,ratio*volume_step);
return(false);
}
description="Correct volume value";
return(true);
}

السلام عليكم
يتم وضعه خارج كل الدوال
مع وضع المتحكم فيه CheckVolumeValue فى دالة OnTick
كود:

bool CheckVolumeValue(double volume,string &description)
{
//--- minimal allowed volume for trade operations
double min_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MIN);
if(volume<min_volume)
{
description=StringFormat("Volume is less than the minimal allowed SYMBOL_VOLUME_MIN=%.2f",min_volume);
return(false);
}

//--- maximal allowed volume of trade operations
double max_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MAX);
if(volume>max_volume)
{
description=StringFormat("Volume is greater than the maximal allowed SYMBOL_VOLUME_MAX=%.2f",max_volume);
return(false);
}

//--- get minimal step of volume changing
double volume_step=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_STEP);

int ratio=(int)MathRound(volume/volume_step);
if(MathAbs(ratio*volume_step-volume)>0.0000001)
{
description=StringFormat("Volume is not a multiple of the minimal step SYMBOL_VOLUME_STEP=%.2f, the closest correct volume is %.2f",
volume_step,ratio*volume_step);
return(false);
}
description="Correct volume value";
return(true);
}

لو ممكن شرح طريقة عمله وماهى الاستفادة منه
تحياتى

kazamadrid 23 - 09 - 2018 06:41 PM

رد: تبادل الخبرات في برمجة MQL
 
اقتباس:

المشاركة الأصلية كتبت بواسطة سمير محمد ارمان (المشاركة 2519857)
السلام عليكم
يتم وضعه خارج كل الدوال
مع وضع المتحكم فيه CheckVolumeValue فى دالة OnTick
كود:

bool CheckVolumeValue(double volume,string &description)
{
//--- minimal allowed volume for trade operations
double min_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MIN);
if(volume<min_volume)
{
description=StringFormat("Volume is less than the minimal allowed SYMBOL_VOLUME_MIN=%.2f",min_volume);
return(false);
}

//--- maximal allowed volume of trade operations
double max_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MAX);
if(volume>max_volume)
{
description=StringFormat("Volume is greater than the maximal allowed SYMBOL_VOLUME_MAX=%.2f",max_volume);
return(false);
}

//--- get minimal step of volume changing
double volume_step=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_STEP);

int ratio=(int)MathRound(volume/volume_step);
if(MathAbs(ratio*volume_step-volume)>0.0000001)
{
description=StringFormat("Volume is not a multiple of the minimal step SYMBOL_VOLUME_STEP=%.2f, the closest correct volume is %.2f",
volume_step,ratio*volume_step);
return(false);
}
description="Correct volume value";
return(true);
}

لو ممكن شرح طريقة عمله وماهى الاستفادة منه
تحياتى

حسب ما وجدت انه قبل إرسال أوامر التداول ، من الضروري التحقق من صحة الأحجام المحددة في الطلبات اي انه يجب التحقق من عدد الحصص التي على وشك تعيين الاكسبرت ، قبل استدعاء الدالة OrderSend (). الحد الأدنى والحد الأقصى المسموح به لحجم التداول ، بالإضافة إلى الحجم .اين انه من المفروض الكود يوضع قبل الدالة OrderSend ()
لم افهم قصدك خارج كل الدوال

سمير محمد ارمان 24 - 09 - 2018 02:11 PM

رد: تبادل الخبرات في برمجة MQL
 
1 مرفق
اقتباس:

المشاركة الأصلية كتبت بواسطة kazamadrid (المشاركة 2519885)
حسب ما وجدت انه قبل إرسال أوامر التداول ، من الضروري التحقق من صحة الأحجام المحددة في الطلبات اي انه يجب التحقق من عدد الحصص التي على وشك تعيين الاكسبرت ، قبل استدعاء الدالة OrderSend (). الحد الأدنى والحد الأقصى المسموح به لحجم التداول ، بالإضافة إلى الحجم .اين انه من المفروض الكود يوضع قبل الدالة OrderSend ()
لم افهم قصدك خارج كل الدوال

كما هو موجود فى الاكسبيرت
يتم وضع الدالة خارج الدوال كله
والعمل بيه فى دالة OnTick
يتم وضع اسم الدالة
مع الموجود فى داخله
CheckVolumeValue
تحياتى

kazamadrid 24 - 09 - 2018 04:08 PM

رد: تبادل الخبرات في برمجة MQL
 
اقتباس:

المشاركة الأصلية كتبت بواسطة سمير محمد ارمان (المشاركة 2519981)
كما هو موجود فى الاكسبيرت
يتم وضع الدالة خارج الدوال كله
والعمل بيه فى دالة OnTick
يتم وضع اسم الدالة
مع الموجود فى داخله
CheckVolumeValue
تحياتى

ممكن مثال بسيط حتى افهم اكثر و بارك الله فيك

سمير محمد ارمان 24 - 09 - 2018 04:47 PM

رد: تبادل الخبرات في برمجة MQL
 
اقتباس:

المشاركة الأصلية كتبت بواسطة kazamadrid (المشاركة 2520011)
ممكن مثال بسيط حتى افهم اكثر و بارك الله فيك

لو ممكن تضع لى كود التحكم فى الدالة
او بمعنى
ممكن تكتب لى اسم الدالة
CheckVolumeValue
انا لا اعرف ماهو المطلوب من description

kazamadrid 24 - 09 - 2018 04:54 PM

رد: تبادل الخبرات في برمجة MQL
 
اقتباس:

المشاركة الأصلية كتبت بواسطة سمير محمد ارمان (المشاركة 2520034)
لو ممكن تضع لى كود التحكم فى الدالة
او بمعنى
ممكن تكتب لى اسم الدالة
CheckVolumeValue
انا لا اعرف ماهو المطلوب من description

https://image.ibb.co/j8OaWp/2018_09_24_135359.jpg

روكاا 25 - 09 - 2018 02:31 AM

رد: تبادل الخبرات في برمجة MQL
 
السلام عليكم
عاوز اعرف ازاي اضيف علي اكسبيرت شرط دخول
وهو اغلاق الشمعه الاولي في كل يوم فقط بصرف النظر عن الوقت
يعني عند اغلاق الشمعه الاول لليوم صاعده شراء والعكس دون النظر الي الساعه
ولا يقوم بفتح صفقات اخري

سمير محمد ارمان 25 - 09 - 2018 01:43 PM

رد: تبادل الخبرات في برمجة MQL
 
اقتباس:

المشاركة الأصلية كتبت بواسطة روكاا (المشاركة 2520127)
السلام عليكم
عاوز اعرف ازاي اضيف علي اكسبيرت شرط دخول
وهو اغلاق الشمعه الاولي في كل يوم فقط بصرف النظر عن الوقت
يعني عند اغلاق الشمعه الاول لليوم صاعده شراء والعكس دون النظر الي الساعه
ولا يقوم بفتح صفقات اخري

الافضل فتح موضوع جديد
مع شرح المطلوب عمله مع التوضيح من على الشارت
تحياتى

روكاا 26 - 09 - 2018 01:34 AM

رد: تبادل الخبرات في برمجة MQL
 
تم عمل موضوع جديد

kazamadrid 26 - 09 - 2018 02:24 PM

رد: تبادل الخبرات في برمجة MQL
 
كود:

void DoAlert(string UD)
{
  if (!NewBar() || !Use_Sound)
      return;
    PlaySound ("Alert2");
    Alert (Symbol()," ",Period(),"m  Boll Touch at ",UD);
}




  bool NewBar()
{
  static datetime dt  = 0;
  if (dt != Time[0])
  {
      dt = Time[0];
      return(true);
  }
  }

يظهر الخطا التالي
"Not all control paths return a value" error
ما هو الحل


09:10 AM

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.0 ©2011, Crawlability, Inc.