Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 1339

 
Kira27 # :
Hey!!! Bana nerede yanlış yaptığımı söyle, yetişemiyorum bile)

275 araçtan 27 adet ve stick işler, hafızada yer kaplar ve script bitmek zorunda kalınca hata satırı verir.

Eğer bu dizi

   double bufer_MA [];   //Буфер для хендла

sonra içinde kullan

         CopyBuffer (MA200, 0 , TimeCurrent (), 5 , bufer_MA ); // заполнение масива bufer_MA хендлом MA200 выбранного тайма

hiç doğru değil.

Yoksa bir şeyi yanlış mı anladım?

 
Alexey Viktorov # :

Eğer bu dizi

sonra içinde kullan

hiç doğru değil.

Yoksa bir şeyi yanlış mı anladım?

orada yanlış olan çok şey var

 
Alexey Viktorov # :

Eğer bu dizi

sonra içinde kullan



Пример:



//+------------------------------------------------------------------+ 
//|                                              TestCopyBuffer3.mq5 | 
//|                        Copyright 2009, MetaQuotes Software Corp. | 
//|                                               https://www.mql5.com | 
//+------------------------------------------------------------------+ 
#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 
   SetIndexBuffer ( 0 ,MABuffer, INDICATOR_DATA ); 
   Print ( "Параметр AsSeries = " ,AsSeries); 
   Print ( "Индикаторный буфер после SetIndexBuffer() является таймсерией = " , 
         ArrayGetAsSeries (MABuffer)); 
//--- set short indicator name 
   IndicatorSetString ( INDICATOR_SHORTNAME , "MA(" +period+ ")" +AsSeries); 
//--- set AsSeries (depends on input parameter) 
   ArraySetAsSeries (MABuffer,AsSeries); 
   Print ( "Индикаторный буфер после ArraySetAsSeries(MABuffer,true); является таймсерией = " , 
         ArrayGetAsSeries (MABuffer)); 
//--- 
   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[]) 
  { 
//--- check if all data calculated 
   if ( BarsCalculated (ma_handle)<rates_total) return ( 0 ); 
//--- we can copy not all data 
   int to_copy; 
   if (prev_calculated>rates_total || prev_calculated<= 0 ) to_copy=rates_total; 
   else 
     { 
      to_copy=rates_total-prev_calculated; 
       //--- last value is always copied 
      to_copy++; 
     } 
//--- try to copy 
   if ( CopyBuffer (ma_handle, 0 , 0 ,to_copy, MABuffer )<= 0 ) return ( 0 ); 
//--- return value of prev_calculated for next call 
   return (rates_total); 
  } 
//+------------------------------------------------------------------+
 

hiç doğru değil.

Yoksa bir şeyi yanlış mı anladım?

Neden yanlış? Sonuçta, fonksiyon örneğinde


Kopya Arabelleği

bu yüzden kullanırlar

 

Alexey Viktorov # :


Yoksa bir şeyi yanlış mı anladım?

Komut dosyasının anlamı, MA200'ün üzerindeki fiyatı belirlemek için piyasa saatindeki her bir enstrümanı 1 dakikadan 4H'ye kadar olan zaman dilimlerinde incelemek ve bu gerçek bulunursa, fiyatın daha yüksek olduğu sembolün adıyla bir uyarı yayınlamaktır. 6 zaman diliminin tamamında MA'dan daha fazla.

 
Artyom Trishkin # :

orada yanlış olan çok şey var

Daha spesifik olarak, sakıncası yoksa)

 
Kira27 # :

Daha spesifik olarak, sakıncası yoksa)

Dizi indeksleme sadece bir tür korkudur... Aynı verileri bir döngüde kopyalamak... Bir döngüde yeni tutamaçlar yaratmak - kelime yok...

Gerisi bile hasta görünüyordu, üzgünüm

 
Artyom Trishkin # :

Dizi indeksleme sadece bir tür korkudur... Aynı verileri bir döngüde kopyalamak... Bir döngüde yeni tutamaçlar yaratmak - kelime yok...

Gerisi bile hasta görünüyordu, üzgünüm

Dizi indekslemeyi anlamadım, hangi dizilerde indekslemeyi sevmediniz? 43. satırdaki veriler CopyBuffer işlevi tarafından 1 dakikadan farklı zaman dilimlerinde kopyalanır. 4H tarafından. Toplamda, ilk 5 çubuk için MA göstergesinin 5 fiyatı kopyalanır ve her yinelemede hem tutamaç hem de 5 çubuklu dizi sıfırlanır

 ArrayFree (bufer_MA);


ve tutamaç kaldırıldı

 IndicatorRelease (MA200); //Удаление хендла

. 274 enstrümanı ve her birini 6 zaman diliminde başka bir şekilde işlemek için bir algoritma önerebilirseniz, memnun olurum. Profesyonel olsaydım, muhtemelen hiçbir sorum olmazdı.

 

çeşitli durumlarda tanıtıcı oluşturmak pahalı değil gibi görünüyor, bu sadece ön yüklemesiz bir işaretçi mi? asıl iş CopyBuffer ile gider

döngüdeki tutamacı silmeye gerek yok, kontrol edilebilir ve kontrol edilmelidir, kişisel olarak sadece ilkini oluştururken bir sorunum var, Sleep() ile çözüldü, böylece grafik yüklenir veya işleviyle alıntıları önceden yükleme

geliştiriciler buna kendileri karar vermeli, OnInit'te hız önemli değil, 7 karakterlik bir arama ile ilk göstergeden bahsediyoruz, hata her zaman farklı yinelemelerde ortaya çıkıyor

----------

Sapın oluşturulması nasıl çalışır, özel olarak tetiklenen bir döngüde var olup olmadığını kontrol etmek gerekli mi, yoksa yalnızca başka bir oluşturma yeterli mi (yani üzerine yazma)?

 
Fast235 # :

çeşitli durumlarda tanıtıcı oluşturmak pahalı değil gibi görünüyor, bu sadece ön yüklemesiz bir işaretçi mi? asıl iş CopyBuffer ile gider

döngüdeki tutamacı silmeye gerek yok, kontrol edilebilir ve kontrol edilmelidir, kişisel olarak sadece ilkini oluştururken bir sorunum var, Sleep() ile çözüldü, böylece grafik yüklenir veya işleviyle alıntıları önceden yükleme

geliştiriciler buna kendileri karar vermeli, OnInit'te hız önemli değil, 7 karakterlik bir arama ile ilk göstergeden bahsediyoruz, hata her zaman farklı yinelemelerde ortaya çıkıyor

----------

Sapın oluşturulması nasıl çalışır, özel olarak tetiklenen bir döngüde var olup olmadığını kontrol etmek gerekli mi, yoksa yalnızca başka bir oluşturma yeterli mi (yani üzerine yazma)?

Benimle mi konuşuyorsun? Yoksa buradaki uzmanlara sorunuz bu mu?)))

 
Kira27 # :

Benimle mi konuşuyorsun? Yoksa buradaki uzmanlara sorunuz bu mu?)))

tanıtıcı oluşturma ve silme hakkında,

işe yarıyor, nasıl doğru olacağı ile ilgileniyorum, umarım geliştiriciler der ki