Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 575

 

Buenas tardes,

¿Hay alguna manera de cambiar el directorio para escribir/leer archivos de "Tester/Files" a "MQL/Files" cuando el Asesor Experto está trabajando con estos archivos durante las pruebas?

 
Asa saas:

Buenas tardes,

¿Es posible cambiar el directorio de lectura/escritura de "Tester/Files" a "MQL/Files" cuando el Asesor Experto utiliza estos archivos durante las pruebas?

Con MQL - no hay manera, sólo a través de WinAPI.

 

Gracias por su respuesta.

 
PolarSeaman:

¿Cómo se calcula el volumen del lote en incrementos? Si el depósito =1000, el lote = 0,1, el depósito se convirtió en 2000 el lote = 0,2. Es decir, si el depósito es de 1500 o 1700, el lote no aumenta.

lot = MathCeil(depo / 1000) * 0.1;
 
Ihor Herasko:

No con herramientas MQL, sólo con WinAPI.

Asa saas:

Gracias por la respuesta.

En este caso es mejor utilizar la bandera FILE_COMMON y los archivos estarán disponibles tanto en el probador como en la terminal. Sólo pueden surgir problemas al realizar las pruebas en la red. Pero personalmente no lo he probado.

FileOpen - Файловые операции - Справочник MQL4
FileOpen - Файловые операции - Справочник MQL4
  • docs.mql4.com
[in]  Имя открываемого файла, может содержать подпапки. Если файл открывается для записи, то указанные подпапки будут созданы в случае их отсутствия. [in]  значение, используемое в качестве разделителя в txt или csv-файле. Если для csv-файла разделитель не указан, то по умолчанию используется ";". Если для txt-файла разделитель не указан, то...
 

Taras Slobodyanik:

lot = MathCeil(depo / 1000) * 0.1;

Hagamos las cuentas:

Depósito = 1.700. Dividido entre 1.000 obtenemos 1,7 y redondeado al número entero más cercano por encima, obtenemos 2.

Multiplique por 0,1 y el resultado no será el deseado.

Aparentemente es mejor tomar el redondeo al entero inferior más cercano MathFloor

MathFloor - Математические функции - Справочник MQL4
MathFloor - Математические функции - Справочник MQL4
  • docs.mql4.com
MathFloor - Математические функции - Справочник MQL4
 
PolarSeaman:

No, no, con un depósito de 1100, el lote será de 0,11, y necesito que el lote no aumente hasta 2000. ¿Cómo especificar un paso =1000 en los ajustes?

Lo he corregido.

double percentLot = 0.01,
       lot = NormalizeDouble(MathFloor(AccountInfoDouble(ACCOUNT_BALANCE)*percentLot/10)/10, 1);

Aunque el principio está ahí, y esto es un matiz

 
Alexey Viktorov:

Hagamos las cuentas:

Depósito = 1.700. Dividido entre 1.000 obtenemos 1,7 y redondeado al entero más cercano por encima, obtenemos 2.

Multiplique por 0,1 y el resultado no será el deseado.

Aparentemente es mejor redondear al entero inferior más cercano MathFloor

o en lugar de 1000, utilice 1999,99 )

1000 y 0,1 son variables externas.

 
Y por qué todo el mundo se aferra al 0,1. Hoy un hombre quiere 0,1, mañana quiere 0,5. Hay que basarse en los porcentajes. No tiene sentido estar rígidamente atado a la inteligencia.
 

Gracias, lo hice:

   input double _lot=0.1;
   input int _depo=1000;
//***************************
   lot=MathFloor(AccountInfoDouble(ACCOUNT_BALANCE)/_depo)*_lot;
   lot=NormalizeDouble(lot,2);

Espero haber puesto_depo de tipoint correctamente.

Razón de la queja: