자신만의 MetaTrader 확장 프로그램(dll) 생성 - 페이지 11

 

mql4 프로그래밍에 대한 기본 질문

안녕,

dll에서 일부 기능 을 가져오고 싶습니다. 따라서 일부 *.h 파일을 포함해야 했습니다.

이것이 가능합니까, 아니면 *.h 대신 *.mqh를 작성해야 합니까?

C 프로그래밍 언어의 경우 dll입니다.

포인터와 구조체를 데이터 유형으로 사용하는 함수가 있습니다. mql4와 함께 사용할 수 있습니까?

 

주가를 받고

여보세요,

C#으로 메타 트레이더로부터 주가를 받으려고 하는데 어떻게 해야할지 모르겠습니다.

누군가 나에게 설명하거나 나를 특정 가이드로 보낼 수 있습니까?

정말 감사합니다.

 
kfirmt:
여보세요,

C#으로 메타 트레이더로부터 주가를 받으려고 하는데 어떻게 해야할지 모르겠습니다.

누군가 나에게 설명하거나 나를 특정 가이드로 보낼 수 있습니까?

정말 감사합니다.

Expert\examples\DLLExample에서 가격이 메타트레이더에서 C로 전달되는 방법을 찾을 수 있습니다. 로써 정의 된 :

struct RateInfo

{

unsigned int ctm;

double open;

double low;

double high;

double close;

double vol;

};

따라서 C#으로 전달하는 데 문제가 없어야 합니다.

 

감사해요!

Expert\examples\DLLExample은 어디에 있습니까?

 
kfirmt:
감사해요! Expert\examples\DLLExample은 어디에 있습니까?

메타트레이더 폴더(설치한 폴더)

 
mladen:
메타트레이더 폴더(설치한 폴더)

2개의 메타트레이더를 다운로드했고 둘 다 C++에 예제가 있었습니다. 나는 C#으로 프로그래밍을 하고 있지만 이것으로 이해할 수 있다고 생각하지만 내가 필요한 것, 주가를 얻는 방법을 찾을 수 없었습니다.

 
kfirmt:
2개의 메타트레이더를 다운로드했고 둘 다 C++에 예제가 있었습니다. 나는 C#으로 프로그래밍을 하고 있지만 이것으로 이해할 수 있다고 생각하지만 내가 필요한 것, 주가를 구하는 방법을 찾을 수 없었습니다.

및 표시기 또는 EA에서 가격을 DLL 확장으로 전달하고 있습니다.

해당 폴더에 완전한 예제(MQL 부분과 C 부분)가 있습니다. C# 부분의 mql 부분에서 데이터를 받으면 코드의 문제일 뿐입니다.

 
mladen:
그리고 표시기 또는 EA에서 가격을 DLL 확장으로 전달하고 있습니다. 해당 폴더에 완전한 예제(MQL 부분과 C 부분)가 있습니다. C# 부분의 mql 부분에서 데이터를 받으면 코드의 문제일 뿐입니다.

나는 MQL이나 C에서 예제를 찾지 못했고 C++에서만 예제를 찾았습니다. 암튼 기능 은 많은데 어떤 기능이 가격을 받기 위해 필요한 기능인지 도무지 알 수가 없었습니다. 그런 예가 있습니까?

매우 감사합니다.

 
kfirmt:
나는 MQL이나 C에서 예제를 찾지 못했고 C++에서만 찾았습니다. 아무튼 기능은 많았는데 어떤 기능이 가격을 받기 위해 필요한 기능인지 도무지 알 수가 없었습니다. 그런 예가 있습니까? 매우 감사합니다.

C 측에서 (주석 참조) :

//+------------------------------------------------------------------+

//| |

//+------------------------------------------------------------------+

MT4_EXPFUNC double __stdcall GetRatesItemValue(const RateInfo* rates,const int rates_total,const int shift,const int nrate)

{

//---

if(rates==NULL)

{

printf("GetRatesItemValue: NULL array\n");

return(0.0);

}

//---

if(rates_total<0)

{

printf("GetRatesItemValue: wrong rates_total number (%d)\n", rates_total);

return(0.0);

}

//---

if(shift=rates_total)

{

printf("GetRatesItemValue: wrong shift number (%d)\n", shift);

return(0.0);

}

//---

if(nrate5)

{

printf("GetRatesItemValue: wrong rate index (%d)\n", nrate);

return(0.0);

}

//

// here you are having prices, time and volume

//

int nitem=rates_total-1-shift;

switch(nrate)

{

case 0: return double(rates[nitem].ctm);

case 1: return rates[nitem].open;

case 2: return rates[nitem].low;

case 3: return rates[nitem].high;

case 4: return rates[nitem].close;

case 5: return rates[nitem].vol;

}

//---

return(0.0);

}

 
mladen:
C 측에서 (주석 참조) :
//+------------------------------------------------------------------+

//| |

//+------------------------------------------------------------------+

MT4_EXPFUNC double __stdcall GetRatesItemValue(const RateInfo* rates,const int rates_total,const int shift,const int nrate)

{

//---

if(rates==NULL)

{

printf("GetRatesItemValue: NULL array\n");

return(0.0);

}

//---

if(rates_total<0)

{

printf("GetRatesItemValue: wrong rates_total number (%d)\n", rates_total);

return(0.0);

}

//---

if(shift=rates_total)

{

printf("GetRatesItemValue: wrong shift number (%d)\n", shift);

return(0.0);

}

//---

if(nrate5)

{

printf("GetRatesItemValue: wrong rate index (%d)\n", nrate);

return(0.0);

}

//

// here you are having prices, time and volume

//

int nitem=rates_total-1-shift;

switch(nrate)

{

case 0: return double(rates[nitem].ctm);

case 1: return rates[nitem].open;

case 2: return rates[nitem].low;

case 3: return rates[nitem].high;

case 4: return rates[nitem].close;

case 5: return rates[nitem].vol;

}

//---

return(0.0);

}

감사해요!

C#에 뭔가가 있습니까? 왜냐하면 그것은 나에게 정말로 아무 말도 하지 않기 때문입니다.