MetaTrader 4 클라이언트 터미널 빌드 402의 새 버전 - 페이지 6

 
dmmikl86 :
이것은 다른 쌍의 포인트 비용이 다르기 때문입니다 ...

제 생각에는 "포인트로 수익" 표시 모드에서 포인트 비용을 고려해야 합니다.

 
olyakish :

제 생각에는 "포인트로 수익" 표시 모드에서 포인트 비용을 고려해야 합니다.

이것은 또 다른 영원한 글리치 MT입니다)
 

글리치....

1) Market Watch에서 불필요한 도구를 제거했다가 다시 추가하면 흥미로운 것을 얻을 수 있습니다.

기기를 마우스 오른쪽 버튼으로 클릭하고 "차트 창"을 선택하여 차트를 엽니다.

선택한 종목이 아닌 다른 종목의 차트가 열립니다!!

이 오류가 발생하려면 새로 추가된 도구 중에서 도구를 선택해야 합니다. (스크린샷 pic1, pic2, pic3 참조)

2) 스크린샷에서 USDCHF 상품이 "Symbols" 창에서 선택된 것으로 표시되어 있음을 알 수 있지만 실제로는 "Market Watch"에 없습니다. (pic4)

아마도 첫 번째 결함은 두 번째 결함의 결과일 것입니다. "시장 감시"에서 도구의 번호가 잘못되었습니다.

내 인터넷이 매우 나빠서 모든 스크린샷이 아카이브에 있습니다.

링크는 http://www.sendspace.com/file/tbav73 입니다.

 
dimonsky :

글리치....

1) Market Watch에서 불필요한 도구를 제거했다가 다시 추가하면 흥미로운 것을 얻을 수 있습니다.

기기를 마우스 오른쪽 버튼으로 클릭하고 "차트 창"을 선택하여 차트를 엽니다.

선택한 종목이 아닌 다른 종목의 차트가 열립니다!!

나는 또한 이것을 401번째 빌드에서 알아차렸다.
 

오늘(또는 오히려 어제) 아침에 MT4에서 이상한 오류를 받았습니다. - OrderSelect는 한 Expert Advisor에서 티켓 번호로 주문을 찾지 못했습니다 .

Expert Advisor는 현재 가격의 반대편에 두 개의 보류 주문 BUY_STOP 및 SELL_STOP을 배치합니다. 이러한 주문의 티켓은 t1 및 t2에 저장됩니다. 오류가 발생하고 아래에 제공된 코드는 다음을 수행합니다. 이러한 지연 중 하나가 열리면 두 번째 지연이 삭제되고 숫자 t3으로 지연된 다음 코드가 대신 설정됩니다. t1 및 t2의 초기 배치 중에 오류가 있었다면 잘못된 티켓이 주문 목록에 없어야 합니다. 이것은 정확히 if (OrderSelect ...)를 사용하여 확인되는 것이며 오류의 경우 로그에 메시지가 기록되고 시리즈는 restart() 함수에 의해 종료됩니다.

오늘 6시 30분에 t1이 열렸습니다. 주문 t2는 EA에 의해 즉시 삭제되었습니다(시장에서 제거되었지만 기록에는 남아 있음 - "취소됨", 확인함). 그 후, t3가 배치되었습니다. 이러한 모든 이벤트는 MT와 어드바이저의 로그에 있습니다. 그런 다음 "OrderSelect(t2, SELECT_BY_TICKET)" 검사는 FALSE를 반환하고 시리즈는 "알 수 없는 주문 t2" 오류와 함께 종료됩니다. t2가 오류 없이 노출되고 제거되었고 기록에 남아 있기 때문에 이상합니다. MT의 기록 표시 모드 - "모든 기록". OrderSelect가 그것을 찾지 못하는 이유는 무엇입니까?

컴퓨터는 별도이며 거래에만 사용되며 다른 용도로는 사용되지 않습니다. 저 말고는 아무도 건드리지 않습니다. CPU 사용량은 평균 10%입니다. 메모리, 나사의 공간 등 넉넉히.
버전 MT4 - 402. EA는 3개의 다른 쌍(3개의 차트에서)에서 병렬로 하나의 MT에서 실시간으로 다양한 변형으로 데모 작업을 수행했습니다. 오늘 아침까지 코드의 이 부분에는 문제가 없었습니다. 그 후, 낮과 저녁에 동일한 Expert Advisor의 다른 쌍에 대해 모든 것이 순조롭게 진행되었습니다. 즉, 오류를 마음대로 재현할 수 없습니다.

질문: 어떻게 이런 일이 일어날 수 있습니까? 이것은 MT 결함입니까 아니면 코드에서 뭔가를 놓친 것입니까?

이 코드는 표준 OrderDelete 및 OrderSend에 대한 래퍼인 OrderDeleteX 및 OrderSendX 기능을 사용하여 유휴 상태에 대한 거래 흐름 검사를 추가하고 EA 로그에 "주문 삭제 ..." 및 "주문 보내기 ..."와 같은 이벤트를 기록합니다.
코드를 단순화하고 더 명확하게 하기 위해 가격 계산을 제거했습니다.

 if ( OrderSelect (t1, SELECT_BY_TICKET)) {
   if (OrderType() == OP_BUY) {
     Print ( "--------------------------------------------------" );
     if (t2 > 0 ) OrderDeleteX(t2);
    // Расчёты цены, стоплосса и тейкпрофита
    // .....
    t3 = OrderSendX( Symbol (), OP_SELLSTOP, 0.02 , Price1, slip, StopLoss, TakeProfit, "step 2" , Magic, 0 , ColorOrderSendSell);
  }   
} else {
   Print ( "ERROR: Unknown order t1 in step 1" );
  restart( 3 );
}
 

if ( OrderSelect (t2, SELECT_BY_TICKET)) {     
   if (OrderType() == OP_SELL) {
     Print ( "--------------------------------------------------" );
     if (t1 > 0 ) OrderDeleteX(t1);
    // Расчёты цены, стоплосса и тейкпрофита
    // .....
    t3 = OrderSendX( Symbol (), OP_BUYSTOP, 0.02 , Price1, slip, StopLoss, TakeProfit, "step 2" , Magic, 0 , ColorOrderSendBuy);
  }
} else {
   Print ( "ERROR: Unknown order t2 in step 1" );
  restart( 4 );
}


변수별 주문 번호:
t2 = 119732180
t3 = 119733656

Лог эксперта:
06 : 30 : 43 CheMurom v3. 4 .real EURUSD,H1: --------------------------------------------------
06 : 30 : 43 CheMurom v3. 4 .real EURUSD,H1: Deleting order #119732180; attempt number: 1
06 : 30 : 43 CheMurom v3. 4 .real EURUSD,H1: delete #119732180 sell stop 0.01 EURUSD at 1.46432 sl: 1.47032 tp: 1.43432 ok
06 : 30 : 43 CheMurom v3. 4 .real EURUSD,H1: Sending order cmd=SELL_STOP, lot= 0.02 , price= 1.46032 , slip= 3 , sl= 1.46932 , tp= 1.44082 ; attempt number: 1
06 : 30 : 44 CheMurom v3. 4 .real EURUSD,H1: open #119733656 sell stop 0.02 EURUSD at 1.46032 sl: 1.46932 tp: 1.44082 ok
06 : 30 : 44 CheMurom v3. 4 .real EURUSD,H1: ERROR: Unknown t2 in step 1

Лог терминала:
06:30:43 '2871084': delete pending order #119732180 sell stop 0.01 EURUSD at 1.46432 sl: 1.47032 tp: 1.43432
06:30:44 '2871084': request was accepted by server
06:30:44 '2871084': request in process
06:30:44 '2871084': pending order #119732180 was deleted
06:30:44 '2871084': pending order sell stop 0.02 EURUSD at 1.46032 sl: 1.46932 tp: 1.44082
06:30:44 '2871084': request was accepted by server
06:30:45 '2871084': request in process
06:30:45 '2871084': order was opened : #119733656 sell stop 0.02 EURUSD at 1.46032 sl: 1.46932 tp: 1.44082
 

영장을 찾을 수 없습니다. 여기에서 주문 67930924가 개설되었다는 DC 보고서를 볼 수 있습니다...

2011년 6월 8일부터 계정 기록에서 마감된 거래입니다. 보시다시피 이 주문은 여기에 없습니다.

따라서 공개 거래여야 합니다. 아래 그림, 열린 거래.

하지만 그는 여기에도 없습니다. DC가 내일 어떤 보고서를 보낼지 궁금하지만 소프트웨어 개발자의 버전, 이것이 어떻게 될 수 있는지 듣고 싶습니다.

그리고 한 가지 더, 별거 아닐 수도 있지만 날짜를 어떻게 저장하든, 기간 선택을 아무리 열어도 항상 5월의 비용이 듭니다.


 
voinG :

영장을 찾을 수 없습니다. 여기에서 주문 67930924가 개설되었다는 DC 보고서를 볼 수 있습니다...

2011년 6월 8일부터 계정 기록에서 마감된 거래입니다. 보시다시피 이 주문은 여기에 없습니다.

따라서 공개 거래여야 합니다. 아래 그림, 열린 거래.

하지만 그는 여기에도 없습니다. DC가 내일 어떤 보고서를 보낼지 궁금하지만 소프트웨어 개발자의 버전, 이것이 어떻게 될 수 있는지 듣고 싶습니다.

그리고 한 가지 더, 별거 아닐 수도 있지만 날짜를 어떻게 저장하든, 기간 선택을 아무리 열어도 항상 5월의 비용이 듭니다.



설립하다. "전체 기록"을 열었고 이 버전에서 볼 수 있습니다.
 

계속해서 " OrderSelect가 티켓 번호로 주문을 찾지 못했습니다 ".

