[¡Archivo!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. No puedo ir a ningún sitio sin ti - 4. - página 248

 
Mi hermano está aquí.
 
void IndicatorBuffers( int cuenta)

Asigna memoria para los búferes utilizados para los cálculos del indicador personalizado. El número de búferes no puede exceder de 8 y no puede ser menor que el valor especificado en la propiedad indicator_buffers. Si el indicador personalizado requiere búferes adicionales para el conteo, debe utilizar esta función para especificar el número total de búferes.

Es decir, ¿es esto correcto?

#property indicator_buffers 9 double ind_buffer1[]; // Array para cálculos adicionales double ind_buffer2[]; double ind_buffer3[]; double ind_buffer4[]; double ind_buffer5[]; double ind_buffer6[]; double ind_buffer7[]; double ind_buffer8[];
double ind_buffer9[]; SetIndexBuffer(0,ind_buffer2); SetIndexBuffer(1,ind_buffer3); SetIndexBuffer(2,ind_buffer4); SetIndexBuffer(3,ind_buffer5);
SetIndexBuffer(4,ind_buffer6); SetIndexBuffer(5,ind_buffer7); SetIndexBuffer(6,ind_buffer8); SetIndexBuffer(7,ind_buffer9);
 

¿Puede alguien aconsejarme en privado cómo escribir un EA? En particular: ¿Cómo puedo adjuntar un lote doble a un trailing stop?

 
Leo59:
void IndicatorBuffers( int cuenta)

Asigna memoria para los búferes utilizados para los cálculos del indicador personalizado. El número de búferes no puede ser superior a 8 y no puede ser inferior al valor especificado en la propiedad indicator_buffers. Si un indicador personalizado requiere búferes adicionales para el recuento, debe utilizar esta función para especificar el número total de búferes.

Es decir, está permitido.

No.
#property indicator_buffers 9
"El número de buffers no puede exceder de 8" son las palabras clave tanto para la #propiedad indicator_buffers como para IndicatorBuffers.
La #propiedad indicator_buffers especifica el número de buffers de dibujo, entonces IndicatorBuffers = #propiedad indicator_buffers+número de buffers de no dibujo a calcular. Si todos los buffers están dibujando, entonces IndicatorBuffers = #propiedad indicator_buffers. En este caso el uso de IndicatorBuffers es opcional.
 

Pido ayuda a los expertos. Ya he hecho esta pregunta un par de veces aquí, di un trabajo en mql5.com/es/job, hasta ahora se ha gastado mucho tiempo, dinero y esfuerzo, pero ningún resultado... :(

El objetivo del problema es escribir una función que compruebe si existe un pedido en un rango de precios.

Más sencillo aún: cuando se pregunta si hay un orden de bahía en el rango de 0,9995 a 1,0005, por ejemplo.

Quien ha publicado aquí tiene una solución que funciona... bueno, por ejemplo 15 dólares...

MT4...

 
granit77:
No.
#property indicator_buffers 9
"El número de buffers no puede exceder de 8" son palabras clave tanto para la #propiedad indicator_buffers como para IndicatorBuffers.
La #propiedad indicator_buffers especifica el número de buffers de dibujo, entonces IndicatorBuffers = #propiedad indicator_buffers+número de buffers de no dibujo a calcular. Si todos los buffers están dibujando, entonces IndicatorBuffers = #propiedad indicator_buffers. En este caso el uso de IndicatorBuffers es opcional.

¡Estimado granit77! Si no te importa, por favor, haz las correcciones directamente en el código, si algo está mal. Será claro y comprensible.

#propiedad indicator_buffers 8 double ind_buffer1[]; // array para cálculos adicionales double ind_buffer2[]; double ind_buffer3[]; double ind_buffer4[]; double ind_buffer5[]; double ind_buffer6[]; double ind_buffer7[]; double ind_buffer8[]; double ind_buffer9[];   

int init() { IndicatorBuffers(9); SetIndexBuffer(0,ind_buffer2); SetIndexBuffer(1,ind_buffer3); SetIndexBuffer(2,ind_buffer4); SetIndexBuffer(3,ind_buffer5);
SetIndexBuffer(4,ind_buffer6); SetIndexBuffer(5,ind_buffer7); SetIndexBuffer(6,ind_buffer8); SetIndexBuffer(7,ind_buffer9); return(0); }
 
w_ersoc:

Pido ayuda a un experto. Ya he hecho esta pregunta un par de veces aquí, di un trabajo en mql5.com/es/job, hasta ahora se ha gastado mucho tiempo, dinero y esfuerzo, pero ningún resultado... :(

El objetivo de la tarea es escribir una función que compruebe si existe un pedido en el rango de precios.

Para simplificarlo aún más, cuando se le pregunte si hay una orden de bahía en el rango de 0,9995 a 1,0005, por ejemplo.

Quien haya publicado aquí una solución que funcione... por ejemplo 15 dólares...

MT4...

En el bucle, recorre todas las posiciones abiertas, si el tipo de orden seleccionado es igual a lo que se pasó a la función, si el símbolo de la orden es igual a lo que se pasó a la función, si el precio de apertura de la orden cae dentro del rango especificado (mayor o igual a 0,9995 y menor o igual a 1,0005), entonces la función devuelve true, de lo contrario devuelve false.

Es una simple enumeración de pedidos con una comprobación de coincidencia.

ZS. Por 15 libras una mujer recibe un helado, y los niños flores... O viceversa... :)

 
artmedia70:

En el bucle, recorre todas las posiciones abiertas si el tipo de orden seleccionado es igual al que se pasa a la función, si el número mágico de la orden es igual al que se pasa a la función, si el precio de apertura de la orden está dentro del rango especificado (mayor o igual a 0,9995 y menor o igual a 1,0005), entonces la función devuelve true, de lo contrario devuelve false.

Es una simple enumeración de pedidos con una comprobación de coincidencia.

ZS. Por 15 libras una mujer recibe un helado, y los niños flores... O viceversa... :)

Es elemental, pero no funciona.

Se puede discutir, pero tanta gente ha dicho que es una mierda, pero al final nada ((

 
w_ersoc:

Es elemental, pero no funciona.

Se puede discutir, pero tanta gente ha dicho que es una mierda y al final nada ((


Aquí tienes:

//+------------------------------------------------------------------+
//|          Function  : GetOrdersInThePrice(min,max,&tickets[])bool |
//|          Copyright © 2012, XrustSolution.  mail:xrustx@gmail.com |
//|          https://www.youtube.com/user/opmlv http://forexrust.info |
//+------------------------------------------------------------------+
//|   Description: Пишет в массив тикеты ордеров с ценою открытия    |
//| между максимальной и минимальной ценой, если ордеров нет = false |
//+------------------------------------------------------------------+
bool GetOrdersInThePrice(double pr1,double pr2,int &tickets[]){int i,ii;double min,max;
   min = MathMin(pr1,pr2);
   max = MathMax(pr1,pr2);
   ArrayResize(tickets,100);
   for(i=OrdersTotal()-1;i>=0;i--){
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
         if(OrderSymbol()!=Symbol()){continue;}
         if(OrderOpenPrice()>max){continue;}
         if(OrderOpenPrice()<min){continue;}
         tickets[ii] = OrderTicket();
         ii++;
      }
   }
   if(ii<1){return(false);}
   ArrayResize(tickets,ii);
   return(true);
}
 
FAQ:


Ahí lo tienes:

error de tipos incompatibles