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

 
Alex_Profit:

Es stellt sich heraus, dass bei der Erstellung eines Objekts der Wert "_H", _L" zugewiesen wird.

Nun, man muss darüber nachdenken, da stimme ich zu. Und ich trinke nicht viel.

Ich denke, es wird mit der Zeit besser werden. Ich danke Ihnen.

objName+"_H",

objName+"_L",

Ich habe nicht von dir gesprochen... Ich war nicht sehr nüchtern, als ich diese Antwort schrieb.
 
Vielen Dank, Agramenne. Stufe 1 ist vorbei.
 
Können Sie mir sagen, warum bei der Änderung des Parameters indicator_chart_window inindicator_separate_window das Bild des Hauptfensters nicht in den Unterfenstern angezeigt wird?
 
Alex_Profit:
Können Sie mir sagen, warum dasBild des Hauptfensters nicht im Unterfenster angezeigt wird, wenn Sie den Parameter indicator_chart_window inindicator_separate_window ändern?
Der Indikator muss aus dem Diagramm entfernt und erneut hinzugefügt werden.
 

Bitte teilen Sie mir mit, ob ein Fehler vorliegt. Was muss geändert werden, damit die Raute und das Kreuz über den Balken selbst und nicht auf dem Nullbalken gezeichnet werden? (am ersten Balken eines jeden Monats).

Ich danke Ihnen.

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

#property strict

#property indicator_chart_window

   

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

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


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

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


#property indicator_buffers 2

#property indicator_color1 Red

#property indicator_color2 Blue


double Buf_High[];

double Buf_Low[];


MqlDateTime mqlDateTime;

MqlRates    mqlRates[1];


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

int init()

  {  

     SetIndexBuffer(0,Buf_High);     

     SetIndexStyle (0,DRAW_ARROW,0,0);  

     SetIndexArrow (0,116);

     

     SetIndexBuffer(1,Buf_Low);

     SetIndexStyle (1,DRAW_ARROW,0,0); 

     SetIndexArrow (0,116);


    return(0);

  }

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

int deinit()

  {

   int i;  

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

           {

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

              ObjectDelete(Name_Obj  + " Low"    + 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_MN1,i);         //--- В ПЕРЕМ t_Line Будет Присваиваться значение времени открытия бара

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

   {

             Buf_High[i] = mqlRates[i].high;

             Buf_Low[i]  = mqlRates[i].low;

      //+------------------------ Рисуем Объекты -----------------------------------------------------+                 

      //--- Строим линию по Хай      

     ObjectCreate    (0,Name_Obj + " High" + DoubleToStr(i,0), OBJ_TREND, 0,t_Line, mqlRates[0].high,t_Line+PeriodSeconds(PERIOD_MN1),mqlRates[0].high);

     ObjectSetInteger(0,Name_Obj + " High" + DoubleToStr(i,0), OBJPROP_RAY_RIGHT, false);

  

     //--- Строим линию по Лоу      

     ObjectCreate    (0,Name_Obj + " Low" + DoubleToStr(i,0), OBJ_TREND, 0,t_Line, mqlRates[0].low,t_Line+PeriodSeconds(PERIOD_MN1),mqlRates[0].low);

     ObjectSetInteger(0,Name_Obj + " Low" + DoubleToStr(i,0), OBJPROP_RAY_RIGHT, false);

 }

  i++;

             }

          }

      }

   return(0);

}


 
Alex_Profit:

Bitte teilen Sie mir mit, ob ein Fehler vorliegt. Was muss geändert werden, damit die Raute und das Kreuz über den Balken selbst und nicht auf dem Nullbalken gezeichnet werden? (am ersten Balken eines jeden Monats).

Ich danke Ihnen.

Ich würde einen alten Dinosaurier verstehen, der nur in der alten Sprache schreibt und keine Lust hat, umzulernen, aber gerade erst angefangen zu haben, eine Syntax zu lernen, die seit einigen Jahren veraltet ist, mit einem Spritzer Neuem, das ist pervers.

Und fangen Sie einfach an, die Hilfe zu lesen, damit Sie zumindest verstehen, was vor sich geht.

 

Das ist verständlich, aber wo das Neue und wo das Alte ist, kann man nicht auf Anhieb sagen. Und ich habe das Handbuch gelesen, es ist in einer zu klugen Sprache geschrieben.

Ich danke Ihnen vor allem für Ihre Kritik. Es hilft mir, in die richtige Richtung zu gehen.

 

Können Sie mir einen Tipp geben? Wie mache ich Aufschläge für vierteljährliche Zeiträume?

Ich muss vertikale Linien zeichnen, wenn diese Daten auftreten.

1. Januar,1. April, 1.Juli, 1.Oktober.

 

Lesen Sie zuerst aufmerksam meine Worte und dann die Sprachdokumentation, insbesondere den Abschnitt "Grafische Objekte".

In der Dokumentation ist eindeutig festgelegt, welche Parameter bei der Erstellung eines grafischen Objekts vorhanden sein müssen. Einer davon ist TIME - das sind die Daten, die Sie in diesen Parameter eingeben müssen. Der Preis ist für vertikale Linien nicht wichtig, aber er ist für die Funktion notwendig. Es gibt keine Schwierigkeiten dabei.

 
AlexeyVik:

Lesen Sie zuerst meine Worte und dann die Sprachdokumentation sorgfältig durch, insbesondere den Abschnitt "Grafische Objekte".

In der Dokumentation ist eindeutig festgelegt, welche Parameter bei der Erstellung eines grafischen Objekts vorhanden sein müssen. Eine davon ist TIME - das sind Ihre Daten, die in diesen Parameter eingefügt werden sollten. Der Preis ist für die vertikalen Linien nicht wichtig, aber für die Funktion ist er obligatorisch, daher müssen Sie 0 eingeben. Es gibt keine Schwierigkeiten dabei.

Ich weiß nicht, wie man das macht. Bitte sagen Sie mir, wie ich es machen soll. Die Höchstdauer beträgt einen Monat.

In die Variablet_Line. müssen wir den Wert von 1st,2nd,3rd,4th, kv einfügen.

Ich kann das nicht verstehen.

Ich würde das zu schätzen wissen.

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_MN1,i);                 //--- В ПЕРЕМ t_Line Будет Присваиваться значение времени открытия бара

             {


    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);

}