그래서 나는 그것을 한다: if (profitbuy+profitsell > SymbProf_magBUY_magSELL* MathAbs(( OrdersTotalMagicBuyLots (MagicBuy)-OrdersTotalMagicSellLots(MagicSell))/Lots)())
얼마나 많은 Expert Advisors를 썼는지, 어디에서나 예금으로 거래할 때 시장 상황 (스톱 레버, 스프레드 등)을 확인합니다. 나는 그들이 그리더를 작성하는 방법을 보았으므로 적어도 일부를 보내기 전에 아무도 보지 못했습니다. 한 주문의 동일한 스톱 레벨 값이 확인되었습니다. 이유는 무엇입니까?
이것은 문자열이 MqlStr이 아니라 정확히 char*로 DLL에 전달됨을 의미합니다. 그러나ex4 프로그램이 문자열을 MqlString으로 저장하지 않는다는 의미는 아닙니다. 일반적으로 ex4에서 dll로 매개변수를 전달하는 것은 (개발자에 따르면) 모든 종류의 검사 및 매개변수 변환이 수반되는 다소 복잡한 프로세스입니다.
쥰코 :
MQL4 도움말을 읽으셨습니까? MQL4 문자열은 널 종결자가 있는 동일한 c-문자열입니다.
구조는 문자열 배열을 구성하기 위한 것입니다. 문자열 배열을 더 쉽게 생성할 수 있도록 하는 Purely Metaquotes의 아이디어입니다.
메커니즘은 다음과 같습니다. /system32의 shlwapi.dll. StrStrA는 StringSubstr 의 WinAPI 대응입니다 . MQL4는 유형이 없는 언어이며 출력에 문자열이 아닌 int를 입력하면 문자열이 아니라 포인터를 얻습니다. StrStrA는 문자열에서 부분 문자열의 첫 번째 발생을 찾고(대소문자를 구분하지만 문자열이 동일하므로 상관하지 않음) 문자열이 동일하므로 문자열의 첫 번째 문자에 대한 포인터를 반환합니다. , 즉. 라인 자체에.
이 코드를 사용할 사람들을 위해 설명하겠습니다. WinAPI에는 문자열 형식이 없습니다. 대신 lpsz 형식(0x00으로 끝나는 문자 배열의 첫 번째 요소에 대한 포인터, 일명 /0)만 사용할 수 있습니다. 메모리 주소에 대한 포인터입니다. 그리고 32비트 메모리 셀(즉, 4바이트)이 있고 int 크기도 4바이트이므로 모든 것이 깔끔하게 맞습니다.
결론: 문자열을 int 배열로 안전하게 패킹할 수 있습니다. 따라서 구조(MQL4에는 구조 및 클래스가 없음)를 에뮬레이트하여 구조 또는 클래스가 필요한 경우 dll에 추가로 전달할 수 있습니다. 데이터 유형 변환을 위한 자체 작성 dll(예: "int(const char*)"(C 유형 변환) 또는 C++의 유사한 구성)은 이제 사용할 수 없습니다.
사람들은 이전 편집기에서 예약어 위에 마우스를 놓고 f1 키를 누르면 이 기능에 대한 설명이 있는 창이 아래에서 열리는데 지금은 없습니다. 무엇이 문제가 될 수 있습니까?
결과를 항상 긍정적으로 만드는 방법을 누가 알려줄까요? (로트 매수 - 매도) = -0.25이지만 항상 플러스가 필요합니까?
그래서 나는 그것을 한다: if (profitbuy+profitsell > SymbProf_magBUY_magSELL* MathAbs(( OrdersTotalMagicBuyLots (MagicBuy)-OrdersTotalMagicSellLots(MagicSell))/Lots)())
괄호 안에는 무엇이 있습니까?
if (profitbuy+profitsell > SymbProf_magBUY_magSELL* MathAbs(( OrdersTotalMagicBuyLots (MagicBuy)-OrdersTotalMagicSellLots(MagicSell))/Lots)(??????))
어디 ???? 뭐라고요?
거래량 = 0.05 인 포지션을 엽니다 . 코드가 필요합니다 - 5자리에 대해 100포인트 손실에 도달할 때 위치의 양을 0.01로 줄이는 방법 ???
고맙습니다.
얼마나 많은 Expert Advisors를 썼는지, 어디에서나 예금으로 거래할 때 시장 상황 (스톱 레버, 스프레드 등)을 확인합니다. 나는 그들이 그리더를 작성하는 방법을 보았으므로 적어도 일부를 보내기 전에 아무도 보지 못했습니다. 한 주문의 동일한 스톱 레벨 값이 확인되었습니다. 이유는 무엇입니까?
포럼에는 테스터에 대한 많은 메타리얼과 그 결과가 실제와 다른 이유가 있습니다. 기사 섹션을 보면 이 주제가 두 번 이상 언급되었습니다.
고맙습니다.
대안을 찾았습니다.
이것은 문자열이 MqlStr이 아니라 정확히 char*로 DLL에 전달됨을 의미합니다. 그러나 ex4 프로그램이 문자열을 MqlString으로 저장 하지 않는다는 의미는 아닙니다. 일반적으로 ex4에서 dll로 매개변수를 전달하는 것은 (개발자에 따르면) 모든 종류의 검사 및 매개변수 변환이 수반되는 다소 복잡한 프로세스입니다.
MQL4 도움말을 읽으셨습니까? MQL4 문자열은 널 종결자가 있는 동일한 c-문자열입니다.
구조는 문자열 배열을 구성하기 위한 것입니다. 문자열 배열을 더 쉽게 생성할 수 있도록 하는 Purely Metaquotes의 아이디어입니다.
shlwapi.dll 라이브러리의 StrStrA . 시험:
통나무:
메커니즘은 다음과 같습니다. /system32의 shlwapi.dll. StrStrA는 StringSubstr 의 WinAPI 대응입니다 . MQL4는 유형이 없는 언어이며 출력에 문자열이 아닌 int를 입력하면 문자열이 아니라 포인터를 얻습니다. StrStrA는 문자열에서 부분 문자열의 첫 번째 발생을 찾고(대소문자를 구분하지만 문자열이 동일하므로 상관하지 않음) 문자열이 동일하므로 문자열의 첫 번째 문자에 대한 포인터를 반환합니다. , 즉. 라인 자체에.
이 코드를 사용할 사람들을 위해 설명하겠습니다. WinAPI에는 문자열 형식이 없습니다. 대신 lpsz 형식(0x00으로 끝나는 문자 배열의 첫 번째 요소에 대한 포인터, 일명 /0)만 사용할 수 있습니다. 메모리 주소에 대한 포인터입니다. 그리고 32비트 메모리 셀(즉, 4바이트)이 있고 int 크기도 4바이트이므로 모든 것이 깔끔하게 맞습니다.
결론: 문자열을 int 배열로 안전하게 패킹할 수 있습니다. 따라서 구조(MQL4에는 구조 및 클래스가 없음)를 에뮬레이트하여 구조 또는 클래스가 필요한 경우 dll에 추가로 전달할 수 있습니다. 데이터 유형 변환을 위한 자체 작성 dll(예: "int(const char*)"(C 유형 변환) 또는 C++의 유사한 구성)은 이제 사용할 수 없습니다.