Hola, tengo una pregunta sobre las matrices. He creado un array unidimensional con algunos problemas. Debería estar bien, porque no tengo ningún error en el tiempo de compilación, pero ahora debo ejecutarlo en el probador y ver el error EURUSD,M1: matriz fuera de rango en ,, (218,12) que indica exactamente la posición de mi matriz de dolor. Por favor, díganme qué tiene de malo
int Totall=OrdersTotal();
double Price; // Цена выбранного ордераdouble Mas[]; //массив для упорядочивания всех ордеровfor(int i=0; i<OrdersTotal(); i++) // Цикл перебора ордер
{
if(OrderSelect(i,SELECT_BY_POS)) // Если есть следующий
{
Price=OrderOpenPrice();
Mas [i] = Price; //Как раз перед квадратной скобкой и есть ошибка array out of range in ,, (218,12)
ArraySort (Mas,WHOLE_ARRAY,0,MODE_ASCEND); // Теперь цены открытия упорядочены по убываниюint Blizko2=ArrayBsearch(Mas,Ask,WHOLE_ARRAY,0,MODE_DESCEND); //Определен индекс ближайшего большего по значению елемента к текущей цене
PriceBlizko2 = Mas[Blizko2]; // Цена выбранного ордераArraySort (Mas,WHOLE_ARRAY,0,MODE_ASCEND); // Теперь цены открытия упорядочены по убываниюint Blizko1=ArrayBsearch(Mas,Bid,WHOLE_ARRAY,0,MODE_ASCEND); //Определен индекс ближайшего меньшего по значению елемента к текущей цене
PriceBlizko1=Mas[Blizko1];
}
}
Por favor, aconséjeme, ¿quizás hay otra forma de asignar un precio de pedido a cada elemento de la matriz?
Hola, tengo una pregunta sobre las matrices. He creado un array unidimensional con algunos problemas. Debería estar bien, porque no tengo ningún error en el tiempo de compilación, pero ahora debo ejecutarlo en el probador y ver el error EURUSD,M1: matriz fuera de rango en ,, (218,12) que indica exactamente la posición de mi matriz de dolor. Por favor, díganme qué tiene de malo
Tu código es fundamentalmente erróneo, pero el error se debe a que el tamaño del array no se ha establecido antes de llenarlo
¡Muchas gracias! ¿Puede decirme, por favor, si la secuencia no es correcta? La idea es determinar los precios de las órdenes más cercanas al precio de abajo y de arriba. Por favor, dígame su punto de vista.
¡Muchas gracias! ¿Puede decirme si la secuencia no es correcta? La idea es determinar los precios de las órdenes más cercanas al precio por abajo y por arriba. Por favor, dígame su punto de vista.
Tienes un montón de cosas innecesarias en tu bucle. Tienes que llenar el array con los precios en el bucle y trabajar con ellos fuera del bucle
for(int i=0; i<OrdersTotal(); i++) // Цикл перебора ордер
{
if(OrderSelect(i,SELECT_BY_POS)) // Если есть следующий
{
ArrayResize(Mas, i+1);
Mas[i] = OrderOpenPrice(); //Как раз перед квадратной скобкой и есть ошибка array out of range in ,, (218,12)/*
ArraySort (Mas,WHOLE_ARRAY,0,MODE_ASCEND); // Теперь цены открытия упорядочены по убыванию
int Blizko2=ArrayBsearch(Mas,Ask,WHOLE_ARRAY,0,MODE_DESCEND); //Определен индекс ближайшего большего по значению елемента к текущей цене
PriceBlizko2 = Mas[Blizko2]; // Цена выбранного ордера
ArraySort (Mas,WHOLE_ARRAY,0,MODE_ASCEND); // Теперь цены открытия упорядочены по убыванию
int Blizko1=ArrayBsearch(Mas,Bid,WHOLE_ARRAY,0,MODE_ASCEND); //Определен индекс ближайшего меньшего по значению елемента к текущей цене
PriceBlizko1=Mas[Blizko1];
*/
}
}
double Price; // Цена выбранного ордераdouble Mas[]; //массив для упорядочивания всех ордеровfor(int i=0; i<OrdersTotal(); i++) // Цикл перебора ордер
{
if(OrderSelect(i,SELECT_BY_POS)) // Если есть следующий
{
Price=OrderOpenPrice();
ArrayResize(Mas, i+1);
Mas [i] = Price;
}
}
ArraySort (Mas,WHOLE_ARRAY,0,MODE_ASCEND); // Теперь цены открытия упорядочены по убываниюint Blizko2=ArrayBsearch(Mas,Ask,WHOLE_ARRAY,0,MODE_DESCEND); //Определен индекс ближайшего большего по значению елемента к текущей цене
PriceBlizko2 = Mas[Blizko2]; // Цена выбранного ордера Вот в этой строкеArraySort (Mas,WHOLE_ARRAY,0,MODE_ASCEND); // Теперь цены открытия упорядочены по убываниюint Blizko1=ArrayBsearch(Mas,Bid,WHOLE_ARRAY,0,MODE_ASCEND); //Определен индекс ближайшего меньшего по значению елемента к текущей цене
PriceBlizko1=Mas[Blizko1];
Vitaly Muzichenko:
Es posible. Una misma tarea puede llevarse a cabo de varias maneras.
Acabo de hacer un bucle para determinar los índices de los elementos más cercanos y el probador muestra un error en Mas[Blizko2].¿Tal vez sea porque todavía no hay órdenes cuando ejecuto el EA?
(Por favor, aconsejen, ¿tal vez saben dónde buscar algo similar?)
Acabo de poner fuera de bucle la definición de los índices del elemento más cercano y en el probador muestra un error en el lugar Mas[Blizko2] .Tal vez sea porque cuando se ejecuta el EA no hay órdenes todavía?
Pruébalo así
if(ArraySize(Mas)>0) { // если массив не пустой, тоArraySort (Mas,WHOLE_ARRAY,0,MODE_ASCEND); // Теперь цены открытия упорядочены по убываниюint Blizko2=ArrayBsearch(Mas,Ask,WHOLE_ARRAY,0,MODE_DESCEND); //Определен индекс ближайшего большего по значению елемента к текущей цене
PriceBlizko2 = Mas[Blizko2]; // Цена выбранного ордераArraySort (Mas,WHOLE_ARRAY,0,MODE_ASCEND); // Теперь цены открытия упорядочены по убываниюint Blizko1=ArrayBsearch(Mas,Bid,WHOLE_ARRAY,0,MODE_ASCEND); //Определен индекс ближайшего меньшего по значению елемента к текущей цене
PriceBlizko1=Mas[Blizko1];
}
¡¡¡Muchas gracias!!! Tengo otra pregunta: ¿Estoy determinando correctamente el índice del elemento menor más cercano al precio actual al cambiarMODE_DESCEND aMODE_ASCEND?
¡¡¡Muchas gracias!!! Tengo otra pregunta: ¿Estoy determinando correctamente el índice del elemento menor más cercano al precio actual al cambiarMODE_DESCEND aMODE_ASCEND?
Para iniciar sesión y usar el sitio web MQL5.com es necesario permitir el uso de Сookies.
Por favor, active este ajuste en su navegador, de lo contrario, no podrá iniciar sesión.
Ha iniciado sesión. La autenticación de dos factores se ha desactivado. Vuelva a configurarla y escanee un nuevo código QR, o continúe con la autenticación de dos factores desactivada.
Hola, tengo una pregunta sobre las matrices. He creado un array unidimensional con algunos problemas. Debería estar bien, porque no tengo ningún error en el tiempo de compilación, pero ahora debo ejecutarlo en el probador y ver el error EURUSD,M1: matriz fuera de rango en ,, (218,12) que indica exactamente la posición de mi matriz de dolor. Por favor, díganme qué tiene de malo
Hola, tengo una pregunta sobre las matrices. He creado un array unidimensional con algunos problemas. Debería estar bien, porque no tengo ningún error en el tiempo de compilación, pero ahora debo ejecutarlo en el probador y ver el error EURUSD,M1: matriz fuera de rango en ,, (218,12) que indica exactamente la posición de mi matriz de dolor. Por favor, díganme qué tiene de malo
Tu código es erróneo en la raíz, pero el error se debe a que el tamaño del array no se establece antes de rellenarlo
Tu código es fundamentalmente erróneo, pero el error se debe a que el tamaño del array no se ha establecido antes de llenarlo
¡Muchas gracias! ¿Puede decirme, por favor, si la secuencia no es correcta? La idea es determinar los precios de las órdenes más cercanas al precio de abajo y de arriba. Por favor, dígame su punto de vista.
¡Muchas gracias! ¿Puede decirme si la secuencia no es correcta? La idea es determinar los precios de las órdenes más cercanas al precio por abajo y por arriba. Por favor, dígame su punto de vista.
Tienes un montón de cosas innecesarias en tu bucle. Tienes que llenar el array con los precios en el bucle y trabajar con ellos fuera del bucle
Tienes un montón de cosas innecesarias en el bucle. Tienes que llenar el array con los precios en el bucle, y trabajar con él fuera del bucle.
Ya veo. ¡¡Muchas gracias!! ¿He entendido bien la idea?
Ya veo. ¡¡Muchas gracias!! ¿Has entendido bien la idea?
Es posible. La misma tarea puede llevarse a cabo de varias maneras.
Vitaly Muzichenko:
Es posible. Una misma tarea puede llevarse a cabo de varias maneras.
Acabo de hacer un bucle para determinar los índices de los elementos más cercanos y el probador muestra un error en Mas[Blizko2].¿Tal vez sea porque todavía no hay órdenes cuando ejecuto el EA?
(Por favor, aconsejen, ¿tal vez saben dónde buscar algo similar?)Acabo de poner fuera de bucle la definición de los índices del elemento más cercano y en el probador muestra un error en el lugar Mas[Blizko2] .Tal vez sea porque cuando se ejecuta el EA no hay órdenes todavía?
Pruébalo así
Prueba esto
¡¡¡Muchas gracias!!! Tengo otra pregunta: ¿Estoy determinando correctamente el índice del elemento menor más cercano al precio actual al cambiarMODE_DESCEND aMODE_ASCEND?
¡¡¡Muchas gracias!!! Tengo otra pregunta: ¿Estoy determinando correctamente el índice del elemento menor más cercano al precio actual al cambiarMODE_DESCEND aMODE_ASCEND?
No hay respuesta, nunca he utilizadoArrayBsearch