Hatalar, hatalar, sorular - sayfa 3133

 
Yury Lemeshev # :

Tutarlı ol. kontrol edersen

 SymbolIsSynchronized (euSY01)== true

sonra kontrol edin ve

(euSY01b> 0 )== true

:)

 
Yury Lemeshev # :

Bunu yaparsanız ve kodda yedi çift için bu tür 7 satır varsa, piyasa incelemesi yalnızca bir para birimi için teklifler içerecektir.


Sevgili fonksiyon, önceki değeri eşitlik yoluyla atlardım.
 
JRandomTrader # :

Tutarlı ol. kontrol edersen

sonra kontrol edin ve

:)

(euSY01b> 0 )== true

Sadece çok daha iyi

euSY01b> 0
 
2022.01.02 11:03:22.330 2019.01.02 07:56:40 EURJPY yanlış
2022.01.02 11:03:22.330 2019.01.02 07:56:40 EURCAD yanlış
2022.01.02 11:03:22.330 2019.01.02 07:56:40 EURCHF yanlış
2022.01.02 11:03:22.330 2019.01.02 07:56:40 EURGBP yanlış
2022.01.02 11:03:22.330 2019.01.02 07:56:40 EURAUD yanlış
2022.01.02 11:03:22.330 2019.01.02 07:56:40 EURNZD yanlış
2022.01.02 11:03:22.330 2019.01.02 07:56:40 EURUSD doğru
2022.01.02 11:03:22.330 2019.01.02 07:56:42 EURJPY yanlış
2022.01.02 11:03:22.330 2019.01.02 07:56:42 EURCAD yanlış
2022.01.02 11:03:22.330 2019.01.02 07:56:42 EURCHF yanlış
2022.01.02 11:03:22.330 2019.01.02 07:56:42 EURGBP yanlış
2022.01.02 11:03:22.330 2019.01.02 07:56:42 EURAUD yanlış
2022.01.02 11:03:22.330 2019.01.02 07:56:42 EURNZD yanlış
2022.01.02 11:03:22.330 2019.01.02 07:56:42 EURUSD doğru


Senkronizasyonu kontrol ederseniz, yalnızca bir para birimi için çalışır. Ve şu anda 7 para birimini analiz etmem gerekiyor.

 
Yury Lemeshev # :
Senkronizasyonu kontrol ederseniz, yalnızca bir para birimi için çalışır. Ve şu anda 7 para birimini analiz etmem gerekiyor.

OnInit() içinde yapmanız gerekenler

 // Потрогаем символ, иначе в тестере не грузит историю
 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 yanlış
2022.01.02 11:03:22.330 2019.01.02 07:56:40 EURCAD yanlış
2022.01.02 11:03:22.330 2019.01.02 07:56:40 EURCHF yanlış
2022.01.02 11:03:22.330 2019.01.02 07:56:40 EURGBP yanlış
2022.01.02 11:03:22.330 2019.01.02 07:56:40 EURAUD yanlış
2022.01.02 11:03:22.330 2019.01.02 07:56:40 EURNZD yanlış
2022.01.02 11:03:22.330 2019.01.02 07:56:40 EURUSD doğru
2022.01.02 11:03:22.330 2019.01.02 07:56:42 EURJPY yanlış
2022.01.02 11:03:22.330 2019.01.02 07:56:42 EURCAD yanlış
2022.01.02 11:03:22.330 2019.01.02 07:56:42 EURCHF yanlış
2022.01.02 11:03:22.330 2019.01.02 07:56:42 EURGBP yanlış
2022.01.02 11:03:22.330 2019.01.02 07:56:42 EURAUD yanlış
2022.01.02 11:03:22.330 2019.01.02 07:56:42 EURNZD yanlış
2022.01.02 11:03:22.330 2019.01.02 07:56:42 EURUSD doğru


Senkronizasyonu kontrol ederseniz, yalnızca bir para birimi için çalışır. Ve şu anda 7 para birimini analiz etmem gerekiyor.

Bir koltuk değneği olarak, çiftin en son ne zaman senkronize edildiğini hatırlamaya çalışabilir ve bunun üzerine inşa edebilirsiniz.

Ayrıca, istemek ve teklif vermek için SymbolInfoTick()'i kullanabilirsiniz.

 

true == true, sonuç: true gibi. ve false == true, sonuç: false :)

bu sonuç, eğer alırsa

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

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

veya

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

if (- 1 ) {
  ...
}

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

Bunu yaparsanız ve kodda yedi çift için bu tür 7 satır varsa, piyasa incelemesi yalnızca bir para birimi için teklifler içerecektir.


OnTick'te Barları aramayı deneyin

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

makaleden:

   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 );
        }
     }
ayrıca OnTick'te fiyatlara bir referans olmalıdır (böylece üçüncü taraf sembolleri yüklenir).
Документация по MQL5: Доступ к таймсериям и индикаторам / Bars
Документация по MQL5: Доступ к таймсериям и индикаторам / Bars
  • www.mql5.com
Bars - Доступ к таймсериям и индикаторам - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Mihail Matkovskij # :

OnTick'te Barları aramayı deneyin

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

makaleden:

ayrıca OnTick'te fiyatlara bir referans olmalıdır (böylece üçüncü taraf sembolleri yüklenir).

Bu orijinal sorunu çözmez

SymbolInfoDouble(euSY06,SYMBOL_BID,euSY06b) doğru kullanıldığında her zaman bir değerle doldurulur. Nedense istenilen karakter için doğru değer gelmiyor. Ve doldurma, görünüşe göre, alınan önceki değere göre gerçekleşir ve bu, diğer yedi para biriminden birinin değeridir.

Çözüm yoksa ve bir aydan fazla süredir bu çözümü arıyorsam, bunun sadece bir test hatası olduğunu hissediyorum. Geliştiriciler lütfen buna dikkat edin. Bu bir hataysa düzeltin
 
Vitaly Muzichenko # :

OnInit() içinde yapılması gerekenler

tam olarak hatırlamıyorum. ancak çok karakterli göstergelerimden birini test ettiğimde, giriş parametrelerindeki dizedeki karakter listesi OnInit'e yükleniyor. ve fiyatlarına OnCalculate'den erişilebilir. Ayrıca ayarlarda Market Watch'tan sembollerin yüklenmesini ayarladığımda test cihazında sadece bir ana sembol görünüyor. Robotları bilmem ama bence orada her şey aynı.

Neden: