MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 575

 

안녕하세요,

EA가 테스트 중에 이러한 파일로 작업할 때 파일 쓰기/읽기용 디렉토리를 "Tester/Files"에서 "MQL/Files"로 변경할 수 있습니까?

 
Asa saas :

안녕하세요,

EA가 테스트 중에 이러한 파일로 작업할 때 파일 쓰기/읽기용 디렉토리를 "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 ;

계산해 봅시다:

보증금 = 1700. 1000으로 나누면 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 :

계산해 봅시다:

보증금 = 1700. 1000으로 나누면 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를 올바르게 설정하기를 바랍니다.