MMA_Breakout_strategy_volume I (sin MM ni MF) - codificado por WhooDoo22 - página 2

 
De nuevo, hay múltiples formas de seleccionar órdenes, por ejemplo, podría utilizar booleanos para comprobar si una orden está abierta o cerrada. Ejemplo: Se envía la orden, cinco booleanos se ponen a true. Cuando los promedios móviles comienzan a cruzarse, el booleano se pondrá en falso. Si ciertas variables booleanas son verdaderas y ciertas medias móviles se cruzan, ciertas variables booleanas se declaran falsas y un determinado lote de la orden se cierra. Hay otras formas, pero no he pensado mucho en ello. Simplemente deseo proporcionarle una solución. Espero que sea satisfactoria. Creo que encontraría una forma más sencilla de hacerlo, pero de nuevo, no he pensado mucho en ello. Sigue siendo importante, pero no es tan difícil de codificar como MF o MM en esta estrategia. Gracias.
 
Si tengo una cuenta real con la que he operado antes y no hay órdenes reales abiertas actualmente en ella... si ejecuto su EA en ella en el EURUSD M30 ¿qué sucederá? ¿tomará operaciones?
 

Por cierto, ejecuté tu EA en el Probador de Estrategias y terminé con un archivo de registro de 11GB de errores... por ejemplo...

23:08:49 2007.05.06 22:00 MMA_Breakout_strategy_volumeaIk_withouteMMjoreMF_u-rcodedmbywWhooDoo22 EURUSD,M30: OrderModify error 1

23:08:49 2007.05.06 22:00 MMA_Breakout_strategy_volumeaIk_withouteMMjoreMF_u-rcodedmbywWhooDoo22 EURUSD,M30: close #6 buy 0.01 EURUSD at 1.36028 sl: 1.31028 at price 1.35960

23:08:49 2007.05.06 22:01 MMA_Breakout_strategy_volumeaIk_withouteMMjoreMF_u-rcodedmbywWhooDoo22 EURUSD,M30: ticket 6 desconocido para la función OrderModify

no se puede modificar el ticket #6 ya que acaba de ser cerrado.......
 
WhooDoo22:
Creo que hay múltiples formas de seleccionar pedidos, todos los métodos de selección de pedidos deberían utilizar la función OrderSelect(). Dicho esto, no veo por qué esto fallaría porque el EA realiza claramente la función OrderClose() para todas las órdenes sin error en el probador de estrategias.

Su orderClose claramente no está funcionando. Si hubieras comprobado tus códigos de devolución lo sabrías. Su orderSelect no funciona, pero no lo comprueba.

Si I no es un número de ticket, su orderSelect falla y todo lo demás.

