السلام عليكم جميع مبرمجين وزوار المنتدى
قمت بعمل اكسبيرت للبريك ايفن
وهو لعمل بريك ايفن مرة واحدة
واريد اضافة كود لجعل البريك ايفن يحدث اكثر من مرة مع تحرك السعر
الرجاء المساعدة بارك الله فيكم جميعا
كود PHP:
extern int Breakeven_Pips = 5; // عدد النقاط التي سيعمل عندها البريك ايفن
extern int Magic_Number = 123456;
//متغير قيمة النقطة
double T;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
double Ticksize = MarketInfo (Symbol(),MODE_TICKSIZE); //كود حساب قيمة النقطة
if(Ticksize == 0.00001 || 0.001)
T = Ticksize*10;
else
T = Ticksize;
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
if(Breakeven_Pips > 0)BreakEven(); //--- استدعاء دالة البريك ايفن
}
//+------------------------------------------------------------------+
void BreakEven() //---وظيفة لتحريك البريك ايفن
{
for(int b = OrdersTotal()-1; b >= 0; b--) // حلقة تكريرية للبحث عن الصفقات المطلوبة
{
if(OrderSelect(b,SELECT_BY_POS,MODE_TRADES)) // البحث في الصفقات المفتوحة
if(OrderSymbol()== Symbol()) // البحث عن زروج العملات المشغل علية الاكسبيرت
if(OrderMagicNumber()== Magic_Number) // لها نفس المجك نمر للاكسبيرت
if(OrderType()== OP_BUY) // البحث في صفقات اشراء
if(Bid-OrderOpenPrice() > Breakeven_Pips*T) // اذا كان السغر اكبر من عدد نقاط تحريك البريك
if(OrderOpenPrice() > OrderStopLoss()) // نتاكد من عدم عمل بريك ايفن من قيل
OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,CLR_NONE); //-امر مودي فاي بريك ايفن
}
for(int i = OrdersTotal()-1; i >= 0; i--) // حلقة تكريرية للبحث عن الصفقات المطلوبة
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) // البحث في الصفقات المفتوحة
if(OrderSymbol()== Symbol()) // البحث عن زروج العملات المشغل علية الاكسب
if(OrderMagicNumber()== Magic_Number) // لها نفس المجك نمر للاكس
if(OrderType()== OP_SELL) // البحث في صفقات البيع
if(OrderOpenPrice()-Ask > Breakeven_Pips*T) // اذا كان السغر اكبر من عدد نقاط تحريك البر
if(OrderOpenPrice() < OrderStopLoss()) // نتاكد من عدم عمل بريك ايفن من قيل
OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,CLR_NONE); //-امر مودي فاي بريك ايفن
}
}