Disegnare un quadrato o un rettangolo. Davvero bisogno di aiuto... - pagina 4

 
Alex_Profit:

Risulta che quando viene creato un oggetto, viene attribuito il valore "_H", _L".

Beh, bisogna pensarci, sono d'accordo. E non bevo molto.

Penso che migliorerà con il tempo. Grazie.

objName+"_H",

objName+"_L",

Non stavo parlando di te... Non ero molto sobrio quando ho scritto questa risposta.
 
Grazie Agramenne. La fase 1 è finita.
 
Potete dirmi che per qualche motivo quando cambiate il parametro indicator_chart_window inindicator_separate_window l'immagine della finestra principale non viene visualizzata nella sottofinestra.
 
Alex_Profit:
Potete dirmi che per qualche motivo quando cambiate il parametro indicator_chart_window inindicator_separate_window l'immagine della finestra principale non viene visualizzata nella finestra secondaria.
L'indicatore deve essere rimosso dal grafico e aggiunto di nuovo.
 

Per favore, ditemi se c'è un errore. Cosa deve essere cambiato affinché il rombo e la croce siano disegnati sopra la barra stessa e non sulla barra zero. (sulla prima barra di ogni mese).

Grazie.

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

#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:

Per favore, ditemi se c'è un errore. Cosa deve essere cambiato affinché il rombo e la croce siano disegnati sopra la barra stessa e non sulla barra zero. (sulla prima barra di ogni mese).

Grazie.

Iniziate già a imparare la nuova sintassi, capirei un vecchio dinosauro che scrive solo nel vecchio linguaggio e non ha voglia di riqualificarsi, ma aver appena iniziato a imparare e stare su una sintassi che è obsoleta da diversi anni con una spruzzata di nuovo, è perverso.

E iniziate a leggere l'aiuto in modo da capire almeno cosa sta succedendo.

 

È comprensibile, ma dov'è il nuovo e dov'è il vecchio? E ho letto il manuale, è scritto in un linguaggio troppo intelligente.

Grazie soprattutto per le critiche. Mi aiuta a muovermi nella giusta direzione.

 

Puoi darmi un suggerimento? Come faccio a fare le maggiorazioni per i periodi trimestrali?

Ho bisogno di tracciare delle linee verticali quando queste date si verificano.

1 gennaio.1 aprile.1 luglio.1 ottobre.

 

Prima leggete attentamente le mie parole, poi leggete la documentazione del linguaggio, in particolare la sezione "Graphical Objects".

La documentazione indica chiaramente quali parametri devono essere presenti quando si crea un oggetto grafico. Uno di questi è TIME - queste sono le date che devi mettere in questo parametro. Il prezzo non è importante per le linee verticali, ma è necessario per la funzione. Non c'è nessuna difficoltà nel fare questo.

 
AlexeyVik:

Prima leggete attentamente le mie parole, poi leggete attentamente la documentazione del linguaggio, in particolare la sezione "Oggetti grafici".

La documentazione dice chiaramente quali parametri devono essere presenti quando si crea un oggetto grafico. Uno di questi è il TEMPO queste sono le vostre date e devono essere inserite in questo parametro. Il prezzo non è importante per le linee verticali, ma è obbligatorio per la funzione, quindi devi mettere 0. Non c'è nessuna difficoltà nel fare questo.

Non so come fare. Per favore, ditemi come fare. Il periodo massimo è un mese.

Nella variabilet_Line dobbiamo inserire il valore di 1st, 2nd, 3rd, 4th, kv.

Non riesco a capire.

Lo apprezzerei molto.

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

}


Motivazione: