[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 87

 
sergeev:

713
borilunad 15.01.2013 12:10

Podrías resolver un misterio: ¿Por qué cuando inserté esta función || isCloseLastPosByTake() == True || el experto en el probador empezó a ralentizar mucho, ¡por 10! Esta es una de las 4 condiciones mutuamente excluyentes, por lo que no puedo utilizar la cadena if como en las condiciones sumadas para que el código se ejecute más rápido. ¿Qué puede aconsejarme? Gracias de antemano por sus consejos.

Esa función recorre las órdenes para encontrar el último cierre en el valor de toma. Rehacer esta función para acelerarla. La función de Kim es universal, lo que significa que puedes deshacerte de muchas cosas innecesarias. De nuevo, todo depende de la lógica de su Asesor Experto.
 

¿Pueden decirme cómo abrir una orden de compra? Condiciones de la orden de ventaif(OrdersTotal()==0&& ma0<ma1 && ma1<ma2). Entiendo que hay que usarun interruptor. ¿Qué debería escribir en lugar de(x,a,b)?

if(PedidosTotal()==0)

switch(x)case'a':case'b':

Gracias de antemano.


 
artmedia70:
Esa función recorre las órdenes para encontrar la última cerrada en la toma. Rehacer esta función para acelerarla. Todos son universales en el programa de Kim, lo que significa que se pueden eliminar muchas cosas innecesarias de ellos. De nuevo, todo depende de la lógica de su Asesor Experto.
¡Muchas gracias! Estaba pensando que podría usar algún operador, pero no pasan por casos con "o" para una misma acción.
 
KoOr:

¿Pueden decirme cómo abrir una orden de compra? Condiciones de la orden de ventaif(OrdersTotal()==0&& ma0<ma1 && ma1<ma2). Entiendo que debemos usarun interruptor. ¿Qué debería escribir en lugar de(x,a,b)?

if(PedidosTotal()==0)

switch(x)case'a':case'b':

Gracias de antemano.




if(OrdersTotal()==0)
 {
  if( ma0<ma1 && ma1<ma2) OrderSend(....,OP_SELL,.......);
  if( ma0>ma1 && ma1>ma2) OrderSend(....,OP_BUY,.......);
 }
Sólo se abrirá una orden, no más que eso, ya sea para vender o para comprar.
 

Llevo todo el día luchando por entender por qué la función devuelve -1

int typ(string t, int m)
{  datetime z=0 ; int p=-1,i;
   int d=OrdersHistoryTotal();
   if ( t=="0") t=Symbol(); 
   for( i=0;i<=d;i++){
   if ( OrderSelect(i,SELECT_BY_POS,MODE_HISTORY) ) {                     
   if ( (OrderSymbol() == t || t=="0" ) && ( OrderMagicNumber() == m || m==-1 ) ){
   if ( OrderCloseTime()>z&&OrderType()<=1)  
   {
   z =OrderCloseTime(); 
   p =OrderType();
   }}}}
return(p);
} 

La llamada es así

Comment(typ("0",-1));

¡Todos los pedidos están en el historial !

¿Cuál puede ser el error?

 
VOLDEMAR:

Llevo todo el día luchando por entender por qué la función devuelve -1

La llamada es así

¡Todos los pedidos están en el historial !

¿Cuál puede ser el error?



Comment(typ(Symbol(),-1));
No hay "0", hay "EURUSD", "AUDUSD", etc.
 
Sepulca:


No existe tal símbolo "0", existe "EURUSD", "AUDUSD", etc.

Si no existe tal símbolo if ( t=="0") t=Symbol(); entonces haz que t sea igual a nuestro símbolo al que está unido el EA;
 
pero cómo puede ser que la condición si DayOfWeek( ) ==1 ... ...se cumpliría un martes?
 
VOLDEMAR:

Si no existe tal símbolo if ( t=="0") t=Symbol(); entonces haz que t sea igual a nuestro símbolo al que está unido el EA ;

Lo siento, no me di cuenta... Entonces aquí está:

for( i=0;i<d; i++){

El último número de pedido es OrdersTotal()-1; Pero esa no es la cuestión. Lo he probado, resulta que el historial de órdenes cerradas no es visible en el probador, en la cuenta demo tu código funciona.

 

No tengo lo que has escrito en mi código.

Yo sí.

int d=OrdersHistoryTotal();

y pasa primero...

Bueno, no importa, he encontrado el problema en otra parte del código ....

Razón de la queja: