새로운 API MetaTrader 4 사용 가능 - 페이지 6

 
yewnix :

여기 뭔가 이해가 안감..

하루 종일 주문 보내기를 할 수 있습니다..

그러나 OrderClose를 수행하는 데 큰 문제가 있습니다.


이에 대한 예를 들어 주시겠습니까?


나는 정말 내 .NET 래퍼 DLL을 생각하지 않습니다.

안녕하세요 유닉스입니다!


<Program Files>\TradeZone\TZMT4API\Developer\Short_Sample_MQL4.zip에서 확인할 수 있습니다.


이 간단한 mql 코드는 <orderproxy.mqh>를 포함하면 열려 있는 모든 주문을 닫습니다.


   int hAccount = TZ_LogIn(Login, Password, Server, "", "", "", "");

   int Total    = TZ_OrdersTotal();


   for(i=0;i<Total;i++)

   {

      TZ_OrderSelect(i,SELECT_BY_POS,MODE_TRADES);

      TZ_OrderClose(TZ_OrderTicket(), TZ_OrderLots(), TZ_OrderClosePrice(), 3);

   } 

안부입니다.

 
TradeZone :

안녕하세요 유닉스입니다!


C:\Arquivos de programas\TradeZone\TZMT4API\Developer\Short_Sample_MQL4.zip에서 살펴볼 수 있습니다.


이 간단한 mql 코드는 <orderproxy.mqh>를 포함하면 열려 있는 모든 주문을 닫습니다.


int hAccount = TZ_LogIn(Login, Password, Server, "", "", "", "");

int Total = TZ_OrdersTotal();


for(i=0;i<Total;i++)

{

TZ_OrderSelect(i,SELECT_BY_POS,MODE_TRADES);

TZ_OrderClose(TZ_OrderTicket(), TZ_OrderLots(), TZ_OrderClosePrice(), 3);

}

안부입니다.

C#에서 이 작업을 수행하려고 합니다.

나는 당신의 기능 을 취하고 .NET용 dll 래퍼를 작성했습니다.

즉:


이중 물가 = MT4ApiNet.MarketInfo_MT4(h, "GBPUSD", (int)MT4ApiNet.MarketInfoType.MODE_ASK)

MT4ApiNet.OrderSend_MT4(h, "GBPUSD", (int)MT4ApiNet.OrderType.OP_BUY, 1, 물가, 3, (가격 - 0.0050), (가격 + 0.0050), "내 프로그램", 100, 0);


이것은 완벽하게 작동합니다. 이 주문은 완벽하게 나타납니다.

이제.. MetaTrader에서 주문 번호를 받는 경우(예: 주문 번호로 1234 사용)


MT4ApiNet.OrderClose_MT4(h, 1234, 1, MT4ApiNet.OrderClosePrice_MT4(h,1234), 20);


주문을 취소하지 않습니다...

주문을 순환하고 MT4ApiNet.OrderGet_MT4를 수행해도 여전히 작동하지 않습니다.

 

참고로

OrderClose 를 수행한 후 마지막 오류가 발생하면 ..

MessageBox.Show(MT4ApiNet.ErrorDescription_MT4(MT4ApiNet.GetLastError_MT4(h)));


이 반환 일반 오류



적어도 델파이에서 적절한 OrderClose를 보여줄 수 있습니까?

델파이에서도 코드가 멈춥니다.

 
TradeZone :

안녕하세요 쥬조님


<프로그램 파일>\TradeZone\TZMT4API\Developer\MetaTrader4 API.txt에는 원하는 것이 포함되어 있습니다.


안부입니다.

안녕하세요 트레이드존


신속한 응답에 감사드립니다. 지난번에 제가 C++ 개발을 활발히 했을 때가 8년 전이었는데, 그때쯤이면 api를 자연스럽게 연습하기 위해서는 dll의 *.h와 *.lib가 필요했습니다. *.h 파일이 있고 *.lib가 없는 경우 프로세스가 더 지루하더라도 함수 주소를 동적으로 확인하여 여전히 수행할 수 있습니다. 따라서 *.lib가 여전히 누락되어 있지만 *.h 파일을 직접 만들 수 있습니다. 아마도 내가 알지 못하는 dll 자체에서 lib를 만드는 쉬운 방법이 있을 수 있습니다.


잘 지내세요

주소

 

트레이드존,


Delphi 애플리케이션에서 전송되는 작업 샘플 OrderClose_MT4 명령을 게시해 주시겠습니까?

앞서 언급했듯이 나는 이것을 작동시킬 수 없습니다.


감사해요!

 
쿵.. 쿵..
 

글쎄, 나는 이것에 대한 응답을 받지 못했기 때문에 나는 당신의 DLL이 실제로 어떻게 작동하는지 파헤치기 시작했습니다.

꽤 좋은 아이디어입니다.

서로 다른 EA에 각각 첨부된 10개의 차트를 로드하세요.

이러한 EA는 전문가/파일 디렉토리에서 파일을 실행하고 생성합니다.

DLL은 프로그래밍된 앱에 데이터를 표시하기 위해 이러한 파일을 다시 읽습니다.

EA는 파일(DLL 호출에 의해 생성됨)이 있는지 확인하고 프로세스 트랜잭션이 있으면 다른 파일을 생성하여 응답 데이터를 다시 제공한 다음 DLL에서 생성된 파일을 삭제하여 트랜잭션이 완료되었는지 또는 실패했는지 알 수 있습니다.


내가 틀리지 않았다면 Login_MT4 명령에서 반환된 핸들은 무작위로 생성된 디렉토리 이름에 대한 인덱스일 뿐입니다. 이 방법으로 제어할 터미널.exe 프로세스와 생성된 파일을 저장할 위치를 알 수 있습니다.


이 모든 것이 틀릴 수 있습니다. 저는 그저 제가 겪고 있는 OrderClose 문제를 해결하고 싶습니다...


그러나 파일을 계속해서 생성하는 대신... Memory Mapping(Pair Name_Handle을 기반으로 메모리 맵 생성/열기)을 사용하는 것이 좋습니다.

그건 그렇고.. 당신이 OrderClose에 대해 말해 줄 수 있는 것만으로도 내 자신의 EA와 메모리 맵 DLL 인터페이스를 코딩할 필요가 없습니다.


이 API에 대한 내 분석이 있습니다.


건배!

 

얘들아,

이와 같은 통합이 잘 작동하고 테스트되었습니다(이 코드가 아님). 이는 전문가를 통해 수행되며 C++/관리되는 C++를 통해 기능 을 .NET 모듈에 노출합니다. 원활한 거래 관리, 오류 보고, 실시간 견적 제공 등을 가능하게 합니다. 통신은 TCP를 통해 이루어지므로 빠르고 안정적입니다.

새로운 오픈 소스 거래 플랫폼(.NET 기반, MT4를 사용하여 데이터 수신 또는 주문 수행)의 일부로 완전 무료 오픈 소스로 게시됩니다. 플랫폼을 사용하거나 단순히 통합의 작은 부분을 사용하도록 선택할 수 있습니다.

관심 있으신 분들은 손을 들어주시면 자세히 안내해 드리겠습니다. :)

플랫폼은 며칠(약 10월 15일)에 출시될 예정입니다.

 

피어2k,


좋아요, 나중에 메모리 매핑 대신 TCP를 사용하는 것에 대해 생각했습니다.

코드에 대한 링크를 보내려면 코드를 보는 것이 좋습니다.

그것은 당신에게 달려 있습니다 :)


건배!

yewnix@gmail.com

 
이봐, peer2k, 그것은 매우 멋질 것입니다. yuryrub@gmail.com으로 세부 정보와 함께 저를 게시하십시오.