新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 575

 

下午好。

当专家顾问在测试期间使用这些文件时,是否有办法将写/读文件的目录从 "Tester/Files "改为 "MQL/Files"?

 
Asa saas:

下午好。

当Expert Advisor在测试期间使用这些文件时,是否有可能将读/写目录从 "Tester/Files "改为 "MQL/Files"?

用MQL - 没有办法,只能通过WinAPI。

 

谢谢你的答复

 
PolarSeaman:

如何计算增量的手数?如果存款=1000,手数=0.1,存款变成2000手数=0.2。也就是说,如果押金是1500或1700,拍品不会增加。

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

不能用MQL工具,只能用WinAPI。

Asa saas:

谢谢你的回答!

在这种情况下,你最好使用FILE_COMMON 标志,这样文件就可以从测试器和终端获得只有在网络上测试时可能出现问题。但我个人还没有测试过。

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

Taras Slobodyanik:

lot = MathCeil(depo / 1000) * 0.1;

让我们来算一算。

存款=1,700。除以1,000,我们得到1.7,四舍五入到最接近的整数上,我们得到2。

乘以0.1,结果就不是你想要的了。

显然,采取四舍五入到最接近的小整数MathFloor 更好。

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

不,不,存款1100,手数将是0.11,我需要手数不增加到2000。如何设置指定步骤=1000?

我已经纠正了它。

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

虽然原则是存在的,但这是一个细微的差别

 
Alexey Viktorov:

让我们来算一算。

存款=1,700。除以1,000,我们得到1.7,四舍五入到最接近的整数上,我们得到2。

乘以0.1,结果就不是你想要的了。

显然,最好是四舍五入到最近的小整数MathFloor。

或者用1999.99来代替1000)。

1000和0.1是外部变量。

 
而为什么每个人都紧紧抓住0.1。今天一个人要0.1,明天他要0.5。人们应该从百分比的比例出发。僵化地被智力束缚是没有意义的。
 

谢谢你,我这么做了。

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

我希望我把_depo的int类型 放对了。

原因: