Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 57

 
FAQ:

¿Qué pasa con las matrices?

Leemos la lista de pedidos en un array bidimensional, la primera dimensión es un magik, la segunda es un beneficio.

ArraySort() - los pedidos están ordenados por magos en el orden, empezamos a sumarlos y mostrarlos.

¡Esto es genial!

¿Qué tenemos en la intersección de las dimensiones?

 

Si leemos directamente las órdenes de la lista, los magos estarán dispersos, es decir, al menos necesitamos conocer los magos, o hacer un bucle dentro del bucle para encontrar un mago en la segunda lista y añadirle un beneficio.

Después de ArraySort() los magos están alineados en orden. simplemente recorremos el array y sumamos la segunda dimensión (beneficio) tan pronto como un mago de la primera dimensión haya cambiado - emitimos una variable de texto :

int premagic = arr[0][0];
string text = "";
for(i=0;i=ArrayRange(arr,0);i++){
   if(arr[i][0]==premagic){
       profit += arr[i][1];
   }else{
       text = text + "MagickNum :"+premagic+"  Profit :"+profit+"\n";
       profit   = arr[i][1];
       premagic = arr[i][0];
   }
}
Comment(text);
 
borilunad:
¡Comprueba exactamente la historia semanal del W1!

Gracias, sólo descargo el historial al instalar y compruebo específicamente en el período donde definitivamente no hay agujeros - las velas están en el gráfico.
 
¡Ayuda para un novato! No puedo resolver un problema.
Un Asesor Experto abre hasta 100 órdenes, puts sl y thr. Cuando se cruza un determinado nivel de señal, la orden se modifica sl. y thr. Cada orden tiene su propio nivel de señal, sl y thr. Sl y thr para su posterior modificación se calcula en el momento de la apertura del pedido.
No se me ocurre ningún algoritmo. ¡¡Por favor, dame un empujón!!
 
¿Cómo puedo hacer que mi EA recuerde que no se pueden abrir más de dos órdenes en una vela concreta?
 
MauzerVII:
¿Cómo hacer que el EA recuerde que no se pueden abrir más de dos órdenes en una determinada vela?


Si desde el mercado, recuerda la hora de apertura de una orden y establece el número de órdenes abiertas a una.

Cuando se abre la siguiente orden, comprueba el tiempo, si no ha pasado la barra, entonces incrementa el número de órdenes abiertas.

El resto de la lógica es bastante fácil de construir.

 

otra pregunta :

Cerramos un lote de pedidos, unos 30 pedidos por ciclo

¿Cómo comprobar si todas las órdenes están cerradas o hacer un bucle que machaque al broker hasta que deje de recotizar?

Acabo de esbozar lo primero que se me ha ocurrido, ¿es posible hacer esto?

void close (int m)
{
for( int f=OrdersTotal()-1; f>=0; f--)
if ( OrderSelect(f,SELECT_BY_POS)    )
if ( OrderSymbol()==Symbol()         )
if ( OrderMagicNumber()==m           )
if (OrderType()==0)
if (OrderClose(OrderTicket(),OrderLots(),Bid,Slip,Red)==true) continue;
else f++;
if (OrderType()==1)
if (OrderClose(OrderTicket(),OrderLots(),Ask,Slip,Red)==true) continue;
else f++;
}
 
nachalo = H;
finich = D;

if (DayOfWeek() == 1 && Hour()==H && Minute()<=00)
      {
      Opn_B = true;
      }
if(DayOfWeek() == 2 && Hour()==D && Minute()<=01)
      {                                           
      Cls_B=true;                 
      }

Al probar el EA por días de la semana y horas, escribió el siguiente código:

Las variables "H", "D" salen a:

extern int  H = 18;  
extern int  D =19;
en las propiedades del EA establezco los valores de inicio de las variables de 0 a 23, paso 1.
Todos los resultados se rechazan por no ser significativos. Otros EAs han establecido el rango de prueba pero este no funciona.
Por favor, dígame qué pasa.
 
nachalo = H;
finich = D;

if (DayOfWeek() == 1 && Hour()==H && Minute()<=0)
      {
      Opn_B = true;
      }
if(DayOfWeek() == 2 && Hour()==D && Minute()<=1)
      {                                           
      Cls_B=true;                 
      }
 
VOLDEMAR:


Gracias, he tardado tres días en calcularlo manualmente.

Lo único molesto es que el porcentaje de operaciones rentables no es visible en la optimización, ¿o hay alguna forma de mostrarlo?