Beta derleme 530'da dizi yeniden boyutlandırma hatası - sayfa 3

 
RaptorUK :

MT3'e aşina değilim ama MT3 üzerinde çalışan kodun MT4 üzerinde de çalıştığını varsayıyorum. . . MT4 --> MT5 ile ilgili sorun budur ve durumun farklı olmasının nedeni budur.

MT4 kullanıcılarının çoğu kod yazamaz, MT4'teki favori Göstergeleri MT5'te yoksa MT5'i kullanmazlar.

Bildiğim kadarıyla MT3 kodu MT4'te çalışmıyor, dil çok farklı. MT4/MT5 hakkındaki bu tartışma sonsuzdur, MT4'ün hayatta kalmasına yol açan birçok faktör vardır, MT5'in MT4'ün tamamen yerini alması amaçlandığından bile emin değilim.

Her neyse, yeni sürümle ilgili olarak Metaquotes, ex4 düzeyinde geriye dönük uyumlu olacağını, ancak gerçekten mq4 düzeyinde olmayacağını söyledi.

 

Yeni meta düzenleyici yardımına hızlıca göz attım, yeni sürüm mql4 eski sürümden düşündüğümden çok daha farklı görünüyor.

 
angevoyageur :

Bildiğim kadarıyla MT3 kodu MT4'te çalışmıyor, dil çok farklı. MT4/MT5 hakkındaki bu tartışma sonsuzdur, MT4'ün hayatta kalmasına yol açan birçok faktör vardır, MT5'in MT4'ün tamamen yerini alması amaçlandığından bile emin değilim.

Her neyse, yeni sürümle ilgili olarak Metaquotes, ex4 düzeyinde geriye dönük uyumlu olacağını, ancak gerçekten mq4 düzeyinde olmayacağını söyledi.

Mevcut .ex4 Göstergeleri, Komut Dosyaları ve EA'larla uyumluluk yalnızca dille ilgili değildir, aynı zamanda Terminal ve çalışma biçimindeki değişikliklerle de ilgilidir. Örneğin, Strateji Test Cihazında yapılan değişiklikler, öncelikli olarak Strateji Test Cihazında kullanılmak üzere tasarlanan EA'ları bozabilirken, aynı EA canlı bir grafikte sorunsuz çalışır ve artık birincil işlevini yerine getirmez. . .
 
angevoyageur :

Bildiğim kadarıyla MT3 kodu MT4'te çalışmıyor, dil çok farklı. MT4/MT5 hakkındaki bu tartışma sonsuzdur, MT4'ün hayatta kalmasına yol açan birçok faktör vardır, MT5'in MT4'ün tamamen yerini alması amaçlandığından bile emin değilim.

Her neyse, yeni sürümle ilgili olarak Metaquotes, ex4 düzeyinde geriye dönük uyumlu olacağını, ancak gerçekten mq4 düzeyinde olmayacağını söyledi.

Bana göre, mq4 düzeyinde geriye doğru uyumlu olması gerekiyor gibi görünüyor, dahil edilen özel göstergeler , yeni derleyicide derledikleri ve yeni terminalde çalıştırdıkları init() işlevinin adını değiştiren orijinal mql4 sürümleridir, bu, eğer istiyorsak, IndicatorCounted() kullanarak göstergeleri kodlayabileceğimiz anlamına gelmelidir ...

init() artık int OnInit(void) olarak adlandırılıyor ve geri dönüyor(INIT_SUCCEEDED);

 
SDC :

Bana göre, mq4 düzeyinde geriye doğru uyumlu olması gerekiyordu gibi görünüyor, dahil edilen özel göstergeler, yeni derleyicide derledikleri ve yeni terminalde çalıştırdıkları init() işlevinin adını değiştiren orijinal mql4 sürümleridir, bu, eğer istiyorsak, IndicatorCounted() kullanarak göstergeleri kodlayabileceğimiz anlamına gelmelidir ...

init() artık int OnInit(void) olarak adlandırılıyor ve geri dönüyor(INIT_SUCCEEDED);

Üzgünüz ama mq4 seviyesinde geriye dönük uyumlu olmayacak, ilk beta duyurusuna bakın.

Eski MQL4 sürümünden farklılıklar:

  • VE/VEYA mantıksal işlemlerin önceliği değiştirildi. Artık her şey standart C/C++ ile benzer

  • Mantıksal ifadelerin kısaltılmış değerlendirmesi tanıtıldı. Şimdi, mantıksal bir ifade sonuna ulaşmadan değerlendirildiğinde, C/C++'da olduğu gibi, kalan sonraki ifadeler değerlendirilmez.

  • Anahtar operatöründe artık sadece tamsayı değerleri kullanılmaktadır. Gerçek değerler daha önce kullanılabilirdi

  • Değişken isimlerinde artık nokta sembolü kullanılamaz. Ayrıca, '@', '$' ve '?' değişken isimlerinde semboller kullanılamaz

  • Başlatma işlevi için sıkılaştırılmış gereksinimler. Parametreler daha önce başlatma fonksiyonunda ayarlanmış olabilir. Artık tüm init, start, deinit, OnInit, OnStart, OnTick, OnTimer ve diğer giriş noktaları imzalarıyla tam olarak eşleşmelidir.

  • Anahtar kelimelerin genişlemesi nedeniyle kısa, uzun, kayan nokta, const, sanal, giriş, silme, yeni, do, char gibi adlar artık kullanılamaz.

  • Artık, içe aktarılan dll işlevleri, MQL5'te olduğu gibi, MQL dize dizilerini parametre olarak kabul edemez.

  • Mevcut kaynak dosyalarda aynı adlar altında bildirilen basit değişkenlerle çakışabilecek önceden tanımlanmış _Period, _Symbol, _LastError, _CriticalError, _StopFlag, _Point, _Digits, _UninitReason, _RandomSeed değişken adları tanıtıldı

  • tarih saat türü, MQL5'teki gibi 8 baytlık bir hale geldi.

Farklılıklar kritik değildir ve kodda kolayca düzeltilebilir. Karşılığında, birden fazla MQL5 özelliğine, geliştirilmiş yürütme hızına ve çok daha sıkı kalite kontrolüne erişiyoruz.

Ağır değişiklikler değil, ancak %100 geriye dönük uyumlu (mq4) olmadığı anlamına gelir.
 
SDC :

...

init() artık int OnInit(void) olarak adlandırılıyor ve geri dönüyor(INIT_SUCCEEDED);

Her iki sürümü de kullanabilirsiniz.
 

Meta düzenleyicideki yeni özellikleri beğendim

 

Yeni sürüm yayınlandığında, yeni mql4 dokümantasyonu mql5 kodlamasına dayandığından, yeni başlayanlar için forumda çok fazla kafa karışıklığına neden olacağını düşünüyorum. Bu, bu forumda ve kod tabanında açıklananların çoğunun mql4 dokümanları tarafından çelişeceği anlamına gelir.

Yeni mql4 dokümanlarından bir gösterge arabelleği ayarlama: (Bunun aslında içinde hataları var ve derlenmeyecek)

 #property copyright "2009, MetaQuotes Software Corp."
#property link       "https://www.mql5.com"
#property version   "1.00"
 
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots   1
//---- plot MA
#property indicator_label1   "MA"
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrRed
#property indicator_style1  STYLE_SOLID
#property indicator_width1   1
//--- input parameters
input bool                AsSeries= true ;
input int                 period= 15 ;
input ENUM_MA_METHOD      smootMode= MODE_EMA ;
input ENUM_APPLIED_PRICE price= PRICE_CLOSE ;
input int                 shift= 0 ;
//--- indicator buffers
double                    MABuffer[];
int                       ma_handle;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit ()
  {
//--- indicator buffers mapping
   if (AsSeries) ArraySetAsSeries (MABuffer, true );
   Print ( "Indicator buffer is timeseries = " , ArrayGetAsSeries (MABuffer));
   SetIndexBuffer ( 0 ,MABuffer, INDICATOR_DATA );
   Print ( "Indicator buffer after SetIndexBuffer() is timeseries = " ,
         ArrayGetAsSeries (MABuffer));
   
//--- change the oredr of accessing elements of the indicator buffer
   ArraySetAsSeries (MABuffer,AsSeries);
   
   IndicatorSetString ( INDICATOR_SHORTNAME , "MA(" +period+ ")" +AsSeries);
//---
   ma_handle= iMA ( Symbol (), 0 ,period,shift,smootMode,price);
   return (INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[])
  {
//--- Copy the values of the moving average in the buffer MABuffer
   int copied= CopyBuffer (ma_handle, 0 , 0 ,rates_total,MABuffer);
 
   Print ( "MABuffer[0] = " ,MABuffer[ 0 ]); // Depending on the value AsSeries
                                       // Will receive a very old value
                                       // Or for the current unfinished bar
 
//--- return value of prev_calculated for next call
   return (rates_total);
  }
//+------------------------------------------------------------------+
 
SDC :

Yeni sürüm yayınlandığında, yeni mql4 dokümantasyonu mql5 kodlamasına dayandığından, yeni başlayanlar için forumda çok fazla kafa karışıklığına neden olacağını düşünüyorum. Bu, bu forumda ve kod tabanında açıklananların çoğunun mql4 dokümanları tarafından çelişeceği anlamına gelir.

Yeni mql4 dokümanlarından bir gösterge arabelleği ayarlama: (Bunun aslında içinde hataları var ve derlenmeyecek)

Evet haklısın zor bir geçiş olacak. Ancak, yeni başlayanlar için değil, henüz mql5'i bilmeyen deneyimli mql4 kodlayıcıları için zor olacağını düşünüyorum. Genel olarak, yeni başlayanlar belgeleri okumaz
 

MQL5 angevoyageur'da zaten kod yazdınız mı?