MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 575

 

こんにちは。

Expert Advisor がテスト中にこれらのファイルを扱う場合、ファイルの書き込み/読み出し用のディレクトリを "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のみです。

アサ・サース

回答ありがとうございました

この場合、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

または1000の代わりに1999.99を使用 )

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);

int 型の_depoは ちゃんと入れたかな。