Discusión sobre el artículo "Posibilidades de ChatGPT de OpenAI en el marco de desarrollo de MQL4 y MQL5" - página 2

 
Valeriy Yastremskiy #:
Sería bueno) como parte del intercambio de experiencias) la tarea se complica por el hecho de que µl no conoce muy bien los lenguajes gpt. A veces es bastante difícil conseguir el código sin errores.
ChatGPT 3.5 escribe normalmente en MQL4/5, así que no te hagas ilusiones. El valor del artículo debería estar en las indicaciones y en mostrar el proceso de desarrollo con ChatGPT , pero no hay nada de eso. Sólo códigos ya generados que a nadie le interesan gratis. El valor del artículo es cero, el autor obtiene una "D" y me pregunto cómo se permitió la publicación de este trabajo de mala calidad.
 
Alexey Volchanskiy #:
ChatGPT 3.5 escribe normalmente en MQL4/5, no seas tan simplista. El valor del artículo debería estar en los prompts y en mostrar el proceso de desarrollo usando ChatGPT, pero no hay nada de eso. Sólo códigos generados listos que a nadie le interesan gratis. El valor del artículo es cero, el autor obtiene una "D" y me pregunto cómo se permitió la publicación de este trabajo de mala calidad .

Para aquellos que están en el tanque, déjenme decirles de nuevo, el punto del artículo no es darles indicaciones, sino inculcarles la idea de que deben producirlas ustedes mismos. No os dais cuenta de lo que le pasaría al artículo si tirara todo lo que he hecho. Hay toneladas de basura innecesaria que sólo confundirá a la gente. El material debe ser sencillo y claro. Y no vas a hacer un examen para ponerme un suspenso. Ten cuidado.

 
Alexey Volchanskiy #:
ChatGPT 3.5 escribe normalmente en MQL4/5, no seas tan simplista. El valor del artículo debería estar en los prompts y en mostrar el proceso de desarrollo usando ChatGPT, pero no hay nada de eso. Sólo códigos generados listos que a nadie le interesan gratis. El valor del artículo es cero, el autor obtiene una "D" y me pregunto cómo se permitió la publicación de este hack job .

No pude conseguir el código para colocar una orden de mercado. Si usted puede promt. Cada vez devuelto el billete.

 
Valeriy Yastremskiy #:

No he podido conseguir el código para colocar una orden de mercado. Si usted puede promt. Me ha devuelto la entrada siempre.

Escriba un procedimiento en MQL5 para abrir una orden de mercado. La función debe aceptar los siguientes datos de entrada:


1) Lote

2) Take Profit como módulo de la diferencia de precio entre los precios de apertura y cierre

3) Stop Loss como un módulo de la diferencia de precio entre los precios de apertura y cierre

4) Dirección de la orden (bool bDirection) true - COMPRA ; false - VENTA

5) Deslizamiento en pips (es la desviación máxima posible del precio de apertura en pips)

6) Número mágico de orden


Adicionalmente, si Stop Loss o Take Profit es cero, la orden debe ser abierta sin el correspondiente Stop Loss o Take Profit, cualquiera que sea cero, o sin Stop Loss y Take Profit en absoluto si ambos son cero.


Además, proporcione una comprobación del lote mínimo y máximo permitido, y si el lote está fuera del rango permitido, llévelo al número disponible más cercano (mínimo o máximo).


Proporcione comentarios extensos y trate de hacer el código más corto, y no olvide que los precios de stop loss y take profit se calculan de manera diferente para las órdenes de compra y venta.


No puedes utilizar ninguna librería, sólo las características del lenguaje MQL5.

// Función para obtener el volumen corregido
double CorrectedVolume(double volume)
{
   double minVol = SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MIN);
   double maxVol = SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MAX);
   double VolStep = SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_STEP);
   
   // Si el volumen es inferior al volumen mínimo, ajuste el volumen mínimo
   if(volume < minVol)
       return minVol;
   // Si el volumen es mayor que el volumen máximo, establece el volumen máximo
   else if(volume > maxVol)
       return maxVol;
   
   // Convertir el volumen en un múltiplo del paso de volumen
   return (double)((int)(volume / VolStep)) * VolStep; 
}

// Función básica de la colocación de pedidos
bool OpenOrder(double volume, double stoploss, double takeprofit, bool bDirection, int slip, int magic)
{
   MqlTick last_tick;
   SymbolInfoTick(_Symbol,last_tick);
   
   // Determinar el precio de apertura de la orden 
   double open_price = bDirection ? last_tick.ask : last_tick.bid;
   // Determinar el valor del elemento 
   double point = SymbolInfoPoint(_Symbol);
   
   // Ajustar SL y TP en función de la dirección
   double corrected_sl = bDirection ? open_price - stoploss * point : open_price + stoploss * point;
   double corrected_tp = bDirection ? open_price + takeprofit * point : open_price - takeprofit * point;
   
   // Si SL o TP = 0, la orden se abre sin SL o TP
   if (stoploss == 0) corrected_sl = 0; 
   if (takeprofit == 0) corrected_tp = 0;
   
   // Tipo de transacción utilizada
   ENUM_ORDER_TYPE order_type = bDirection ? ORDER_TYPE_BUY : ORDER_TYPE_SELL;
   
   // Estructura para rellenar los parámetros de la petición
   MqlTradeRequest request;
   request.type = order_type;
   request.symbol = _Symbol;
   request.volume = CorrectedVolume(volume);
   request.price = open_price;
   request.sl = corrected_sl;
   request.tp = corrected_tp;
   request.deviation = slip;
   request.magic = magic;
   request.type_filling = ORDER_FILLING_FOK;
   request.type_time = ORDER_TIME_DAY;
   
   MqlTradeResult result;
   return OrderSend(request,result); // Enviar la orden a la bolsa
}

