[ARCHIVO]Cualquier pregunta de novato, para no saturar el foro. Profesionales, no lo dejéis pasar. No puedo ir a ningún sitio sin ti - 5. - página 38

 
keep87:

Es un poco más sencillo, trabajaremos dentro de la función de inicio.

En primer lugar, crearemos una variable en la que escribiremos la dirección de la última vela.

int Candle=-1;

Lo rellenaremos con algunos valores, uno de los cuales indicará una vela alcista, el otro indicará una bajista. si -1, entonces no es nada (o bien no fue posible determinar la dirección, o no tiene dirección close=open).

Valor que propongo utilizar por analogía con una orden comercial 0 - compra, 1 - venta;

además escribimos:

if(Close[1]>Open[1]) Candle=0; else
if(Close[1]<Open[1] Vela=1;

ahora tenemos una dirección definida y podemos usarla directamente en la función OrderSend( string symbol, int cmd, ...el resto de la basura...);

if(Candle!=-1) OrderSend( Symbol(),Candle, ...otras cosas...);

O siguiendo tu analogía:

if(Candle==0) OpenBuy();
if(Vela==1) OpenSell();

Sí, de hecho, es lo mismo que la función que he escrito aquí, compárala con lo que devuelve. No quiero escribir todo el código en el inicio, estoy aprendiendo a poner todo por separado. Y entiendo la lógica, gracias.
 
hoz:

Así es como lo uso de vez en cuando. Mira, ahora las funciones se ven así:

Estoy leyendo en el registro:

Así que inicialmente desde el precio de compra hasta el stop había una diferencia de 1,3204 - 1,3194 = 0,001 puntos.

Además, 1,3210 - 1,3201 = 0,009 puntos

Y por alguna razón en el segundo caso, el stop estaba más cerca del precio de entrada, ¡pero no había ningún error! Lo pensé y no lo entendí.

Más tarde corregí el error de otra manera. Ya hay condiciones en el código:

if(precio > Ask) && if(precio < Bid) respectivamente para comprar y vender. ¿O había otra variante? Ahora no tenemos más errores. Pero, sin embargo, me gustaría escuchar la opinión de un programador más experimentado.


Eso es lo que escribí:

El segundo error es que no se comprueba dónde se pone la orden.

 
r772ra:

O tal vez sí:

if(NumberOfPositions("EURUSD")==0 && NumberOfPositions()<10)
Y aquí está la función


Eso está más cerca de la verdad. Muchas gracias, lo probaré.
 

aconsejar si se pueden acoplar variables en mql4, es decir, dos variables int y necesitan ser acopladas, una variable tiene el número 59 y la otra 17, necesito obtener 5917 ?

 
pasha5282:

aconsejar si es posible acoplar variables en mql4, es decir, dos variables int y necesitan ser acopladas, una variable tiene el número 59 y la otra 17, necesito obtener 5917 ?


HMM. No entendí lo que querías decir antes de leerlo todo :) ¿Qué tipo de datos quiere en la salida?

Resulta que la forma en que veo la solución a esta situación es la siguiente:

1. Convertir int 59 y 17 a tipo cadena

2. Luego concatenamos estas cadenas.

3. los convertimos de nuevo a tipo int

Tal vez haya otras variantes, pero por el momento no puedo pensar en otra cosa.

 
pasha5282:

aconsejar si se pueden acoplar variables en mql4, es decir, dos variables int y necesitan ser acopladas, una variable tiene el número 59 y la otra 17, necesito obtener 5917 ?

5917= (StrToInteger(DoubleToStr(59.123,0) + DoubleToStr(17.456,0))
xxx
 
en php se pueden acoplar variables, es decir, $uno = 59; $dos = 17; $decisión = $uno.$dos; así no sumamos dos números, los "pegamos" para obtener 5917
 
pasha5282:
en php se pueden acoplar variables, es decir, $uno = 59; $dos = 17; $decisión = $uno.$dos; así no sumamos dos números, los "pegamos" para obtener 5917

mql4 no es un lenguaje muy potente, así que tengo que conformarme con lo que tengo...
 
hoz:

mql4 no es un lenguaje muy potente, así que tengo que conformarme con lo que tengo...

Tendré que lidiar con ello. Creo que puedo haber olvidado cosas tan elementales, pero cuando he ido a la ayuda, no las he encontrado, quizás los desarrolladores no han previsto esa opción, o tengo que buscarla, de todas formas, gracias por las respuestas.
 
pasha5282:

Voy a llegar al fondo de esto. Gracias por al menos una respuesta, pensaba que era tonto y no recordaba cosas tan elementales, y cuando he ido a la ayuda no la he encontrado, al parecer los desarrolladores no han facilitado dicha opción. o hay que buscar más, en cualquier caso, gracias por las respuestas.

Para ser honesto, ni siquiera sé por qué esto puede ser necesario. Al parecer, los desarrolladores tampoco pensaron en ello.