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

 
Alex_Profit:

Je ne sais pas comment faire. Pouvez-vous me donner un indice ? La période maximale est d'un mois.

Dans la variablet_Line. nous devons insérer la valeur de 1st,2nd,3rd,4th, kv.

Je ne peux pas comprendre.

Je vous en serais reconnaissant.

Ohhh, quel programme c'est... Tu as compris ce que tu as écrit, ou quoi ? Pourquoi y a-t-il deux boucles sur le même compteur ? Vérifiez au moins manuellement la valeur de la variable i à chaque itération.

Qu'est-ce quebarsToProcess? Où est-il déclaré et à quoi est-il égal ? Encore une fois, une limite pour deux boucles, cela ne mène à rien de bon ; il faut se battre quand on écrit du code comme ça, pour que ce ne soit pas fait en vain.

Et cela n'a aucun sens de compter les barres de la TF, sur laquelle le graphique fonctionne, pour travailler avec la période de MN1.

Je ne pense pas qu'il soit nécessaire d'écrire un indicateur qui dessine une ligne par trimestre, tout en fonctionnant constamment sur le graphique, je pense que pour de telles tâches et le script fera, a couru, marqué le graphique, déchargé.

 

Je ne l'ai pas écrit. J'ai trouvé un indicateur comme celui-ci et j'ai commencé à le démonter. Je viens juste de commencer moi-même, donc je ne suis pas très douée pour ça. J'ai lu le manuel d'utilisation mais il n'est pas toujours compréhensible. Je conduis avec un "craquement". C'est une bonne chose qu'il existe un forum où vous pouvez demander des conseils. Ce serait bien de parler avec quelqu'un sur le sujet de la programmation.

Un merci spécial pour la critique. Cependant, la question n'est toujours pas résolue. Merci quand même pour votre réactivité.

 
Alex_Profit:

Je ne l'ai pas écrit. J'ai trouvé un indicateur comme celui-ci et j'ai commencé à le démonter. Je viens juste de commencer moi-même, donc je ne suis pas très douée pour ça. J'ai lu le manuel d'utilisation mais il n'est pas toujours compréhensible. Je conduis avec un "craquement". C'est une bonne chose qu'il existe un forum où vous pouvez demander des conseils. Ce serait bien de parler avec quelqu'un sur le sujet de la programmation.

Un merci spécial pour la critique. Cependant, la question n'est toujours pas résolue. Je vous remercie néanmoins pour votre réactivité.

Eh bien, voici une ébauche, par exemple, sur mon genou, je viens d'écrire un script rapide :

void OnStart()
{
   int limit=iBars(_Symbol,PERIOD_MN1);
   for(int i=0;i<=limit;i++)
   {
      datetime timemn=iTime(_Symbol,PERIOD_MN1,i);
      int  month=TimeMonth(timemn);
      if(month==1 || month==4 || month==7 || month==10)
      {
         int qt=0;
         switch(month)
         {
            default:break;
            case 1: qt=1;break;
            case 4: qt=2;break;
            case 7: qt=3;break;
            case 10: qt=4;break;
         }
 
         string name=StringConcatenate("Qt"+IntegerToString(qt)+", "+TimeToStr(timemn));
         ObjectCreate (name,OBJ_VLINE,0,timemn,0);         //--- Создаём обьект вертикальную линию
         ObjectSet    (name,OBJPROP_STYLE,2);              //--- Со стилем
         ObjectSet    (name,OBJPROP_COLOR,DimGray);        //--- Со цветом  
         ObjectSet    (name,OBJPROP_WIDTH,0);              //--- С  толщиной
         ObjectSet    (name,OBJPROP_BACK,0);               //--- С типом отображения. Объект на заднем плане
      }
   }   
}

Petit inconvénient : si le trimestre commence le week-end, la ligne est tracée sur la dernière barre du vendredi. Et le premier trimestre dans l'historique restera également sans la ligne, si, par exemple, l'historique commence le 2ème jour. Il s'agit de spécifier le numéro du mois et si ce n'est pas le 1er, alors le suivant doit être pris.

Pour supprimer toutes les lignes de ce script du graphique, vous pouvez exécuter ce script :

void OnStart()
{
     ObjectsDeleteAll(0,"Qt");
}

Vous pouvez créer un script en boucle, avec vérification de l'existence d'une ligne particulière sur la barre souhaitée, de sorte qu'il n'y ait pas de tentative de placer une ligne sur une ligne déjà tracée et avec suppression du balisage à la désinitialisation du script.

Il est également possible d'introduire des paramètres de ligne dans les paramètres et de faire bien d'autres choses.

 
evillive:

Voici une ébauche, par exemple, je viens d'écrire un script rapide sur mon genou :

C'est génial. Merci beaucoup.

Je me demande combien de temps il faut pour apprendre ces trucs ?

 

Environ le temps qu'il faut pour lire la référence linguistique et se souvenir de ce qui s'y trouve et où.

Ceci suppose que vous ayez des compétences en programmation dans au moins un des langages de type C. Les compétences ne se limitent pas à la syntaxe, vous devez comprendre comment le programme va "vivre", ce qui suit quoi.

Si ce n'est pas possible, mais qu'il y a un désir d'apprendre, une année devrait être plus que suffisante.

 
evillive:

Si vous n'en avez pas, mais que vous voulez apprendre, une année devrait être plus que suffisante.

Je comprends.

 

Je ne sais même pas comment l'aborder. Je dois y mettre la touche finale. Je n'arrive pas non plus à trouver comment le faire.

Leslignes verticales sont dessinées, pas de problème avec ça. Mais la façon de dessiner les barres bleues sur les barres hautes reste un mystère pour moi.

La ligne est de la journée. Essayer de la lier au tampon n'a pas fonctionné.

Je vous serais extrêmement reconnaissant de votre aide.

Merci.

 
Alex_Profit:

Je ne sais même pas comment l'aborder. Je dois y mettre la touche finale. Je n'arrive pas non plus à trouver comment le faire.

Les lignes verticales sont dessinées, pas de problème avec ça. Mais la façon de dessiner les barres bleues sur les barres hautes reste un mystère pour moi.

La ligne est de la journée. Essayer de la lier au tampon n'a pas fonctionné.

Je vous serais extrêmement reconnaissant de votre aide.

Merci.

Montrez-nous le code, nous le réparerons ensemble.
 

Ne me frappez pas, le code est "bâclé". Je l'ai déjà compris. Je voudrais parvenir à un résultat logique par des exemples et des erreurs.

La tâche minimale, ça marche. Et avec l'expérience, il deviendra plus "joli".

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

#property strict

#property indicator_chart_window

   

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

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


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

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

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


//MqlDateTime mqlDateTime;

MqlRates    mqlRates[1];


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

int init()

  {  

    return(0);

  }

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

int deinit()

  {

   int i;  

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

           {

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

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

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

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

   {


         //--- кубики по хай (В место галочек нужно подставить кубики)

         ObjectCreate    (0,Name_CHECK + "H_CHECK" + DoubleToStr(i,0), OBJ_ARROW_CHECK, 0, t_Line, mqlRates[0].high, t_Line,mqlRates[0].high);

         ObjectSetInteger(0,Name_CHECK + "H_CHECK" + DoubleToStr(i,0), OBJPROP_COLOR, clrGreen); 

   

         //--- кубики по лоу (В место галочек нужно подставить кубики)

         ObjectCreate    (0,Name_CHECK + "L_CHECK" + DoubleToStr(i,0), OBJ_ARROW_CHECK, 0, t_Line, mqlRates[0].low, t_Line,mqlRates[0].low);

         ObjectSetInteger(0,Name_CHECK + "L_CHECK" + DoubleToStr(i,0), OBJPROP_COLOR, clrGreen); 

        

    //+------------------------ Рисуем вертикальную линии -----------------------------------------------------+                 

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

}


 
Alex_Profit:

Ne me frappez pas, le code est "bâclé". Je l'ai déjà compris. Je voudrais parvenir à un résultat logique par des exemples et des erreurs.

La tâche minimale, ça marche. Et avec l'expérience, il deviendra plus "joli".

Eh bien, où cela fonctionne-t-il ? Les lignes sont tracées sur chaque barre, pas sur la TK. Ou dans l'image ci-dessus TF=H1 ?

Calculez sur une feuille de papier ce que la limite et i à chaque itération de cycles seront égaux.

Mon exemple ci-dessus n'est jamais pris en compte, d'après ce que je comprends.

Les flèches tick peuvent être dessinées à l'aide de tampons d'indicateurs, tout comme les lignes reliant les ombres des chandeliers.