오늘 아침 다른 쌍의 동일한 Expert Advisor에서 동일한 오류가 발생했습니다. 보류 주문 t2=#119899844가 성공적으로 배치된 다음 성공적으로 삭제된 후 보류 주문 t3=#119903758이 오류 없이 배치되었으며 그 후 t2가 OrderSelect 함수에 의해 발견되지 않았습니다.

어제의 오류와 오늘의 오류 사이에 Expert Advisor의 이전 메시지에 있는 코드는 오류 없이 여러 번 성공적으로 작동했으며 원격 주문은 문제 없이 발견되었습니다.

그 이전에 Expert Advisor는 몇 달 동안 MT4 버전 229에서 작업했지만 관찰되지 않았습니다. 4일전 주말에 402버전으로 바꿨습니다. 새버전과 관련된 오류인지 모르겠네요. 이 Expert Advisor가 거래하는 Alpari는 시세의 시간대를 변경했으며 버전 402(Alpari가 주장하는 대로)만 이러한 변경 사항을 올바르게 처리하기 때문에 더 이상 이전 것으로 돌아갈 수 없습니다.

질문은 열려 있습니다.
전체 내역이 표시되고 손실된 주문이 그 안에 표시된다는 사실에도 불구하고 OrderSelect가 내역에서 주문을 찾지 못한 이유는 무엇입니까? 이것은 MT 결함입니까 아니면 코드에서 뭔가를 놓친 것입니까?

Лог эксперта:
10 : 15 : 33 CheMurom v3. 4 .real EURCHF,H1: --------------------------------------------------
10 : 15 : 33 CheMurom v3. 4 .real EURCHF,H1: Deleting order #119899844; attempt number: 1
10 : 15 : 34 CheMurom v3. 4 .real EURCHF,H1: delete #119899844 sell stop 0.01 EURCHF at 1.22245 sl: 1.22945 tp: 1.19735 ok
10 : 15 : 34 CheMurom v3. 4 .real EURCHF,H1: Sending order cmd=SELL_STOP, lot= 0.02 , price= 1.21745 , slip= 3 , sl= 1.22845 , tp= 1.20015 ; attempt number: 1
10 : 15 : 36 CheMurom v3. 4 .real EURCHF,H1: open #119903758 sell stop 0.02 EURCHF at 1.21745 sl: 1.22845 tp: 1.20015 ok
10 : 15 : 36 CheMurom v3. 4 .real EURCHF,H1: ERROR: Unknown t2 in step 1

Лог терминала:
10:15:35 '2871084': delete pending order #119899844 sell stop 0.01 EURCHF at 1.22245 sl: 1.22945 tp: 1.19735
10:15:35 '2871084': request was accepted by server
10:15:35 '2871084': request in process
10:15:36 '2871084': pending order #119899844 was deleted
10:15:36 '2871084': pending order sell stop 0.02 EURCHF at 1.21745 sl: 1.22845 tp: 1.20015
10:15:36 '2871084': request was accepted by server
10:15:36 '2871084': request in process
10:15:37 '2871084': order was opened : #119903758 sell stop 0.02 EURCHF at 1.21745 sl: 1.22845 tp: 1.20015
 
이 문제를 화면으로 Renat에게 설명했는데 빌드 399에서 제거했지만 401과 402에서 이 글리치가 다시 나타나 빌드 399로 돌아가야 했습니다.
 

Delphi7로 작성된 DLL이 있습니다. 지정된 경로에 파일이 있는지 확인하는 기능 하나만 구현합니다.

여기 그녀의 코드가 있습니다.

 library FileGDV;

uses
  SysUtils,
  Classes;

//{$R *.res}

function FileExists(s:pchar):boolean; StdCall;
begin
   result:=sysutils.fileexists(s);
end;

exports FileExists;

begin
end.

복잡한 것도 특별한 것도 없습니다. 단 하나의 기능.

이 기능을 사용하는 Expert Advisor 코드는 다음과 같습니다.

 if (FileExists(s))
      {
         handleM= FileOpen (fn, FILE_BIN | FILE_WRITE | FILE_READ );
         
      }
       else
      {
         Alert ( "File not found   " +s);         
         handleM= FileOpen (fn, FILE_BIN | FILE_WRITE );
         s= "Time;;M1;M5;M15;M30;H1;H4;D1\n" ;
         FileWriteString (handleM,s, StringLen (s));
      } 

헤더 파일 코드는 다음과 같습니다.

 #import "FileGDV.dll"


bool FileExists( string s);

 
#import


이제 질문입니다. 터미널에 고문이 한 명 있으면 모든 것이 마치 시계처럼 며칠 동안 작동합니다.

터미널의 다른 창에 두 개의 Expert Advisor가 있고 이 기능을 호출하면 몇 시간에 한 번씩 두 Expert Advisor가 모두 작업을 중지하고 로그에 메시지가 나타납니다.

2011.06.09 14:33:57     gdv_e_MultiMACD_a_KSP_GBP_v082 GBPCHF,M5: expert stopped
2011.06.09 14:33:57     gdv_e_MultiMACD_a_KSP_GBP_v082 GBPCHF,M5: function 'FileExists' call from dll 'FileGDV.dll' critical error