Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 1077

 

¿Cuál es la forma correcta de tratar el error : array out of range in '... en esta situación cuando se cambia a #property strict ?



int limit=rates_total-prev_calculated;

ArrayResize(?,?,?);


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

Hazlo así

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

En lugar del 1, puedes poner cualquier número excepto el 0. Cuanto más alto sea el número, menos barras se contarán cuando se inicie el indicador.

Y eliminar

ArrayResize(?,?,?);

es absolutamente inútil.

 
AlexeyVik:

Hazlo así

En lugar de 1, puedes poner cualquier número excepto 0. Cuanto más alto sea el número, menos barras se contarán cuando se inicie el indicador.

Y eliminar

es absolutamente inútil.

Ahora lo entiendo. Gracias por los consejos.
 
chicos, hay un comando t1=StrToTime(TimeToStr(dt, TIME_DATE)+" 10:00"); ¿cómo puedo poner no hoy 10:00, sino mañana 10:00?
 
kocunyc89 : hay un comando t1=StrToTime(TimeToStr(dt, TIME_DATE)+" 10:00");¿cómo pongo no hoy 10:00 sino mañana 10:00? datetime dt=TimeLocal();
datetime t1=StrToTime(TimeToStr(dt, TIME_DATE)+" 10:00") + 24*60*60;

Alert("Ahora = ",dt, " Mañana a las 10:00 = ",t1);

 
LRA:
kocunyc89 : hay un comando t1=StrToTime(TimeToStr(dt, TIME_DATE)+" 10:00");¿cómo pongo no hoy 10:00 sino mañana 10:00? datetime dt=TimeLocal();
datetime t1=StrToTime(TimeToStr(dt, TIME_DATE)+" 10:00") + 24*60*60;

Alert("Ahora = ",dt, " Mañana a las 10:00 = ",t1);

¡Muchas gracias!
 
 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:
Buenas noches, me pueden decir cuál es el error. El código deja de funcionar después deAlert("¿aquí el código deja de funcionar?");. Es decir, cuandoticket3_buy cierraen beneficio, entonces la sentencia if no se ejecuta.
 

Buenas noches a todos. Pregunta de un tonto sobre las funciones iLowest y iHighest. Al principio, quería utilizar estas funciones para encontrar la ruptura de alta/baja en mi EA y colocar una orden pendiente. Todo funciona con iLowest pero iHighest no establece órdenes. Sin embargo, esto es una palabra, puesto que ya he resuelto este problema de otra manera. Ahora tengo que borrar una orden pendiente si fue cancelada para abrirla a un nuevo precio. He intentado utilizar de nuevo las funciones anteriores. No hay ningún problema con iLowest y la eliminación de una orden de compra pendiente; tengo problemas con iHighest la eliminación de una orden de venta - la orden se elimina cuando una condición no se ha cumplido (el precio está por debajo del máximo), una nueva orden se coloca, se elimina de nuevo y así sucesivamente. Si el precio ha superado el máximo, se borra y no se ejecuta uno nuevo, pero en cuanto el precio actual se ha movido por debajo del máximo anterior, la "lucha" comienza de nuevo.

Las condiciones se escriben de la siguiente manera

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);

}

(La función de borrado se escribe por separado). ¿Qué estoy haciendo mal, cuál es el error?

 
Disculpen las molestias, todo está resuelto. Escribí la condición de borrado en el EA de forma ligeramente diferente a lo que escribí en el foro - no había ningún desplazamiento en relación con la barra actual.