Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 575

 

Bon après-midi,

Existe-t-il un moyen de changer le répertoire d'écriture/lecture des fichiers de "Tester/Files" à "MQL/Files" lorsque le conseiller expert travaille avec ces fichiers pendant les tests ?

 
Asa saas:

Bon après-midi,

Est-il possible de changer le répertoire de lecture/écriture de "Tester/Files" à "MQL/Files" lorsque Expert Advisor utilise ces fichiers pendant les tests ?

Avec MQL - pas possible, seulement à travers WinAPI.

 

Merci pour votre réponse !

 
PolarSeaman:

Comment calculer le volume du lot par incréments ? Si le dépôt =1000, lot = 0,1, le dépôt est devenu 2000, lot = 0,2. C'est-à-dire que si le dépôt est de 1500 ou 1700, le lot n'augmente pas.

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

Pas avec les outils MQL, seulement avec WinAPI.

Asa saas:

Merci pour la réponse !

Dans ce cas, il est préférable d'utiliser le drapeau FILE_COMMON et les fichiers seront disponibles à la fois dans le testeur et dans le terminal. Seuls des problèmes peuvent survenir lors des tests sur le réseau. Mais personnellement, je ne l'ai pas testé.

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

Taras Slobodyanik:

lot = MathCeil(depo / 1000) * 0.1;

Faisons le calcul :

Dépôt = 1 700. Divisé par 1 000, on obtient 1,7 et arrondi au nombre entier supérieur le plus proche, on obtient 2.

Multipliez par 0,1 et le résultat n'est pas ce que vous voulez.

Apparemment, il est préférable d'arrondir à l'entier inférieur le plus proche MathFloor

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

Non, non, avec un dépôt de 1100, le lot sera de 0,11, et j'ai besoin que le lot n'augmente pas jusqu'à 2000. Comment spécifier un pas =1000 dans les paramètres ?

Je l'ai corrigé.

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

Bien que le principe soit là, et c'est une nuance...

 
Alexey Viktorov:

Faisons le calcul :

Dépôt = 1 700. Divisé par 1 000, on obtient 1,7 et arrondi au nombre entier supérieur le plus proche, on obtient 2.

Multipliez par 0,1 et le résultat n'est pas ce que vous voulez.

Apparemment, il est préférable d'arrondir à l'entier inférieur le plus proche MathFloor

ou au lieu de 1000, utilisez 1999.99 )

1000 et 0,1 sont des variables externes.

 
Et pourquoi tout le monde s'accroche à 0.1. Aujourd'hui un homme veut 0,1, demain il veut 0,5. Il faut partir du rapport en pourcentage. Il ne sert à rien d'être rigidement lié à l'intelligence.
 

Merci, je l'ai fait :

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

J'espère avoir mis_depo de typeint correctement.

Raison: