Dessiner un carré ou un rectangle. J'ai vraiment besoin d'aide... - page 2

 

Bon après-midi. J'ai vraiment besoin d'aide et je ne sais pas quoi faire. Si vous pouvez aider.

J'ai besoin d'un indicateur qui marque la première barre de chaque mois. Avec des lignes de prix hautes et basses tracées jusqu'à la fin du mois, avec un choix du nombre de mois.

Pr. (Trois mois. Marquage avec des lignes pendant 3 mois). Ou un échantillon à regarder.

Merci d'avance.

 

Voici un exemple de script marquant le jour à partir de l'ouverture + et - 20 pips. De même, vous pouvez faire une définition du mois et respectivement le haut et le bas de ce mois.

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

Voici un exemple de script marquant le jour à partir de l'ouverture + et - 20 pips. De même, vous pouvez faire une définition du mois et respectivement le haut et le bas de ce mois.

Merci beaucoup, c'est un peu difficile mais ça semble fonctionner.
 

AlexeyVik : Merci pour le feedback.

Je ne sais pas si j'ai bien exprimé ma chasse d'eau. J'ai besoin de quelque chose comme ça.Photo

Je vous serais très reconnaissant si vous pouviez m'aider, ou me dire comment l'implémenter dans un indicateur.

Je suis novice en matière de programmation.

Les lignes verticales sont dessinées correctement.

Je ne comprends pas comment lier "les lignes d'horizon et les cercles au haut et au bas de la première bougie".

Toute aide serait appréciée.

 

Lisez la documentation sur la fonction CopyRates() et la structure MqlRates. Avec leur aide, nous pouvons obtenir toutes les données nécessaires pour mettre en œuvre vos souhaits.

Alors montrez-moi ce que vous avez et ce que vous ne pouvez pas réaliser. Sinon, la demande d'aide se lit comme une demande de le faire pour vous. Désolé de ne pas être franc.

 

Voici le code source. J'apprécierais votre aide pour l'affiner. J'ai besoin de trouver le haut et le bas de chaque première semaine du mois.

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

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

Dans mon code, ce n'est pas une bougie, c'est un jour. Dans le vôtre, c'est une semaine.

On en déduit le temps à partir duquel on peut tracer la ligne. Vous avez probablement besoin d'un mois. Le début du mois. Mais elle coïncide rarement avec le début de la semaine. Il faut donc faire un peu plus de magie pour savoir comment compter la première semaine.

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

Pour ainsi dire, sentez la différence. Il n'y a pas encore de grande différence dans mql4, mais qui sait quels changements peuvent nous attendre...

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

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

Notez les noms des lignes de tendance.

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

J'ai 3 lignes, c'est pourquoi j'ai 3 fonctions et 3 noms de lignes.

 
Merci pour votre aide, mais je ne comprends pas tout.
 

Alors la réponse à une seule question

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

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

Vous avez le même nom de ligne ici, et il devrait être différent.

Pourquoi avez-vous supprimé et corrigé vos messages ?

 

Vous n'avez pas répondu pendant un long moment, j'ai pensé que vous ne répondiez pas aux questions stupides, alors je les ai supprimées.