Что исправить?

 

Доброго времени всем,кто обратил внимания на данное сообщение! Сразу перейду к делу,я совсем недавно начал осваивать MQL4,и вот пробую написать свой первый советник,сформулировав ТС(выставлять отложник на покупку после определённго времени,при определении максимума часа,на 5ти минутном фрейме,отступив от границ High и Low этого часа по 5 пунктов,для выставления Лося=Low-5п и Профита= (дистанция от (( Low-5п )+ (High +5п)) *2; )столкнулся с очередной проблемой при написании вот этого кода:

extern double Lot=1.0;

int start()
{
int H,M,Ticket;
double Max,Min,
Max1,Min1,
TP,
Total;

H=Hour();
M=Minute();
Total=OrdersTotal();
if(Total==0)
{
if(H>=05 && M>=30)
{
Max=High[iHighest(Symbol(),PERIOD_M5,MODE_HIGH,12,0)];
Min=Low[iLowest(Symbol(),PERIOD_M5,MODE_LOW,12,0)];
Max1=Max+0.0005;
Min1=Min-0.0005;
TP=Max1+((Max1-Min1)*2);
Ticket=OrderSend(Symbol(),OP_BUYSTOP,Lot,Max1,2,Min1,TP);
if(Ticket>0)
Alert("Ордер открыт-",Ticket);
return(0);
}
else
{
Alert("Ошибка№=",GetLastError());
return(0);
}
return(0);
}



return(0);
}

при компиляции кода,ошибок нет,но во время включения в терминал происходит зацыкливание с повторяющимся Alert- "ошибка№=0",ордер не выставляется.

Если кого-то из профессионалов в деле программирования не слишком затруднит,оказать такую помощь начинающему в этом исскустве,буду безгранично благодарен.

Ну и конечно всегда рад принять советы на будущее от опытных людей в этом.

Всем спасибо и добра по жизни!

 
Valdemar:

Доброго времени всем,кто обратил внимания на данное сообщение! Сразу перейду к делу,я совсем недавно начал осваивать MQL4,и вот пробую написать свой первый советник,сформулировав ТС(выставлять отложник на покупку после определённго времени,при определении максимума часа,на 5ти минутном фрейме,отступив от границ High и Low этого часа по 5 пунктов,для выставления Лося=Low-5п и Профита= (дистанция от (( Low-5п )+ (High +5п)) *2; )столкнулся с очередной проблемой при написании вот этого кода:

extern double Lot=1.0;

int start()
{
int H,M,Ticket;
double Max,Min,
Max1,Min1,
TP,
Total;

H=Hour();
M=Minute();
Total=OrdersTotal();
if(Total==0)
{
if(H>=05 && M>=30)
{
Max=High[iHighest(Symbol(),PERIOD_M5,MODE_HIGH,12,0)];
Min=Low[iLowest(Symbol(),PERIOD_M5,MODE_LOW,12,0)];
Max1=Max+0.0005;
Min1=Min-0.0005;
TP=Max1+((Max1-Min1)*2);
Ticket=OrderSend(Symbol(),OP_BUYSTOP,Lot,Max1,2,Min1,TP);
if(Ticket>0)
Alert("Ордер открыт-",Ticket);
return(0);
}
else
{
Alert("Ошибка№=",GetLastError());
return(0);
}
return(0);
} 





return(0);
}

при компиляции кода,ошибок нет,но во время включения в терминал происходит зацыкливание с повторяющимся Alert- "ошибка№=0",ордер не выставляется.

Если кого-то из профессионалов в деле программирования не слишком затруднит,оказать такую помощь начинающему в этом исскустве,буду безгранично благодарен.

Ну и конечно всегда рад принять советы на будущее от опытных людей в этом.

Всем спасибо и добра по жизни!


1) для вставки кода есть кнопка SRC

2) для помощи новичкам есть специальная тема

3) у вас Alert относится к условию

if(H>=05 && M>=30)

то есть каждый тик, пока оно не выполнено, то пишется "ошибка 0"

посмотрите на скобки внимательнее, видимо вы хотели так:

extern double Lot=1.0;

int start()
{
int H,M,Ticket;
double Max,Min,
Max1,Min1,
TP,
Total;

H=Hour();
M=Minute();
Total=OrdersTotal();
if(Total==0)
{
if(H>=05 && M>=30)
{
   Max=High[iHighest(Symbol(),PERIOD_M5,MODE_HIGH,12,0)];
   Min=Low[iLowest(Symbol(),PERIOD_M5,MODE_LOW,12,0)];
   Max1=Max+0.0005;
   Min1=Min-0.0005;
   TP=Max1+((Max1-Min1)*2);
   Ticket=OrderSend(Symbol(),OP_BUYSTOP,Lot,Max1,2,Min1,TP);
   if(Ticket>0)
   {
   Alert("Ордер открыт-",Ticket);
   return(0);
   }
   else
   {
      Alert("Ошибка№=",GetLastError());
      return(0);
   }
}
return(0);
} 
 
Valdemar:

при компиляции кода,ошибок нет,но во время включения в терминал происходит зацыкливание с повторяющимся Alert- "ошибка№=0",ордер не выставляется.

Если кого-то из профессионалов в деле программирования не слишком затруднит,оказать такую помощь начинающему в этом исскустве,буду безгранично благодарен.

Ну и конечно всегда рад принять советы на будущее от опытных людей в этом.

Всем спасибо и добра по жизни!

Совет №1. Уважайте участников форума, вставляйте код правильно. Т.е. кнопкой [SRC]

У Вас в коде написано:

if(H>=05 && M>=30) 
{ 
// тут какие-то действия
}
else
{
   Alert("Ошибка№=",GetLastError());
   return(0);
}

т.е. если H меньше пяти или M меньше 30, то будет выполняться блок кода

else
{
   Alert("Ошибка№=",GetLastError());
   return(0);
}

Вы, вероятно, хотели написать так:

if(H>=05 && M>=30) 
{ 
   Max=High[iHighest(Symbol(),PERIOD_M5,MODE_HIGH,12,0)];
   Min=Low[iLowest(Symbol(),PERIOD_M5,MODE_LOW,12,0)];
   Max1=Max+0.0005;
   Min1=Min-0.0005;
   TP=Max1+((Max1-Min1)*2);
   Ticket=OrderSend(Symbol(),OP_BUYSTOP,Lot,Max1,2,Min1,TP);
   if(Ticket>0)
      Alert("Ордер открыт-",Ticket);
   else
      Alert("Ошибка№=",GetLastError());
   return(0);
}
 
Благодарю за отзывчивость и добрые советы!
Причина обращения: