السلام عليكم
أقوم بإغلاق جميع الصفقات كل يوم الجمعة عند الساعة 19:00 بتوقيت المنصة
هذه الصفقات التي أغلقت هي بهدف الابتعاد عن خطر الجاب الأسبوعي ـ لذلك معظمها تغلق ولم تصل لأهدافها او ستوباتها
ما أريده هو أن يتم إعادة فتح هذه الصفقات عند افتتاح السوق بنفس النوع ونفس حجم اللوت كما أغلقت ولكن يتم تعديل الهدف والستوب لكل صفقة بما تبقى من عدد نقاط الربح او الخسارة
مثلا:
- صفقة بيع اليورو دولار بلوت 0.02 هدف 40 وستوب 20 تم إغلاقها بربح 12 نقطة
- صفقة شراء الباوند دولار بلوت 0.05 بهدف 40 وستوب 20 تم إغلاقها بخسارة 8 نقاط
إذن عند افتتاح السوق يتم:
- فتح بيع صفقة اليورو دولار بلوت 0.02 (
نفس النوع ونفس اللوت) ولكن
بهدف 28 نقطة وستوب 20 نقطة (28 نقطة هو عدد النقاط المتبقية لتحقيق الهدف كامل 40 نقطة)
- فتح صفقة شراء الباوند دولار بلوت 0.05 بهدف 40 نقطة و
ستوب 12 نقطة (بما ان الصفقة الأخيرة أغلقت على خسارة فسيتم فتح الصفقة هذه بهدف 40 وستوب عدد النقاط المتبقة لتحقيق خسارة 20 نقطة وهي 12 نقطة)
فما هي الدوال المطلوبة ؟
سنحتاج أولا إلى دوال لمعرفة آخر نوع وحجم الصفقة المغلقة بالهيستوري بعد الساعة 19 ليوم الجمعة
كود:
double LastOrderType()
{
for(int i=OrdersHistoryTotal();i>=0;i--)
{
bool O=OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
if(DayOfWeek==5&&TimeHour()>19)
{
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
{
OrderType();
}
}
}
return(0);
}
double LastOrderLots()
{
for(int i=OrdersHistoryTotal();i>=0;i--)
{
bool O=OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
if(DayOfWeek==5&&TimeHour()>19)
{
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
{
OrderLots();
}
}
}
return(0);
}
ثم شروط دخول الصفقة:
كود:
if(DayOfWeek==0&&LastOrderType()==OP_BUY) bool openb=OrderSend(Symbol(),OP_BUY,LastOrderLots(),Ask,5,0,0,"",MagicNumber,0,Green);
if(DayOfWeek==0&&LastOrderType()==OP_SELL) bool opens=OrderSend(Symbol(),OP_SELL,LastOrderLots(),Bid,5,0,0,"",MagicNumber,0,Red);
يبقى الان عمل موديفاي الصفقة بعد حسبة عدد النقاط المتبقية للهدف والستوب ـ لا أعرف طريقتها ، ومنكم نستفيذ إخواني
تحياتي