Bir kare veya dikdörtgen çizme. gerçekten yardıma ihtiyacım var... - sayfa 5

 
Alex_Profit :

Nasıl yapacağımı bilmiyorum. Lütfen bana söyle. Maksimum süre bir aydır.

t_Line değişkenine. 1., 2., 3., 4., kare değerini girmeniz gerekir.

Anlayamıyorum.

Minnettar olacağım.

Ohhh, işte program çıktı... Ne yazdığını anladı mı, ya da ne? Peki, neden bir sayaçta iki devir var, neyi devirecekler? Her yinelemede i değişkeninin değerini en azından manuel olarak tahmin edin.

barToProcess nedir? Nerede ilan edilir, neye eşittir? Yine, iki döngü için bir limit , bu iyi bir şeye yol açmaz, böyle yazarken ellerinizi dövmeniz gerekir ki saygısızlık olur.

Eh, grafiğin üzerinde çalıştığı TF'nin çubuklarını MN1 dönemi ile çalışmak için saymanın bir anlamı yok.

Çeyrekte bir çizgi çeken ve sürekli grafik üzerinde çalışan bir gösterge yazmayı gerekli görmüyorum, script bu tür görevler için uygun olduğunu düşünüyorum, başlattı, grafiği işaretledi ve kaldırıldı.

 

Ben yazmadım. Benzerlik hakkında bir gösterge buldum ve sökmeye başladım, yazarak böyle bir "program" aldım. Ben kendim sırasıyla yeni başladım ve pek iyi değil. Yardımı okudum, ancak her zaman net değil. İşte "gıcırtı" ile gidin. Tavsiye isteyebileceğiniz bir forum olması güzel. Programlama hakkında biriyle konuşmak güzel olurdu.

Eleştiri için teşekkürler. Ancak sorun çözümsüz kalıyor. Nezaketiniz için hepinize teşekkür ederim.

 
Alex_Profit :

Ben yazmadım. Benzerlik hakkında bir gösterge buldum ve sökmeye başladım, yazarak böyle bir "program" aldım. Ben kendim sırasıyla yeni başladım ve pek iyi değil. Yardımı okudum, ancak her zaman net değil. İşte "gıcırtı" ile ve git. Tavsiye isteyebileceğiniz bir forum olması güzel. Programlama hakkında biriyle konuşmak güzel olurdu.

Eleştiri için teşekkürler. Ancak sorun çözümsüz kalıyor. Duyarlılığınız için hepinize teşekkür ederim.

Örneğin, kaba bir taslak, şu anda dizimin üzerine hızlı bir senaryo yazdım:

 void OnStart ()
{
   int limit=iBars( _Symbol , PERIOD_MN1 );
   for ( int i= 0 ;i<=limit;i++)
   {
       datetime timemn=iTime( _Symbol , PERIOD_MN1 ,i);
       int   month=TimeMonth(timemn);
       if (month== 1 || month== 4 || month== 7 || month== 10 )
      {
         int qt= 0 ;
         switch (month)
         {
             default : break ;
             case 1 : qt= 1 ; break ;
             case 4 : qt= 2 ; break ;
             case 7 : qt= 3 ; break ;
             case 10 : qt= 4 ; break ;
         }
 
         string name= StringConcatenate ( "Qt" + IntegerToString (qt)+ ", " +TimeToStr(timemn));
         ObjectCreate (name, OBJ_VLINE , 0 ,timemn, 0 );         //--- Создаём обьект вертикальную линию
         ObjectSet    (name, OBJPROP_STYLE , 2 );               //--- Со стилем
         ObjectSet    (name, OBJPROP_COLOR ,DimGray);         //--- Со цветом  
         ObjectSet    (name, OBJPROP_WIDTH , 0 );               //--- С  толщиной
         ObjectSet    (name, OBJPROP_BACK , 0 );               //--- С типом отображения. Объект на заднем плане
      }
   }   
}

Küçük bir dezavantaj, çeyrek hafta sonu başlarsa , çizgi Cuma gününün son çubuğunda çizilir . Peki, örneğin tarih 2'de başlarsa, tarihin ilk çeyreği de çizgisiz kalacaktır. Ayın gününü belirtmek zaten gerekli ve 1 değilse, bir sonrakini alın.

