Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 1077

 

Как всё таки правильно бороться с ошибкой : array out of range in '... в такой ситуации при переходе на  #property strict ?



int limit=rates_total-prev_calculated;

ArrayResize(?,?,?);


for(i=0; i<limit; i++)
 {
  if(Буфер[i]-Буфер[i+1] < 0.0)  Буф2[i]=Буфер[i];
 }
 

Сделай так

int limit = prev_calculated > 0 ? rates_total-prev_calculated : rates_total-1;

Вместо 1 можно поставить любое число кроме 0. Чем больше число, тем меньше баров будет считаться при запуске индикатора.

И убери

ArrayResize(?,?,?);

это здесь совершенно ни к чему.

 
AlexeyVik:

Сделай так

Вместо 1 можно поставить любое число кроме 0. Чем больше число, тем меньше баров будет считаться при запуске индикатора.

И убери

это здесь совершенно ни к чему.

Теперь понял. Благодарю за совет.
 
ребята, есть команда t1=StrToTime(TimeToStr(dt, TIME_DATE)+" 10:00"); как мне установить не сегодня 10:00, а Завтра 10:00? подскажите пожалуйста!
 
kocunyc89: есть команда t1=StrToTime(TimeToStr(dt, TIME_DATE)+" 10:00");как мне установить не сегодня 10:00, а Завтра 10:00?  datetime dt=TimeLocal();
  datetime t1=StrToTime(TimeToStr(dt, TIME_DATE)+" 10:00") + 24*60*60;

       Alert("Сейчас = ",dt, "   Завтра в 10:00 = ",t1);

 
LRA:
kocunyc89: есть команда t1=StrToTime(TimeToStr(dt, TIME_DATE)+" 10:00");как мне установить не сегодня 10:00, а Завтра 10:00?  datetime dt=TimeLocal();
  datetime t1=StrToTime(TimeToStr(dt, TIME_DATE)+" 10:00") + 24*60*60;

       Alert("Сейчас = ",dt, "   Завтра в 10:00 = ",t1);

Большое человеческое спасибо!
 
 if (Sob_01_0_1==1 && OrderSelect(ticket3_buy, SELECT_BY_TICKET)==true)
        {
         Alert("Sob_01_0_1=",Sob_01_0_1);
         Alert("здесь код перестает работать?"); 
                   
        if (OrderTakeProfit()>0 && OrderCloseTime()>0)
           {
           Alert("третий ордер на покупку закрыт, событие 011");
           bool close6=OrderClose(ticket3_sell, lot3, Ask, 20, clrRed);
                if (close6==true)
                   Alert("третий ордер на продажу закрыт");
                   else Alert("ошибка закрытия третьего ордера на продажу", GetLastError());
           bool close7=OrderClose(ticket2_sell, lot2, Ask, 20, clrRed);
                if (close7==true)
                   Alert("закрыт второй модифицированный ордер на продажу");
                   else Alert("ошибка закрытия второго модифицированного ордера на продажу ticket2_sell ", GetLastError());
               Sob_01_0_1++;
               Sob011++;
           }
         }
 
bobrush:
Добрый вечер, подскажите в чем ошибка. Код перестает работать после Alert("здесь код перестает работать?");. Т.е. при закрытии  ticket3_buy по профиту, далее оператор if не выполняется.
 

Добрый всем вечер. Вопрос от чайника по функциям iLowest и iHighest. В начале хотел в советнике при помощи этих функций найти "перебитие" максимума/минимума и выставить отложенный ордер. С iLowest все работает, с iHighest ордера не выставляются. Но это к слову, так как сей вопрос решил по другому. Теперь мне нужно удалить отложенный ордер, если произошло "пребитие", чтобы выставить по новой цене. Попробовал вновь воспользоваться выше упомянутыми функциями. С iLowest и удалением отложенного ордера на покупку проблем нет; с iHighest удалением ордера на продажу проблемы - ордер удаляется, когда еще не выполнено условие (цена ниже максимума), выставляется новый, опять удаляется и т.д. Если цена превысила максимум удаляется и не выставляется новый, но как только текущая цена вновь опустилась ниже предыдущего максимума, вновь начинается "свистопляска".

Условия записываю так

 if(iHighest(NULL, 0,  MODE_HIGH, 70, 2) < iHigh(NULL, 0, 1)

{

   DeleteOrders(OP_SELLSTOP, Magic);

 if(iLowhest(NULL, 0,  MODE_HIGH, 70, 2) > iLow(NULL, 0, 1)

{

   DeleteOrders(OP_BUYSTOP, Magic);

(Функция удаления выписана отдельно). Что я делаю не так, в чем ошибка?  

 
Извините за беспокойство, все решилось. Условие удаления записывал в советнике немного не так как написал на форуме - не было смещения относительно текущего бара.
Причина обращения: