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

 

Güzel gün. Gerçekten yardıma ihtiyacım var ve ne yapacağımı bulamıyorum. Zor değilse yardım.

Her ayın ilk çubuğunu işaretleyecek bir göstergeye ihtiyacımız var. Ay sayısı seçimi ile ay sonuna kadar yüksek ve düşük fiyatlar için çizgi çizerek.

Örn. (Üç ay. 3 ay boyunca çizgi işaretleme). Ya da bakmak için bir örnek.

Şimdiden teşekkürler.

 

İşte açık + ve - 20 puandan günü işaretleyen örnek bir komut dosyası. benzer şekilde, ayın ve buna göre bu ayın en yüksek ve en düşük tanımını yapabilirsiniz.

 /********************************************************************\
                                                           20-20.mq4 |
                                                            Viktorov |
                                                   v4forex@yandex.ru |
\********************************************************************/
#property copyright "Viktorov"
#property link        "v4forex@yandex.ru"
#property version    "1.00"

MqlDateTime mqlDateTime;
MqlRates     mqlRates[ 1 ];
/********************Script program start function*******************/
void OnStart ()
{
   double point = _Digits % 2 == 0 ? _Point : _Point * 10 ;
   datetime dt = ChartTimeOnDropped ();
     TimeToStruct ( ChartTimeOnDropped (), mqlDateTime);
     if ( CopyRates ( _Symbol , PERIOD_D1 , dt, 1 , mqlRates) < 0 )
       Print ( "" );
       string objName = TimeToString (mqlRates[ 0 ].time, TIME_DATE );
         ObjectCreate ( 0 , objName, OBJ_TREND , 0 , mqlRates[ 0 ].time, mqlRates[ 0 ].open, mqlRates[ 0 ].time+ PeriodSeconds ( PERIOD_D1 ), mqlRates[ 0 ].open);
         ObjectSetInteger ( 0 , objName, OBJPROP_RAY_RIGHT , false );
       ObjectCreate ( 0 , objName+ "+20" , OBJ_TREND , 0 , mqlRates[ 0 ].time, mqlRates[ 0 ].open+ 20 *point, mqlRates[ 0 ].time+ PeriodSeconds ( PERIOD_D1 ), mqlRates[ 0 ].open+ 20 *point);
       ObjectSetInteger ( 0 , objName+ "+20" , OBJPROP_RAY_RIGHT , false );
     ObjectCreate ( 0 , objName+ "-20" , OBJ_TREND , 0 , mqlRates[ 0 ].time, mqlRates[ 0 ].open- 20 *point, mqlRates[ 0 ].time+ PeriodSeconds ( PERIOD_D1 ), mqlRates[ 0 ].open- 20 *point);
     ObjectSetInteger ( 0 , objName+ "-20" , OBJPROP_RAY_RIGHT , false );
   Comment (mqlRates[ 0 ].open, "\n"
         , objName, "\n"
         , sizeof (mqlDateTime), "\n"
         );
} /*******************************************************************/
 
AlexeyVik :

İşte açık + ve - 20 puandan günü işaretleyen örnek bir komut dosyası. benzer şekilde, ayın ve buna göre bu ayın en yüksek ve en düşük tanımını yapabilirsiniz.

Çok teşekkür ederim, zor ama işe yarayacak gibi görünüyor.
 

AlexeyVik: Duyarlılığınız için teşekkür ederiz.

Benimkini doğru mu yazdım bilmiyorum. Bu konuda ihtiyaç var. Resim

Bunun göstergede nasıl uygulanacağını önerebilir veya yardımcı olabilirseniz çok minnettar olurum.

Programlamada yeniyim.

Dikey çizgiler doğru çizilir.

Ufuk çizgilerini ve dairelerini yüksek ve alçak olan ilk muma nasıl bağlayacağımı anlamıyorum.

Herhangi bir yardım için minnettar olacağım.

 

CopyRates() işlevi ve MqlRates yapısı hakkındaki belgeleri daha yakından okuyun. Onların yardımıyla, İstek Listenizin uygulanması için gerekli tüm verileri alıyoruz.

Sonra neyin işe yarayıp neyin yaramadığını gösterin. Aksi takdirde, yardım talebi sizin için yapılacak bir talep olarak okunur. Direkt olduğum için özür dilerim.

 

İşte kaynak kodu. Geliştirmeme yardımcı olursanız sevinirim. Ayın her ilk haftasının Yüksek ve Düşük'ünü bulmanız gerekir.

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

#property copyright ""

#property link      ""


#property indicator_chart_window

   

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

extern int     TF = 43200;               //--- Через сколько баров рисуются линии (На каком Т/Ф)

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

extern string  TimeFrames = "M1,5,15,30; 60H1; 240H4; 1440D1; 10080W1; 43200MN.";  //--- Подсказка кол-во боров в Т/Ф


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

string    Name_Line;         //--- Имя Вертикальных уровней


//double    Price_H = High[0]; //--- Макс цены  

//double    Price_L = Low[0];  //--- Мин цены




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

int init()

  {  

   //--- 

        return(0);

  }

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

int deinit()

  {

   int i;  

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

           {

              ObjectDelete(Name_Line + DoubleToStr(i,0));        //--- Удаляем все установленные линии

           }       

   return(0);

  }

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

int start()

{                  

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

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

int i=0;                                   //--- переменная i = 0 обнуление

   

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

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

  limit = Bars - counted_bars;         

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

      {  

         //+-----  Выбираем количество линий отображаемых на экране 

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

         {

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

           Name_Line = "Time_VLine M" + TF + " "+DoubleToStr(i,0);      //--- И присваиваем имя с соответствующими параметрами 

 //+------------------------ Рисуем линии -----------------------------------------------------+                 

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

             {   

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


                   {

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

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

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

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

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

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

                   }

                    i++;

             }

          }

      }

      

return(0);


}


 
     if ( CopyRates ( _Symbol , PERIOD_W1 , dt, 1 , mqlRates) < 0 )         //--- Если бросили скрипт на выбранную свечку

       Print ( "" );

Kodumda bu bir mum değil, bir gün. Seninkinde, bu bir hafta.

Bundan, çizgiyi çekeceğimiz zamanı elde ederiz . Muhtemelen bir aya ihtiyacın var. Ayın başlangıç zamanı. Ancak nadiren haftanın başlangıcına denk gelir. Yani burada ilk haftanın nasıl sayılacağını düşünmek gerekiyor.

         ObjectCreate ( 0 , objName, OBJ_TREND , 0 , mqlRates[ 0 ].time + PERIOD_MN1 , mqlRates[ 0 ].high, mqlRates[ 0 ].time + PeriodSeconds ( PERIOD_MN1 ) , mqlRates[ 0 ].high); 

Bu yüzden farkı hissedin. Henüz mql4'te pek bir fark yok ama kim bilir bizleri ne gibi değişiklikler bekliyor...

//--- Что здесь не так, при построении линии по лоу. На графике её нет. И Ошибки компиляции тоже нет? 

 //--- НО по отдельности всё работает.     

Trend isimlerine dikkat edin.

 //----- Для чего нужен этот блок если линия отрисовывается на графике и без него   

3 satırım var, bu nedenle 3 fonksiyon ve 3 satır adı var.

 
Yardımın için teşekkürler ama bir türlü anlayamadım.
 

O zaman cevap sadece bir soru

//--- Что здесь не так, при построении линии по лоу. На графике её нет. И Ошибки компиляции тоже нет? 

 //--- НО по отдельности всё работает.     

Burada aynı satır adınız var, ancak farklı olmaları gerekiyor.

Mesajlarınızı neden sildiniz ve düzenlediniz?

 

Uzun süre cevap vermedin, aptalca sorulara cevap vermediğini düşündüm ve bu yüzden onları sildim.