1 مرفق
رد:موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة MR.dollar
الإجابة في الإقتباس
تمام و شكرا جزيلا أخي أسامه ....
أنا قمت بعمل إكسبيرت يقوم بوضع أمر معلق شراء وبيع فوق هاي و أسفل لو آخر شمعة ساعة لليوم السابق (أو شمعة الصفر) بعدد نقاط أحدده خارجيا و إذا تفعل أي الأمرين يتم مسح الآخر
والمفترض أن يقوم الإكسبيرت بالتبريد بشكل مضاعف كلما عكس السعر عدد من النقاط أحدده خارجيا والهدف يكون نقطة دخول الصفقه التي قبلها .
لكن الإكسبيرت لا يقوم بفتح عقود التبريد المضاعفه ..
و أيضا كنت أريد إضافة متغير خارجي بعدد التبريدات ..
رجاء الإطلاع أخي أسامه و جزاك الله خيرا .
الإكسبيرت
رد:موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة MR.dollar
إستخدم الحلقه while بحيث يكرر المحاولة في إغلاق الصفقات حتى يغلقها جميعا
تسلم إيديك يا أستاذ
معلش لسه خبرتي قليلة ماكنتش أعرف الكلمة دي
على العموم ياريت تسحملني لان برضه الكود مع الكلمة while قفل الأوردر رقم 1 و 3 و 5 وبعدين قفل 2 و 6 فياريت توضيح ليه العملية بتم بالشكل ده وبرضه حضرتك لما بتكتب كود قفل لجميع الصفقات بتكتبه إزاي
وشكرا مقدما :eh_s(7):
رد:موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة MR.dollar
حقيقه لا أرى أي سبب آخر قد يكون المشكله في ظهور الخطأ
إذا كان الإكسبرت يفتح بعض الصفقات فربما السبب هو في عدد المحاولات فإذا حلت المشكله فقم بزيادة عدد المحاولات حتى يظل يحاول فتح الصفقه والسبب غالبا في هذه الحاله هو سرعة الحركه وإختلاف سعر فتح الصفقه عن السعر الحالي
لذلك إستخدمت RefreshRates
أستاذ أسامة ، عدد المحاولات حاليـا هو 20 واذا قمت بتغير عدد المحاولات مثلا لـ 100 محاولة سيكون التعديل فـ الكود كالتالى ..
كود PHP:
triednumber++;
if(ticket<=0){
Sleep(1);
RefreshRates();}
else
break;
if(triednumber>100)break;
}
هل ماسبق صحيح !! ، وهل 100 كافية .
وسرعة الحركة المفترض تحدث على جميع المنصات فـ نفس الوقت مع تأثير الخبر !! ، ومع ذلك لايظهر الخطـأ على باقى المنصـات !!
رد:موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة MR.dollar
يمكنك تحديد الرقم حسب ما تريد أنا أرى أن 100 محاوله كثيره وأكتفي ب 20 والتعديل صحيح
ليس المهم سرعة الحركه نفسها لكن المهم هو سرعة تقبل البروكر لإرسال الأمر فأحيانا بعض البروكرات إذا تم إرسال أمر فتح الصفقه وكان السعر سيتحرك في صالحك يظهر إعادة التسعير بعض البروكرات تتقبل الأمر مباشرة مهما كان
بعض البروكرات تنفيذ الأمر يكون في أجزاء من الثانيه والآخر يظل يظهر رسالة إعادة التسعير حتى لو كان فتح الصفقات يدويا
فالأمر معتمد أولا على البروكر نفسه
أستاذ أسامة ، أريد توضيح شـئ اذا سمحت لى ، الاكسيبرت فـ المشاركة السابقة كان يقوم بـ 20 محاولة فقط ومع ذلك كانت تظهر رسالة الخطـأ !! ، ويفتح بعض الصفقات وبعضهـا لا إذن ليست المشكلة الآن من عدد المحاولات لفتح الصفقة ، وحسب ما فهمت من مشاركتك استاذى ان المشكلة من إعادة التسعير الخاصة بـ البروكر وتحديدا fxdd malta ، وسؤالى هل يوجد حل لمشكلة إعادة التسعير المستمرة لمنصة fxdd malta غير الحلول السابقة ، وهل ظهرت هذه المشكلة معك من قبل أستاذ اسامة عند عمل اكسيبرتات على منصة fxdd malta
1 مرفق
رد:موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة MR.dollar
هذا بسبب الشرط الذي وضعته
كود PHP:
if(Ask<=openprice-Step*point&& orderscnt(OP_BUY)>=1 && orderscnt(OP_SELL)>=1 ){
فبما أنك تقوم بحذف الأمر المعلق الآخر عند فتح أحد الصفقات فكيف يتحقق الشرط أن هناك صفقة بيع مفتوحه وصفقة شراء مفتوحه
لإضافة متغير لتحديد أقصى عدد للتبريدات يمكنك وضع الشرط
كود PHP:
&&orderscnt(OP_BUY)<MaxMartingailOrders
بالنسبه للشراء ونفس الشيء بالنسبه للبيع لكن تحدد صفقات البيع
تمام أخي أسامه تم التعديل و بدأ يقوم بفتح التبريدات ولكن المشكله أن أهداف التبريدات لا تكون عند العقد الذي قبله وتكون 20 نقطة كأهداف الأوامر المعلقه ..
فمثلا لو تم فتح الأمر المعلق شراء من 5500 و التبريد الأول بعد 50 نقطه من 5450 فيكون هدف التبريد الأول 5500 وعقد الأمر المعلق الأول يغلق عند نقطة دخوله ..
المشكله الأخرى أن التبريدات تستمر كلما عكس السعر 50 نقطه رغم أن التبريد الاول مثلا قد ضرب الهدف ..
رجاء الإطلاع أخي أسامه و بارك الله فيك
الإكسبيرت
1 مرفق
رد:موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة dentist_hussein
تمام أخي أسامه تم التعديل و بدأ يقوم بفتح التبريدات ولكن المشكله أن أهداف التبريدات لا تكون عند العقد الذي قبله وتكون 20 نقطة كأهداف الأوامر المعلقه ..
فمثلا لو تم فتح الأمر المعلق شراء من 5500 و التبريد الأول بعد 50 نقطه من 5450 فيكون هدف التبريد الأول 5500 وعقد الأمر المعلق الأول يغلق عند نقطة دخوله ..
المشكله الأخرى أن التبريدات تستمر كلما عكس السعر 50 نقطه رغم أن التبريد الاول مثلا قد ضرب الهدف ..
رجاء الإطلاع أخي أسامه و بارك الله فيك
الإكسبيرت
قمت بحل مشكلة هدف المضاعفات عن طريق إضافة الstep لسعر الطلب في الشراء و إنقاصه من سعر البيد في حالة البيع
كود PHP:
TP=Ask+Step*point;
كود PHP:
TP=Bid-Step*point;
1 مرفق
رد:موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة dentist_hussein
تمام أخي أسامه تم التعديل و بدأ يقوم بفتح التبريدات ولكن المشكله أن أهداف التبريدات لا تكون عند العقد الذي قبله وتكون 20 نقطة كأهداف الأوامر المعلقه ..
فمثلا لو تم فتح الأمر المعلق شراء من 5500 و التبريد الأول بعد 50 نقطه من 5450 فيكون هدف التبريد الأول 5500 وعقد الأمر المعلق الأول يغلق عند نقطة دخوله ..
المشكله الأخرى أن التبريدات تستمر كلما عكس السعر 50 نقطه رغم أن التبريد الاول مثلا قد ضرب الهدف ..
رجاء الإطلاع أخي أسامه و بارك الله فيك
الإكسبيرت
اقتباس:
المشاركة الأصلية كتبت بواسطة dentist_hussein
قمت بحل مشكلة هدف المضاعفات عن طريق إضافة الstep لسعر الطلب في الشراء و إنقاصه من سعر البيد في حالة البيع
كود PHP:
TP=Ask+Step*point;
كود PHP:
TP=Bid-Step*point;
الحمد لله قمت بحل مشكلة الإستمراريه بفتح عقود التبريد برغم ضرب الهدف
وذلك بإضافة داله تحسب آخر صفقة أغلقت على ربح أو خساره :
كود PHP:
string last;
for(int i=OrdersHistoryTotal();i>=0;i--)
{
OrderSelect(i, SELECT_BY_POS,MODE_HISTORY);
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)
{
//for buy order
if(OrderType()==OP_BUY && OrderClosePrice()>=OrderOpenPrice()) last="profit";
if(OrderType()==OP_BUY && OrderClosePrice()<=OrderOpenPrice()) last="loss";
//for SELL order
if(OrderType()==OP_SELL && OrderClosePrice()<=OrderOpenPrice()) last="profit";
if(OrderType()==OP_SELL && OrderClosePrice()>=OrderOpenPrice()) last="loss";
break;
}
}
ثم وضعت مع شروط فتح عقود التبريد هذا الشرط :
كود PHP:
&& last!="profit"
رجاء الإطلاع والتصحيح أخي أسامه وبارك الله فيك
الإكسبيرت .