احتاج مساعدتكم البوت يعمل ماعدا فتح الصفقة الثانية اريد ان يتم فتحها بعد ضرب ستوب للصفقة الاولى ومن نفس سعر فتح الصفقة الاولى وشكرا مقدما وهذا الكود

#include <Trade/Trade.mqh>

input double Lots = 0.01; // حجم اللوت الابتدائي
input int TpPoints = 1000; // نقاط الربح
input int SlPoints = 500; // نقاط الخسارة

input string OpenTime = "01:02"; // وقت فتح الصفقة
input string CloseTime = "22:00"; // وقت إغلاق الصفقة

datetime lastSignal; // متغير لتخزين وقت آخر إشارة
ulong posTicket; // تذكير برقم التذكرة للصفقة الحالية
bool firstTradeClosed = false; // متغير لتتبع ما إذا تم إغلاق الصفقة الأولى
ulong secondPosTicket; // تذكير برقم التذكرة للصفقة الثانية
CTrade trade; // كائن لإدارة الصفقات
double dynamicLots = Lots; // إعلان متغير جديد لتتبع حجم اللوت

int OnInit() {
return(INIT_SUCCEEDED);
}

void OnDeinit(const int reason) {

}

void OnTick() {
datetime openTime = StringToTime(OpenTime);
datetime closeTime = StringToTime(CloseTime);

if (lastSignal != openTime && TimeCurrent() > openTime) {
lastSignal = openTime;

Print("وصل الوقت للفتح...");

double ask = SymbolInfoDouble(_Symbol, SYMBOL_ASK);
ask = NormalizeDouble(ask, _Digits);

double tp = ask + TpPoints * _Point;
tp = NormalizeDouble(tp, _Digits);

double sl = ask - SlPoints * _Point;
sl = NormalizeDouble(sl, _Digits);

dynamicLots += 0.01;

if (!firstTradeClosed) {
if (trade.Buy(dynamicLots, _Symbol, ask, sl, tp, "firstTrade")) {
posTicket = trade.ResultOrder();
}
}
}

if (!firstTradeClosed) {
if (PositionSelectByTicket(posTicket)) {
if (PositionGetDouble(POSITION_PROFIT) < 0) {
double Position_Stoploss = PositionGetDouble(POSITION_SL);
double bid = SymbolInfoDouble(_Symbol, SYMBOL_BID);
if (bid < Position_Stoploss) {
firstTradeClosed = true;
}
}
}
}

if (firstTradeClosed && secondPosTicket == 0) {
if (posTicket > 0 && !PositionSelectByTicket(posTicket)) {
firstTradeClosed = false; // إعادة تعيين للسماح بفتح صفقة جديدة
} else {
if (trade.Buy(dynamicLots, _Symbol, SymbolInfoDouble(_Symbol, SYMBOL_ASK), 0, 0, "secondTrade")) {
secondPosTicket = trade.ResultOrder();
}
}
}

if (TimeCurrent() > closeTime) {
if (posTicket > 0) {
if (PositionSelectByTicket(posTicket)) {
if (trade.PositionClose(posTicket)) {
posTicket = 0;
}
} else {
posTicket = 0;
}
}

if (secondPosTicket > 0) {
if (PositionSelectByTicket(secondPosTicket)) {
if (trade.PositionClose(secondPosTicket)) {
secondPosTicket = 0;
}
} else {
secondPosTicket = 0;
}
}
}

Comment("\nوقت الخادم: ", TimeCurrent(),
"\nوقت الفتح: ", openTime,
"\nوقت الإغلاق: ", closeTime,
"\nتذكرة: ", posTicket,
"\nتذكرة الصفقة الثانية: ", secondPosTicket,
"\nحجم اللوت الديناميكي: ", dynamicLots);

Print("الوقت الحالي: ", TimeCurrent());
Print("وقت الفتح: ", openTime);
Print("وقت الإغلاق: ", closeTime);
}