النتائج 1 إلى 6 من 6
الموضوع: مطلوب كود للمضاعفات
- 06-02-2013, 02:45 AM #1
مطلوب كود للمضاعفات
السلام عليكم ورحمة اللهفى اغلب الاكسبرتات المضاعفات تكون ترتيبيه مثل 123 او 124 او 1123
لاكن مطلوبي هو كود يحددد المضاعفه عن طريق حساب اخر عقد والمسافه عن السعر الحالى
مثل لو ربطنا الاكسبرت بمؤشر مثلا
ودخلنا العقد الاول ولاكن عكس المؤشر واشترطنا على ان لا يضاعف فى حال عكس المؤشر ومشى السوق ضده 50نقطه والستيب كان 10 نقاط فى هذه الحاله راح تكون المضاعفه التاليه هي المضاعفه الرابعه وليس الثانيه لانه فاته 40 نقطه
وشكر مقدمنا
- 06-02-2013, 03:17 AM #2
رد:مطلوب كود للمضاعفات
وعليكم السلام ورحمة الله وبركاته
سوف تقوم بعمل دالة لمعرفة سعر دخول أول صفقه ثم تقارن بين السعر الحالي وسعر فتح أول صفقه
ولنفرض المسافه كانت مثلا 50 نقطه
ثم تقسم هذه المسافه (50 نقطه ) / عدد نقاط الإستيب
مثلا لو كان الإستيب 10 نقاط فالناتج يكون
50 / 10 = 5 وهي رقم المضاعفه
وتقوم بعمل داله لحفظ المضاعفات بالترتيب
مثال للكود
كود PHP:int BuyStep=(FirstOrderPrice(OP_BUY)-Bid)/Point;
double newLot=NextLot(BuyStep);
double FirstOrderPrice(int type)
{
for(int i=0;i<OrdersTotal0;i++){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber&&OrderType()==type){
return(OrderOpenPrice());
}
}
return(0);
}
double NextLot(int Num){
switch(Num){
case 1:return(Lots2);
case 2:return(Lots3);
case 3:return(Lots4);
case 4:return(Lots5);
case 5:return(Lots6);
case 6:return(Lots7);
case 7:return(Lots8);
case 8:return(Lots9);
case 9:return(Lots10);
case 10:return(Lots11);
default:return(Lots12);
}
}
- 06-02-2013, 05:10 AM #3
- 06-02-2013, 10:23 PM #4
مستر دولار اريد تعاقب خجم العقود على النسبه المئويه اذا امكن ما اريد نظام الادخال اليدوي مثل Lots2 وLots3
- 07-02-2013, 12:30 AM #5
رد:مطلوب كود للمضاعفات
قمت بتعديل الإكسبرت لك
بالنسبه لشرح الكود
أولا قمت بعمل دالتين واحده لمعرفة سعر دخول آخر صفقه وداله لمعرفة حجم لوت آخر صفقه
كود PHP:double LastOrderPrice(int type)
{
for(int i=OrdersTotal()-1;i>=0;i--){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber&&OrderType()==type){
return(OrderOpenPrice());
}
}
return(0);
}
double LastOrderLot(int type)
{
for(int i=OrdersTotal()-1;i>=0;i--){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber&&OrderType()==type){
return(OrderLots());
}
}
return(0);
}
كود PHP:int BuyStep=((LastOrderPrice(OP_BUY)-Bid)/point)/Step;
كود PHP:newLot=LastOrderLot(OP_BUY);
for(int i=1;i<=BuyStep;i++)
newLot*=Multiplier;
فالمفروض أن العمليه ستكون 50 على 10 = 5 عمليات مضاعفه
فسوف يستخدم الحلقه لعمل 5 عمليات ضرب
هذه أحد الأكواد التي أقوم بعملها لأول مره لدي ملاحظه
في هذه الطريقه إذا تحرك السعر عدد نقاط كثيره فسوف تكون المضاعفه التاليه بحجم لوت كبير رغم أن الخساره قليله ولا تتطلب إلا حجم لوت صغير لتعويض الخساره السابقه ( لأنه لم يفتح مضاعفات أخرى في هذه الإستيب وإنما الخساره هي خسارة اللوت الأول )
فمن الممكن بدلا من الدخول في هذه المضاعفه أن تحسب حجم اللوت التالي =
حجم لوت آخر صفقه * عامل المضاعفه * عدد المضاعفات المفروض فتحها
- 07-02-2013, 01:26 AM #6
بارك الله فيه اخي مستر دولار وشكرا على الملاحظه راح احاول اخفض من قيمة المضاعفات ان شاء الله