MetaTrader 4 Build 529 Beta, Yeni Derleyici ile Yayınlandı - sayfa 105

 
Night63 :

Meslektaşlar! Derlerken bir uyarı verilir:

başlatılmamış değişken 'PipStep' olası kullanımı

bu parça için:

Tüm değişkenler double olarak başlatılıyor, neyi sevmiyor?

double türünde değişkenler bildirdiniz, başlatma, değerlerin bildirilen değişkenlere atanmasıdır

çift PipStep=0; yapmak

 
Anlamıyorum, 555 yapısındaki göstergelerin demo versiyonları benim tarafımdan test edilmedi mi, yoksa bu Market'in ilk çıkışı için tamamen önemsiz bir sorun mu?
 
Candid :
Anlamıyorum, 555 yapısındaki göstergelerin demo versiyonları benim tarafımdan test edilmedi mi, yoksa bu Market'in ilk çıkışı için tamamen önemsiz bir sorun mu?

ve 5-ke'de test ediliyorlar mı?
 

ArrayCopyRates() также изменила свое поведение, раньше она производила виртуальное копирование в массив double[][6], теперь же производится виртуальное копирование в массив MqlRates[]. Для совместимости осталось копирование в массив double[][6], но это копирование не виртуальное, а реальное.

https://www.mql5.com/ru/forum/148325

MqlOranları

Fiyatlar, hacimler ve yayılma hakkında bilgi depolama yapısı.

https://www.mql5.com/ru/docs/constants/structures/mqlrates

Öyleyse MetaTrader 4 build 555'teki MqlRates bir dizi mi yoksa bir yapı mı?

Yardımdaki bu örnek (MetaTrader 4 build 555) çalışmıyor. fonksiyonsuz Kopya Oranları

void OnStart ()
  {
//---
   MqlRates rates[];
   ArraySetAsSeries (rates, true );
   int copied= CopyRates ( Symbol (), 0 , 0 , 100 ,rates);
   if (copied> 0 )
     {
       Print ( "Скопировано баров: " +copied);
       string format= "open = %G, high = %G, low = %G, close = %G, volume = %d" ;
       string out;
       int size= fmin (copied, 10 );
       for ( int i= 0 ;i<size;i++)
        {
         out=i+ ":" + TimeToString (rates[i].time);
         out=out+ " " + StringFormat (format,
                                  rates[i].open,
                                  rates[i].high,
                                  rates[i].low,
                                  rates[i].close,
                                  rates[i].tick_volume);
         Print (out);
        }
     }
   else Print ( "Не удалось получить исторические данные по символу " , Symbol ());
  }
 

//+------------------------------------------------------------------+
//|                                                     my_test1.mq4 |
//|                        Copyright 2013, MetaQuotes Software Corp. |
//|                                              https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link        "https://www.mql5.com"
#property version    "1.00"
#property strict
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ()
  {
   MqlRates rates[];
   ArraySetAsSeries (rates, true );
   ArrayCopyRates(rates, "EURUSD" , PERIOD_M1 );
   //int copied=CopyRates(Symbol(),0,0,100,rates);

   Print (
         " спред " ,rates[ 6 ].spread               
         );
  }
//+------------------------------------------------------------------+
Bu da işe yaramıyor, MetaTrader 4 build 555'te MqlRates ile çalışan bir örnek görebilir miyim?
 
ALXIMIKS :

ve 5-ke'de test ediliyorlar mı?

5-ke'de birisi test edilmiyor mu?
 
ALXIMIKS :

double türünde değişkenler bildirdiniz, başlatma, değerlerin bildirilen değişkenlere atanmasıdır

çift PipStep=0; yapmak


İşe yaradı!!

Yaşa ve öğren!

Çok teşekkürler!

 
serferrer :

Öyleyse MetaTrader 4 build 555'teki MqlRates bir dizi mi yoksa bir yapı mı?

Yardımdaki bu örnek (MetaTrader 4 build 555) çalışmıyor. fonksiyonsuz Kopya Oranları

Bu da işe yaramıyor, MetaTrader 4 build 555'te MqlRates ile çalışan bir örnek görebilir miyim?


MqlRates - yapı

MqlRates[] - yapı dizisi

MqlRates yapısıyla çalışma örneği için period_converter_new komut dosyasına bakın.

ArrayCopyRates'in nasıl çalıştığına dair bir örnek (belgeler eklenecektir)

 MqlRates array1[];
ArrayCopyRates(array1, "EURUSD" , PERIOD_H1 );
Print ( "Текущий бар " ,array1[ 0 ].time, "  цена открытия " , array1[ 0 ].open);
 
MetaQuotes :

MQL4 dilindeki değişiklikler

  • ArrayCopyRates(), double[][6] dizisine sanal bir kopya gerçekleştirmeden önce davranışını da değiştirmiştir, ancak şimdi MqlRates[] dizisine sanal bir kopya gerçekleştirmektedir. Uyumluluk için double[][6] dizisine kopyalama kalır, ancak bu kopyalama sanal değil gerçektir.

Müşterilere uzun süredir teslim edilen DLL'leri kullanan önemli sayıda Uzman Danışmanım var. Bu durumda, DLL'ye parametreleri iletmek için, çift[][6] dizileri kullanıldı ve ArrayCopyRates() işlevi tarafından başlatıldığında zaman serileri sanal olarak kopyalandı. Daha sonra, DLL'den işlevler çağrılırken, bu diziler ve geçerli boyutları, referans yoluyla parametreleri olarak iletildi.

Müşteriler terminali yeni bir sürüme güncellediklerinde, tüm bu Uzman Danışmanların çalışmayı durduracağı ortaya çıktı. Talihsiz.

DLL kodunu değiştirmeden çalışmaya devam etmelerini sağlamak için, DLL'den her işlev çağrısından önce ArrayCopyRates () öğesini çağırmanız gerektiğini doğru anlıyor muyum?

 
stringo :
Şimdi MqlRates yapısında spread değeri (muhtemelen değişim hacmi de) yok , daha sonra eklenecek mi?
 
Patrol :

Müşterilere uzun süredir teslim edilen DLL'leri kullanan önemli sayıda Uzman Danışmanım var. Bu durumda, DLL'ye parametreleri iletmek için, çift[][6] dizileri kullanıldı ve ArrayCopyRates() işlevi tarafından başlatıldığında zaman serileri sanal olarak kopyalandı. Daha sonra, DLL'den işlevler çağrılırken, bu diziler ve geçerli boyutları, referans yoluyla parametreleri olarak iletildi.

Müşteriler terminali yeni bir sürüme güncellediklerinde, tüm bu Uzman Danışmanların çalışmayı durduracağı ortaya çıktı. Talihsiz.

DLL kodunu değiştirmeden çalışmaya devam etmelerini sağlamak için, DLL'den her işlev çağrısından önce ArrayCopyRates () öğesini çağırmanız gerektiğini doğru anlıyor muyum?


Burada durum biraz daha karmaşık. DLL'lerin aldığı yapı da değişti.

Yani, ArrayCopyRates'i bir dizi MqlRates yapısına yeniden yazmanız gerekir. Ayrıca dll'nizde ilgili yapının açıklamasını değiştirmeniz gerekir.

Neden: