الأمر Alert يقوم بالتنبيه بإظهار نافذه وفي نفس الوقت يعطي تنبيه صوتي
أما PlaySound فهو يعطي التنبيه الصوتي فقط
الكود لا يوجد به مشكله جرب المؤشر الذي أرفقته في المشاركه السابقه وسوف يعمل معك
Printable View
الخطأ لديك في تحديد تاريخ البدايه وتاريخ النهايه
أنت بهذه الطريقه قمت بتحديد الساعه لكن لم تحديد التاريخ كامل اليوم والشهر والسنهكود PHP:extern string Begin_1 = "08:00";
extern string End_1 = "23:00";
لذلك يجب أن تكون بهذا الشكل
أو إذا أردت عدم إستخدام التوقيت كامل وتريد تحديد الساعه فقط يجب أن تقوم بتحويلهاكود PHP:extern datetime Begin_1=D'2010.10.10 12:00';
extern datetime End_1=D'2010.10.20 12:00';
لماذا ؟كود PHP:datetime begin= StrToTime(TimeToStr(TimeCurrent(), TIME_DATE) + " " + Begin_1);
datetime end= StrToTime(TimeToStr(TimeCurrent(), TIME_DATE) + " " + End_1);
لإنك إذا راجعت خصائص الداله ObjectCreate
فسوف تجد أن التوقيت time1 و time2 يجب أن يكون من نوع datetimeكود PHP:ObjectCreate(string name,int type,int window,datetime time1,double price1,datetime time2=0,double price2=0)
ثم الجزء الآخر وهو تحديد السعر الهاي أو اللو أو الإفتتاح أو الإغلاق مكان time1 و time2 بالتأكيد لا يمكن فالسعر ليس له علاقة بالتوقيت
مرفق المؤشر بعد التعديل
بارك الله فيك أستاذ أسامة :eh_s(7):
إذا حسب ما فهمته من الكود
Begin و End يمثلان نقطتين أساسيتين في محور الزمن وتكونان دائما من نوع datetime
وفي محور السعر نضع فقط القيم من نوع double إي السعر ويمكن أن تكون سعر Low,High,Open,Close وتمثلان النقطتين الأخرتين ليكتمل الشكل الرباعي
إنطلاقا من مفهومي هذا عدلت على المؤشر السابق بحيث النقطتين المتعلقتين بالسعر يمكن أن تأخذ إحدى هذه القيم Low,High,Open,Close للشمعة التي توافق Begin_1 و الشمعة التي توافق End_1
لاكن المؤشر لا يمر في عملية Compile :Emoticon1:
أرجو توضح الخطأ وبارك الله فيك:eh_s(7):كود PHP:#property copyright "Copyright 2011 Cher Amine"
#property link "[email protected]"
#property indicator_chart_window
extern string Begin_1 = "08:00";
extern string End_1 = "23:00";
extern bool use_HighPrice =True;
extern bool use_LowPrice = False;
extern bool use_OpenPrice = False;
extern bool use_ClosePrice = False;
double Price1 = Low[iBarShift(Symbol(),0,begin,false)];
double Price1a = Low[iBarShift(Symbol(),0,end,false)];
double Price2 = High[iBarShift(Symbol(),0,begin,false)];
double Price2a = High[iBarShift(Symbol(),0,end,false)];
double Price3 = Open[iBarShift(Symbol(),0,begin,false)];
double Price3a = Open[iBarShift(Symbol(),0,end,false)];
double Price4 = Close[iBarShift(Symbol(),0,begin,false)];
double Price4a = Close[iBarShift(Symbol(),0,end,false)];
double xPrice,yPrice;
int start()
{
datetime begin= StrToTime(TimeToStr(TimeCurrent(), TIME_DATE) + " " + Begin_1);
datetime end= StrToTime(TimeToStr(TimeCurrent(), TIME_DATE) + " " + End_1);
bool objet = ObjectCreate("RECTANGLE", OBJ_RECTANGLE, 0, begin, xPrice, end, yPrice);
ObjectSet("RECTANGLE", OBJPROP_COLOR, Red);
if(use_HighPrice){
xPrice = Price2;
yPrice = Price2a;
}
if(use_LowPrice){
xPrice =Price1;
yPrice =Price1a;
}
if(use_OpenPrice){
xPrice =Price3;
yPrice =Price3a;
}
if(use_ClosePrice){
xPrice =Price4;
yPrice =Price4a;
}
}
}//-----------------------------------------------------------+
لا يمكنك تعريف قيم متغيره خارج الدوال مثل
مرفق الإكسبرتكود PHP:double Price2 = High[iBarShift(Symbol(),0,begin,false)];
double Price2a = High[iBarShift(Symbol(),0,end,false)];
double Price3 = Open[iBarShift(Symbol(),0,begin,false)];
double Price3a = Open[iBarShift(Symbol(),0,end,false)];
double Price4 = Close[iBarShift(Symbol(),0,begin,false)];
double Price4a = Close[iBarShift(Symbol(),0,end,false)];
بارك الله فيك أستاذ أسامة وجزاك الله خيرا على هذا الكرم :eh_s(7)::eh_s(7):
في الحقيقة عدلت شوية على المؤشر ويتحكم في نقطتي السعر جيدا لاكن نقطتي الزمن هناك مشكلة
يرسم المستطيل خارج السعر على اليمين من المفروض يكون داخل السعر من "08:00" إلى "23:00"
أضن أن التعديل سيكون هنا
أرجو من فضلك التصحيح وشكراااا جزيلاااا :eh_s(7):كود PHP:datetime begin= StrToTime(TimeToStr(TimeCurrent(), TIME_DATE) + " " + Begin_1);
datetime end= StrToTime(TimeToStr(TimeCurrent(), TIME_DATE) + " " + End_1);
اليوم فتحت الميتاتريدر وجدت المستطيل داخل السعر :016:
أضفت هذا الكود ليعطي الفرق بين xPrice و yPrice
وهذا ليظهر الفرق في الشارتكود PHP:double Pips,xpips;
string comment1;
Pips = xPrice - yPrice;
xpips = MathAbs(Pips)/Q;
if (Pips > 0){
TextClor = PipsColorup;
}
else
if (Pips < 0){
TextClor = PipsColordw;
}
لاكن لايظهر رقم الفرق في الشارت :no3:كود PHP:bool objetText = ObjectCreate("RECTANGLE Pips", OBJ_TEXT, 0, Time[iBarShift(Symbol(),0,begin,false)] , xPrice);
ObjectSetText("RECTANGLE Pips", StringConcatenate(" ", xpips, " pips"),text_Size , "Times New Roman" , TextClor);
أرجو التصحيح وبارك الله فيك :eh_s(7):
نعم بالتأكيد سيرسم المستطيل خارج السعر لأنك إستخدمت TimeCurrent
إذا كنت تريد مثلا رسم المستطيل لليوم الحالي من الساعة 8 إلى الساعه 23
فبدلا من TimeCurrent سوف تحتاج إلى معرفة توقيت إفتتاح شمعة اليوم
وبنفس الطريقة يمكنك جعله تاريخي لجميع الأيام السابقه فقط ستحتاج إلى تغيير رقم الشمعه التي تريدهاكود PHP:iTime(Symbol(),1440,0)
فسيصبح الكود
كود PHP:datetime begin= StrToTime(TimeToStr(iTime(Symbol(),1440,0), TIME_DATE) + " " + Begin_1);
datetime end= StrToTime(TimeToStr(iTime(Symbol(),1440,0), TIME_DATE) + " " + End_1);
السلام عليكم
عندي استفسار بخصوص الاكسربيت
لو كنت اشتغل على استراتيجيه تعمل على اكثر من فيرم هل ممكن اعمل لها اكسبريت ؟
السلام عليكم ورحم الله
وبارك الله فيك على الردود السابقة :eh_s(7): :eh_s(7):
حاولت عمل إكسبريت الذي طلبه الأخ https://forum.arabictrader.com/t139020.html Mido0o
يضع أمرين معلقين عند أول رقمين صحيحين كل يوم على الساعة 2 صباحا إبتداءا من يوم الإثنين
يعني إذا كان السعر 1.2222 يعلق أمر شراء عند 1.2230 وأمر بيع عند 1.2220
إذا كانت الصفقة المفعلة رابحة يفتح صفقة أخرى في نفس الإتجاه بنفس اللوت وإذ كانت خاسرة يفتح صفقة معاكسة بلوت مضاعف
عملت كل الشروط المذكورة في الإكسبريت
وشروط السعر التي توضع عندها الصفقات المعلقة لا أعرف إن كانت صحيحة :Emoticon1:
و المشكلة الأكبر لا يريد أن يعمل compile :bomb:كود PHP:xPrice= Bid*1000; //1.2222 = 1222.2
xPrice2= MathCeil(xPrice); //1223
xPrice3= xPrice2/1000; //1.223
yPrice= Bid*1000; //1.2222 = 1222.2
yPrice2= MathFloor(yPrice);//1222
yPrice3=yPrice2/1000; //1.222
xBuySL=xPrice3-BuySL*point;
xBuyTP=xPrice3+BuyTP*point;
ySellSL=yPrice3+SellSL*point;
ySellTP=yPrice3-SellTP*point;
if(Day()==(1||2||3||4||5) && Hour()==pending_Orders_Hour && Minute()<5 && MyOrdersTotal(MagicNumber)==0){
OrderSend(Symbol() ,OP_BUYSTOP,newLot,xPrice3,3*Q,xBuySL,xBuyTP,"",MagicNumber,0,Green);
OrderSend(Symbol() ,OP_SELLSTOP,newLot,yPrice3,3*Q,ySellSL,ySellTP,"",MagicNumber,0,Green);
}
أرجو توضيح الأخطاء أستاذ أسامة :eh_s(7):
وبارك الله فيك :eh_s(7):
السلام عليكم ورحمة الله أستاذ أسامة:eh_s(7):
أرجو أن لا تنسى طلبي فوق :hands:
وبارك الله فيك
وعليكم السلام ورحمة الله وبركاته
أولا بالنسبه لشرط تحديد اليوم فلا يمكنك جعله بهذا الشكل
الصحيحكود PHP:if(Day()==(1||2||3||4||5)
وكان لديك بعض الأخطاء في الأقواس الناقصه وهي السبب في عدم عمل كومبايل مثلكود PHP:if(Day()==1||Day()==2||Day()==3||Day()==4||Day()==5)
فيجب أن تراعي هذه الأخطاءكود PHP:if(MyOrdersTotal(MagicNumber)>0 && (Bid>=xPrice3 || Bid<=yPrice3)
أيضا
عند المقارنه فإننا نستخدم == وليس =كود PHP:if(Blast="profit"
بالنسبه لطريقة تحديد السعر فما رأيك بهذه الطريقه الأسهل
مرفق الإكسبرت بعد التعديل لكن لم أضف له آخر تعديل الخاص بسعر الدخولكود PHP:xPrice=NormalizeDouble(Bid,digits-1);
yPrice=NormalizeDouble(Bid,digits-1)+10*point;
بارك الله فيك أستاذ أسامة :eh_s(7):
وعذرا لم أستعب وضيفة الدالة
أرجو من فضلك شرحا مبسطا لها :hands:كود PHP:NormalizeDouble
وكيف يمكن من هنا
الحصول على الرقمين الصحيحين :Emoticon1:كود PHP:xPrice=NormalizeDouble(Bid,digits-1);
yPrice=NormalizeDouble(Bid,digits-1)+10*point;
وبارك الله فيك وجزاك الله خيرا :eh_s(7):
NomrmalizeDouble تقوم بتقليص عدد الأرقام العشرية إلى العدد الذي تحدده وتحذف باقي الأرقام
مثلا إذا كان الرقم 1.337465 وتريد فقط آخر أربع أرقام عشرية فسوف تجعله
الناتج سيكون 1.3374كود PHP:NormalizeDouble(1.337465,4)
الآن حسب الإستراتيجية التي نريدها مثلا السعر 1.4235 فالقيم التي نريدها هي 1.4230 و 1.4240
الرقم الأول سهل سوف يكون
لماذا جعلت digits-1 ؟كود PHP:NormalizeDouble(1.4235,digits-1)
لأنه مثلا إذا كان عدد الأرقام العشرية digits=4 فسوف تكون القيمه digits-1=3 فصبح الناتج
أي سيأخذ أول ثلاثة أرقام عشرية فقط فيصبح 1.4230كود PHP:NormalizeDouble(1.4235,3)
القيمة الأخرى 1.4240 سوف نجمع 10 نقاط إلى القيمة الأول 1.4230 فيصبح 1.4240