Bu komut dosyasının tüm satırlarını grafikten kaldırmak için şunu çalıştırabilirsiniz:

 void OnStart ()
{
     ObjectsDeleteAll ( 0 , "Qt" );
}

Döngüsel bir komut dosyası oluşturabilir, istenen çubukta belirli bir satırın varlığını kontrol edebilir, böylece önceden çizilmiş olanın üzerine bir satır koyma girişimi olmaz ve komut dosyası sıfırlandığında işaretlemeyi silebilirsiniz.

Ayrıca ayarlarda hat parametrelerini görüntüleyebilirsiniz, çok daha fazlası yapılabilir.

 
evillive :

Örneğin, kaba bir taslak, şu anda dizimin üzerine hızlı bir senaryo yazdım:

Her şey süper. Çok teşekkürler.

Bu çiplerde ustalaşmanın ne kadar sürdüğünü merak ediyorum.

 

Yaklaşık olarak dil yardımını okumak ve neyin orada ve nerede olduğunu hatırlamak kadar sürer.

Bu, C benzeri dillerden en az birinde programlama becerisinin olması şartıyla sağlanır. Beceriler sadece sözdiziminde değil, burada programın nasıl "yaşayacağını" anlamanız gerekiyor, bundan sonra ne olacak.

Durum böyle değilse, ancak öğrenme arzusu varsa, o zaman bir yıl fazlasıyla yeterli olmalıdır.

 
evillive :

Durum böyle değilse, ancak öğrenme arzusu varsa, o zaman bir yıl fazlasıyla yeterli olmalıdır.

Anladım.

 

Nasıl başvuracağımı bile bilmiyorum. Son rötuşu bitirmemiz gerekiyor. Ve henüz, ben de düşünmeyeceğim.

Dikey çizgiler çizilir, bununla ilgili bir sorun yoktur. Ama yüksek çubuklara mavi şeritler nasıl yapıştırılır, bu hala benim için bir gizem.

Günden satır. arabelleğe bağlanma girişimi bir sonuca yol açmadı.

Yardımınız için çok minnettar olurum.

Teşekkür ederim.

 
Alex_Profit :

Nasıl başvuracağımı bile bilmiyorum. Son rötuşu bitirmemiz gerekiyor. Ve henüz, ben de düşünmeyeceğim.

Dikey çizgiler çizilir, bununla ilgili bir sorun yoktur. Ama yüksek çubuklara mavi şeritler nasıl yapıştırılır, bu hala benim için bir gizem.

Günden satır. arabelleğe bağlanma girişimi bir sonuca yol açmadı.

Yardımınız için çok minnettar olurum.

Teşekkür ederim.

Bana kodu göster, birlikte düzenleyelim.
 

Sadece tekmelemek gerekli değil, kod "beceriksiz". Onu zaten anladım. Örnekler ve hatalar kullanarak mantıklı bir sonuca ulaşmak istiyorum.

Görev minimum, işe yarıyor. Eh, deneyim ve "daha güzel" olacak.

//+------------------------------------------------------------------+

#property strict

#property indicator_chart_window

   

    //---  Внешние Глобальные переменные 

extern int     barsToProcess = 5;        //--- Кол-во отображаемых периодов (линий) 


    //---  Глобальные переменные    

string Name_VLine;     //--- Имя Элементов

string Name_CHECK;     //--- Имя Элементов


//MqlDateTime mqlDateTime;

MqlRates    mqlRates[1];


//+------------------------------------------------------------------+

int init()

  {  

    return(0);

  }

//+------------------------------------------------------------------+

int deinit()

  {

   int i;  

         for (i=0; i<Bars; i++)                              //--- Выбираем все установленные объекты  

           {

              ObjectDelete(Name_VLine + " VLine"  + DoubleToStr(i,0));          //--- Удаляем все объекты

              ObjectDelete(Name_CHECK + "H_CHECK"  + DoubleToStr(i,0));  //--- Удаляем все объекты

              ObjectDelete(Name_CHECK + "L_CHECK"  + DoubleToStr(i,0));  //--- Удаляем все объекты

           }       

   return(0);

  }

//+------------------------------------------------------------------+

int start()

{                  

int counted_bars = IndicatorCounted();     //--- перем counted_bars = функц.  Возвращает количество баров

int limit;                                 //--- переменная  старт кол-во баров. Линии рисуем о по всем барам

   

if(counted_bars > 0) counted_bars --;      //--- последний посчитанный бар будет пересчитан 

  //--- основной цикл 

  limit = Bars - counted_bars;         

  for(int i = 0; i < limit; i ++)

      {

      

 //+------------------------ При выборе кол-ва линий отобразим их ко-во------------------------+                 

         if(limit > barsToProcess)                                     //--- Если кол-во линий > Кол-ву отображаемых периодов (линий) 

         {

          limit = barsToProcess;                                      //--- Тогда устанавливаем Кол-во отображаемых периодов (линий)

             while (i<limit)                                           //--- Пока есть линии в окне терминала. Или пока висит индикатор в окне терминала.                        

             {   

               datetime t_Line = iTime(Symbol(),PERIOD_H4,i);         //--- В ПЕРЕМ t_Line Будет Присваиваться значение времени открытия бара

               CopyRates(_Symbol, PERIOD_H4, t_Line, 1, mqlRates);

   {


         //--- кубики по хай (В место галочек нужно подставить кубики)

         ObjectCreate    (0,Name_CHECK + "H_CHECK" + DoubleToStr(i,0), OBJ_ARROW_CHECK, 0, t_Line, mqlRates[0].high, t_Line,mqlRates[0].high);

         ObjectSetInteger(0,Name_CHECK + "H_CHECK" + DoubleToStr(i,0), OBJPROP_COLOR, clrGreen); 

   

         //--- кубики по лоу (В место галочек нужно подставить кубики)

         ObjectCreate    (0,Name_CHECK + "L_CHECK" + DoubleToStr(i,0), OBJ_ARROW_CHECK, 0, t_Line, mqlRates[0].low, t_Line,mqlRates[0].low);

         ObjectSetInteger(0,Name_CHECK + "L_CHECK" + DoubleToStr(i,0), OBJPROP_COLOR, clrGreen); 

        

    //+------------------------ Рисуем вертикальную линии -----------------------------------------------------+                 

    ObjectCreate (Name_VLine + " VLine" + DoubleToStr(i,0),OBJ_VLINE,0,t_Line,0);         //--- Создаём обьект вертикальную линию

    ObjectSet    (Name_VLine + " VLine" + DoubleToStr(i,0),OBJPROP_STYLE,2);              //--- Со стилем

    ObjectSet    (Name_VLine + " VLine" + DoubleToStr(i,0),OBJPROP_COLOR,DimGray);        //--- Со цветом  

    ObjectSet    (Name_VLine + " VLine" + DoubleToStr(i,0),OBJPROP_WIDTH,0);              //--- С  толщиной

    ObjectSet    (Name_VLine + " VLine" + DoubleToStr(i,0),OBJPROP_BACK,0);               //--- С типом отображения. Объект на заднем плане

 }

  i++;

             }

          }

      }

      

   return(0);

}


 
Alex_Profit :

Sadece tekmelemek gerekli değil, kod "beceriksiz". Onu zaten anladım. Örnekler ve hatalar kullanarak mantıklı bir sonuca ulaşmak istiyorum.

Görev minimum, işe yarıyor. Eh, deneyim ve "daha güzel" olacak.

Peki, nerede çalışıyor? Çizgiler TK'de değil, her bir çubukta çizilir. Veya yukarıdaki resimde TF=H1?

Döngülerin her yinelemesinde hangi limit ve i'nin eşit olacağını bir kağıt parçası üzerinde yeniden hesaplayın.

Yukarıda gösterilen örneğim anladığım kadarıyla dikkate alınmamıştır.

Ok onay kutuları, mum gölgelerini birbirine bağlayan çizgiler gibi, gösterge arabellekleri kullanılarak çizilebilir.

Neden: