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

 


Muchas gracias.Swan
 

¿Puede decirme, por favor, si abro un pedido

OrderSend(Symbol(), OP_SELL, Lots, Bid, 3, oSL, oTP, "", ExpertID, 0, Red)

Si se activa un Stop Loss, se abre un lote doble en la siguiente apertura de la orden que se hace automáticamente

 
vik-777 >> :

¿Puede decirme, por favor, si abro un pedido

OrderSend(Symbol(), OP_SELL, Lots, Bid, 3, oSL, oTP, "", ExpertID, 0, Red)

Si se activa un Stop Loss, se abre un lote doble en la siguiente apertura de la orden que se hace automáticamente


Ponga estas líneas al principio de la función START y utilice la variable _SL[0] para determinar el resultado de la operación anterior.

if (OrderSelect(Tic,SELECT_BY_TICKET)==true)
{
if (OrderComment()=="[sl]")_SL[0]=-1;
if (OrderComment()=="[tp]")_SL[0]=1;
}

 

El problema.

Hay un EA. Si las variables Lot, Porog, Otstup, SL, TP se establecen en el "cuerpo" del programa, entonces el EA funciona. Si estas variables están configuradas como "externas" (configurándolas a través de los ajustes), entonces el EA no funciona (en el "cuerpo" del EA, estas variables tienen un valor de CERO).

¿Cuál puede ser el problema? ¿Dónde buscar una solución?

/*
extern double Lot = 0.1;    

extern double Porog = 5.0;  
extern double Otstup = 5.0; 

extern double SL = 5.0; 
extern double TP = 15.0; 
*/

int init()
  {
   return(0);
  }
int deinit()
  {
   return(0);
  }

int start()
  {
  int MagicNumber = 8; 
  int ticket;
  int err;
  int q=0;

double Lot = 0.1;    
double Porog = 5.0;  
double Otstup = 5.0; 
double SL = 5.0; 
double TP = 15.0; 
 

¿Podría sugerir una función para implementar un cuadro de diálogo donde se puedan especificar los valores de las variables?

¡Por ejemplo, hay un script de compra (buy with Sl and Tp set), cuando lo ejecutas, aparece un cuadro de diálogo donde puedes especificar, por ejemplo, el tamaño del lote, luego presionas Ok y la orden se ejecuta!

Gracias.

 

Estimados profesionales, por favor, aconsejen...

En mi indicador utilizo un texto que muestra datos sobre el valor de la curva del indicador en el gráfico

{ObjectCreate("P"+Time[ ai],OBJ_TEXT,0,Time[ ai],High[ ai]+ Label);
ObjectSetText("P"+Time[ ai]," "+DoubleToStr( HL,2),7,"Arial",Black);}
Tengo que desplazarlo en el parámetro Etiqueta para mantener el texto en la curva. Pero cuando cambiamos a otro periodo o aumentamos/disminuimos el gráfico, la escala del gráfico cambia y tenemos que volver a editar. ¿Se puede ajustar el desplazamiento del texto de forma diferente, por ejemplo, en píxeles de pantalla?
 
kon12 писал(а) >>

Estimados profesionales, por favor, aconsejen...

En mi indicador utilizo un texto que muestra datos sobre el valor de la curva del indicador en el gráfico

Para que el texto no se superponga a la curva, tenemos que desplazarlo por el parámetro Etiqueta. Pero al cambiar a otro periodo o aumentar/disminuir el gráfico, la escala del gráfico cambia y hay que volver a editar. ¿Se puede ajustar el desplazamiento del texto de forma diferente, por ejemplo, en píxeles de pantalla?

Puede utilizar

OBJ_LABEL 23 Es una etiqueta de texto. No utiliza coordenadas. La función ObjectSet() se utiliza para establecer coordenadas en píxeles relativas al ángulo de referencia (propiedades OBJPROP_CORNER, OBJPROP_XDISTANCE, OBJPROP_YDISTANCE). Para cambiar el texto, se utiliza la función ObjectSetText().

 
No entiendo muy bien cómo... Adjunto una foto del indicador. La cuestión es que el texto está vinculado a puntos concretos del indicador.
 
kon12 писал(а) >>
No entiendo muy bien cómo... Adjunto una foto del indicador. La cuestión es que el texto está unido a puntos concretos del indicador.

Entonces hay que dinamizar la Etiqueta. Para cada marco temporal propio. Una vez en el interior y olvidarse de él. Pero primero hay que seleccionarla.

 
kon12 >> :
¿Se puede ajustar el desplazamiento del texto de forma diferente, por ejemplo, en píxeles de pantalla?

La respuesta más correcta es no.

Razón de la queja: