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

 
BillionerClub:

Ono, ahaha, he estado buscando ese archivo durante mucho tiempo. CPE.

La búsqueda falla porque todo está en una carpeta oculta de AppData.

 

En ningún sitio he encontrado cómo redondear un doble a la cifra más pequeña

Ejemplo:

   double part1=1.9/12;
   double part2=NormalizeDouble(part1,2);
   
   Comment(part1,"\n", // 0.1583333333
           part2); // 0.16

Como resultado redondeado a 0,16, si contamos: 0,16 * 12 = 1,92, es decir, se sobrepasa en 0,02 del 1,9

Cómo redondear 0,15833333 a 0,15

 
Vitaly Muzichenko:

En ningún sitio he encontrado cómo redondear un doble a la cifra más pequeña

Ejemplo:

Como resultado redondeado a 0,16, si contamos: 0,16 * 12 = 1,92, es decir, se sobrepasa en 0,02 del 1,9

Cómo redondear 0,15833333 a 0,15

Para mayor claridad

  int n=0.15833333*100;
  double m=n/100.0;
  string s=DoubleToString(m,2);
 
Alexey Viktorov:

Para mayor claridad

Gracias, ¡funciona como debería!

 
Perdón por la pregunta tonta, pero ¿qué hacer si el spread es fraccionario? La funciónCopySpread es de tipo int y si la dispersión es de 0,8 devuelve 1
 
VANDER:
Perdón por la pregunta tonta, pero ¿qué pasa si el spread es fraccionario? La función CopySpread es de tipo int y si la dispersión es de 0,8, por ejemplo, devuelve 1

Debería devolver un '8'. Hacer algo mal

 
Ahora aclarado, el diferencial en el instrumento es de alrededor de 0,02 lo que debe volver en este caso?
 
VANDER:
Ahora aclarado, el diferencial en el instrumento es de alrededor de 0,02 lo que debe ser devuelto en este caso?

¿Con quién lo has comprobado?

 
VANDER:
Ahora aclarado, el spread del instrumento es de alrededor de 0 ,02 ¿qué debería devolver en este caso?

No funciona así

 

Así, por ejemplo

//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
MqlTick Last;
int sp1[1];
double sp2;
//+------------------------------------------------------------------+
int OnInit()
  {return(INIT_SUCCEEDED);}
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  { }
//+------------------------------------------------------------------+
void OnTick()
  {
   CopySpread("BR-2.20",PERIOD_CURRENT,0,1,sp1);
   SymbolInfoTick("BR-2.20",Last);
   sp2=Last.ask-Last.bid;
   Print((string)sp1[0]+", "+(string)sp2);
  }
//+------------------------------------------------------------------+

2020.01.03 21:16:32.818 Spred (BR-2.20,M1) 1, 0.01000000000000512

2020.01.03 21:16:32.824 Spred (BR-2.20,M1) 1, 0.02000000000001023

2020.01.03 21:16:33.830 Spred (BR-2.20,M1) 1, 0.020000000001023

2020.01.03 21:16:34.371 Spred (BR-2.20,M1) 1, 0.01000000000000512

2020.01.03 21:16:34.466 Spred (BR-2.20,M1) 1, 0.0100000000512

2020.01.03 21:16:34.570 Spred (BR-2.20,M1) 1, 0.00999999999905

2020.01.03 21:16:34.585 Spred (BR-2.20,M1) 1, 0.0099999999990905

2020.01.03 21:16:34.591 Spred (BR-2.20,M1) 1, 0.019999999999602

2020.01.03 21:16:34.629 Spred (BR-2.20,M1) 1, 0.0099999999990905

2020.01.03 21:16:35.321 Spred (BR-2.20,M1) 1, 0.019999999999602

2020.01.03 21:16:35.335 Spred (BR-2.20,M1) 1, 0.019999999999602

2020.01.03 21:16:35.352 Spred (BR-2.20,M1) 1, 0.019999999999602

2020.01.03 21:16:35.684 Spred (BR-2.20,M1) 1, 0.019999999999602

2020.01.03 21:16:35.790 Spred (BR-2.20,M1) 1, 0.0099999999990905

2020.01.03 21:16:35.981 Spred (BR-2.20,M1) 1, 0.0099999999990905

2020.01.03 21:16:36.220 Spred (BR-2.20,M1) 1, 0.01000000000000512

2020.01.03 21:16:36.235 Spred (BR-2.20,M1) 1, 0.019999999999602

2020.01.03 21:16:36.311 Spred (BR-2.20,M1) 1, 0.0099999999990905

2020.01.03 21:16:36.769 Spred (BR-2.20,M1) 1, 0.0099999999990905

2020.01.03 21:16:37.373 Spred (BR-2.20,M1) 1, 0.019999999999602

2020.01.03 21:16:38.049 Spred (BR-2.20,M1) 1, 0.019999999999602