No funcionó de inmediato, tuve que hacer la instrucción más detallada. Tenga en cuenta que tomó sólo 5 minutos. Y yo no busqué ningún prompts, sólo escribí lo que quería y cómo. Prompt no es una pregunta en absoluto....

 
Todo esto es inútil con las habilidades actuales de los GPT porque el "cliente" tiene que encontrar errores en la fuente generada, es decir, conocer realmente la respuesta correcta o escribir la mayor parte de ella. Los GPT actuales son unos charlatanes.
 
Stanislav Korotky #:
Todo esto es inútil con las habilidades actuales de los GPT porque el "cliente" tiene que encontrar errores en la fuente generada, es decir, conocer realmente la respuesta correcta o escribir la mayor parte de ella. Los GPT actuales son unos charlatanes.

Bueno en realidad es lo mismo que digo yo, realmente sin conocer el lenguaje y corregir lo que da no sirve de nada, intenté explicarlo en el artículo, pero no parece mucho a la gente). Me quieren dar una indicación y ya está y estoy en el chocolate ))) Y el hecho de que usted tiene que pensar en ello, GPT está ahí ))))

 
Gracias Eugene por el artículo. Yo también he experimentado con CHATGPT y otras IAs. Sí, a veces sale con buenos textos, incluso puede escribir poemas en cualquier estilo, pero en programación comete muchos errores, no puedes hacer nada sin revisar y editar.
Estoy de acuerdo contigo sobre Promtov, incluso cuando le das a la IA la misma petición, genera textos o códigos diferentes. Por eso tienes que comunicarte con ella como un niño y explicarle detenidamente lo que quieres conseguir de ella. Lo único es que tú, como programador con experiencia y formación matemática, y por tanto con el estilo de pensamiento adecuado, puedes formular más clara y brevemente una tarea para la IA, como un TdR. Muchos traders no pueden elaborar TdR elementales para escribir un simple Asesor Experto. Cuando empecé a escribir los primeros Asesores Expertos en MQL4, me acordé de cómo nos enseñaron en la universidad, de vuelta en Fortran, a dibujar primero un algoritmo del futuro programa y luego escribir código de acuerdo con él, me ayudó mucho. También, como futuros ingenieros de diseño en sistemas radioelectrónicos, nos enseñaron a escribir TOR, también útil.
 
Evgeniy Ilin #:

Es mejor que pienses que el cálculo de la EMA inicial no es igual al de las posteriores, porque hay que guardar barras hasta la saciedad, y hay que operar aquí y ahora. Sobre los ciclos, todo funciona por barras, no noté ninguna ralentización apreciable. Puedes finalizar los cálculos como quieras para este indicador, pero te dará mucho ) yo solo se que nada de nada ).

Esta es la tarea del que escribe la EMA: hacer que todos sus cálculos posteriores sean iguales a los anteriores. No es necesario guardar barras hasta la saciedad, pero, como he escrito más arriba, sólo necesita 10-20 veces más barras que el período.

Lo de los ciclos es muy convincente... Por supuesto, no hay absolutamente ninguna diferencia entre un ciclo de 10 barras y un ciclo de 100 barras... Especialmente si se considera la existencia de algoritmos rápidos para calcular promedios.

 
Evgeniy Ilin #:

No me di cuenta al principio)

   MqlTick last_tick;
   SymbolInfoTick(_Symbol,last_tick);
   
   
   // Determinar el valor del elemento 
   double point = SymbolInfoPoint(_Symbol); // видимо по аналогии придумано)))
   
   
 
Valeriy Yastremskiy #:

No me di cuenta al principio)

SymbolInfoDouble(_Symbol,SYMBOL_POINT) - así es como debería ser. En general, usted ha entendido ... He corregido la mayoría de los errores. Lo habría visto todo si fuera el código de mi ts. Hay fallos... y si no sabes lo que haces, es inútil. Vas por buen camino. A menudo se equivoca. Por algo escribí ese artículo. Podría hacer un súper indicador, no cometería ni un error y daría todo perfectamente, pero sería inútil porque es todo un alarde. En condiciones reales de campo hacemos simples preguntas humanas, que en el mejor de los casos pueden ser más específicas, pero como demuestra la práctica no reduce mucho el postprocesado.