[ARŞİV!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 4. - sayfa 457

 
sss2019 :

Dizilerdeki verilere göre grafikte satırları görüntüleyin. Uyarılar, dizilerin dolduğunu gösterir, ancak satırlar görüntülenmez.


bir şey çizer

 #property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_color2 Blue
#property indicator_minimum 0
#property indicator_maximum 100

double mass1[];
double mass2[];

extern bool A = false;

void init() {
   SetIndexBuffer ( 0 , mass1);
   SetIndexStyle ( 0 , DRAW_LINE , STYLE_SOLID , 1 );
   SetIndexBuffer ( 1 , mass2);
   SetIndexStyle ( 1 , DRAW_LINE , STYLE_SOLID , 1 );
}

void start() {
   int limit = Bars - IndicatorCounted ();
   int i = 0 , g = 0 , summ = 0 ;
   int startbar, endbar, starttime, endtime, lowbarend, lowbarstart, highbarstart, highbarend;
   double low, high;
   int lowsum, highsum;
   starttime = iTime ( Symbol (), Period (), i);
   endtime = iTime ( Symbol (), Period (), i + 1 );
   startbar = iBarShift ( Symbol (), PERIOD_M1 , starttime, false);
   endbar = iBarShift ( Symbol (), PERIOD_M1 , endtime, false);
        
   while (i < 5 ) {
      lowsum = 0 ;
      highsum = 0 ;
       if (i != 0 ) {
         starttime = iTime ( Symbol (), Period (), i);
         endtime = iTime ( Symbol (), Period (), i + 1 );
         startbar = iBarShift ( Symbol (), PERIOD_M1 , starttime, false);
         endbar = iBarShift ( Symbol (), PERIOD_M1 , endtime, false);
      }
       else
      {
         starttime = iTime ( Symbol (), Period (), i);
         endtime = iTime ( Symbol (), Period (), i + 1 );
         startbar = iBarShift ( Symbol (), PERIOD_M1 , TimeCurrent (), false);
         endbar = iBarShift ( Symbol (), PERIOD_M1 , endtime, false);
      }
                        
       //Alert(TimeToStr(starttime, TIME_DATE|TIME_MINUTES),"   ",TimeToStr(TimeCurrent(), TIME_DATE|TIME_MINUTES));   
      low = iLow ( Symbol (), PERIOD_M1 , endbar);
      high = iHigh ( Symbol (), PERIOD_M1 , endbar);
      lowbarend = endbar;
      highbarend = endbar;
      lowbarstart = endbar;
      highbarstart = endbar;
                
       while (endbar >= startbar) {
         if ((low - iLow ( Symbol (), PERIOD_M1 , endbar)) / Point > 0 ) {
             //Alert(low, " ", iLow(Symbol(), PERIOD_M1, endbar), " ", endbar, " ", startbar);
            low = iLow ( Symbol (), PERIOD_M1 , endbar);
            lowbarstart = endbar;
         }
         if (( iHigh ( Symbol (), PERIOD_M1 , endbar) - high) / Point > 0 ) {
            high = iHigh ( Symbol (), PERIOD_M1 , endbar);
            highbarstart = endbar;
             //Alert(high, " ", iHigh(Symbol(), PERIOD_M1, endbar), " ", endbar, " ", startbar);
         }
         endbar--;
      }
       //Alert(highbarstart, " ", highbarend, " = ", lowbarstart, " ", lowbarend);
                        
       while (lowbarstart < lowbarend + 1 ) {
         lowsum = lowsum + iVolume ( Symbol (), PERIOD_M1 , lowbarstart);
         lowbarstart++;
      }
       while (highbarstart < highbarend + 1 ) {
         highsum = highsum + iVolume ( Symbol (), PERIOD_M1 , highbarstart);
         highbarstart++;
      }
      mass2[i] = lowsum;
      mass1[i] = highsum;
//      Alert(mass2[i], " ", highsum, " ", ArraySize(mass1));
       //Alert(mass1[i], " ", i);
      i++;
   }
}
 
neon51r :


Fibonacci Çizgilerini tamamlamak mümkün mü ?


Bu çizgiler çizelgeye çizildikten sonra, bu seviyenin fiyatı seviyelerin karşısına otomatik olarak yazılacaktır.

Ve elyafı gererken otomatik olarak değişir

Tabii ki yapabilirsiniz, ama ne işe yaramaz?
 
Vinin :


bir şey çizer


Teşekkürler, neyi düzelttiniz lütfen? Kod karşılaştırma konusunda iyi değilim.
 
VladislavVG :
Tabii ki yapabilirsiniz, ama ne işe yaramaz?

Hepsi)) mql bilmiyorum

Lütfen bana ne seçeceğimi söyleyin?) Ve hangi dosya düzenlenmeli?

 
neon51r :

Hepsi)) mql bilmiyorum

Lütfen bana ne seçeceğimi söyleyin?) Ve hangi dosya düzenlenmeli?

Seçim:

  1. Çalışmak

  2. Eğitim ve Belgeler
 
Reshetov :

Seçim

Teşekkür ederim)

Hepsi karar verdi. Teşekkürler:%)

 
sss2019 :

Teşekkürler, neyi düzelttiniz lütfen? Kod karşılaştırma konusunda iyi değilim.

 double mass1[];
double mass2[];
 

Teknik uygulama konusunda deneyimi olan varsa lütfen bana bildirin.

İş istasyonundaki İnternet bağlantısı kesilirse, iş istasyonuna bağlı telefon veya gsm modemden (aynı) bir SMS mesajı gönderilir mi?

 
solar :

Teknik uygulama konusunda deneyimi olan varsa lütfen bana bildirin.

İş istasyonundaki İnternet bağlantısı kesilirse, iş istasyonuna bağlı telefondan veya gsm-modemden (aynı) bir SMS mesajı gönderilir mi?

ICQ'ya mesaj gönderen bir programa rastladım. Dosyalar ve açıklama içeren sayfa ... https://www.mql5.com/ru/code/10352

Uzman koduna, İnternet bağlantısı kesildiğinde mesaj gönderme işlevini koyabilirsiniz ve ....

 
ilunga :
kesinlikle

Komut dosyasını biraz değiştirdi:

 //+------------------------------------------------------------------------------------------+
//|                                                                     ArraySetAsSeries.mq4 |
//+------------------------------------------------------------------------------------------+
//|                         script program start function                                    |
//+------------------------------------------------------------------------------------------+
//------------------------------------ НАЧАЛО START -------------------------------------- 1 -
int start()                                                               //функция start
  {                                                                       //начало start
   double Timestart= GetTickCount ();                                       //переменная, с помощью которой вычисляется время (в милисекундах) начала выполнения скрипта
   double array1[][ 6 ];                                                   //объявляем массив-источник (массив, из к-о будут скопированы данные)
   double array2[][ 6 ];                                                   //объявляем массив-приемник (массив, куда будут скопированы данные), к-й на
                                                                         //момент объявления заполнен некоторыми данными
   int element_1= ArrayCopyRates (array1);                                 //копируем данные баров текущего графика в массив array1 
   int element_2= ArrayCopy (array2,array1, 0 , 0 , WHOLE_ARRAY );               //копируем данные всех баров в пользовательский массив
   bool element_3= ArrayGetAsSeries (array2);                               //проверка: является ли массив array1 массивом-таймсерией
   bool try_1= ArraySetAsSeries (array2,false);                             //устанавливаем НАПРАВЛЕНИЕ индексирования массива  
   bool element_4= ArrayGetAsSeries (array2);                               //проверка: является ли массив array2 массивом-таймсерией
   double element=array2[ 0 ][ 1 ];                                           //получаем значение цены открытия нулевого бара
//----------------------------------------------------------------------------------------- 2 -
   Comment ( "\nФункция ArrayCopyRates(array1) вернула: " ,element_1,
           "\nФункция ArrayCopy(array2,array1,0,WHOLE_ARRAY) вернула: " ,element_2,
           "\nФункция ArrayGetAsSeries(array2) вернула: " ,element_3,
           "\nФункция ArraySetAsSeries(array2;false) вернула: " ,try_1,
           "\nФункция ArrayGetAsSeries(array2) вернула: " ,element_4,
           "\nЦена открытия нулевого бара (т.е. бара с ИНДЕКСОМ 0) равна: " ,element,
           "\nСкрипт выполнялся всего " , GetTickCount ()-Timestart, " миллисекунд, из них: " ,
           MathFloor (( GetTickCount ()-Timestart)/ 1000 ), " секунд " ,(( GetTickCount ()-Timestart)/ 1000 - MathFloor (( GetTickCount ()-Timestart)/ 1000 ))* 1000 ,
           " миллисекунд" ); //печать сообщения на экран
//----------------------------------------------------------------------------------------- 3 -
   return ( 0 );                                                             //выход из start
  }                                                                       //конец start
//-------------------------------------- КОНЕЦ START -------------------------------------- 4 -

Sonuç olarak alınan:


Doğal olarak, soru hemen ortaya çıktı: bu durumda, ArrayCopyRates(array1) işlevini kullanarak, mevcut grafiğin çubuklarının verilerini iki boyutlu bir dizi1'e kopyaladım. Bundan sonraki satırda ArrayCopy(array2,array1,0,0,WHOLE_ARRAY) fonksiyonunu kullanarak dizi1 dizisinin verilerini dizi2 dizisine kopyaladım. Ardından ArrayGetAsSeries işlevini kullanarak dizi2 dizisinin bir zaman dizisi dizisi olup olmadığını kontrol ettim. Ve (ekran görüntüsünden de görebileceğiniz gibi) daha önce onu ArraySet etAsSeries işleviyle "işlememiş olmama" rağmen, dizinin hala bir zaman dizisi dizisi olduğu ortaya çıktı.

Soru : neden ilk durumda (önceki soru) Array S etAsSeries işlevi tarafından işlenmesi gereklidir (böylece aranan dizi bir zaman serisi dizisi olarak düzenlenir), bu durumda böyle bir işleme gerekli değildir.

P. S. Sebat için özür dilerim, sadece "tarihte boşluk" kalmaması için tam olarak anlamak istiyorum. Önceki tüm cevaplar için teşekkürler.