[ARCHIVO] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 3. - página 181

 

Hola a todos.


Mi pregunta es de un novato.

Tengo un indicador que muestra datos de archivos externos en un gráfico. Estas son mis preguntas:

1. ¿Cómo se abre el cuadro de diálogo de selección de archivos estándar?

2. ¿Cómo evitar la restricción de las carpetas desde las que se pueden abrir los archivos del código (expertos/archivos)?

3. Cómo hacer un control en el gráfico que pueda ser pulsado para desactivar el script. La cuestión principal es cómo hacer un EA, por ejemplo algún tipo de botón o algo más para interactuar con el usuario a través de él)?


Gracias.

 

¡Explícale al empollón cuál es el error!

Estoy haciendo un simple script en la demo de Finam para mostrar el precio de Alert(BId);

Todo funciona, pero por alguna razón el precio se muestra con 4 decimales, aunque las cotizaciones están en 5 decimales para EURUSD. El IMA también se calcula con 4 decimales y no con 5.

¿Qué estoy haciendo mal, por favor aconsejar ????

 
Onesto:

¡Explícale al empollón cuál es el error!

Estoy haciendo un simple script en Finam demo para mostrar el precio de Alert(BId);

Todo funciona, pero por alguna razón el precio se muestra con 4 decimales, aunque las cotizaciones están en 5 decimales para EURUSD. El IMA también se calcula con 4 decimales y no con 5.

Por favor, aconséjeme qué estoy haciendo mal ????

Estás haciendo todo bien, pero la terminal imprimirá 4 decimales, convierte el doble en cadena antes de imprimir con el número correcto de decimales.

Alert(DoubleToStr(Bid,Digits));

 
sanderz:

Hola a todos.


Mi pregunta es de un novato.

Tengo un indicador que muestra datos de archivos externos en un gráfico. Estas son mis preguntas:

1. ¿Cómo se abre el cuadro de diálogo de selección de archivos estándar?

2. ¿Cómo evitar la restricción de las carpetas desde las que se pueden abrir los archivos del código (expertos/archivos)?

3. Cómo hacer un control en el gráfico que pueda ser pulsado para desactivar el script. La cuestión principal es cómo hacer un EA, por ejemplo algún tipo de botón o algo más para interactuar con el usuario a través de él)?


Gracias.

1-2. ¿El estándar es qué? Aunque en cualquier caso, para las dos primeras preguntas, necesitarás usar WinAPI y/o DLL externa.

3. Directamente desde el script para hacer un elemento gráfico en el bucle para realizar un seguimiento de sus coordenadas y cuando se arrastra, la secuencia de comandos de pausa o descarga.

La forma más fácil de hacerlo es mirar el código fuente, hay un montón de trucos visuales en el código base.

 
Estimados miembros del foro, ¿pueden ayudarme a pasar una tabla de todas las transacciones de Quicksilver a Excel para que se actualice en línea y para que pueda cambiar el número de filas mostradas? Lo he intentado pero se muestra toda la tabla y no se actualiza.
 
splxgf:

1-2. ¿Cuál es el estándar? Pero en cualquier caso, las dos primeras preguntas requerirán WinAPI y/o una DLL externa.

3. Directamente desde el script para hacer un elemento gráfico en el bucle para realizar un seguimiento de sus coordenadas y cuando se arrastra, la secuencia de comandos de pausa o descarga.

La forma más fácil de hacerlo es mirar el código fuente, hay un montón de trucos visuales en el código base.

Gracias.
 
splxgf:

Lo estás haciendo todo correctamente, pero el terminal emite 4 decimales, convierte el doble en una cadena antes de emitirlo con el número correcto de dígitos.

Alert(DoubleToStr(Bid,Digits));


Gracias, ahora lo entiendo.

Y al calcular en el cuerpo del Asesor Experto, ¿los datos vienen con 5 o 4 dígitos?

 
Onesto:


Gracias, ahora lo entiendo.

Y al calcular en el cuerpo del EA, ¿los datos van con 5 o con 4?

Los cálculos se realizan con el número normal de dígitos, que puede comprobarse con Alert(Bid*100000);
 

Estimado, tengo una pregunta de nuevo:

double hc=(iHigh(NULL,0,1)-iClose(NULL,0,1));
double cl=(iClose(NULL,0,1)-iLow(NULL,0,1));

if((iClose(NULL,0,1)<iOpen(NULL,0,1))&&(hc>cl))

pre12=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,0,Ask+100*Point,"",0,0,CLR_NONE);


Hay un problema: las posiciones se abren 17-40 veces cada 1 minuto, aunque las pruebo en gráficos de 15 minutos. Y se supone que la orden se abre no más de una vez cada 15 minutos. Sólo entonces se cumple la condición de que el cierre de la vela anterior sea inferior a su apertura.

¿Por qué es así?

 
NaVolne:

Estimado, tengo una pregunta de nuevo:

if((iClose(NULL,15,1)<iOpen(NULL,15,1))&&(hc>cl))

pre12=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,0,Ask+100*Point,"",0,0,CLR_NONE);


Hay un problema: las posiciones se abren 17-40 veces cada 1 minuto, aunque las pruebo en gráficos de 15 minutos. Y asumo que una orden no debería abrirse con más frecuencia que una vez cada 15 minutos. Sólo entonces se cumple la condición de que el cierre de la vela anterior sea inferior a su apertura.

¿Por qué es así?


Supongo que la orden debe abrirse una vez cada 15 minutos, al comienzo de

en el área de declaración de variables

double OpenBar=0; 

 

int start()
   {
    //Проверка на начало нового бара
    double CurOpenBar=iOpen(NULL,PERIOD_M15,0);  
    if (OpenBar==CurOpenBar) {return;} else {OpenBar=CurOpenBar;}
    //ваш код
   }


algo así...

Pero su condición se cumple en cada tick, por lo que la orden se abre en cada tick...

Razón de la queja: