Zeichnen eines Quadrats oder Rechtecks. Ich brauche wirklich Hilfe... - Seite 2

 

Guten Tag. Ich brauche wirklich Hilfe, weil ich nicht weiß, was ich tun soll. Wenn Sie helfen können.

Ich brauche einen Indikator, der den ersten Balken eines jeden Monats markiert. Mit Hoch- und Tiefpreislinien, die bis zum Monatsende gezogen werden, wobei die Anzahl der Monate frei wählbar ist.

Pr.(Drei Monate. Markierung mit Linien für 3 Monate ). Oder ein Muster zum Anschauen.

Vielen Dank im Voraus.

 

Hier ist ein Beispielskript, das den Tag von der Eröffnung + und - 20 Pips markiert. Ebenso können Sie eine Definition des Monats und jeweils Hoch und Tief dieses Monats machen.

/********************************************************************\
                                                           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:

Hier ist ein Beispielskript, das den Tag von der Eröffnung + und - 20 Pips markiert. Ebenso können Sie eine Definition des Monats und jeweils Hoch und Tief dieses Monats machen.

Vielen Dank, es ist ein bisschen mühsam, aber es scheint zu funktionieren.
 

AlexeyVik: Danke für das Feedback.

Ich weiß nicht, ob ich meine Spülung richtig eingestellt habe. Ich brauche etwas in dieser Art.Bild

Ich wäre Ihnen sehr dankbar, wenn Sie mir helfen oder mir sagen könnten, wie ich das in einen Indikator einbauen kann.

Ich bin neu im Programmieren.

Die vertikalen Linien sind korrekt gezeichnet.

Ich verstehe nicht, wie man "Horizontlinien und Kreise mit Hoch und Tief der ersten Kerze" verbindet.

Für jede Hilfe wären wir dankbar.

 

Lesen Sie die Dokumentation über die Funktion CopyRates() und die Struktur MqlRates. Mit ihrer Hilfe können wir alle notwendigen Daten beschaffen, um Ihre Wünsche umzusetzen.

Dann zeigen Sie mir, was Sie haben und was Sie nicht erreichen können. Andernfalls wird die Bitte, Ihnen zu helfen, als eine Bitte verstanden, es für Sie zu tun. Tut mir leid, dass ich so unverblümt bin.

 

Hier ist der Quellcode. Ich wäre Ihnen dankbar, wenn Sie mir helfen könnten, sie zu verfeinern. Ich muss den Höchst- und Tiefstwert jeder ersten Woche des Monats finden.

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

#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("");

In meinem Code ist es nicht eine Kerze, sondern ein Tag. Bei Ihnen ist es eine Woche.

Daraus ergibt sich der Zeitpunkt, von dem aus die Grenze gezogen werden kann. Sie brauchen wahrscheinlich einen Monat. Der Anfang des Monats. Aber er fällt selten mit dem Wochenbeginn zusammen. Man muss also ein bisschen mehr zaubern, um herauszufinden, wie man die erste Woche zählt.

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

Spüren Sie sozusagen den Unterschied. Es gibt noch keine großen Unterschiede in mql4, aber wer weiß, welche Änderungen auf uns warten...

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

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

Beachten Sie die Namen der Trendlinien.

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

Ich habe 3 Zeilen, deshalb habe ich 3 Funktionen und 3 Namen für die Zeilen.

 
Danke für die Hilfe, aber ich verstehe nicht alles.
 

Dann ist die Antwort auf nur eine Frage

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

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

Sie haben hier denselben Zeilennamen, der anders lauten sollte.

Warum haben Sie Ihre Nachrichten gelöscht und korrigiert?

 

Du hast lange Zeit nicht geantwortet, ich dachte, du würdest keine dummen Fragen beantworten, also habe ich sie gelöscht.

Grund der Beschwerde: