Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 388

 

Buenas tardes a todos.

Estoy aprendiendo sobre arrays.

¿Podríais decirme cómo eliminar el valor que necesito de un array?

Según tengo entendido, después de borrar un valor, el tamaño del array se reducirá y probablemente

el nuevo valor del tamaño de la matriz también tendrá que ser especificado.

No he encontrado la función que borre un valor del array en el Manual de Referencia. ¿Puede mostrarme cómo es el procedimiento completo?

para que después de borrarlo, el array siga funcionando.

Gracias.

He aquí un ejemplo concreto de lo que necesito.

int start()                                             
{

double mass[3]=
{
1.2414,
1.2438,
1.2874
};

double value =  Bid ;
int S = ArrayBsearch(mass,  value,  WHOLE_ARRAY,  0, MODE_ASCEND);

if ( Bid == mass[S]) //Bid = 1.2874
OrderSend(Symbol(),OP_SELL,0.1,Bid ,3,Ask+400*Point,Ask-200*Point,"jfh",123 );
}
// после того как открылся ордер по цене элемента массива с индексом 2 (1.2874)
// КАК УДАЛИТЬ ИЗ МАССИВА ЗНАЧЕНИЕ 1.2874 так что бы массив продолжил функционировать дальше.
 
ANDREY:

Buenas tardes a todos.

Estoy aprendiendo sobre arrays.

Me pueden decir cómo eliminar el valor que necesito del array.

Según tengo entendido, después de borrar un valor, el tamaño del array se reducirá y probablemente

También habrá que especificar el nuevo tamaño de la matriz.

No he encontrado la función que borre un valor del array en el Manual de Referencia. Por favor, muéstrame cómo es el procedimiento completo. para borrar un valor del array,

Para que después de borrar, el array siga funcionando.

Gracias.

He aquí un ejemplo concreto de lo que necesito.

Puedes copiar un array "en sí mismo" y luego redimensionar el array disminuyéndolo en 1. Un ejemplo con el borrado del índice cero del array y el relleno del último, pero se puede copiar desde cualquier índice cualquier número de elementos.

La segunda opción es sobrescribir el último valor en el espacio "liberado" y también reducir el tamaño del array.

Подскажите про массивы
Подскажите про массивы
  • 2017.12.03
  • www.mql5.com
Я только учусь и на массивах попал в засаду: пытаюсь написать скрипт в котором массив данных будет перезаписываться...
 
Alexey Viktorov:

Puedes copiar un array "a sí mismo" y luego redimensionar el array disminuyéndolo en 1. Un ejemplo es borrar el índice cero del array y llenar el último, pero la copia puede hacerse desde cualquier índice con cualquier número de elementos.

La segunda opción es sobrescribir el último valor en el espacio "liberado" y también reducir el tamaño del array.

Muchas gracias por el consejo.
 

¡¡¡Hola!!! Explícame, aunque no soy un principiante, pero estoy terriblemente harto de un solo problema. Estoy llamando al indicador desde el indicador. Cuando recibo una nueva barra con un valor, obtengo valores completamente diferentes cuando la recompilo de inmediato. El retraso en el cálculo del indicador por tiempo no conduce a nada. Por lo tanto, no hay ninguna función automática. La pregunta. WHY???? Estoy tan agotado que estoy exhausto. ¿Qué es este increíble fallo... Estoy harto...

 

Hola! No puedo resolver el problema de mover los niveles de señal si el precio va más allá de ellos. En el momento de la compilación todo está bien, pero en el probador, cuando llega la condición de "apto", nada cambia. Por favor, indique qué es lo que está mal en la condición de que el precio se mueva más allá de los niveles de señal?

//-------------------------выход цены за пределы сигнальных уровней-----------------------------------------------------------------------------------------------
 price=iHigh(Symbol(),PERIOD_M15,0);                                                               //Сигнальный уровень О(Сердцевина)
 ObjectCreate("UrO",OBJ_HLINE,0,0,price);
 ObjectSet("UrO",OBJPROP_COLOR,clrYellowGreen);                               
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
 priceA=price+30*Point;                                                                            //Сигнальный уровень А(Максимум)
 ObjectCreate("UrA",OBJ_HLINE,0,0,priceA);
 ObjectSet("UrA",OBJPROP_COLOR,clrDarkSlateBlue); 
//---------------------------------------------------------------------------------------------------------------------------------------------------------------- 
 priceB=price-30*Point;                                                                            //Сигнальный уровень B(Минимум)
 ObjectCreate("UrB",OBJ_HLINE,0,0,priceB); 
 ObjectSet("UrB",OBJPROP_COLOR,clrOrangeRed); 
