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

 

DLL이 새 틱으로 업데이트되지 않음

이전 DLL 게시물(#81)에 대한 후속 조치로 이제 추가 문제가 있습니다. DLL이 다음과 같이 호출될 때:

정수 시작()

{

이중 요금[][6];

int MaximumRecords = ArrayCopyRates( 비율, 기호(), 0 );

for( int zz = MaximumRecords, zz >= 0, zz-- ) { OutPut[zz] = EMPTY; }

GetSMAArray( 요금, 최대 기록, 기간, 출력);

리턴(0);

}

차트에 예상대로 플롯된다는 점에서 잘 작동하지만 불행히도 새로운 수신 틱으로 업데이트되지 않습니다. 초기 호출에 대해 플롯할 뿐입니다. 들어오는 틱으로 DLL을 업데이트하려면 어떤 코드를 더 추가할 수 있습니까? 거의 모든 검색에서 사용에 대한 변형이 나타났습니다.

ExtCountedBars = IndicatorCounted();

while 루프를 강제로 계산하지만 이 모두는 .mq4 파일 자체에 포함된 계산에 적용됩니다. DLL을 강제로 다시 계산하고 싶습니다. 두 번째로, 이 재계산이 모든 틱 이 도착할 때가 아니라 막대가 완료될 때만 발생하기를 바랍니다.

 

For 루프는 다음과 같아야 합니다.

for(int zz=MaximumRecords-1;............

10 레코드는 배열에서 0부터 9까지의 위치를 차지합니다.

 
Tzuman:
For 루프는 다음과 같아야 합니다.

for(int zz=MaximumRecords-1;............

10 레코드는 배열에서 0부터 9까지의 위치를 차지합니다.

나는 이것이 도움이되지 않았다는 것을 두려워합니다. DLL은 여전히 새로운 틱으로 업데이트되지 않습니다.

 

Mistigri의 샘플 비디오를 사용할 수 없습니다.

안녕 모두,

누군가 Mistigri의 샘플 비디오를 인터넷에서 사용할 수 있게 만들 수 있습니까?

 
jocinet:
안녕하세요, 누군가 Mistigri의 샘플 비디오를 인터넷에서 볼 수 있게 해줄 수 있습니까?

Mistigri는 다음에서 다시 사용할 수 있습니다.

프로젝트 | 프스누비온

 

C# 개발자를 위한 경로: MT4/5 -> C# DLL

C++ 대신 Metatrader용 C#으로 DLL을 작성하려는 C# 개발자는 이제 해당 경로를 갖게 되었습니다. 방금 읽은 "관리되지 않는 내보내기를 사용하여 MQL5에 C# 코드 노출"이라는 제목의 매우 흥미로운 기사가 있습니다.

기사를 읽거나 훑어보고 섹션 2.5를 읽으십시오.

비관리형 내보내기를 사용하여 MQL5에 C# 코드 노출 - MQL5 기사

지침을 읽은 다음 C# "관리되지 않는 내보내기 라이브러리"용 템플릿을 다운로드하고 zip 파일을 올바른 디렉터리에 배치합니다(해당 페이지의 지침에 따라).

관리되지 않는 내보내기를 위한 C# 프로젝트 템플릿

VS를 로드하고 "관리되지 않는 내보내기 라이브러리" 템플릿을 선택합니다. 코드 샘플을 따르십시오. 이것이 누군가를 돕기를 바랍니다!

 

치명적인 오류 이지만 충돌이 없으며 이것이 dll을 작성하는 방법입니다.

마지막으로 Visual Studio 2008 Express에서 MistigriFX 샘플 디버그(줄여서 MFX_SD)를 사용하여 내 dll을 작성할 수 있습니다.

그러나 재미있는 문제가 있습니다.

주기 입력이 다른 차트에 MFX_SD 3개를 실행해도 문제 없습니다. 그러나 다른 3개를 다른 기간 입력으로 두 번째 차트에 첨부할 때 두 개의 오류 메시지(dll 'Mistigri FX Sample 1.dll' critical error'에서 함수 'GetSMAArray' 호출)가 표시되고 전문가가 작동을 멈춥니다.

그래서 나는 두 개의 차트를 봅니다. 한 차트에서는 세 개의 MFX_SD가 모든 틱마다 잘 실행되고 다른 차트에서는 모든 틱마다 하나의 MFX_SD만 실행되고 다른 두 개는 그렇지 않습니다.

어떤 조언이 있습니까?

첨부 파일은 Visual Studio 2008에서 dll을 작성하는 방법입니다. Visual Studio에서 읽을 수 있도록 텍스트 문서로 작성했습니다.

오류가 있으면 나 같은 초보 프로그래머의 조언을 따라 자신을 저주하십시오. .

미리 감사드립니다.

 

치명적인 오류 해결됨

여러 번 시도한 후에 마침내 '중요한 오류' 메시지를 해결했습니다(이전 게시물 읽기).

내가 .dll을 만든 방식과는 아무 관련이 없지만 MFX_SD 코드의 GetSMAArray 함수에서 논리 누락과 관련이 있습니다.

다음은 미스 로직을 강조한 MFX_SD 코드입니다.

for ( int i = 0; i < MaximumRecords; i++)

{

이중 합계 = 0.0;

for ( int k = 0; k < 기간 ; k++ )

{

합계 += 요금[MaximumRecords-i-1-k].close;

}

결과[MaximumRecords-i-1] = 합계 / 기간 ;

}

예를 들어 Period = 2, MaximumRecord = 75, i = 74라고 가정합니다. 그러면 다음을 계산할 때 오류가 발생합니다.

합계 += 요금[MaximumRecords-i-1-k].close;

MaximumRecord - i - 1 - k의 결과가 -1이기 때문입니다. 비율 [-1]의 유일한 값은 0이므로 합계 값도 0이 됩니다. 그리고 SMA를 계산하기 때문에 합계를 기간으로 나누어야 합니다. 0은 2로 나뉩니다. 그리고 '치명적 오류'가 발생하고 전문가는 중지합니다.

믿기지 않으면 입력 주기가 다른 1분 차트에 여러 개의 MFX_SD를 첨부하지만 MFX_SD 중 하나는 입력 주기 = 1이어야 합니다. MT 터미널 창을 보고 전문가 탭을 클릭합니다. 치명적인 오류 메시지가 표시되고 전문가가 작동을 멈춥니다. 그러나 차트를 보면 period = 1인 MFX_SD만 여전히 실행 중입니다.

MistigriFX가 그의 비디오에서 보여주려는 것은 dll을 만들고 배열을 dll에 전달하는 방법이었다고 생각합니다. 그가 자신의 SMA 논리를 수정해야 하는 경우 보기에 심각하게 골치 아픈 비디오가 될 것입니다. 그래서 그는 정확하지 않지만 간단한 MA의 간단한 예를 보여줍니다.

행복한 dll 만들기.

 

MT4 확장 - 과정

안녕하세요 codersguru님

강의 링크 좀 알려주실 수 있으신가요?

또는 pdf 설명서.

그것에 대해 더 배우려면 어떤 문헌이라도 필요합니다.

감사합니다.

친애하는

이반

 

...

메타트레이더의 전문가\샘플\DLLSample 폴더(모든 메타트레이더가 이 폴더에 설치)에는 dll 호출에 대해 알아야 할 모든 예제(mql 및 C++ 소스, def 파일 포함)가 있습니다(지원되는 모든 가능한 매개변수 유형 메타 트레이더에서 dll로의 "통신"에 대한 내용은 여기에서 다룹니다. 나머지는 C/C++에 대한 지식에 달려 있습니다.

holesovsky:
안녕하세요 codersguru님

강의 링크 좀 알려주실 수 있으신가요?

또는 pdf 설명서.

그것에 대해 더 배우려면 어떤 문헌이라도 필요합니다.

감사합니다.

친애하는

이반