رد: موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة محمد عاشور
طلب تقيل شويه من مستر دولار
هو عباره عن شرطين
الاول الدخول بيع لو السعر الحالى اعلى من القمه رقم 2
الملف المرفق 260772 الثانى وهو الاصعب
الدخول بيع لو القاع رقم 2 اعلى من الموفينج افريج على اى فريم اكبر من الفريم الحالى الملف المرفق 260774
لاحظ مستر دولار ان القاع رقم 2 على الفريم الاكبر فى الصوره التانيه مش القاع المرسوم
بداية ستحتاج إلى دالة لمعرفة قيمة القمه رقم 2
كود PHP:
double GetZigZagHigh(){
int First;
for(int i=0;i<Bars;i++){
double zag=iCustom(NULL,TimeFrame,"ZigZag",ExtDepth,ExtDeviation,ExtBackstep,0,i);
if(zag==High[i])First++;
if(First==2)return(zag);
}
}
ثم ستضع شرط الدخول
كود PHP:
if(Close[0]>GetZigZagHigh())//Open Order
بالنسبة للشرط الثاني ستتبع نفس الخطوات
أولا لمعرفة قيمة القاع الثانيه ستحتاج إلى عمل داله
كود PHP:
double GetZigZagLow(){
int First;
for(int i=0;i<Bars;i++){
double zag=iCustom(NULL,TimeFrame,"ZigZag",ExtDepth,ExtDeviation,ExtBackstep,0,i);
if(zag==Low[i])First++;
if(First==2)return(zag);
}
}
ثم ستضع شرط الدخول
كود PHP:
if(GetZigZagLow()>iMA(Symbol(),TimeFrame,14,0,0,PRICE_CLOSE,0))//Open Order
ويمكنك تحديد التايم فريم الذي تريده من المتغير TimeFrame
رد: موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة محمد بن حامد
خطيررررررر حبيبي اسامة والله خطير ما شاء الله عليك اللهم صلي على النبي وآله وصحبه وسلم
حققت لي ماريده بخطوتين وكنت حساويها بعشرين خطوة وكمان مش حتزبط معايا
بارك الله فيك :0031::eh_s(7):
عليه الصلاة والسلام
وبارك الله فيك
اقتباس:
المشاركة الأصلية كتبت بواسطة أبو جهاد
السلام على الأخوة الأفاضل طلبة ومعلمين
وسؤالي هو
كيف أضع شرط مبني على افتتاح شمعة جديدة
فمثلا أريد فتح صفقة بناء على شروط تعتمد على الشمعة السابقة
شكرا لكم مقدما
وعليكم السلام ورحمة الله وبركاته
كمثال إذا أردت معرفة إفتتاح الشمعه السابقه
الرقم 1 يعني الشمعه السابقه إذا جعلته 0 فهذا يعني الشمعه الحاليه إذا جعلته 2 فهذا يعني إفتتاح الشمعه قبل السابقه وهكذا كلما رجعت إلى الماضي يزيد الرقم
رد: موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة MR.dollar
عليه الصلاة والسلام
وبارك الله فيك
وعليكم السلام ورحمة الله وبركاته
كمثال إذا أردت معرفة إفتتاح الشمعه السابقه
الرقم 1 يعني الشمعه السابقه إذا جعلته 0 فهذا يعني الشمعه الحاليه إذا جعلته 2 فهذا يعني إفتتاح الشمعه قبل السابقه وهكذا كلما رجعت إلى الماضي يزيد الرقم
أشكرك أستاذي الكريم مستر دولار رزقك الله بحرا من الدولارات
ربما تكون صيغة سؤالي غير موفقة
لنفرض أنني أريد أن أفتح عقد بمجرد إغلاق شمعة الأربع ساعات الحالية بناء على عمليات حسابية مبنية على هذه الشمعة فكيف أعرف أن الشمعة قد أغلقت لأقوم بالحسابات ومن ثم الدخول؟
جزيت عني وعن جميع الأخوة كل خير
رد: موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة أبو جهاد
أشكرك أستاذي الكريم مستر دولار رزقك الله بحرا من الدولارات
ربما تكون صيغة سؤالي غير موفقة
لنفرض أنني أريد أن أفتح عقد بمجرد إغلاق شمعة الأربع ساعات الحالية بناء على عمليات حسابية مبنية على هذه الشمعة فكيف أعرف أن الشمعة قد أغلقت لأقوم بالحسابات ومن ثم الدخول؟
جزيت عني وعن جميع الأخوة كل خير
على سبيل المثال تريد فتح صفقة شراء إذا كان مجموع الالإفتتاح+الإغلاق+الهاي/3 أكبر من رقم محدد
سيكون كالآتي
كود PHP:
double B=Close[1]+Open[1]+High[1]/3;
if(B>1.3040&&Time0!=Time[0])
{
OrderSend(Symbol(),OP_BUY,Lots,NormalizeDouble(Ask,digits),3*Q,SL,TP,"MR.dollar EA",MagicNumber,0,Blue);
Time0=Time[0];
}
قم بتعريف المتغير Time0 خارج الداله start
رد: موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة MR.dollar
على سبيل المثال تريد فتح صفقة شراء إذا كان مجموع الالإفتتاح+الإغلاق+الهاي/3 أكبر من رقم محدد
سيكون كالآتي
كود PHP:
double B=Close[1]+Open[1]+High[1]/3;
if(B>1.3040&&Time0!=Time[0])
{
OrderSend(Symbol(),OP_BUY,Lots,NormalizeDouble(Ask,digits),3*Q,SL,TP,"MR.dollar EA",MagicNumber,0,Blue);
Time0=Time[0];
}
قم بتعريف المتغير Time0 خارج الداله start
كود PHP:
double B=(Close[1]+Open[1]+High[1])/3;
if(Open[0]>B && Time0!=Time[0])
{
ticket = OrderSend(Symbol(), OP_BUY, 0.1, Ask, 3, 0,0, "Open Buy", 0, 0, Green);
Time0=Time[0];
}
else
{
ticket = OrderSend(Symbol(), OP_SELL, 0.1, Bid, 3, 0,0, "Open Buy", 0, 0, Green);
Time0=Time[0];
}
[/QUOTE]
أستاذي الكريم هذا الكود وعند دخول الشمعة الجديدة يقوم بتنفيذ الأمر بشكل مستمر دون توقف فما هي المشلة؟
دمت بخير
رد: موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة أبو جهاد
كود PHP:
double B=(Close[1]+Open[1]+High[1])/3;
if(Open[0]>B && Time0!=Time[0])
{
ticket = OrderSend(Symbol(), OP_BUY, 0.1, Ask, 3, 0,0, "Open Buy", 0, 0, Green);
Time0=Time[0];
}
else
{
ticket = OrderSend(Symbol(), OP_SELL, 0.1, Bid, 3, 0,0, "Open Buy", 0, 0, Green);
Time0=Time[0];
}
أستاذي الكريم هذا الكود وعند دخول الشمعة الجديدة يقوم بتنفيذ الأمر بشكل مستمر دون توقف فما هي المشلة؟
دمت بخير[/QUOTE]
أشكرك أستاذي الكريم لقد عرفت الخلل في الكود
رد: موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة أبو جهاد
أستاذي الكريم هذا الكود وعند دخول الشمعة الجديدة يقوم بتنفيذ الأمر بشكل مستمر دون توقف فما هي المشلة؟
دمت بخير
أشكرك أستاذي الكريم لقد عرفت الخلل في الكود[/QUOTE]
بالتوفيق إن شاء الله
رد: موضوع مخصص للأسئلة البرمجية
لو تكرمتم .. أريد ان أعرف الوظيفة الخاصة بمثل هذا الكود
كود PHP:
for(i=1;i<=Count;i++)
يعني أريد معرفة وظيفة (for) ومتى نتحتاجها في العادة في برمجة الإكسبيرت؟
رد: موضوع مخصص للأسئلة البرمجية
استاذي الكريم تحية طيبة لك مجدداولدي هذا الكود الذي أريد منه رسم خط عند أعلى سعر للشمعات الـ20 الأولى فما هو المطلوب تعديله ليقوم بهذه المهمة
كود PHP:
for(int i = 1 ; i <20 ; i++)
{
ObjectCreate("H",OBJ_HLINE,0,Time[i],High[i]);
}
وشكرا
رد: موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة المسار الآخر
لو تكرمتم .. أريد ان أعرف الوظيفة الخاصة بمثل هذا الكود
كود PHP:
for(i=1;i<=Count;i++)
يعني أريد معرفة وظيفة (for) ومتى نتحتاجها في العادة في برمجة الإكسبيرت؟
الحلقه for تستخدم لتكرار جزء معين من الكود طالما أن الشروط محققه
فعلى سبيل المثال أنا أستخدم الحلقه for في بعض الإكسبرتات لكي أبحث عن سعر إفتتاح صفقه معينه وحجم اللوت للصفقه
مثال :
كود PHP:
for(int cnt=0;cnt<OrdersTotal();cnt++){
OrderSelect(cnt,SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol() == Symbol() && OrderMagicNumber () == MagicNumber&&OrderType()==OP_SELL){
double l=OrderLots();double Price=OrderOpenPrice();
}
}
أو لإغلاق صفقه معينه
كود PHP:
for (int cnt = 0 ; cnt < OrdersTotal() ; cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol())
{
if (OrderType()==OP_BUY)
{
OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,digits),3*Q);
}
}
}
الحلقات من أهم الدوال في اللغه ودائما ما يتم إستخدامها
سوف تجد شرح أكثر لها في هذه المشاركه
https://forum.arabictrader.com/t93679.html#post1698141
رد: موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة أبو جهاد
استاذي الكريم تحية طيبة لك مجدداولدي هذا الكود الذي أريد منه رسم خط عند أعلى سعر للشمعات الـ20 الأولى فما هو المطلوب تعديله ليقوم بهذه المهمة
كود PHP:
for(int i = 1 ; i <20 ; i++)
{
ObjectCreate("H",OBJ_HLINE,0,Time[i],High[i]);
}
وشكرا
في الكود السابقه أنت سترسم الخط عند هاي الشمعه High
لذلك ستحتاج إلى إستبدال هذه الداله بالداله التي تبحث عن أعلى سعر لعدد محدد من الشمعات
وهي iHighest
لذلك سوف تستبدل الداله High بالداله
كود PHP:
High[iHighest(Symbol(),0,MODE_HIGH,20,0)]
ولا يوجد داعي لإستخدام الحلقه for
رد: موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة MR.dollar
في الكود السابقه أنت سترسم الخط عند هاي الشمعه High
لذلك ستحتاج إلى إستبدال هذه الداله بالداله التي تبحث عن أعلى سعر لعدد محدد من الشمعات
وهي iHighest
لذلك سوف تستبدل الداله High بالداله
كود PHP:
High[iHighest(Symbol(),0,MODE_HIGH,20,0)]
ولا يوجد داعي لإستخدام الحلقه for
أفهم ما قصدته استاذي الكريم وشكرا لك
لو أردت رسم خط على أعلى سعر لكل الشمعات العشرين أي أريد رسم 20 خط
هذا ما قصدته استاذي الكريم
وشكرا لك مجددا
رد: موضوع مخصص للأسئلة البرمجية
بارك الله فيك أخي مستر دولار وجعله الله في ميزان حسناتك ,, داعيا من الله أن يفرج كربة مصر
رد: موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة أبو جهاد
أفهم ما قصدته استاذي الكريم وشكرا لك
لو أردت رسم خط على أعلى سعر لكل الشمعات العشرين أي أريد رسم 20 خط
هذا ما قصدته استاذي الكريم
وشكرا لك مجددا
بعد اذن استاذي مستر دولار اجاوب عنك
عند استخدام ObjectCreate يجب علينا اعطاء اسم فريد للاوبجكت يكون غير متكرر
فاذا اعطيت اسم مكرر لاوبجكت معين فلن يرسم ولن يظهر شيء على الشاشة
لذلك نريد اعطاء اسم فريد لكل خط من الخطوط العشرين التي تريد رسمها
فنقوم باضافة رقم الحلقة الشغالة الى الاسم الثابت "H" فيصبح الاسم للخط الاول H1
والخط الثاني اسمه H2 والثالث اسمه H3 وهكذا
اذن يكون الكود بالشكل التالي
كود PHP:
for(int i = 1 ; i <20 ; i++)
{
ObjectCreate("H"+i,OBJ_HLINE,0,Time[i],High[i]);
}
وشكرا لمعلمي الاستاذ اسامة المستر دولار وارجو التصحيح في حال الخطأ
رد: موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة أبو جهاد
أفهم ما قصدته استاذي الكريم وشكرا لك
لو أردت رسم خط على أعلى سعر لكل الشمعات العشرين أي أريد رسم 20 خط
هذا ما قصدته استاذي الكريم
وشكرا لك مجددا
يبدو أني فهمت خطأ :doh:
جاوبك الأخ العزيز محمد
اقتباس:
المشاركة الأصلية كتبت بواسطة محمد بن حامد
بعد اذن استاذي مستر دولار اجاوب عنك
عند استخدام ObjectCreate يجب علينا اعطاء اسم فريد للاوبجكت يكون غير متكرر
فاذا اعطيت اسم مكرر لاوبجكت معين فلن يرسم ولن يظهر شيء على الشاشة
لذلك نريد اعطاء اسم فريد لكل خط من الخطوط العشرين التي تريد رسمها
فنقوم باضافة رقم الحلقة الشغالة الى الاسم الثابت "H" فيصبح الاسم للخط الاول H1
والخط الثاني اسمه H2 والثالث اسمه H3 وهكذا
اذن يكون الكود بالشكل التالي
كود PHP:
for(int i = 1 ; i <20 ; i++)
{
ObjectCreate("H"+i,OBJ_HLINE,0,Time[i],High[i]);
}
وشكرا لمعلمي الاستاذ اسامة المستر دولار وارجو التصحيح في حال الخطأ
بارك الله فيك أخي العزيز محمد كلامك صحيح