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

 
Yury Lemeshev # :

일관성을 유지하십시오. 확인하면

 SymbolIsSynchronized (euSY01)== true

그런 다음 확인하고

(euSY01b> 0 )== true

:)

 
Yury Lemeshev # :

이렇게 하고 코드에 7쌍에 대한 7줄이 있는 경우 시장 검토에는 하나의 통화에 대한 견적만 포함됩니다.


친애하는 함수, 나는 평등을 통해 이전 값을 우회합니다.
 
JRandomTrader # :

일관성을 유지하십시오. 확인하면

그런 다음 확인하고

:)

(euSY01b> 0 )== true

그냥보다 훨씬 낫다

euSY01b> 0
 
2022.01.02 11:03:22.330 2019.01.02 07:56:40 EURJPY 거짓
2022.01.02 11:03:22.330 2019.01.02 07:56:40 EURCAD 거짓
2022.01.02 11:03:22.330 2019.01.02 07:56:40 EURCHF 거짓
2022.01.02 11:03:22.330 2019.01.02 07:56:40 EURGBP 거짓
2022.01.02 11:03:22.330 2019.01.02 07:56:40 EURAUD 거짓
2022.01.02 11:03:22.330 2019.01.02 07:56:40 EURNZD 거짓
2022.01.02 11:03:22.330 2019.01.02 07:56:40 EURUSD 참
2022.01.02 11:03:22.330 2019.01.02 07:56:42 EURJPY 거짓
2022.01.02 11:03:22.330 2019.01.02 07:56:42 EURCAD 거짓
2022.01.02 11:03:22.330 2019.01.02 07:56:42 EURCHF 거짓
2022.01.02 11:03:22.330 2019.01.02 07:56:42 EURGBP 거짓
2022.01.02 11:03:22.330 2019.01.02 07:56:42 EURAUD 거짓
2022.01.02 11:03:22.330 2019.01.02 07:56:42 EURNZD 거짓
2022.01.02 11:03:22.330 2019.01.02 07:56:42 EURUSD 참


동기화를 확인하면 하나의 통화에 대해서만 작동합니다. 그리고 현재 7개 통화를 분석해야 합니다.

 
Yury Lemeshev # :
동기화를 확인하면 하나의 통화에 대해서만 작동합니다. 그리고 현재 7개 통화를 분석해야 합니다.

OnInit()에서 해야 할 일

 // Потрогаем символ, иначе в тестере не грузит историю
 for ( int i= 0 ;i<CountSymbol;i++) {
   iClose (SymbTrade[i], PERIOD_CURRENT , 1 );
 }
 
Yury Lemeshev # :
2022.01.02 11:03:22.330 2019.01.02 07:56:40 EURJPY 거짓
2022.01.02 11:03:22.330 2019.01.02 07:56:40 EURCAD 거짓
2022.01.02 11:03:22.330 2019.01.02 07:56:40 EURCHF 거짓
2022.01.02 11:03:22.330 2019.01.02 07:56:40 EURGBP 거짓
2022.01.02 11:03:22.330 2019.01.02 07:56:40 EURAUD 거짓
2022.01.02 11:03:22.330 2019.01.02 07:56:40 EURNZD 거짓
2022.01.02 11:03:22.330 2019.01.02 07:56:40 EURUSD 참
2022.01.02 11:03:22.330 2019.01.02 07:56:42 EURJPY 거짓
2022.01.02 11:03:22.330 2019.01.02 07:56:42 EURCAD 거짓
2022.01.02 11:03:22.330 2019.01.02 07:56:42 EURCHF 거짓
2022.01.02 11:03:22.330 2019.01.02 07:56:42 EURGBP 거짓
2022.01.02 11:03:22.330 2019.01.02 07:56:42 EURAUD 거짓
2022.01.02 11:03:22.330 2019.01.02 07:56:42 EURNZD 거짓
2022.01.02 11:03:22.330 2019.01.02 07:56:42 EURUSD 참


동기화를 확인하면 하나의 통화에 대해서만 작동합니다. 그리고 현재 7개 통화를 분석해야 합니다.

버팀목으로 쌍이 마지막으로 동기화된 시간을 기억하고 이를 기반으로 구축할 수 있습니다.

또한 요청 및 입찰에 대해 SymbolInfoTick()을 사용할 수 있습니다.

 

거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

오류, 버그, 질문

유리 레메셰프 , 2022.01.02 08:54

(euSY01b> 0 )== true

그냥보다 훨씬 낫다

euSY01b> 0

true == true, 결과: true와 같습니다. 및 false == true, 결과: false :)

이것은 다음과 같은 결과입니다.

 if ( true ) { // управление передается коду в скобках
  ...
}

if ( false ) { // управление не передаётся коду в скобках
  ...
}

또는

 // в if не 0 - true
if ( 1 ) {
  ...
}

if (- 1 ) {
  ...
}

// в if 0 - false
if ( 0 ) {
  ...
}
 
Yury Lemeshev # :

이렇게 하고 코드에 7쌍에 대한 7줄이 있는 경우 시장 검토에는 하나의 통화에 대한 견적만 포함됩니다.


OnTick에서 Bar를 호출해 보세요.

https://www.mql5.com/ru/docs/series/bars

기사에서 :

   int bars= Bars ( _Symbol , _Period );
   if ( bars> 0 )
     {
       Print ( "Количество баров в истории терминала по символу-периоду на данный момент = " ,bars);
     }
   else    //нет доступных баров
     {
       //--- видимо, данные по символу не синхронизированы с данными на сервере
       bool synchronized= false ;
       //--- счетчик цикла
       int attempts= 0 ;
       // сделаем 5 попыток дождаться синхронизации
       while (attempts< 5 )
        {
         if ( SeriesInfoInteger ( Symbol (), 0 , SERIES_SYNCHRONIZED ) )
           {
             //--- есть синхронизация, выходим
            synchronized= true ;
             break ;
           }
         //--- увеличим счетчик
         attempts++;
         //--- подождем 10 миллисекунд до следующей итерации
         Sleep ( 10 );
        }
       //--- вышли из цикла по факту синхронизации
       if (synchronized)
        {
         Print ( "Количество баров в истории терминала по символу-периоду на данный момент = " ,bars);
         Print ( "Самая первая в истории терминала дата по символу-периоду на данный момент = " ,
               ( datetime ) SeriesInfoInteger ( Symbol (), 0 , SERIES_FIRSTDATE ));
         Print ( "Самая первая дата в истории по символу на сервере = " ,
               ( datetime ) SeriesInfoInteger ( Symbol (), 0 , SERIES_SERVER_FIRSTDATE ));
        }
       //--- синхронизация данных так и не была достигнута
       else
        {
         Print ( "Не удалось получить количество баров на " , _Symbol );
        }
     }
또한 OnTick에 가격에 대한 참조가 있어야 합니다(제3자 기호가 로드되도록).
Документация по MQL5: Доступ к таймсериям и индикаторам / Bars
Документация по MQL5: Доступ к таймсериям и индикаторам / Bars
  • www.mql5.com
Bars - Доступ к таймсериям и индикаторам - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Mihail Matkovskij # :

OnTick에서 Bar를 호출해 보세요.

https://www.mql5.com/ru/docs/series/bars

기사에서 :

또한 OnTick에 가격에 대한 참조가 있어야 합니다(제3자 기호가 로드되도록).

이것은 원래의 문제를 해결하지 못한다

SymbolInfoDouble(euSY06,SYMBOL_BID,euSY06b)은 올바르게 사용될 때 항상 값으로 채워집니다. 어떤 이유로 원하는 문자에 대한 올바른 값이 오지 않습니다. 그리고 충전은 분명히 이전에 받은 값에 따라 발생하며 이것은 다른 7개 통화 중 하나의 값입니다.

해결책이 없고 한 달 이상 이 해결책을 찾고 있다면 테스터 버그일 뿐이라고 생각합니다. 개발자들은 이 점에 유의하시기 바랍니다. 이것이 버그라면 수정
 
Vitaly Muzichenko # :

OnInit()에서 해야 할 일

정확히 기억나지 않는다. 그러나 다중 문자 표시기 중 하나를 테스트할 때 입력 매개변수에 있는 문자열의 문자 목록이 OnInit에 로드됩니다. 가격은 OnCalculate에서 액세스할 수 있습니다. 또한 설정에서 Market Watch에서 심볼 로딩을 설정하면 테스터에 하나의 메인 심볼만 나타납니다. 나는 로봇에 대해 잘 모르지만 모든 것이 똑같다고 생각합니다.