¿Cómo codificar? - página 223

 

...

Creo (ya que no puedo ver su EA que escribe los valores al archivo csv) que te falta un FileFlush(). En los casos en los que quieras que los cambios en el archivo sean accesibles por "otros" de forma inmediata sin cerrar el archivo (que implícitamente utiliza flush ) siempre debes vaciar los cambios en el disco

saludos

mladen

sunshineh:
Hola,

Estoy escribiendo un EA que trabaja con archivos CSV.

Para las pruebas pongo mis archivos CSV en la siguiente carpeta:

/tester/files

Aquí está sólo una pequeña parte de mi EA:

int handle = 0;

int Long = 0;

handle=FileOpen("LongMarket.csv",FILE_CSV|FILE_READ,';');

if (handle > 0)

{

Long= FileReadNumber(handle);

FileClose(handle);

}

Print("LongMarket = ", Long);

Print("Long handle = ", handle);

En mi EA leo los archivos CSV y luego escribo algunos enteros.

Ahora cuando hago mi prueba y leo en el diario los mensajes de "impresión", a menudo obtengo enteros viejos que ya no están escritos en los archivos CSV.

Por ejemplo:

Primero se escribe 3 y mi EA funciona y escribe el 0 en el archivo,

Sólo puedo ver el 3 en ese archivo CSV.

¡¡¡¡Cuando borro ese archivo CSV y pongo un nuevo archivo CSV con 3 en la carpeta "/tester/files", sólo puedo leer el 0 de la prueba antes de !!!! ¡¡¡Pero no puedo encontrar, donde el EA lee el 0!!!

¡¡¡¡¡Me estoy volviendo loco!!!!!

¡¡Espero que puedas entender mi pregunta y me des un consejo!!
 

¿Alguien puede ayudarme a añadir una función de alarma?

Me gustaría añadir una función de alarma de este indicador, alarma de color. He intentado durante mucho tiempo, el uso de la "alarma si", pero nunca sin éxito. ¿Alguien puede ayudarme? ¡Muchas gracias! ~ Mi inglés no es bueno así que lo siento.

#property indicator_chart_window

#property indicator_buffers 4

#property indicador_color1 BosqueVerde

#propiedad indicador_color2 Rojo

#propiedad indicador_color3 Negro

#propiedad indicador_color4 Negro

//---- parámetros de entrada

extern int FastClosePeriod=13;

extern int FastCloseShift=0;

extern int FastOpenPeriod=34;

extern int FastOpenShift=0;

extern int SlowClosePeriod=34;

extern int SlowCloseShift=0;

extern int SlowOpenPeriod=62;

extern int SlowOpenShift=0;

//---- búferes indicadores

double ExtBlueBuffer[];

double ExtRedBuffer[];

double ExtDarkVioletBuffer[];

double ExtBlackBuffer[];

//+------------------------------------------------------------------+

//| Función de inicialización de los indicadores personalizados

//+------------------------------------------------------------------+

int init()

{

//---- desplazamiento de la línea al dibujar

SetIndexShift(0,FastCloseShift);

SetIndexShift(1,FastOpenShift);

SetIndexShift(2,SlowCloseShift);

SetIndexShift(3,SlowOpenShift);

//---- primeras posiciones saltadas al dibujar

SetIndexDrawBegin(0,FastCloseShift+FastClosePeriod);

SetIndexDrawBegin(1,FastOpenShift+FastOpenPeriod);

SetIndexDrawBegin(2,SlowCloseShift+SlowClosePeriod);

SetIndexDrawBegin(3,SlowOpenShift+SlowOpenPeriod);

//---- 3 búferes de indicadores mapeados

SetIndexBuffer(0,ExtBlueBuffer);

SetIndexBuffer(1,ExtRedBuffer);

SetIndexBuffer(2,ExtDarkVioletBuffer);

SetIndexBuffer(3,ExtBlackBuffer);

//---- ajustes de dibujo

SetIndexStyle(0,DRAW_HISTOGRAM,0,2);

SetIndexStyle(1,DRAW_HISTOGRAM,0,2);

SetIndexStyle(2,DRAW_NONE,0,2);

SetIndexStyle(3,DRAW_NONE,0,2);

//---- etiquetas de índice

SetIndexLabel(0, "FastClose");

SetIndexLabel(1, "FastOpen");

SetIndexLabel(2, "SlowClose");

SetIndexLabel(3, "SlowOpen");

//---- inicialización realizada

return(0);

}

//+------------------------------------------------------------------+

//| 9Squared Trader ||

//+------------------------------------------------------------------+

int inicio()

{

int límite;

int counted_bars=IndicatorCounted();

//---- comprobar posibles errores

if(counted_bars<0) return(-1);

//---- la última barra contada se vuelve a contar

if(counted_bars>0) counted_bars--;

limit=Barras_contadas;

//---- bucle principal

for(int i=0; i<limit; i++)

{

//---- ma_shift se pone a 0 porque SetIndexShift se llama abowe

ExtBlueBuffer=iMA(NULL,0,FastClosePeriod,0,MODE_EMA,PRICE_CLOSE,i);

ExtRedBuffer=iMA(NULL,0,FastOpenPeriod,0,MODE_EMA,PRICE_OPEN,i);

ExtDarkVioletBuffer=iMA(NULL,0,SlowClosePeriod,0,MODE_EMA,PRICE_OPEN,i);

ExtBlackBuffer=iMA(NULL,0,SlowOpenPeriod,0,MODE_EMA,PRICE_MEDIAN,i);

}

//---- hecho

return(0);

 
 
Archivos adjuntos:
example.gif  12 kb
example.mq4  3 kb
 
wolfe:
Aquí tienes. Lo hice muy rápido, y sí, se puede hacer.

Echa un vistazo al ejemplo.mq4 adjunto para ver un ejemplo de codificación.

También se incluye una captura de pantalla con comentarios, para que veas que los valores del RSI se van guardando tick a tick en el array.

Hola wolfe,

Muchas gracias por su temporizador y sus esfuerzos. Voy a intentar esto

saludos,

MSV

 
 

Banda de Bollinger

Hola,

Alguien puede ayudarme con la fórmula de la Banda de Bollinger (20period dev 2 on close) en una hoja de cálculo de Excel. Gracias de antemano.

 

¡¡¡Hola chicos !!!

Necesito abrir sólo "una orden de compra y venta "por día" en mi EA, por favor, ¿cómo es el código para hacer esto?

 
Apolofx:
Hola chicos!!! necesito abrir solo "una orden de compra y venta "por día" en mi EA, por favor, como es el código para hacer esto?

Creo que necesitas hacer un bucle a través de todas las órdenes cerradas y comprobar cada una de ellas por su símbolo y hora de cierre... toma la que coincida con Symbol() y tenga la última hora de cierre. entonces añade 24 horas y usa eso en una variable para probar la hora actual y abrir la operación cuando alcance la última orden + 24 horas

 

O una forma más sencilla de hacerlo sería simplemente utilizar la función TimeDayOfYear y comprobar la última orden cerrada con símbolo y número mágico coincidentes. Sólo asegúrese de que no es el mismo día del año que hoy.

Mira el archivo de ayuda para ver la definición y el uso de TimeDayOfYear

Saludos

Lux