//--------------------------------------------------------------------------
if((Bid>=priceA) ||(Bid<=priceB)){                                                                 //если цена вышла за одну из ГРАНИЦ, сдвинуть уровни
  ObjectSet("UrO",OBJPROP_PRICE1,iHigh(Symbol(),PERIOD_M15,0));  
                                                                                             

El nivel"UrA" o"UrB" debería trasladarse al máximo de la última vela en m15, pero no sucede. ¿Alguien sabe por qué?

 
vikzip:

Hola! No puedo resolver el problema de mover los niveles de señal si el precio va más allá de ellos. En el momento de la compilación todo está bien, pero en el probador, cuando llega la condición de "apto", nada cambia. Por favor, indique qué es lo que pasa con la condición de que el precio se mueva más allá de los niveles de señal?

El nivel"UrA" o"UrB" debería trasladarse al máximo de la última vela en m15, pero no sucede. ¿Alguien sabe por qué?


¿Qué pasa con ObjectMove()?

 
Vitalie Postolache:

¿Qué pasa con ObjectMove()?


Gracias!!!)

 
Vitalie Postolache:

¿Qué pasa con ObjectMove()?


La función es estupenda. ¡Pero la condición no se cumple por alguna razón! ¿Alguien sabe la razón?

  double price;                                                                                    //цена сердцевины
  double priceA;                                                                                   //цена верхнего сигнального уровня
  double priceB;                                                                                   //цена нижнего сигнального уровня
//+------------------------------------------------------------------------------------------------------------------------------------------------------------
int start(){
//-------------------------выход цены за пределы сигнальных уровней-----------------------------------------------------------------------------------------------

price=iHigh(Symbol(),PERIOD_M15,0);                                                               //Сигнальный уровень О(Сердцевина)
ObjectCreate("UrO",OBJ_HLINE,0,0,price);
ObjectSet("UrO",OBJPROP_COLOR,clrYellowGreen);                                                                                                                               
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
 priceA=price+30*Point;                                                                            //Сигнальный уровень А(Максимум)
ObjectCreate("UrA",OBJ_HLINE,0,0,priceA);
ObjectSet("UrA",OBJPROP_COLOR,clrDarkSlateBlue); 
//---------------------------------------------------------------------------------------------------------------------------------------------------------------- 
 priceB=price-30*Point;                                                                            //Сигнальный уровень B(Минимум)
ObjectCreate("UrB",OBJ_HLINE,0,0,priceB); 
ObjectSet("UrB",OBJPROP_COLOR,clrOrangeRed); 
 //---------------------------------------------------------------------------------------------------------------------------------------------------------------
if((Bid<=priceB)||(Bid>=priceA)){                                                                 //если цена вышла за одну из ГРАНИЦ
  ObjectsDeleteAll();                                                                             //для примера удаляю все объекты, но этого не происходит!
  }                                                                                               //Почему ведь очевидно на тестере цена выходит за пределы, но ни чего не происходит???
return(0);
}
¿Puede alguien explicar cuál es el error, por favor?
 

¡Hola!

Estoy empezando a aprender MQL4. No puedo entender por qué el script ignora el botón"Permitir trading automático" en MT4 (ver. 4.0 build 1090)

No consigo que este tipo de construcción funcione:

int start()
{

     Alert("Привет!");

return;
}

No presiono el botón, pero sigue mostrando una ventana con alerta. Cuando establezco una orden en un script, la dispara en cada tick sin parar, tanto si se pulsa el botón de Autotrade como si no.


He intentado una construcción de este tipo:


int start()
{

 while(!IsStopped())
    {
    
      Alert("Привет!");

     if(!IsExpertEnabled()) break;
    }


return;
}

Al principio parecía funcionar, pero en el proceso de complicación del script también dejó de funcionar...

No sé si se supone que es así, pero no siento la fluidez del trabajo de EA: cuando cambio de EA, el antiguo sigue trabajando como si estuviera en segundo plano, pero quizás no me he dado cuenta todavía.

 
Dimitry-1983:

¡Hola!

Estoy empezando a aprender MQL4. No puedo entender por qué el script ignora el botón"Permitir trading automático" en MT4 (ver. 4.0 build 1090)

No consigo que este tipo de construcción funcione:

No presiono el botón, pero sigue mostrando una ventana con alerta. Cuando establezco una orden en un script, la dispara en cada tick sin parar, tanto si se pulsa el botón de Autotrading como si no.


He intentado una construcción de este tipo:


Al principio parecía funcionar, pero en el proceso de complicación del script también dejó de funcionar...

No sé si se supone que es así, pero no siento la fluidez del trabajo de EA: cuando cambio de EA, el antiguo sigue funcionando como en segundo plano, pero quizás no me he dado cuenta todavía.

Este botón sólo afecta a las funciones comerciales. Todo lo demás sigue funcionando como debería.
Razón de la queja: