메타트레이더의 함수 포인터, 콜백
- C 에서의 함수 포인터, 콜백 개념 / 문법 과 동일.
typedef int (*TFunc)(int,int);
TFunc func_ptr;
int sub(int x,int y) { return(x-y); }
int add(int x,int y) { return(x+y); }
int neg(int x) { return(~x); }
func_ptr=sub;
Print(func_ptr(10,5));
func_ptr=add;
Print(func_ptr(10,5));
func_ptr=neg; // error: neg is not of int (int,int) type
Print(func_ptr(10)); // error: there should be two parameters
함수포인터 지원된건 MetaTrader 5 build 1325 (2016년)이후 부터이므로 2016년 이후 배포된 MQL5 에서도 당연 사용가능. 메타트레이더 4 의 MQL4 에서도 지원됨.
한편, 함수포인터는 MQL5 에서 함수 인자로 전달하여 콜백 용도로 사용가능하나, DLL 함수 import 하여 DLL 에서 제공하는 함수인자로 함수 포인터 전달 불가함.
https://www.mql5.com/en/forum/37632
활용예
2개의 클래스 A(예 CCyFinDevice), B(예 CCyFinOnNewBar) 가 있고, A에서 B 인스턴스 만들어 사용중이고, B에게 A측의 콜백함수를 전달 하는 방법.
연관
첫 등록 : 2019.05.13
최종 수정 : 2023.03.20
단축 주소 : https://igotit.tistory.com/2162
'트레이딩 > 메타트레이더 코딩' 카테고리의 다른 글
MQL5. Arrays. 배열 (0) | 2019.05.17 |
---|---|
MQL5. struct. 구조체, DLL 함수인자에 구조체 전달 방법 (0) | 2019.05.16 |
MQL5. EventChartCustom (0) | 2019.05.11 |
MQL5. Custom Indicator (3) | 2019.05.10 |
MQL5. 소켓통신 (0) | 2019.05.09 |
댓글