si I es un número de ticket, el siguiente número de ticket NO es i+1 (excepto en el probador)

   OrderSelect(i,SELECT_BY_TICKET,MODE_TRADES);
   if(OrderType()==OP_BUY)                                                                     {
   if(OrderLots()==0.04)                                                                       {
   if(OrdersTotal()>0)                                                                         {
   if(iMA(NULL,0,1,0,MODE_SMMA,PRICE_CLOSE,1)<(iMA(NULL,0,25,0,MODE_SMMA,PRICE_CLOSE,1)))      {  
     {
      OrderClose(i,0.01,Bid,30,CLR_NONE); 
      i++;
     }
     }}}}
     
   OrderSelect(i,SELECT_BY_TICKET,MODE_TRADES);
   if(OrderType()==OP_BUY)                                                                     {
   if(OrderLots()==0.03)                                                                       {
   if(OrdersTotal()>0)                                                                         {
   if(iMA(NULL,0,1,0,MODE_SMMA,PRICE_CLOSE,1)<(iMA(NULL,0,50,0,MODE_SMMA,PRICE_CLOSE,1)))      {  
     {
      OrderClose(i,0.01,Bid,30,CLR_NONE); 
      i++;
     }
     }}}}
     
   OrderSelect(i,SELECT_BY_TICKET,MODE_TRADES);
   if(OrderType()==OP_BUY)                                                                     {
   if(OrderLots()==0.02)                                                                       {
   if(OrdersTotal()>0)                                                                         {
   if(iMA(NULL,0,1,0,MODE_SMMA,PRICE_CLOSE,1)<(iMA(NULL,0,100,0,MODE_SMMA,PRICE_CLOSE,1)))     {  
     {
      OrderClose(i,0.01,Bid,30,CLR_NONE); 
      i++;
     }
 

Simon,

Si tengo una cuenta Live...

RE: ¡No recomiendo que ejecute el volumen I en el balance de una cuenta real! Por supuesto, la elección es tuya, pero en tu nombre, no te recomiendo encarecidamente que lo ejecutes en una cuenta real hasta que su evolución del volumen I al II se haya completado. El volumen I está todavía en su desarrollo y no debe ser ejecutado hasta que haya sido completamente codificado. No estoy seguro de lo que ocurriría porque no lo he probado yo mismo en una cuenta real. Entiendo su falta de finalización y he optado por satisfacer sus demandas esenciales antes de iniciar las pruebas en una cuenta LIVE.


Por cierto,..

RE: Creo que entiendo lo que sucede de entrada en este error... Este error refleja un error dentro del bloque de código "EMERGENCY SL". Nunca centré mi poder en esto, ya que no es tan difícil de codificar. Lo codifiqué parcialmente y no completé su maduración. El bloque de código "EMERGENCY SL" carece de una adaptación importante. Estoy seguro de que si eliminara completamente los bloques de código "EMERGENCY SL" de VENTA y COMPRA, no recibiría la lista de errores de 11 gigas. La razón por la que son 11 gigas para empezar es porque creo que es el mismo error que se repite una y otra vez a lo largo de la historia que se está probando.

Gracias.


William,

Diré que no tengo tanta historia discutiendo código contigo como Simon, pero deseo seguir adelante con tu post (¡gracias por tu post! Es bienvenido.).

¿Qué es lo que deseas ver en el Volumen I/II?

Estoy realizando estrictamente las pruebas y añadiendo el código esencial para las pruebas con el fin de garantizar su valor comercial. A continuación, afinaré lo que queda de cuestiones de código para garantizar un comercio seguro en LIVE/DEMO.

Gracias.

 
RaptorUK:
Si tengo una cuenta real con la que he operado antes y no hay órdenes abiertas en vivo actualmente en ella... si ejecuto tu EA en ella en EURUSD M30 ¿qué sucederá? ¿tomará operaciones?

WhooDoo22:

Simón,

Si tengo una cuenta real...

RE: ¡No le recomiendo que ejecute el volumen I en una cuenta real ! Por supuesto, la elección es suya, pero en su nombre, le recomiendo encarecidamente que no lo ejecute en una cuenta real hasta que se haya completado su evolución del volumen I al II. El volumen I está todavía en su desarrollo y no debe ser ejecutado hasta que haya sido completamente codificado. No estoy seguro de lo que ocurriría porque no lo he probado yo mismo en una cuenta real. Entiendo su falta de finalización y he optado por satisfacer sus demandas esenciales antes de iniciar las pruebas en una cuenta LIVE.


El punto que estaba tratando de hacer y te animo a mirar es que si hay cualquier historia de la cuenta de estas líneas en su código evitará que cualquier comercio que se toma. ...

   if(OrdersHistoryTotal()==0)                                                                 
      {
      if(OrdersTotal()<MaxOrders)  
   if(OrdersHistoryTotal()==0)                                                                 
      {
      if(OrdersTotal()<MaxOrders)  


Los otros lugares donde se coloca una orden usando OrderSend() es donde hay una orden existente abierta . . . así que si hay alguna orden antigua en el historial su EA no colocará ninguna operación nunca . . . si hubiera probado su código en Demo o en Vivo probablemente habría descubierto esto.

 

Simon,

El punto que estaba tratando de...

RE: Entendido. Crees que es posible utilizar la función OrderSelect () para buscar una variable única de ticket, entonces debajo estará el bloque de código que contiene el "if (OrdersHistoryTotal()==0){". ¿Esto no funcionaría PORQUE la función OrderSelect() selecciona la variable única del ticket "ticket" y la función OrdersHistoryTotal() está buscando el historial de operaciones de la variable única del ticket solamente, debido a la función OrderSelect() anterior. La declaración "if" sólo busca órdenes en el historial para una variable específica, la variable única del ticket.

//*************************
// BUY ORDER OPEN SECTION ;
//*************************

   OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES);
   if(OrdersHistoryTotal()==0)                                                                 {
   if(OrdersTotal()<MaxOrders)                                                                 {
   if(iMA(NULL,0,1,0,MODE_SMMA,PRICE_CLOSE,2)<(iMA(NULL,0,200,0,MODE_SMMA,PRICE_CLOSE,2)))     { 
   if(iMA(NULL,0,1,0,MODE_SMMA,PRICE_CLOSE,1)>(iMA(NULL,0,200,0,MODE_SMMA,PRICE_CLOSE,1)))     { 
     {
      ticket=OrderSend(Symbol(),OP_BUY,0.05,Ask,30,0,0,"",0,0,Blue);    
      i++;
     }
     }}}}

Gracias.

 
WhooDoo22:

Simón,

El punto que estaba tratando de...

RE: Entendido. ¿Crees que es posible utilizar la función OrderSelect() para buscar una variable de ticket único, debajo estará el bloque de código que contiene el "if OrdersHistoryTotal()==0{". ¿No funcionaría esto PORQUE la función OrdersHistoryTotal() está buscando sólo las operaciones anteriores de la variable de ticket único? La declaración "if" sólo busca órdenes en el historial para una variable específica, la variable de ticket único.

Gracias.

Creo que te estás confundiendo un poco... dices"¿No funcionaría esto PORQUE la función OrdersHistoryTotal() está buscando las operaciones anteriores de la variable de ticket único solamente?" esto es incorrecto, revisa la Documentación, OrderHistoryTotal() hace esto....

"Devuelve el número de órdenes cerradas en el historial de la cuenta cargada en el terminal. El tamaño de la lista del historial depende de la configuración actual de la pestaña "Historial de cuentas" del terminal."


no tiene nada que ver con ningún número de ticket o variables de ticket o Números Mágicos o cualquier otra cosa... devuelve el número total de operaciones en el Historial... el único factor limitante es lo que usted eligió para mostrar en la pestaña de Historial de la cuenta... Todo el historial, los últimos 3 meses, el último mes o un período personalizado.
 
Otro punto... si he estado usando su EA y tiene una operación colocada... entonces necesito apagar mi PC por un par de minutos, cuando inicio MT4 de nuevo y su EA se inicia nunca encontrará la Orden abierta... . todas sus llamadas a OrderSelect() se seleccionan por ticket. . . ya sea usando su variable ticket o su variablei, ninguna de las cuales tiene forma de mantener el número de ticket de mi orden abierta.
 

Simon,

creo que te estás confundiendo un poco...

RE: El volumen II debe iniciar el proceso de envío de órdenes basado en una condición. Una vez enviada la primera orden (basada en la condición), la función OrderClose() bloquea la ejecución de todas las operaciones futuras. Por favor, trate de pensar en esto como un ciclo. Consigue que la bola ruede basándose en la condición, entonces el ciclo se inicia una vez que la primera orden (orden de rodillo de bola) se ha cerrado. El ciclo continúa haciendo números y comprobando las condiciones activas HASTA que se cumplan las condiciones futuras.

Gracias

Razón de la queja: