Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
La solución llegó enseguida.
double GetMarginRequired( const string Symb )
{
MqlTick Tick;
return(SymbolInfoTick(Symb, Tick) ? Tick.ask * SymbolInfoDouble(Symb, SYMBOL_TRADE_TICK_VALUE) * SymbolInfoDouble(Symb, SYMBOL_TRADE_CONTRACT_SIZE) *
SymbolInfoDouble(Symb, SYMBOL_POINT) / (SymbolInfoDouble(Symb, SYMBOL_TRADE_TICK_SIZE) * AccountInfoInteger(ACCOUNT_LEVERAGE)) : 0);
}
Genial, todo lo que tenemos que hacer es traer el margen en la moneda de depósito, porque el margen, por ejemplo, para AUDCAD con la moneda de depósito USD tiene que ser en USD.
Genial, lo único que queda es traer el margen en la moneda del depósito, porque para el AUDCAD por ejemplo la moneda del depósito debe ser en USD.
Esto es lo que se ha hecho.
Todo funciona bien en forex, excepto la pregunta final: "¿por qué la mitad y cómo lo arreglo?".
Todo funciona bien en forex, pero hay una última pregunta: "¿por qué se reduce a la mitad y cómo solucionarlo?"
He encontrado que en SGDJPY el margen es veces diferente en FIBOGroup-MT5 Server y MetaQuotes-Demo servidores. Esto sugiere que la propia MT5 calcula el margen con errores. Y como es así, no hay ninguna referencia para comparar. Por lo tanto, no puedo decir con seguridad si se trata de un error de mi implementación o de los desarrolladores. Creo que hay un error en ambos casos. El problema es la falta de información correcta.
Mis dos servidores se muestran correctamente, con una excepción - resaltada en rojo
¿Cómo puedo encontrar la propiedad resaltada en rojo?
Gracias.
Tengo dos servidores que se muestran correctamente, con una excepción - resaltada en rojo
¿Cómo puedo averiguar la propiedad resaltada en rojo?
double GetMarginRequired( const string Symb )
{
MqlTick Tick;
double MarginInit, MarginMain;
return((SymbolInfoTick(Symb, Tick) && SymbolInfoMarginRate(Symb, ORDER_TYPE_BUY, MarginInit, MarginMain)) ? MarginInit * Tick.ask *
SymbolInfoDouble(Symb, SYMBOL_TRADE_TICK_VALUE) / (SymbolInfoDouble(Symb, SYMBOL_TRADE_TICK_SIZE) * AccountInfoInteger(ACCOUNT_LEVERAGE)) : 0);
}
Tiene que entender claramente que en MT5 puede haber requisitos de margen muy diferentes en distintas direcciones. Es decir, una sola variante de MT4 puede no funcionar. En Forex, por supuesto, no será así. Pero tienes que recordar. Por lo tanto, en general, se debe escribir así
bool MyOrderCalcMargin( const ENUM_ORDER_TYPE action, const string symbol, const double volume, const double price, double &margin )
{
double MarginInit, MarginMain;
const bool Res = SymbolInfoMarginRate(symbol, action, MarginInit, MarginMain);
margin = Res ? MarginInit * price * volume * SymbolInfoDouble(symbol, SYMBOL_TRADE_TICK_VALUE) /
(SymbolInfoDouble(symbol, SYMBOL_TRADE_TICK_SIZE) * AccountInfoInteger(ACCOUNT_LEVERAGE)) : 0;
return(Res);
}
Eso es lo que se hizo.
Broma MT5 en el servidor FIBOGroup-MT5 SGDJPY
En esta situación, MyOrderCalcMargin cuenta correctamente, pero el OrderCalcMargin normal no.
Broma MT5 en FIBOGroup-MT5 Server SGDJPY
En esta situación, MyOrderCalcMargin cuenta correctamente, pero el OrderCalcMargin normal no.