오류, 버그, 질문 - 페이지 111

 
sergeev :

모든 것이 일치했습니다.

2010.08.28 20:57:09 서비스(EURUSD,H1) L1=6653490000 L2=6653490000 L3=6653490000 M1=6653490000
2010.08.28 20:57:09 서비스(EURUSD,H1) A=665349 B=665349 C=665349
2010.08.28 20:57:09 Servis (EURUSD,H1) --- OnInit() --- 1 --- !!! 초기 파라미터 준비 시작!!!


내 M1이 일치하지 않았습니다

PQ       0        Servis (EURUSD,H8)       22 : 06 : 24         --- OnInit () --- 1 --- !!!  Старт  подготовки начальных параметров  !!!
LE       0        Servis (EURUSD,H8)       22 : 06 : 24          A= 100652   B= 100652   C= 100652
CP       0        Servis (EURUSD,H8)       22 : 06 : 24          L1= 1006520000    L2= 1006520000    L3= 1006520000    M1= 4294966006
 
sergey1294 :

첫 번째 번호를 얻는 데 필요한 항목에 따라 다음을 시도할 수 있습니다.

예, 더 간단합니다. 끝에 추가 따옴표를 넣을 수도 없습니다.
 return ( StringToTime (( string )str.year+ "." +( string )str.mon+ ".01 00:00" ));
 
SHOOTER777 :

다시 한 번 나는 호기심 많은 사람들에게 호소합니다!

코드 첨부

내가 여전히 프로그래밍에서 뭔가를 이해하고 있다면 그것은 L1 = L2 = L3 = M1이어야 합니다. 저는 그렇지 않습니다! 그리고 너?

처음에 컴파일러는 "#import "lbS7N_Servis.ex5""의 부재에 대해 불평했습니다.

이 줄을 제거한 후 다음을 얻었습니다.

2010.08.28 22:19:51 서비스[1] (EURUSD,H1) L1=1016990000 L2=1016990000 L3=6617010000 M1=1016990000
2010.08.28 22:19:51 서비스[1] (EURUSD,H1) A=101699 B=101699 C=661701
2010.08.28 22:19:51 Servis[1] (EURUSD,H1) --- OnInit() --- 1 --- !!! 초기 파라미터 준비 시작!!!

코드의 계좌 번호를 제 계좌 번호 로 교체했을 때 다음과 같은 결과를 얻었습니다.

2010.08.28 22:26:46 서비스[1] (EURUSD,H1) L1=1016990000 L2=1016990000 L3=1016990000 M1=1016990000

2010.08.28 22:26:46 서비스[1] (EURUSD,H1) A=101699 B=101699 C=101699

2010.08.28 22:26:46 Servis[1] (EURUSD,H1) --- OnInit() --- 1 --- !!! 초기 파라미터 준비 시작!!!

MQ 서버, 빌드 316.

 
sergey1294 :

내 M1이 일치하지 않았습니다

독특한 상황... :(
 
SymbolInfoDouble(Symbol(), SYMBOL_VOLUME_LIMIT )이 null을 반환하는 이유는 무엇입니까?
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
  • www.mql5.com
Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте - Документация по MQL5
 
sergeev :
독특한 상황... :(

또한 세 가지 고유한 상황이 있습니다. 이것이 발견됩니다. 그리고 얼마나 많이 발견되지 않습니까?

그리고 이러한 상황을 감안할 때 MetaQuotes는 한 달 후에 Championship 2010 을 시작하게 될까요?

오, MetaTrader 5가 우리를 위해 얼마나 많은 "놀라운" 발견을 준비하고 있습니까?

 
Kos :
SymbolInfoDouble(Symbol(), SYMBOL_VOLUME_LIMIT )이 null을 반환하는 이유는 무엇입니까?

또한, 성공적인 실행의 표시를 반환하는 버전(도움말에서는 2로 지정되어 있습니다. 함수의 성공에 따라 true 또는 false를 반환합니다. 성공하면 속성 값이 참조로 전달된 수신 변수에 다음과 같이 배치됩니다. 마지막 매개변수. ) 호출 성공을 보고합니다.

 void OnStart ()
{
   double SymbolVolumeLimit1 = SymbolInfoDouble ( Symbol (), SYMBOL_VOLUME_LIMIT );
   double SymbolVolumeLimit2 = DBL_MAX ;

   Print ( "Symbol() = " , Symbol (), ", bool SymbolInfoDouble() = " , SymbolInfoDouble ( Symbol (), SYMBOL_VOLUME_LIMIT , SymbolVolumeLimit2));
   Print ( "SymbolVolumeLimit1 = " , SymbolVolumeLimit1, ", SymbolVolumeLimit2 = " , SymbolVolumeLimit2);
}

/* Вывод в лог (хронология - сверху вниз):
JN      0       1 (EURUSD,M15)  02:41:18        Symbol() = EURUSD, bool SymbolInfoDouble() = true
JJ      0       1 (EURUSD,M15)  02:41:18        SymbolVolumeLimit1 = 0, SymbolVolumeLimit2 = 0
*/

SymbolInfoDouble() 함수의 두 번째 버전은 성공을 의미하는 true를 반환했습니다. 이는 초기에 DBL_MAX 값으로 초기화되었지만 SymbolInfoDouble()을 호출한 후 값 0을 받은 SymbolVolumeLimit2 변수의 값에서도 확인할 수 있습니다.

그리고 MetaQuotes에 따르면 Championship 2010의 Expert Advisors는 이러한 조건에서 이러한 함수가 반환하는 값에 의존하고 하드 코딩된 값을 사용하지 않아야 합니까?

 

누가 OrderCheck 기능을 사용했는지.

다음은 그러한 디자인입니다.

           MqlTradeRequest request;
           request.action=TRADE_ACTION_DEAL;
           request.symbol=_Symbol;
           request.volume=volume_exe;
           request.price=SymbolInfoDouble(_Symbol, SYMBOL_ASK);
           request.sl=0;
           request.tp=0;
           request.deviation=SymbolInfoInteger(_Symbol, SYMBOL_SPREAD)*2;
           request.type=ORDER_TYPE_BUY;
           request.type_filling=ORDER_FILLING_CANCEL;
           MqlTradeResult result;
           OrderCheck(request, result);
           if(OrderSend(request, result)==false)

컴파일할 때 오류가 발생합니다. '결과' - 매개변수 변환이 허용되지 않습니다.

OrderCheck가 제거되면 모든 것이 정상적으로 컴파일되고 테스터에서 위치가 열립니다 .

 

그리고 여기 그것이 무엇인지 ...

 Alert ( " прибыль=" ,ПросчетПрибылизаПериод( D'2010.08.01 00:00:00' ));


double ПросчетПрибылизаПериод( datetime датаначалапросчетаприбыли)
  {
   int i;
   double прибыльзапериод;
   ulong тикет;
   HistorySelect (датаначалапросчетаприбыли, TimeCurrent ());
   //HistorySelect(D'2010.08.20 00:00:00',D'2010.08.20 23:59:00');
   for (i= 1 ;i<= HistoryDealsTotal ();i=i+ 1 )
     {
      тикет= HistoryDealGetTicket (i);
       if ( HistoryDealGetInteger (тикет, DEAL_TYPE )== DEAL_ENTRY_IN || HistoryDealGetInteger (тикет, DEAL_TYPE )== DEAL_ENTRY_STATE )
         continue ;
      прибыльзапериод=прибыльзапериод+ HistoryDealGetDouble (тикет, DEAL_PROFIT )+ HistoryDealGetDouble (тикет, DEAL_COMMISSION )+ HistoryDealGetDouble (тикет, DEAL_SWAP );
     }
   return (прибыльзапериод);
  }

지정된 날짜의 거래에서 발생하는 이익을 고려해야 합니다. 실제와 완전히 다른 결과를 생성합니다. 예를 들어, 약 2000의 결과 대신 611을 얻습니다. 나는 요일별로 확인하기 시작했습니다(주석 행). 같은 결과가 나오는(!!)일도 있는데 보통은 전혀 그렇지가 않더라구요...(패턴을 못찾았습니다). 또한 디버거에서 주기는 전체 트랜잭션 수를 정확하게 통과합니다. 사실, int 변수를 제외하고 다른 값이 표시되지 않기 때문에 이 수의 트랜잭션만 추적할 수 있습니다(Expression을 평가할 수 없음).

코드가 정확하고 디버거를 올바르게 사용하고 있습니까...?

 
SHOOTER777 :

고맙습니다. 그런 다음 개발자에게 연락하겠습니다.

안녕하세요! 빌드 번호 , OS, 비트 깊이를 표시하고 코드를 첨부하는 서비스 데스크에서 귀하의 상황을 자세히 설명하십시오.
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Состояние клиентского терминала
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Состояние клиентского терминала
  • www.mql5.com
Стандартные константы, перечисления и структуры / Состояние окружения / Состояние клиентского терминала - Документация по MQL5