Acerca del arbitraje en freelance

 
Hace unos días hice un encargo en la sección freelance. El desarrollador presentó un código que, en mi opinión, es de muy baja calidad, con centenares de warnings de compilación, variables vacías, y probablemente ofuscadas (quiero pensar que solo están ofuscadas; que no se trata de código decompilado). En definitiva, un mal código cuya lógica ni tan siquiera puedo adivinar. 

He abierto un arbitraje porque quiero que alguien externo revise el código, ya que el autor asegura que lo ha escrito él y que todo está perfecto, y por supuesto no piensa cambiar nada. Mi pregunta es: si he abierto un arbitraje y explicado el motivo, solo debo esperar a que un administrador lo revise, cierto?

Gracias de antemano. Buen fin de semana
 
Enrique Enguix #tiene variables con nombres como: "local_15_in_ko" o "tmp_in_50"

Huele a que utilizaron una página web (builder). 😅

 
Miguel Angel Vico Alba #:

Huele a que utilizaron una página web (builder). 😅

Si, huele como mínimo a eso. Pero es algo que le pregunté antes de iniciar el trabajo, y afirma que él ha escrito todo el código. Sigue afirmándolo. Pero por lo visto sabe inglés, ruso y chino, porque hay de todo en el interior de ese código. Y usa librerías de estas de convertir funciones de MT4 a MT5. En definitiva, es el peor código que he visto hasta la fecha
 

Después de revisar el código que enviaste en privado, creo que, lamentablemente, la respuesta es "todo lo anterior" .

  1. El código utiliza una versión modificada de la biblioteca estándar de MQL5 y parece ser la que modificó Stanislav Korotky para su artículo — Los asesores listos para usar del asistente de MQL5 funcionan en MetaTrader 4 .
  2. El código también depende de otro pequeño archivo de inclusión con comentarios en chino. Entonces, a menos que el codificador sea chino, es probable que sea otro fragmento de código de otra persona. El código principal también tiene una mezcla de comentarios en inglés y chino.
  3. Parte del código principal parece haber sido generado por otro generador o constructor de código, o tal vez incluso obtenido a través de un descompilador MQL4 (ver más abajo), aunque parece diferente al código habitual que he visto.
  4. Hay muchas secciones de código comentadas, que parecen restos de otros trabajos no relacionados, como si intentaran reutilizar el código como un "script kiddy".
  5. También hay una gran cantidad de funciones declaradas que ni siquiera parecen usarse en absoluto.
  6. Después de descontar todos los puntos anteriores, el código restante es ad hoc y completamente sin estructura ni lógica organizada adecuada. Es como el código de un script para niños que no comprende nada del código subyacente y simplemente copia y pega piezas para que haga algo plausible.
  7. Para ser honesto, ni siquiera creo que el código funcione como se requiere o se espera.

(Traducido automáticamente del inglés)

After reviewing the code you sent in private, I believe the answer is sadly "all of the above".

  1. The code is making use of a modified version of the MQL5 Standard Library, and it is seems to be the one modified by Stanislav Korotky for his Article — Ready-made advisors from the MQL5 Wizard work in MetaTrader 4.
  2. The code is also dependant on another small include file with Chinese comments. So unless the coder is Chinese, it is probable yet another piece of code by someone else. The main code too has a mixture of English and Chinese comments.
  3. Part of the main code seems to have been generated by yet another code generator or builder, or maybe even obtained via a MQL4 decompiler (see below), although it seems different to the usual one I have seen.
  4. There are many commented out sections of code, which seem to a remnant of other unrelated jobs, as if trying to reuse code like a "script kiddy".
  5. There are also a great number of declared functions that don't even seem to be used at all.
  6. After discounting all of the above points, the remaining code is ad hoc and completely without structure or proper organised logic. It is just like a script kiddy's code that does not understand any of the underlying code and is just copy/pasting pieces together to make it do something plausible.
  7. To be honest, I don't even believe any of the code will actually work as required or expected.

Статьи

Готовые советники из Мастера MQL5 работают в MetaTrader 4

Stanislav Korotky, 2017.03.09 12:12

В статье предлагается простой эмулятор торгового окружения MetaTrader 5 для MetaTrader 4. С его помощью выполняются перенос и адаптация торговых классов стандартной библиотеки. В результате советники, генерируемые в Мастере MetaTrader 5, могут компилироваться и запускаться без изменений в MetaTrader 4.


 //----- -----
   long        tmp_in_1;
   int         tmp_in_2;
   int        tmp_in_3;
   long        tmp_in_4;
   long        tmp_in_5;
   long        tmp_in_6;
   int        tmp_in_7;
   long        tmp_in_8;
   int        tmp_in_9;
   long        tmp_in_10=7318875;

   local_11_st = "base" ;
   local_10_in = global_iStdDevPeriod2 ;
   local_9_do = global_21_do ;
   local_8_do = global_28_do ;
   local_7_do = global_29_do ;
   //local_6_do = global_30_in ;
   local_5_do = global_31_do ;
   local_4_do = global_33_do ;
   StringSplit(para_0_st,StringGetCharacter(";",0),local_1_st_ko); 
   tmp_in_1 = ArraySize(local_1_st_ko);
   for (tmp_in_2 = 0 ; tmp_in_2 < tmp_in_1 ; tmp_in_2=tmp_in_2 + 1){
      StringTrimLeft(local_1_st_ko[tmp_in_2]);
      StringTrimRight(local_1_st_ko[tmp_in_2]);
      local_1_st_ko[tmp_in_2] = local_1_st_ko[tmp_in_2];
   }
   _sets     local_10_a_160={"Set2-283",283,1.4,0.7,0.9,70,1.5,0};
   _sets     local_11_a_160={"Set2-566",566,1.4,0.7,0.9,70,1.5,0};
   _sets     local_12_a_160={"Set3-252",252,1.4,0.9,0.8,60,1.5,0};
   _sets     local_13_a_160={"Set3-504",504,1.4,0.9,0.8,60,1.5,0};
   _sets     local_14_a_160={"Set3-1008",1008,1.4,0.85,0.75,20,1.5,0};
   _sets     local_15_a_160={"Set3-356",356,1.4,0.9,0.8,60,1.5,0};
   _sets     local_16_a_160={"Set3-713",713,1.4,0.85,0.75,20,1.5,0};
   _sets     local_17_a_160_ko[];
 
   if ( global_3_in == 1 && trim(global_4_st) == "" ){
      global_linesCount = 1 ;
   }else{
      if ( global_3_in == 1 && trim(global_4_st) != "" ){
         lizong_23(global_4_st,local_17_a_160_ko); 
         global_linesCount = ArraySize(local_17_a_160_ko) ;
         xx3(global_2_a_160_ko,local_17_a_160_ko);
      }else{
         if ( global_3_in == 2 ){
            ArrayResize(global_2_a_160_ko,3,0); 
            global_linesCount = 3 ;
            yy(global_2_a_160_ko[0],local_2_a_160);
            yy(global_2_a_160_ko[1],local_3_a_160);
            yy(global_2_a_160_ko[2],local_4_a_160);       
 
Fernando Carreiro #:

Después de revisar el código que enviaste en privado, creo que, lamentablemente, la respuesta es "todo lo anterior" .

  1. El código utiliza una versión modificada de la biblioteca estándar de MQL5 y parece ser la que modificó Stanislav Korotky para su artículo — Los asesores listos para usar del asistente de MQL5 funcionan en MetaTrader 4 .
  2. El código también depende de otro pequeño archivo de inclusión con comentarios en chino. Entonces, a menos que el codificador sea chino, es probable que sea otro fragmento de código de otra persona. El código principal también tiene una mezcla de comentarios en inglés y chino.
  3. Parte del código principal parece haber sido generado por otro generador o constructor de código, o tal vez incluso obtenido a través de un descompilador MQL4, aunque parece diferente al habitual que he visto.
  4. Hay muchas secciones de código comentadas, que parecen restos de otros trabajos no relacionados, como si intentaran reutilizar el código como un "script kiddy".
  5. También hay una gran cantidad de funciones declaradas que ni siquiera parecen usarse en absoluto.
  6. Después de descontar todos los puntos anteriores, el código restante es ad hoc y completamente sin estructura ni lógica organizada adecuada. Es como el código de un script para niños que no comprende nada del código subyacente y simplemente copia y pega piezas para que haga algo plausible.
  7. Para ser honesto, ni siquiera creo que el código funcione como se requiere o se espera.

(Traducido automáticamente del inglés)

After reviewing the code you sent in private, I believe the answer is sadly "all of the above".

  1. The code is making use of a modified version of the MQL5 Standard Library, and it is seems to be the one modified by Stanislav Korotky for his Article — Ready-made advisors from the MQL5 Wizard work in MetaTrader 4.
  2. The code is also dependant on another small include file with Chinese comments. So unless the coder is Chinese, it is probable yet another piece of code by someone else. The main code too has a mixture of English and Chinese comments.
  3. Part of the main code seems to have been generated by yet another code generator or builder, or maybe even obtained via a MQL4 decompiler, although it seems different to the usual one I have seen.
  4. There are many commented out sections of code, which seem to a remnant of other unrelated jobs, as if trying to reuse code like a "script kiddy".
  5. There are also a great number of declared functions that don't even seem to be used at all.
  6. After discounting all of the above points, the remaining code is ad hoc and completely without structure or proper organised logic. It is just like a script kiddy's code that does not understand any of the underlying code and is just copy/pasting pieces together to make it do something plausible.
  7. To be honest, I don't even believe any of the code will actually work as required or expected.
Gracias, es una valoración muy extensa y completa! Te lo agradezco enormemente. El autor estaba tratándome como si yo fuera un bobo por pensar que este no es un buen código. Gracias Fernando!
 
Enrique Enguix # : Gracias, es una valoración muy extensa y completa! Te lo agradezco enormemente. El autor estaba tratándome como si yo fuera un bobo por pensar que este no es un buen código. Gracias Fernando!

Sugeriría hacer clic en Arbitraje y seleccionar la opción en la que desea que se devuelva el importe total y se le atribuya al cliente.

También dejaría una publicación para el "moderador independiente" con un enlace a este tema del foro.

También me pondría en contacto con la mesa de servicio y solicitaría su intervención y también proporcionaría un enlace a este tema.

(Traducción automática del inglés)

I would suggest, clicking on Arbitration and selecting the option that you want the full amount to be returned and attributed to the customer.

I would also leave a post for the "freelance moderator" with a link to this forum topic.

I would also contact the service desk and request their intervention and also supply a link to this topic.

 
Fernando Carreiro #:

Sugeriría hacer clic en Arbitraje y seleccionar la opción en la que desea que se devuelva el importe total y se le atribuya al cliente.

También dejaría una publicación para el "moderador independiente" con un enlace a este tema del foro.

También me pondría en contacto con la mesa de servicio y solicitaría su intervención y también proporcionaría un enlace a este tema.

(Traducción automática del inglés)

I would suggest, clicking on Arbitration and selecting the option that you want the full amount to be returned and attributed to the customer.

I would also leave a post for the "freelance moderator" with a link to this forum topic.

I would also contact the service desk and request their intervention and also supply a link to this topic.


Muchas gracias Fernando, estoy seguro de que esto ayudará. Me preocupaba que esto fuera una percepción mía, aunque yo también escribo código entiendo que otro desarrollador pudiera hacerlo de otra forma, pero no me parecía el caso, ya que se aprecia rápidamente una falta de calidad del código que se relaciona con todo lo que tú has sabido indicar mucho mejor que yo. He contactado con la mesa de servicio exponiendo el caso, y citando esta topic. Gracias de nuevo

Thank you very much Fernando, I'm sure this will help. I was worried that this was my perception, although I also write code I understand that another developer could do it differently, but it didn't seem like the case to me, since a lack of code quality that is related to everything you You have been able to indicate much better than me. I have contacted the service desk stating the case, and citing this topic. Thanks again

 
Enrique Enguix #:

Muchas gracias Fernando, estoy seguro de que esto ayudará. Me preocupaba que esto fuera una percepción mía, aunque yo también escribo código entiendo que otro desarrollador pudiera hacerlo de otra forma, pero no me parecía el caso, ya que se aprecia rápidamente una falta de calidad del código que se relaciona con todo lo que tú has sabido indicar mucho mejor que yo. He contactado con la mesa de servicio exponiendo el caso, y citando esta topic. Gracias de nuevo

Thank you very much Fernando, I'm sure this will help. I was worried that this was my perception, although I also write code I understand that another developer could do it differently, but it didn't seem like the case to me, since a lack of code quality that is related to everything you You have been able to indicate much better than me. I have contacted the service desk stating the case, and citing this topic. Thanks again

Solo por si te sirve de algo he subrayado algo que me parece importante.

En síntesis; solo hasta que aceptan revisar la solicitud; 10 días, y los plazos hasta que tomen alguna decisión "no están reglamentados".

Sin comentarios...Me reservo mi opinión porque podría ser demoledora. 😅

Edito: Ten en cuenta el plazo de 10 dias hasta poner un ticket, de lo contrario podrían remitirte a esta regla.

https://www.mql5.com/es/job/rules#part_V

V. Orden de conocimiento de reclamaciones en el Arbitraje

  1. Si durante la ejecución del Encargo surge una situación discutible que no puede ser resuelta sin la intervención forzada, cualquiera de las Partes puede acudir al Arbitraje.
  2. El análisis de las situaciones discutibles se lleva a cabo a base de la Tarea Técnica y comentarios de sistema sobre la confirmación de cada paso.
  3. El plazo de aceptación de la solicitud de arbitraje para su evaluación es de 10 días laborables. Los plazos correspondientes a la toma de decisiones no están reglamentados y dependen de las circunstancias concretas de la situación discutible valorada.
  4. Si es necesario para aclarar la situación surgida, se puede atraer a los expertos ajenos y solicitar los materiales adicionales. La decisión sobre esta necesidad se toma por la Administración del sitio web.
  5. La discusión de la situación en el Arbitraje y la decisión se pronuncia directamente en la Solicitud correspondiente.
  6. La decisión proferida después de analizar la situación discutible en el Arbitraje es definitiva para el Cliente y el Ejecutor.
  7. El Arbitraje puede determinar una de tres resoluciones:
    1. Finalizar el trabajo a favor del Ejecutor: de la cuenta del Cliente se deducirá el 100% de la suma bloqueada para este trabajo. La comisión del servicio será del 10%, mientras que a la cuenta del Ejecutor se transferirá el pago completo. El trabajo entrará en la categoría "Finalizados", y solo el Ejecutor podrá dejar un cometario sobre el mismo.
    2. Cancelar el trabajo a favor del Cliente. En este caso, de la cuenta del Cliente se retira el 10% del importe bloqueado por este trabajo, el 90% restante se desbloquea;  en la cuenta del Ejecutor no se ingresa nada, la comisión del Servicio es el 10%. El trabajo vuelve a la categoría "Nuevos" y queda disponible para la elección del nuevo Ejecutor. Sólo el Cliente podrá dejar comentarios sobre el trabajo.
    3. Declarar responsables de la situación acaecida a ambas partes y dividir el dinero en dos mitades, descontando la comisión del servicio "Freelance", concretamente:
      • del dinero bloqueado por este trabajo se restará un 10% en concepto de comisión a favor del servicio "Freelance" ,
      • el 90% restante de la suma del acuerdo se dividirá en dos: una mitad (un 45% de la suma del Acuerdo) se retornará a la cuenta del Cliente, mientras que la segunda mitad (un 45% de la suma del Acuerdo) se usará para pagar al Ejecutor el 50% del pago original,
      • el trabajo retornará a la categoría "Nuevos" y estará disponible para la selección de un nuevo Ejecutor; asimismo, ambas partes podrán dejar un comentario sobre el trabajo, tanto el Ejecutor como el Cliente.
Reglas de uso del Servicio "Freelance"
Reglas de uso del Servicio "Freelance"
  • www.mql5.com
Reglas de uso del Servicio "Freelance": disposiciones generales, orden de ejecución de encargos, orden de pago del trabajo.
 
Miguel Angel Vico Alba #:

Solo por si te sirve de algo he subrayado algo que me parece importante.

En síntesis; solo hasta que aceptan revisar la solicitud; 10 días, y los plazos hasta que tomen alguna decisión "no están reglamentados".

Sin comentarios...Me reservo mi opinión porque podría ser demoledora. 😅

Edito: Ten en cuenta el plazo de 10 dias hasta poner un ticket, de lo contrario podrían remitirte a esta regla.

https://www.mql5.com/es/job/rules#part_V

V. Orden de conocimiento de reclamaciones en el Arbitraje

  1. Si durante la ejecución del Encargo surge una situación discutible que no puede ser resuelta sin la intervención forzada, cualquiera de las Partes puede acudir al Arbitraje.
  2. El análisis de las situaciones discutibles se lleva a cabo a base de la Tarea Técnica y comentarios de sistema sobre la confirmación de cada paso.
  3. El plazo de aceptación de la solicitud de arbitraje para su evaluación es de 10 días laborables. Los plazos correspondientes a la toma de decisiones no están reglamentados y dependen de las circunstancias concretas de la situación discutible valorada.
  4. Si es necesario para aclarar la situación surgida, se puede atraer a los expertos ajenos y solicitar los materiales adicionales. La decisión sobre esta necesidad se toma por la Administración del sitio web.
  5. La discusión de la situación en el Arbitraje y la decisión se pronuncia directamente en la Solicitud correspondiente.
  6. La decisión proferida después de analizar la situación discutible en el Arbitraje es definitiva para el Cliente y el Ejecutor.
  7. El Arbitraje puede determinar una de tres resoluciones:
    1. Finalizar el trabajo a favor del Ejecutor: de la cuenta del Cliente se deducirá el 100% de la suma bloqueada para este trabajo. La comisión del servicio será del 10%, mientras que a la cuenta del Ejecutor se transferirá el pago completo. El trabajo entrará en la categoría "Finalizados", y solo el Ejecutor podrá dejar un cometario sobre el mismo.
    2. Cancelar el trabajo a favor del Cliente. En este caso, de la cuenta del Cliente se retira el 10% del importe bloqueado por este trabajo, el 90% restante se desbloquea;  en la cuenta del Ejecutor no se ingresa nada, la comisión del Servicio es el 10%. El trabajo vuelve a la categoría "Nuevos" y queda disponible para la elección del nuevo Ejecutor. Sólo el Cliente podrá dejar comentarios sobre el trabajo.
    3. Declarar responsables de la situación acaecida a ambas partes y dividir el dinero en dos mitades, descontando la comisión del servicio "Freelance", concretamente:
      • del dinero bloqueado por este trabajo se restará un 10% en concepto de comisión a favor del servicio "Freelance" ,
      • el 90% restante de la suma del acuerdo se dividirá en dos: una mitad (un 45% de la suma del Acuerdo) se retornará a la cuenta del Cliente, mientras que la segunda mitad (un 45% de la suma del Acuerdo) se usará para pagar al Ejecutor el 50% del pago original,
      • el trabajo retornará a la categoría "Nuevos" y estará disponible para la selección de un nuevo Ejecutor; asimismo, ambas partes podrán dejar un comentario sobre el trabajo, tanto el Ejecutor como el Cliente.
Entonces me adelanté un poco. Fallo mío. No tuve esto en cuenta, me estaba hirviendo la sangre con la actitud de este desallorrador 😅
 
Finalmente se resolvió favorablemente para mi. No tardaron mucho en responder, se ve que no solo para nosotros era bastante evidente lo que había tras esto. Gracias Fernando y gracias Miguel Ángel
 
Enrique Enguix # : Finalmente se resolvió favorablemente para mi. No tardaron mucho en responder, se ve que no solo para nosotros era bastante evidente lo que había tras esto. Gracias Fernando y gracias Miguel Ángel

¡De nada y es bueno saber que se resolvió muy rápidamente!