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

 
Aleksandr Lishchenko:

Sólo estoy aprendiendo.

No seas demasiado duro. ;)

¿Aprendes a descargar códigos de la red, adjuntarlos a tu cuenta y ganar dinero en la afiliación? No tienes que aprenderlo, es bastante fácil de hacer.

 
Vitaly Muzichenko:

¿Aprende a descargar códigos de la web, vincularlos a su cuenta y ganar dinero de su afiliación? No necesitas aprender a hacerlo, es bastante fácil.

Quiero vincular el Asesor Experto de mi autor (comisionado) a mi cuenta y colocarlo en un servidor dudoso, lo que no hay que entender =)

Os pido ayuda, por favor, decidme qué tengo que publicar.
 
Aleksandr Lishchenko:

Quiero vincular mi EA de autor (por encargo) a una cuenta y alojarla en un servidor dudoso, qué no se entiende =)

Por lo tanto, le pido su ayuda, por favor avise lo que necesita para publicar.

Tienes la respuesta.

Pero también se puede insertar al final deOnInit

int OnInit()
  {
//---
  // Здесь уже есть код
//---
 // Проверка счёта
  if(AccountInfoInteger(ACCOUNT_LOGIN) != 123456 ) return(INIT_FAILED);
//---
 return(INIT_SUCCEEDED);
  }
 
Vitaly Muzichenko:

Se le ha dicho

Pero también se puede insertar al final deOnInit

¿Está seguro de que la persona no volverá a copiar sin pensar?

if(AccountInfoInteger(ACCOUNT_LOGIN) != 123456 ) return(INIT_FAILED);
 
Ihor Herasko:

Eso no es del todo correcto. Lo primero que hay que hacer es calcular el valor correcto más cercano (basado en un valor dado), y luego comprobar la diferencia entre los valores. Si es cero (o no más que DBL_EPSILON), entonces todo está bien:

La función VolumeCast se puede tomar desde aquí.

Muchas gracias

 
Ihor Herasko:

Eso no es del todo correcto. Lo primero que hay que hacer es calcular el valor correcto más cercano (basado en un valor dado), y luego comprobar la diferencia entre los valores. Si es cero (o no más que DBL_EPSILON), entonces todo está bien:

La función VolumeCast se puede tomar desde aquí.

Gracias. Yo sólo afinaría un poco más elVolumeCast, porque si ponemos valores bastante habituales, por ejemplo, volumen de lote igual a 0,01 y lote mínimo igual a 0,01 mientras que el volumen especificado por el usuario es correcto, como 0,03, elVolumeCast aumentará el volumen a 0,04. Yo lo haría así

double VolumeCast(double volume, double volumeMin, double volumeMax, double volumeStep)
{
   if (volumeStep == 0.0)
      return volumeMin;
   if(volumeStep!=volumeMin)
      return (MathMin(MathFloor(volume / volumeStep) * volumeStep + volumeMin, volumeMax));
   else
      return (MathMin(MathFloor(volume / volumeStep) * volumeStep, volumeMax));
}
 
Aleksandr Teleguz:

Gracias. Sólo que me gustaría afinar un poco más elVolumeCast, porque si fijamos valores bastante usuales, por ejemplo volumen de lote igual a 0,01 y lote mínimo igual a 0,01 y el valor de volumen fijado por el usuario es correcto, por ejemplo 0,03, entoncesel VolumeCast aumentará el volumen a 0,04:

Sí, correcto.

 
¿Puede decirme si es posible escribir un código que funcione tanto en MT5 como en MT4?
 
Roman Sharanov:
¿Puedes decirme si es posible escribir un código que funcione en MT5 y MT4?

Por ejemplo

#ifdef __MQL5__
        int totalPsitions = PositionsTotal();
#else
        int totalPsitions = OrdersTotal();
#endif
 
Konstantin Nikitin:

Por ejemplo, así

y obtener los datos de los indicadores, el gráfico...