Если закрытие 4-го бара можно рассматривать как открытие 5-го, и Ваш советник работает по сформировавшимся барам, то попробуйте как-то так //---- глобальные переменные
int ExpertBars;
int OpenBar;
bool OrderOpened=false;
int ticket;
int start()
{
//----
bool IsNewBar=false;
if (ExpertBars!=Bars) {
ExpertBars=Bars;
IsNewBar=true;
if (OrderOpened) {
OpenBar--;
if (OpenBar==0) {
OrderClose(ticket, ...);
OrderOpened=false;
}
}
}
if (IsNewBar) { // Сформировался новый бар на графике, основной алгоритм советника
if (ваши условия для открытия ордера) {
ticket=OrderSend(...);
if (ticket<0) {
error=GetLastError();
Print("Ошибка открытия ордера #", error, " ", ErrorDescription(error));
}
else {
OpenBar = 5;
OrderOpened = true;
}
}