Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 916

 
Zorian43:
Buenas noches a todos! No sé si estoy escribiendo en el tema correcto, perdón si me equivoco. Cuando instalé Metatrader 5 en mi Android, se creó automáticamente una cuenta de demostración y me conecté a ella cada vez que inicié la aplicación. Cuando quise conectar otra cuenta, esta vez de mi broker, no pude encontrar la contraseña de la cuenta demo. He pulsado "restablecer contraseña" y no puedo conectarme a la cuenta demo después de eso. ¿Hay alguna manera de restaurar el acceso a la cuenta de demostración?
No. Abra una nueva cuenta de demostración.
 

¡Hola!

¿Puede decirme por qué el método CAccountInfo::MarginCheck() puede devolver el margen requerido de cero en el probador? Sólo devuelve cero cuando se llama para una orden de compra limitada ORDER_TYPE_BUY_LIMIT.

Instrumento Si-9.18 - futuros del dólar de MICEX.

En el proyecto de prueba, la siguiente llamada en el probador no da cero, sino 90 - un valor pequeño, que parece bastante inverosímil:

ENUM_ORDER_TYPE     orderType   = NULL;
uint                orderVolume = 1;
double              orderPrice  = gvTick.last;
double marginRequired = 0;

orderType       = ORDER_TYPE_BUY_LIMIT;
marginRequired  = gnCAccountInfo.MarginCheck( gsIns, orderType, orderVolume, orderPrice);
Print("  Требуемая маржа ", marginRequired);
Salida del registro: 2018.09.01 13:38:56.040 2018.06.13 12:10:00 Margen requerido 90.0
 
rel18:

¡Hola!

¿Puede decirme por qué el método CAccountInfo::MarginCheck() puede devolver el margen requerido de cero en el probador? Sólo devuelve cero cuando se llama para una orden de compra limitada ORDER_TYPE_BUY_LIMIT.

Instrumento Si-9.18 - futuros del dólar de MICEX.

En el proyecto de prueba, la siguiente llamada en el probador no da cero, sino 90 - un valor pequeño, que parece bastante inverosímil:

Sospecho que porque sólo

TIPO_DE_PEDIDO_DE_COMPRA

Orden de compra de mercado

TIPO_DE_ORDEN_DE_VENTA

Orden de venta al mercado

 
Vladimir Karputov:

Sospecho que esto se debe a que sólo

TIPO_DE_PEDIDO_DE_COMPRA

Orden de compra del mercado

TIPO_DE_ORDEN_DE_VENTA

Orden de venta al mercado

Aquí está el resultado de la orden de compra limitada en el probador para el mismo ejemplo. Un margen de 90 es muy pequeño. ¿Es realmente así?


Y aquí tenemos un margen de cero en el probador:



Todas las pruebas del historial se realizan con una cuenta real.
 

El indicador ha dejado de funcionar, ayuda a la compilación
Gracias.

Archivos adjuntos:
VP-Range-v6.mq5  44 kb
VP-v6.mq5  42 kb
 
rel18:

Aquí está el resultado de una orden de compra limitada en el probador para el mismo ejemplo. Un margen de 90 es muy pequeño, ¿es así?


¿Tal vez sea la cuenta demo? Pruébalo en una cuenta real con el mismo broker.

 
Aliaksei Karalkou:

El indicador dejó de funcionar, ayuda para compilar
Gracias.

Desde la compilación 1861 hay una función iBarShift incorporada, no se puede utilizar como una función personalizada. Por favor, cambie el nombre de la función.

 

Hola. Por favor, ayúdenme con esta tarea. Hay un valor de tipo String en el formato"PERIOD_M1""PERIOD_M2""PERIOD_M3", etc. Tenemos que sustituir estos valores por valores de tipo ENUM_TIMEFRAMES - PERIOD_M1, PERIOD_M2, PERIOD_M3 respectivamente, etc.

En el EJEMPLO de abajo todo estaría bien, pero no podemos usar una variable de cadena en la sentencia switch, ¿qué debemos hacer? Podríamos utilizar una construcción if....else, pero creo que hay formas más elegantes. ¿Alguna sugerencia? Gracias.

//+------------------------------------------------------------------+
//| Преобразует строку в таймфрейм                                   |
//+------------------------------------------------------------------+
ENUM_TIMEFRAMES StringToTimeframe(string timeframe)
  {
   ENUM_TIMEFRAMES tfr=Period();
   switch(timeframe) 
     {
      case "M1"  : tfr=PERIOD_M5;  break;
      case "M2"  : tfr=PERIOD_M6;  break;
      case "M3"  : tfr=PERIOD_M5;  break;
      }
//---
   return(tfr);
  }
 
Tango_X:

Hola. Por favor, ayúdenme con esta tarea. Hay un valor de tipo String en el formato"PERIOD_M1""PERIOD_M2""PERIOD_M3", etc. Tenemos que sustituir estos valores por valores de tipo ENUM_TIMEFRAMES - PERIOD_M1, PERIOD_M2, PERIOD_M3 respectivamente, etc.

En el EJEMPLO de abajo todo estaría bien, pero no podemos usar una variable de cadena en la sentencia switch, ¿qué debemos hacer? Se podría utilizar una construcción if....else, pero creo que hay formas más elegantes. ¿Alguna sugerencia? Gracias.

Utilice la construcción if()

 
Tango_X:

Hola. Por favor, ayúdenme con esta tarea. Hay un valor de tipo String en el formato"PERIOD_M1""PERIOD_M2""PERIOD_M3", etc. Tenemos que sustituir estos valores por valores de tipo ENUM_TIMEFRAMES - PERIOD_M1, PERIOD_M2, PERIOD_M3 respectivamente, etc.

En el EJEMPLO de abajo todo estaría bien, pero no podemos usar una variable de cadena en la sentencia switch, ¿qué debemos hacer? Se podría utilizar una construcción if....else, pero creo que hay formas más elegantes. ¿Alguna sugerencia? Gracias.

//+------------------------------------------------------------------+
//| Преобразует строку в таймфрейм                                   |
//+------------------------------------------------------------------+
ENUM_TIMEFRAMES StringToTimeframe(string timeframe)
  {
   return
     (
      timeframe == "M1"   ?  PERIOD_M1  :
      timeframe == "M2"   ?  PERIOD_M2  :
      timeframe == "M3"   ?  PERIOD_M3  :
      timeframe == "M4"   ?  PERIOD_M4  :
      timeframe == "M5"   ?  PERIOD_M5  :
      timeframe == "M6"   ?  PERIOD_M6  :
      timeframe == "M10"  ?  PERIOD_M10 :
      timeframe == "M12"  ?  PERIOD_M12 :
      timeframe == "M15"  ?  PERIOD_M15 :
      timeframe == "M20"  ?  PERIOD_M20 :
      timeframe == "M30"  ?  PERIOD_M30 :
      timeframe == "H1"   ?  PERIOD_H1  :
      timeframe == "H2"   ?  PERIOD_H2  :
      timeframe == "H3"   ?  PERIOD_H3  :
      timeframe == "H4"   ?  PERIOD_H4  :
      timeframe == "H6"   ?  PERIOD_H6  :
      timeframe == "H8"   ?  PERIOD_H8  :
      timeframe == "H12"  ?  PERIOD_H12 :
      timeframe == "D1"   ?  PERIOD_D1  :
      timeframe == "W1"   ?  PERIOD_W1  :
      timeframe == "MN1"  ?  PERIOD_MN1 : 
      PERIOD_CURRENT
     );
  }
//+------------------------------------------------------------------+
Razón de la queja: