¿Cómo codificar? - página 222

 

Gracias Roger09

Originalmente publicado por ForExTyro

Estoy intentando añadir código a un EA que restrinja el número de operaciones que hace por día a sólo dos(2). Sólo UNA operación larga y UNA corta por día. Este es el código que tengo hasta ahora, pero en una prueba posterior no está funcionando.

¿Me pueden ayudar?

Respuesta publicada por Roger09

Reemplazar

datetime LongTrade=0;

datetime ShortTrade=0;

a

static datetime LongTrade=0;

static datetime ShortTrade=0;

¿Ya está?

¡Eso es todo!

GRACIAS Roger09

 

Hola,

Este es un buen ejemplo de cómo se ve descompilado EA & Ind.

b.

 
Kalenzo:
Ahí lo tienes, disfrútalo.

Hola Kalenzo,

Necesito tu ayuda de nuevo, ¿puedes codificar para mí una información adicional

información adicional como lo hiciste antes, me gustaría poner la información de la Barra LSMA.

Cuando la barra LSMA Woodie es verde, muestra la palabra LONG (color verde),

y cuando la barra de madera es roja, muestra la palabra corta (color rojo).

ver el pic. adjunto..

http://i98.photobucket.com/albums/l277/compobey/CCIinfo.jpg

Saludos,

compobey

 

Solicitud de ayuda

Hola a todos

He estado usando un sistema muy simple que hace alrededor de +100 pips por mes.

Me gustaría ponerlo en EA pero soy muy nuevo en la codificación y me siento tan perdido . Tal vez ustedes podrían ayudarme a crear este EA y todos podríamos usarlo.

Por favor, hágamelo saber si usted está interesado y voy a publicar los detalles de lo que la EA tiene que hacer.

Gracias

 

Kalenzo

Kalenzo:
Ahí lo tienes, disfrútalo.

Hola de nuevo Kalenzo,

He estado observando el indi que me has arreglado.

En general funciona bien, pero de vez en cuando sucede que pone el color equivocado en la línea.

Como se puede ver en la imagen, hay lugares donde debería ser Tomate o Rojo, pero resulta DodgerAzul en su lugar.

Las reglas eran;

Cuando el valor (al cierre de la barra) > que el cierre anterior de la barra (subiendo) =

DodgerBlue cuando el valor es < 0

Azul cuando el valor es > 0

Cuando el valor (al cierre de la barra < que el cierre anterior de la barra (bajando) =

Tomate cuando el valor es > 0

Rojo cuando el valor es < 0

He marcado con flechas rojas donde los errores precisos.

Puedes echar un vistazo al código, por favor.

He intentado explicarlo lo mejor que he podido, pero hazme saber si necesitas más información.

Gracias.

Archivos adjuntos:
 
Klondyke:
Hola de nuevo Kalenzo,

He estado observando el indi que me has arreglado.

Generalmente funciona bien, pero de vez en cuando sucede que pone el color equivocado en la línea.

Como se puede ver en la imagen, hay lugares donde debería ser Tomate o Rojo, pero resulta DodgerAzul en su lugar.

Las reglas eran;

Cuando el valor (al cierre de la barra) > que el cierre anterior de la barra (subiendo) =

DodgerBlue cuando el valor es < 0

Azul cuando el valor es > 0

Cuando el valor (al cierre de la barra < que el cierre anterior de la barra (bajando) =

Tomate cuando el valor es > 0

Rojo cuando el valor es < 0

He marcado con flechas rojas donde los errores precisos.

Puedes echar un vistazo al código, por favor.

He intentado explicarlo lo mejor que he podido, pero hazme saber si necesitas más información.

Gracias.

Lo siento, he olvidado el archivo.

Archivos adjuntos:
 

¿Cómo ir a una etiqueta de línea?

¿Cómo puedo ir a una etiqueta de línea en Metatrader 4

algo así como

if(a > b) goto fred

if(c > d) goto jim

:fred

haz algo más de código aquí

:jim

haz algo de código aquí

Tengo una respuesta, pero necesito un poco más de aclaración

Puedes escribir algo de código en functons en su lugar. Algo como esto

if(a > b) ReturnValue = fred();

if(c > d) ReturnValue = jim();

int fred()

{

haz algo más de código aquí

}

int jim()

{

haz algo de código aquí

}

¿qué es ReturnValue? no es una función, ¿cómo lo escribo?

 

En el ejemplo que has puesto 'ReturnValue' es sólo una variable. Podría haberse llamado de cualquier manera, pero quien te dio ese código utilizó 'ReturnValue'.

Para ser honesto ese formato no tiene mucho sentido a menos que tengas la intención de hacer algo con el valor que se devuelve de las dos funciones. No puedes usar el concepto de goto como en VB (o era Basic - ¡es tan antiguo que no lo recuerdo!).

Sólo algo como...

if(a>b)DoThisFunction();

if(a<b)DoAnotherFunction();

Entonces, lo que pretendías hacer cuando el programa hubiera saltado usando goto, lo harías en cambio en las dos funciones respectivas.

Espero que tenga algún sentido.

Saludos

Lux

 
luxinterior:
En el ejemplo que has puesto 'ReturnValue' es sólo una variable. Podría haberse llamado de cualquier manera, pero quien te dio ese código utilizó 'ReturnValue'.

Para ser honesto, ese formato no tiene mucho sentido a menos que tengas la intención de hacer algo con el valor que se devuelve de las dos funciones. No puedes usar el concepto de goto como en VB (o era Basic - ¡es tan lejano que no lo recuerdo!).

Sólo algo como...

if(a>b)DoThisFunction();

if(a<b)DoAnotherFunction();

Entonces, lo que pretendías hacer cuando el programa hubiera saltado usando goto, lo harías en cambio en las dos funciones respectivas.

Espero que tenga algún sentido.

Saludos

Lux

Gracias por la respuesta, lo que estoy tratando de hacer es que el EA elija entre dos condiciones, pero que elija la que cambie primero.

Así que en tu ejemplo

if(a>b)DoThisFunction();

if(a<b)DoAnotherFunction();

necesita algo más que if do this, o if do that, porque la otra condición es si c & d han cambiado antes que a & b si es así haz esto e ignora a & b. Por eso estaba intentando ir a una línea porque no puedo conseguir que elija con if then else

porque en realidad tengo

if(a>b && c>d) // hacer una compra aquí

else

if(a>b && c<d) // hacer una compra cercana aquí

else

invertir la venta o cerrar la venta

pero si c & d han cambiado primero, antes que a & b, entonces ignora el código anterior y haz las pruebas anteriores en c & d en su lugar

Lo siento es tan claro como el barro

 

Trabajar con archivos CSV -- Me estoy volviendo loco

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 podáis entender mi pregunta y me deis un consejo!!!

Razón de la queja: