찻주전자의 질문 - 페이지 75

 
kirill-demo :
마법사에서 Expert Advisor를 만들었습니다. 그리고 나는 mql에 대해 잘 모릅니다. 봉투의 예를 들어 어떻게 해야 하는지 명확하게 설명해 주시겠습니까?

CSignalEnvelopes 클래스에는 이러한 시장 모델이 포함되어 있지 않습니다.

결론: 클래스를 수정하거나 직접 작성해야 합니다.

 
MT5에서 MT4의 dll에서 함수를 호출하는 것의 차이점은 무엇입니까? dll을 컴파일하면 MT5에서는 잘 작동하지만 MT4에서는 오류가 발생합니다.

2011.10.06 23:00:34 Solaris 실행기 EURUSDm,M1: dll 'Solaris.dll'에서 'InfoOfTrading' 함수를 호출할 수 없습니다(오류 127).

Документация по MQL5: Основы языка / Функции / Вызов функции
Документация по MQL5: Основы языка / Функции / Вызов функции
  • www.mql5.com
Основы языка / Функции / Вызов функции - Документация по MQL5
 
joo :
MT5에서 MT4의 dll에서 함수를 호출하는 것의 차이점은 무엇입니까? dll을 컴파일하면 MT5에서는 잘 작동하지만 MT4에서는 오류가 발생합니다.

2011.10.06 23:00:34 Solaris 실행기 EURUSDm,M1: dll 'Solaris.dll'에서 'InfoOfTrading' 함수를 호출할 수 없습니다(오류 127).

함수 프로토타입에 대한 설명을 제공하십시오. MT5의 경우 _stdcall 디자인을 사용했을 가능성이 큽니다.

MT5에는 DLL 함수 이름을 연결하는 보다 유연한 메커니즘이 있습니다. _stdcall (이름 장식으로 고급)과 _cdecl (오래된 클래식 방법)을 모두 자동으로 지원합니다. MetaTrader 4는 _cdecl 호출만 지원합니다.

" 어떻게 MQL5용 DLL 라이브러리를 작성하고 10분 안에 데이터를 교환할 수 있습니까? " 기사를 읽으십시오. DLL 함수 호출에 대해 자세히 설명합니다.

 
Renat :

함수 프로토타입에 대한 설명을 제공하십시오. MT5의 경우 _stdcall 디자인을 사용했을 가능성이 큽니다.

MT5에는 DLL 함수 이름을 연결하는 보다 유연한 메커니즘이 있습니다. _stdcall (이름 장식으로 고급)과 _cdecl (오래된 클래식 방법)을 모두 자동으로 지원합니다. MetaTrader 4는 _cdecl 호출만 지원합니다.

" 어떻게 MQL5용 DLL 라이브러리를 작성하고 10분 안에 데이터를 교환할 수 있습니까? " 기사를 읽으십시오. DLL 함수 호출에 대해 자세히 설명합니다.

다음과 같이 선언하려고 했습니다.

_DLLAPI void _cdecl InfoOfTrading( int &ou_ParamCountALl, int &ou_BarsRequired)

그래서:

_DLLAPI void InfoOfTrading( int &ou_ParamCountALl, int &ou_BarsRequired)

이전 것 대신:

_DLLAPI void __stdcall InfoOfTrading( int &ou_ParamCountALl, int &ou_BarsRequired)

하지만 이제 또 다른 오류:

2011.10.07 01:35:05 Solaris 실행기 EURUSDm,M1: dll 'Solaris.dll'에서 함수 'InfoOfTrading' 호출 심각한 오류


나는 기사를 읽었다.


프로젝트 설정에서 다음을 호출하는 방법을 명시적으로 지정했습니다.


그리고 MT5에서는 여전히 오류 없이 작동합니다.

 
tol64 :
일반적으로 도움말에서 신호는 필요한 만큼 정확하게 설명됩니다. 여기에서 볼 수 있습니다. 그리고 그림에서는 CCI 표시기에서도 설정을 볼 수 있습니다. 즉, Envelopes 표시기의 신호뿐만 아니라 Expert Advisor를 조립했을 가능성이 큽니다. CCI도 있습니다.

네, 죄송합니다. 잘못된 사진을 게시했습니다. 그러나 그것은 상황을 바꾸지 않습니다. 다음은 봉투에만있는 고문의 사진입니다.

어떻게 해야 하나요? 그것을 고치는 방법?

 

그건 그렇고, MT4의 표준 전달 리소스의 예에서 __stdcall을 통한 호출:

MT4_EXPFUNC double __stdcall GetDoubleValue( const double dpar)
  {
   printf ( "GetDoubleValue takes %.8lf\n" ,dpar);
   return (dpar);
  }

잘 작동합니다.

 
누가 설명 좀 해주세요!
 
joo :

그건 그렇고, MT4의 표준 전달 리소스의 예에서 __stdcall을 통한 호출:

잘 작동합니다.


MT4 예:

#define MT4_EXPFUNC __declspec(dllexport)

MT4_EXPFUNC char* __stdcall GetStringValue(char *spar)

и имена экспортируемых функций явно описываются через *.def файл:

LIBRARY ExpertSample

EXPORTS GetIntValue
        GetDoubleValue
        GetStringValue
        GetArrayItemValue
        SetArrayItemValue
        GetRatesItemValue
        SortStringArray
        ProcessStringArray


stdcall이 지원됩니다. 쿼드에 대해 &를 통해 전달되는 매개변수 를 설명하는 올바른 방법이 무엇인지 확실하지 않습니다.
Документация по MQL5: Основы языка / Функции / Передача параметров
Документация по MQL5: Основы языка / Функции / Передача параметров
  • www.mql5.com
Основы языка / Функции / Передача параметров - Документация по MQL5
 
Renat :

MT4 예:

#define MT4_EXPFUNC __declspec(dllexport)

MT4_EXPFUNC char* __stdcall GetStringValue(char *spar)

и имена экспортируемых функций явно описываются через *.def файл:

LIBRARY ExpertSample

EXPORTS GetIntValue
        GetDoubleValue
        GetStringValue
        GetArrayItemValue
        SetArrayItemValue
        GetRatesItemValue
        SortStringArray
        ProcessStringArray


stdcall이 지원됩니다. 쿼드에 대해 &를 통해 전달되는 매개변수 를 설명하는 올바른 방법이 무엇인지 확실하지 않습니다.

2년 동안 4와 일하는 법을 완전히 잊어버렸습니다. :)

1. 참조로 전달된 변수는 dll에 쓸 수 없다는 것이 밝혀졌다. 이렇게 하려면 배열을 사용해야 합니다.

2. 그리고 반드시 *.def 파일을 사용해야 합니다.

사실 여기에 내가 찾은 dll 4와 5의 작업에서 두 가지 차이점이 있습니다. 아마도 더 있을 것입니다.

 
여러분, 이 질문이 이미 지겹다면 죄송합니다. 매개변수> 메일 탭을 올바르게 채우는 방법을 알려주시겠습니까? mail.ru에 메일이 있습니다. 작동할까요? 서버 주소가 뭔지 모르겠는데.. 안되면 어디서 등록하면 되나요? 이메일 알림을 보내고 싶어요..