Comentarios sobre MQL5 - página 4

 

No hay manera de hacer almohadillas

No hay herencia múltiple en ninguna forma

Punteros poco claros

Sin referencias

Política poco clara de copia de estructuras. Y las clases también.

No hay descripciones adecuadas de los errores y advertencias generadas por el compilador con ejemplos.

Problemas con la tipificación de tipos enteros (y enums, creo).

Esto es sólo un vistazo rápido.

Es que todo el mundo está acostumbrado. Es posible codificar, pero el lenguaje MQL5 ciertamente no puede llamarse fino y milagroso.

 
Los desarrolladores sólo pueden ser comprensivos, algunos buscan la simplicidad y la sencillez, otros quieren todas las características de los lenguajes de alto nivel y necesitan complacer a ambos y hacer que todo funcione )
 
Renat Fatkhullin:

Echa un vistazo aquí, por favor: https://www.mql5.com/ru/docs/constants/environment_state/marketinfoconstants#enum_symbol_info_double

En general, el margen no puede calcularse sobre la base de un solo instrumento porque es la superposición resultante de diferentes posiciones/instrumentos. Además, en la ejecución de la bolsa, el cálculo del margen puede trasladarse (la bolsa así lo exige) a la propia bolsa, que, en base a su compleja y cerrada lógica, genera el margen final.

Para la estimación integral "¿tendré suficiente margen si hago esta transacción?" existe una función estándar OrderCalcMargin: https://www.mql5.com/ru/docs/trading/ordercalcmargin

Este es el código

string txt=NULL;
double GetMarginInitial=0,GetMarginMain=0;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnInit()
  {
   if(!SymbolInfoDouble(Symbol(),SYMBOL_MARGIN_INITIAL,GetMarginInitial))
     {
      Print(" SYMBOL_MARGIN_INITIAL ",GetLastError());
      return(false);
     }
   txt+="\n"+(string)(GetMarginInitial*SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MIN));

   if(!SymbolInfoDouble(Symbol(),SYMBOL_MARGIN_MAINTENANCE,GetMarginMain))
     {
      Print(" SYMBOL_MARGIN_MAINTENANCE ",GetLastError());
      return(false);
     }
   txt+="\n"+(string)GetMarginMain;
   
   Comment(txt);
   
   return(INIT_SUCCEEDED);
  }

En los futuros muestra el requisito de margen inicial para un lote 5800 rublos, pero el uso de este código en la divisa dice 0 ...

En la ayuda dice

SYMBOL_MARGIN_INITIAL

El margen inicial (de iniciación) indica el importe del margen necesario para abrir una posición de un lote. Se utiliza para verificar los fondos del cliente al entrar en el mercado.


Y nada más .... ¿Cómo se calcula el margen de las divisas? Sólo veo una salida, determinar el tipo de instrumento, y luego calcular por fórmulas...

 
Vladimir Pastushak:

Este es el código

En los futuros muestra el requisito de margen inicial para un lote de 5800 rur, pero al usar este código en forex dice 0 ...

Y en la referencia dice

SYMBOL_MARGIN_INITIAL

El margen inicial (de iniciación) indica el importe del margen necesario para abrir una posición de un lote. Se utiliza para la verificación de los fondos del cliente al entrar en el mercado.


Y nada más ....

Sí, este parámetro sirve para controlar los requisitos de margen para los futuros.

Aunque para forex podemos (tenemos que hacer) recalcular y dar un valor aproximado (porque no sabemos lo que el comerciante quiere hacer - comprar o vender) de margen por 1 lote.

 
Фьючерсные объемы для МТ:

No hay manera de hacer almohadillas

No hay herencia múltiple en ninguna forma

Lo haremos un poco más tarde. Tenemos la herencia habitual.


Punteros poco claros

Sin referencias

Hay referencias y punteros. Son seguros y están controlados.


Política poco clara de copia de estructuras. Y también de las clases.

Precisamente comprensible: las estructuras con campos simples (no dinámicos) se copian automáticamente. Para el resto, escribe una función de copia.

Ya estamos planeando ampliar el mecanismo de copia de estructuras con algunos tipos dinámicos (no de clase). Esto facilitará la mayor parte del trabajo.


No hay una descripción adecuada de los errores y advertencias del compilador con ejemplos.

Los textos de error y advertencia son iguales/similares a los de otros compiladores. Nadie ha reinventado la rueda en este caso.


Problemas de tipificación con tipos enteros (y enums similares)

La rigidez del tipo es una prioridad. Por eso no se permite la libertad de Cish de asignaciones y conversiones peligrosas.


El lenguaje está todavía en desarrollo y pronto actualizaremos seriamente el compilador MQL4/MQL5 cuando se publique el nuevo compilador optimizador (actualmente habilitado a través de Optimize=1).

 
Serhiy Dotsenko:
dac ya escribió cómo se puede editar el código mql en VS, no se puede compilar, pero se puede editar en VS y pulsar f7 en ME )

Interesado... ¿Dónde lo has escrito? Y si quiero usar las clases estándar, ¿las encontrarás o tendrás que escribir de memoria?

Estoy acostumbrado al código, pero al editor no me acostumbro, después de otros editores, como si acabara de cambiar al Bloc de notas :)

 
sigma7i:

Interesado... ¿Dónde lo has escrito? Y si quiero utilizar las clases estándar, ¿las encontrarás o tendrás que escribir de memoria?

Estoy acostumbrado al código, pero no consigo acostumbrarme al editor, después de otros editores, es como si usara el Bloc de notas :)

También actualizaremos el editor, pero teníamos otras prioridades.

Tal vez abramos el camino a los plugins.

 
Renat Fatkhullin:

Sí, este parámetro es para controlar los requisitos de margen para los futuros.

Aunque en el caso de las divisas, podemos (debemos) recalcular y dar un valor aproximado (porque no sabemos qué quiere hacer un operador: comprar o vender) de margen para 1 lote.

También se devuelven ceros para los índices cfd ... La ayuda tiene fórmulas que en principio son suficientes pero no están comentadas ...

Tal vez alguien sabe lo que es


Margen: (Lotes*Tamaño del contrato*Precio de mercado*Porcentaje)/Levante

Beneficio: (precio_cerrado-precio_abierto)*Tamaño_del_contrato*Lotes


Porcentaje: ¿qué es?
 
Vladimir Pastushak:


Margen: (Lotes*Tamaño del contrato*Precio de mercado*Porcentaje)/Levante

Beneficio: (precio_cerrado-precio_abierto)*Tamaño_del_contrato*Lotes


Porcentaje - nadie dice una palabra al respecto en ninguna parte de la documentación...

Mira en la ayuda del terminal - https://www.metatrader5.com/ru/terminal/help/trading_advanced/margin_forex
 
Puedes obtener estos coeficientes con SymbolInfoMarginRate, prueba
Razón de la queja: