Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 1103

 
MIKHAIL VINOGRADOV:

¡Saludos!

No puedo cerrar órdenes opuestas de diferentes lotes usando CTrade.PositionCloseBy(ticket1,ticket2).

ResultRetCode() - Obtengo el error 10035.

Por favor, indíqueme cuál es la razón.

10035

TRADE_RETCODE_INVALID_ORDER

Tipo de pedido inválido o prohibido


Vigila bien lo que haces ahí.

 

¿He entendido bien que la función SetIndexBuffer es necesaria para vincular el búfer o los búferes a una construcción gráfica específica, y para NUMERAR EL ACCESO A ELLOS A TRAVÉS DE iCustom?

Así, por ejemplo, si creo un array para los precios altos, basta con declararlo sin vincularlo mediante SetIndexBuffer y en ...

#property indicator_buffers

... ... se puede ignorar.

Además, con SetIndexBuffer sólo se pueden vincular arrays de tipo double, mientras que datetime y otros arrays no.


Es que no entiendo del todo este punto (o lo entendí), y ahora tengo una idea - quiero aclararlo...

 
Alexandr Sokolov:

¿He entendido bien que la función SetIndexBuffer es necesaria para vincular el búfer o los búferes a una construcción gráfica específica, y para NUMERAR EL ACCESO A ELLOS A TRAVÉS DE iCustom?

Así, por ejemplo, si creo un array para los precios altos, basta con declararlo sin vincularlo mediante SetIndexBuffer y en ...

... ... se puede ignorar.

Además, con SetIndexBuffer sólo se pueden vincular arrays de tipo double, mientras que datetime y otros arrays no.


Es que no entiendo del todo este punto (o lo entendí), y ahora tengo una idea - quiero aclararlo...

No es una construcción, es un conjunto de datos. Por lo tanto, no creo que funcione así. Aunque no lo he comprobado.

En cuanto al tipo datetime, puedes escribirlo en double y aplicarlo por fuerza al leer.

 
Happy:

Buenos días.

Pregunta. En el probador, en la interfaz del lado del día (cuando pasa la línea del día siguiente) el programa debería haber colocado una orden pendiente. La orden pendiente que ya estaba ahí y el precio la tocó, se abrió pero la instrucción de abrir otraorden pendiente fue ignorada por el sistema por alguna razón. ¿Puede ocurrir lo mismo en una cuenta real en la que las instrucciones del robot simplemente se ignoran y, por tanto, no se realiza la acción requerida?


Y otra pregunta. Estoy ejecutando un Probador de Estrategias pero me confundió mucho el hecho de que va una semana más o menos en la visualización y luego muestra el siguiente mensaje

177564 eventos de tick (447 barras, 7888506 estados de barra) procesados en 0:17:42.694 (tiempo total 0:17:48.217)

177564 eventos de tick (447 barras, 7888506 estados de barra) procesados en 0:17:42.694 (tiempo total 0:17:48.217)

No lo entiendo, ¿está demasiado ocupado para seguir haciendo pruebas? ¿O es tan cuidadoso y se preocupa por los recursos de mi ordenador? No veo ningún mensaje de error. Simplemente se termina por sí mismo. Aunque he puesto la fecha no de 7 días, sino de 7 meses. Me gustaría ver todo el recorrido de la prueba de principio a fin.

¿Qué religión no le permite hacer pruebas visuales durante, por ejemplo, un año o varios años? Y puede ver visualmente cómo funcionó su programa durante el año anterior, por ejemplo.


Y una pregunta más. (Aunque puede no tener respuesta)) ) ¿Cómo puede suceder que el probador 2 vueltas trabajando como debería, y justo antes de la inscripción antes mencionada en el día simplemente ignora todas las instrucciones. Cómo es posible que el programa haya funcionado correctamente durante varias rondas (abrió órdenes y luego las cerró), y luego, pum, lo ignora todo. No se abre ni se cierra. ¿Se debe al final de un periodo de pruebas o hay otras razones?

 
Los gráficos de brent y wti en la pantalla principal de la web de ftm son diferentes de las propias cotizaciones en mi cuenta personal. ¿Alguna idea? Estoy seguro de que la gestión de los gráficos, en particular los del aceite, se hace dentro de la "cocina" de ftm. No hay ninguna explicación. La prueba está en la foto al mismo tiempo los precios en mi gabinete personal difieren en sentido contrario a los reales y siempre son menos para el comerciante. Huele a estafa...
 
Yevhenii Levchenko:

........... Pero en un momento dado tiene que determinar si cerró su propia operación o si fue otra persona la que entró y la cerró....

Escriba sin ambigüedades, ¿está preguntando cómo prescribir o sobre el uso de un EA sin editar

 
¿cómo puedo manejar el error 4403?
 

  • ¡Hola!

    Quería utilizar el indicador A/D para mi EA, pero no en su forma pura, su media móvil.

    Por eso me inventé las funciones:

    //+------------------------------------------------------------------+

    //| Función A/D |

    //+------------------------------------------------------------------+

    double A_D(ENUM_TIMEFRAMES tf, int shift)

    {

    doble res=0;



    res=iAD(NULL,tf, shift);



    devolver res;





    }



    //+------------------------------------------------------------------+

    //| Función A/D|

    //+------------------------------------------------------------------+

    double A_D_moving(ENUM_TIMEFRAMES tf, int period)

    {

    doble res=0;

    doble a[];





    for(int i=período; i>=1; i--)

    {

    a[i]= A_D(tf, i);

    }



    for(int i=período; i>=1; i--)

    {

    res=iMAOnArray(a,0,period,0,MODE_SMA,0);

    }



    devolver res;





    }

    Pero durante las pruebas, se hizo evidente que A_D_moving() tiene un error en esta revisión, ya que hay un error crítico al ejecutar la prueba.

    Por favor, quién puede ayudar:

    ¿Cómo de correcto está escrito A_D_moving()? Si hay errores, por favor, indíquelo...

    Gracias.


 
AurelianoV:

Por favor, introduzca el código correctamente:


 
Artyom Trishkin:

Por favor, introduzca el código correctamente:


Lo siento1

/+------------------------------------------------------------------+
//|  Функция A/D                       |
//+------------------------------------------------------------------+
double A_D(ENUM_TIMEFRAMES tf, int shift)
  {
   double res=0;
   res=iAD(NULL,tf, shift);
   return res;
  }

//+------------------------------------------------------------------+
//|  Функция A/D                       |
//+------------------------------------------------------------------+
double A_D_moving(ENUM_TIMEFRAMES tf, int period)
  {
   double res=0;
   double a[];
   
   for(int i=period; i>=1; i--)
     {
      a[i]= A_D(tf, i);
     }
   for(int i=period; i>=1; i--)
     {
      res=iMAOnArray(a,0,period,0,MODE_SMA,0);
     }
   return res;
  }


lo siento