Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 575

 

Buon pomeriggio,

C'è un modo per cambiare la directory per la scrittura/lettura dei file da "Tester/Files" a "MQL/Files" quando l'Expert Advisor lavora con questi file durante i test?

 
Asa saas:

Buon pomeriggio,

È possibile cambiare la directory di lettura/scrittura da "Tester/Files" a "MQL/Files" quando Expert Advisor usa questi file durante i test?

Con MQL - nessun modo, solo attraverso WinAPI.

 

Grazie per la vostra risposta!

 
PolarSeaman:

Come si calcola il volume del lotto in incrementi? Se deposito =1000, lotto = 0,1, il deposito è diventato 2000 lotto = 0,2. Cioè, se il deposito è di 1500 o 1700, il lotto non aumenta.

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

Non con gli strumenti MQL, solo con WinAPI.

Asa saas:

Grazie per la risposta!

In questo caso è meglio usare il flag FILE_COMMON e i file saranno disponibili sia dal tester che dal terminale. Solo i problemi possono verificarsi durante i test sulla rete. Ma personalmente non l'ho testato.

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

Taras Slobodyanik:

lot = MathCeil(depo / 1000) * 0.1;

Facciamo i conti:

Deposito = 1.700. Diviso per 1.000 otteniamo 1,7 e arrotondato al numero intero più vicino sopra, otteniamo 2.

Moltiplicate per 0,1 e il risultato non è quello che volete.

Apparentemente è meglio prendere l'arrotondamento al più vicino numero intero inferiore MathFloor

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

No, no, con un deposito di 1100, il lotto sarà 0,11, e ho bisogno che il lotto non aumenti fino a 2000. Come specificare un passo =1000 nelle impostazioni?

L'ho corretto.

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

Anche se il principio c'è, e questa è una sfumatura

 
Alexey Viktorov:

Facciamo i conti:

Deposito = 1.700. Diviso per 1.000 otteniamo 1,7 e arrotondato all'intero più vicino in cima, otteniamo 2.

Moltiplicate per 0,1 e il risultato non è quello che volete.

Apparentemente è meglio arrotondare al più vicino numero intero inferiore MathFloor

o invece di 1000, usa 1999.99 )

1000 e 0,1 sono variabili esterne.

 
E perché tutti si aggrappano allo 0,1. Oggi un uomo vuole 0,1, domani vuole 0,5. Bisogna basarsi sulle percentuali. Non ha senso essere rigidamente legati all'intelligenza.
 

Grazie, l'ho fatto:

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

Spero di aver messo_depo di tipoint correttamente.

Motivazione: