MetaTrader 4 Build 529 베타가 새로운 컴파일러와 함께 출시됨 - 페이지 126

 
Wahoo :


물리적 의미는 어드바이저의 입력 매개변수에 문자열로 이름이 입력된 기호가 거래 가능한지 확인하는 것입니다. MT5의 동일한 코드가 작동합니다.

내가 제공한 코드는 예시일 뿐입니다. 조금 다르지만 의미는 변함이 없습니다.

추신: 테스터의 오류 138은 어떻습니까?

코드:

결과:

확인하다:

 if ( OrderSend (SYMBOL,OP_BUY, 0.1 , NormalizeDouble (ask,digits), 1000 , 0 , 0 , "Test" , 0 , 0 ,CLR_NONE)< 0 ) {
   Print ( "ask = " +DoubleToStr(ask, Digits )+ ", bid = " +DoubleToStr(bid, Digits )+ ", digits = " +digits);
   }
당신이 원인을 보지 못하도록 막는 것은 무엇입니까?
 
Renat :
이것은 패스의 결과가 쓸모없고 폐기되었음을 의미합니다.


번역해주셔서 감사합니다. 그러다가 이적을 해서 고생을 해서 어떻게든 들어가지 못하고...

그러나 이전 빌드에서 최적화는 3시간 동안 지속되며 어드바이저의 유익한 매개변수를 약 2000개 찾습니다. 새 빌드는 처음에 명목상 30분 또는 그 이하에서 최적화되어 수익성 있는 매개변수를 찾은 다음 갑자기 분해되어 최적화가 종료됩니다.

반복합니다. 저는 이미 한 달 전에 최적화 중에 그러한 이상한 동작에 대해 썼습니다. 고쳐진 것 같습니다. 이제 여기에 같은 문제가 있습니다.

 
artmedia70 :

확인하다:

당신이 원인을 보지 못하도록 막는 것은 무엇입니까?


아무것도 방해하지 않습니다.

 void OnTick ()
  {
   if ( OrdersTotal ()== 0 )
     {
       string SYMBOL= Symbol ();
       int digits=( int ) SymbolInfoInteger (SYMBOL, SYMBOL_DIGITS );
       MqlTick lasttick={ 0 };
       if (! SymbolInfoTick (SYMBOL,lasttick))
         return ;
       double ask=lasttick.ask;
       double bid=lasttick.bid;

       if ( OrderSend (SYMBOL,OP_BUY, 0.1 , NormalizeDouble (ask,digits), 1000 , 0 , 0 , "Test" , 0 , 0 ,CLR_NONE)< 0 ) 
        {
         Print ( "ask = " +DoubleToStr(ask, Digits )+ ", bid = " +DoubleToStr(bid, Digits )+ ", digits = " +( string )digits);
        }
     }
  }

 
Metaquotes에 대한 질문: iVolume 유형이 double 에서 ulong 으로 변경된 이유는 무엇입니까? 왜 하나의 기술 지표 유형을 변경해야 했습니까 ??? 왜 그대로 두지 못했을까?
 
Wahoo :


아무것도 방해하지 않습니다.


일반적으로 그런 것입니다. SymbolInfoTick 캠페인은 여전히 비뚤어진 방식으로 작동합니다(기록이 아닌 실제 마지막 가격을 복사하는 것 같습니다).

 void OnTick ()
  {
   if ( OrdersTotal ()== 0 )
     {
       string SYMBOL= Symbol ();
       int digits=( int ) SymbolInfoInteger (SYMBOL, SYMBOL_DIGITS );
       MqlTick lasttick={ 0 };
       if (! SymbolInfoTick (SYMBOL,lasttick))
         return ;
       double ask=lasttick.ask;
       double bid=lasttick.bid;

       if ( OrderSend (SYMBOL,OP_BUY, 0.1 , NormalizeDouble (ask,digits), 1000 , 0 , 0 , "Test" , 0 , 0 ,CLR_NONE)< 0 )
        {
         Print (SYMBOL+ " ask = " +DoubleToStr(ask, Digits )+ ", bid = " +DoubleToStr(bid, Digits )+ ", digits = " +( string )digits);
         if ( OrderSend ( Symbol (),OP_BUY, 0.1 , NormalizeDouble (Ask, Digits ), 100 , 0 , 0 , "Test" , 0 , 0 ,CLR_NONE)> 0 )
             Print ( "Opened using Ask =" +DoubleToStr(Ask, Digits ));
        }

       //=== Final Check
       SymbolInfoTick (SYMBOL,lasttick);
       Print ( "Ask: " +( string )Ask+ "  lastick.ask: " +( string )lasttick.ask);

     }
  }

결과:

 
MT5와의 호환성을 위해 볼륨을 변경해야 했습니다. 이제 MT4의 내부 막대는 상위 5개와 동일합니다.
 
Renat :
MT5와의 호환성을 위해 볼륨을 변경해야 했습니다. 이제 MT4의 내부 막대는 상위 5개와 동일합니다.

이것이 귀하의 데모 계정과 예를 들어 내 고객이 테스트 중인 Alpari의 테스트 결과 사이에 큰 불일치의 이유가 될 수 없습니다.

이전에는 견적의 차이가 있더라도 한 명의 Expert Advisor가 서로 다른 계정에서 완전히 다른 작업을 수행한 적이 없었습니다. 이제 시각적 모드에서 한 테스트에서는 위치가 플러스 또는 마이너스로 명확하게 이동하는 반면 다른 테스트에서는 상황이 정반대인 방법을 볼 수 있습니다.

 
모든 로그와의 불일치를 자세히 살펴볼 필요가 있습니다. 일반적인 결론을 내릴 수 없습니다. 즉, 세부 사항이 필요합니다.
 
Renat :
모든 로그와의 불일치를 자세히 살펴볼 필요가 있습니다. 일반적인 결론을 내릴 수 없습니다. 즉, 세부 사항이 필요합니다.
알았습니다. 나중에 자세히 설명하겠습니다. 이제 의제에서 가장 중요한 것은 알고리즘을 올바르게 완료하는 것입니다.
 
MT 560, ME 881. 오래된 오류의 부활에 대해 다시 한번 말씀드리지만 서비스 데스크에 설명된 대로 업데이트를 생성하는 동안 한 번 닫은 것 같습니다.