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

 
nemo811:
Gracias. ¿Es eso lo correcto?

Sí. Creo que sí.
 
No. Sum=0 debe colocarse antes de la sentencia For.
 
6166961669:

No estoy seguro de cuánto costaría pedir un EA, pero estoy seguro de que puedo conseguir que funcione en ambos gráficos.

Ah, y en general es posible hacerlo funcionar una vez para 2 monedas diferentes (simultáneamente en dos gráficos) y abierto en cada una de las diferentes operaciones.

Por ejemplo, ¿compré en la primera y vendí en la segunda?

Y al cierre de una de las transacciones abiertas la opuesta a la transacción ya abierta....

Y puede ser que alguien sabe, tal vez hay un asesor experto, sólo una buena idea vino a mi mente .....


Todo se puede hacer. Por favor, escríbame en persona. Haremos un trato.
 
FOReignEXchange:
Oh, no. La suma=0 debe colocarse antes del operador For.

Todo está funcionando. Gracias. He encontrado otro error en el proceso.

Voy a hacer un poco más de trabajo para ver si aparece algo más, y publicaré el resultado en la base de datos general.

Gracias de nuevo por su ayuda.

 
nemo811:

Todo está funcionando. Gracias. He encontrado otro error en el proceso.

Voy a hacer un poco más de trabajo para ver si aparece algo más, y publicaré el resultado en la base de datos general.

Gracias de nuevo por toda su ayuda.


De nada. De nada.
 

Para: FOReignEXchange

Si en este punto de la ejecución del programa

extern bool Buy = true;

extern double PriceBuy = 0;

int start()
{
if (Buy)
{OrderSend(Symbol(),OP_BUY,0.01,Ask,3,Bid-50*Point,Ask+50*Point);
PriceBuy = ??????????????????;}

return;
}

Voy a especificar la asignación" PriceBuy = ??????????????????;" - "PriceBuy = Ask;"

¿Puedo estar seguro de que a medida que el programa avanza (es decir, la apertura de una nueva orden con las condiciones especificadas)

"PriceBuy" tendrá el mismo valor?

 
OTPOK:

Para: FOReignEXchange

Si en este punto de la ejecución del programa

extern bool Buy = true;

extern double PriceBuy = 0;

int start()
{
if (Buy)
{OrderSend(Symbol(),OP_BUY,0.01,Ask,3,Bid-50*Point,Ask+50*Point);
PriceBuy = ??????????????????;}

return;
}

Voy a especificar la asignación" PriceBuy = ??????????????????;" - "PriceBuy = Ask;"

¿Puedo estar seguro de que a medida que el programa avanza (es decir, la apertura de una nueva orden con las condiciones especificadas)

"PriceBuy" tendrá el mismo valor?


¿Cómo se puede externar double PriceBuy = 0 ? Sólo se especifican las constantes en las variables globales. Si se quita del todo, la respuesta es la siguiente:

Si no se asignan otros valores a la variable PriceBuy en otro lugar, el valor de PriceBuy = Ask; seguirá siendo válido hasta que los cálculos alcancen de nuevo la apertura de la orden. Al llegar allí de nuevo, a la variable se le asignará el nuevo valor PrecioCompra = PrecioPregunta; que corresponderá al precio de venta en el momento de abrir la nueva orden.

¿Cuál es el problema? Está claro.

 
FOReignEXchange:


¿Cómo es extern double PrecioCompra = 0 ? Sólo se especifican números constantes en las variables globales.

Por favor, no confunda a nuestros principiantes.

En primer lugar: la variable PrecioCompra en este caso es una variable externa. Y una variable externa es global por definición.

Segundo: Puedes asignar cualquier valor a una variable externa en el código del EA, pero entonces perderá su significado (ser una variable externa). Y las variables globales se utilizan precisamente para almacenar y cambiar sus valores dentro de todo el código (el ámbito - todo el programa). Lea más.

En tercer lugar, si hay un deslizamiento en la función comercial OrderSend y queremos abrir una orden de compra, la orden no se abrirá necesariamente al precio Ask porque la ejecución de una orden comercial emitida por la función OrderSend lleva algún tiempo y el precio puede alejarse de ese valor.

El código mostrado en la página anterior será más correcto:

abolir:
extern bool Buy = true;
extern double PriceBuy = 0; 
int start() 
{
   if(Buy) 
   {
     int ticket=OrderSend(Symbol(),OP_BUY,0.01,Ask,3,Bid-50*Point,Ask+50*Point);
     if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
        PriceBuy=OrderOpenPrice();
   }
   return(0); 
}
 
MaxZ:

Por lo tanto, el código más correcto es el ya citado en la página anterior, y cito:


"Es la forma en que te gusta. La letra de cada persona es diferente. Tal vez su escritura sea correcta, pero a mí me parece desordenada.

Yo no lo haría así.

En primer lugar, no sé muy bien por qué debo declarar una variable ahí y qué sentido tiene tampoco lo entiendo.

En segundo lugar, la línea PriceBuy = Ask; se encuentra justo después de la función OrderSend. Y por lo que tengo entendido, los cálculos se pasan inmediatamente a la siguiente línea en cuanto esta función termina su ejecución. No creo que el precio Ask pueda cambiar. Intento escribir todo lo más sencillo posible, reduciendo el número de caracteres, si no interfiere con el funcionamiento normal del programa. Puedo asignar un valor de la misma manera que tú, no veo ningún problema. Escribí lo primero y más sencillo que se me ocurrió.

 
Sí, sí. He nombrado mal la variable. Lo reconozco. Tu teoría es buena. Pero su lógica no lo es.
Razón de la queja: