[ARCHIVE] Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 3. - page 34

 

Bonjour !

Pouvez-vous me dire si, lorsqu'une ligne de tendance est tracée par programme sur un graphique, il est possible de lire sa valeur au point souhaité (toujours par programme) ?

 
demlin:

Bonjour !

Pouvez-vous me dire si, lorsqu'une ligne de tendance est tracée par programme sur un graphique, il est possible de lire sa valeur au point souhaité (encore une fois, par programme) ?

Il y a quelque temps, j'ai écrit un article dans lequel la ligne de tendance était utilisée pour trouver le bon point sur le graphique. Jetez-y un coup d'œil, vous y trouverez peut-être quelque chose pour vous... :)
 
demlin:

Bonjour !

Pouvez-vous me dire si, lorsqu'une ligne de tendance est tracée par programme sur un graphique, il est possible de lire sa valeur au point souhaité (encore une fois, par programme) ?


Cela semble impossible, mais si je le veux vraiment, je suppose que je peux...:-Р
 
Roman.:

Ils ne semblent pas pouvoir le faire, mais si vous le voulez vraiment, vous pouvez...:-Р

Cela me plairait beaucoup :)

Je voulais faire un indicateur, mais comme c'est la première fois que je m'occupe d'indicateurs, je me suis perdu. Les lignes sont dessinées comme il se doit, mais je ne trouve pas le moyen de faire entrer le tableau de valeurs. Au final, je n'ai rien obtenu.

 
artmedia70:
J'ai écrit une fois un article où j'utilisais la ligne de tendance pour trouver le bon point sur le graphique. Jetez-y un coup d'œil, vous y trouverez peut-être quelque chose pour vous... :)
Merci, j'ai la fonction ligne droite là, je vais la tordre un peu.
 

Avec MoveFileA, tout s'est bien passé. Merci beaucoup, TheXpert!

 
demlin:

Cela me plairait beaucoup :)

Je voulais faire un indicateur, mais comme c'est la première fois que je m'occupe d'indicateurs, je me suis perdu. Les lignes sont dessinées comme il se doit, mais je ne trouve pas le moyen de faire entrer le tableau de valeurs. Par conséquent, je n'ai pas réussi à le caser.

Mais si vous aviez montré le code et dit ce que vous voulez, vous auriez pu vous passer de l'équation de la ligne droite... C'est un indicateur et toutes les données nécessaires sont dans ses tampons... Bien que... :)
 
Je crois que j'ai une idée... Si vous avez construit une ligne de tendance, alors, à l'aide de la fonction d'équation de ligne droite, exécutez la boucle de la valeur de son point de départ à la valeur de son point d'arrivée et, à chaque barre, entrez les valeurs retournées par la fonction d'équation de ligne droite dans un autre tableau d'indicateurs créé à cet effet. Ensuite, en utilisant le numéro de la barre nécessaire, prenez ces valeurs dans le tableau. Ça donne quelque chose comme ça...
 
artmedia70:
Si vous me montriez le code et me disiez ce que vous voulez, vous n'auriez probablement pas besoin de l'équation de la ligne droite... C'est un indicateur et toutes les données nécessaires sont dans ses tampons ... Bien que... :)

Voici le code, copié du tutoriel du même site :)

#property copyright "Copyright © 2011, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

#property indicator_chart_window

extern int History=21;        // Колич.баров в расчётной истории
extern int M= 3;           // начальный бар с которого начинаем поиск фракталов в цикле.
int    i,k;                // номера баров в циклах.
int    Vnf3,Vnf2,Vnf1;     // номера реперных фракталов (1-ый справа на графике на нисходящем тренде).
int    VnfL3,VnfL2,VnfL1;  // номера реперных фракталов (1-ый справа на графике на восходящем тренде).
int    VFN,VFNL;           // счетчик найденных фракталов.
int    Md,MdL;             // счетчики кол-ва модификаций

double VMF1,VMF2;     // промежуточные значения верхних фракталов на нисходящем тренде.
double VMFL1,VMFL2;  // промежуточные значения нижних фракталов на восходящем тренде.
double VlFl_L;             // Min значение ближайшего нижнего фрактала на тренде вниз
double VlFl_H;             // Max значение ближайшего верхнего фрактала на тренде вверх
datetime tim1_L;           // Время ближайшего нижнего фрактала после нисходящего тренда 
datetime timL1_H;          // Время ближайшего верхнего фрактала после восходящего тренда 

datetime tim1,tim2,tim3;   // время для построения линий вилки Чувашова.
datetime timL1,timL2,timL3;// время для построения линий вилки Чувашова.

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int    counted_bars=IndicatorCounted();
//----
   for (i=3;i<=History;i++)
    {//цикл
    if(High[i]>High[i+1] &&High[i]>High[i-1]&&High[i]>Close[i-2])
     {//фрактал
      VFN++;           // счетчик найденного фрактала.
      // ------------------------------------------------------------+
      if(VFN==1)       // если 1-ый фрактал найден, запоминаем значения: Max[i], № свечи[i], время[i]:
        {// f1
           Vnf1=i;        // запоминаем номер Max бара найденного фрактала.
           VMF1=High[i];  // запоминаем Max значение 1-ого найденного фрактала.
           tim1=iTime(NULL,0,i);        // запоминаем время 1-ой опорной точки.
         }//-f1
    // --------------------------------------------------------------+
    if(VFN==2)        // если 2-ый фрактал найден, запоминаем значения: Max[i], № свечи[i], время[i]:
      {// f2
          VMF2=High[i];    // запоминаем Max значение 2-ого найденного фрактала.
          if(VMF2>VMF1)    // если Max значение 2-го фрактала больше 1-го (т.е. направлена вниз),
            {
              Vnf2=i;      // запоминаем номер Max бара найденного фрактала.
              tim2=iTime(NULL,0,i);      // запомним время 2-ой опорной точки.
            }
            else VFN=VFN-1;
       }//-f2
    // --------------------------------------------------------------+

// ------------------------------------------------------------------+
   if(VFN==2) break; // найдены все 2 фрактала, выходим из цикла.
// ------------------------------------------------------------------+ 
    }//-фрактал                      
   }//-цикл 
//----

for (i=3;i<=History;i++)
    {//цикл
    if(Low[i]<Low[i+1] &&Low[i]<Low[i-1]&&Low[i]<Close[i-2])
     {//фрактал
      VFNL++;           // счетчик найденного фрактала.
      // ------------------------------------------------------------+
      if(VFNL==1)       // если 1-ый фрактал найден, запоминаем значения: Max[i], № свечи[i], время[i]:
        {// f1
           VnfL1=i;        // запоминаем номер Max бара найденного фрактала.
           VMFL1=Low[i];  // запоминаем Max значение 1-ого найденного фрактала.
           //Comment("VMFL1=",VMFL1);
           timL1=iTime(NULL,0,i);        // запоминаем время 1-ой опорной точки.
         }//-f1
    // --------------------------------------------------------------+
    if(VFNL==2)        // если 2-ый фрактал найден, запоминаем значения: Max[i], № свечи[i], время[i]:
      {// f2
          VMFL2=Low[i];    // запоминаем Max значение 2-ого найденного фрактала.
          if(VMFL2<VMFL1)    // если Max значение 2-го фрактала больше 1-го (т.е. направлена вниз),
            {
              VnfL2=i;      // запоминаем номер Max бара найденного фрактала.
              timL2=iTime(NULL,0,i);      // запомним время 2-ой опорной точки.
            }
            else VFNL=VFNL-1;
       }//-f2
    // --------------------------------------------------------------+

// ------------------------------------------------------------------+
   if(VFN==2) break; // найдены все 2 фрактала, выходим из цикла.
// ------------------------------------------------------------------+ 
    }//-фрактал                      
   }//-цикл 


DelLine();DelLineH();CreateLine();CreateLineH();
   return(0);
  }
//+------------------------------------------------------------------+

void DelLine()        // Удаление трендовых линий Sell и значков для вилки Чувашова 
   {
   ObjectDelete("Tr_down1");
  // ObjectDelete("Tr_down2");
  // ObjectDelete("Frak_1");
   //ObjectDelete("Frak_2");
   //ObjectDelete("Frak_3");
   }

void DelLineH()        // Удаление трендовых линий BUY и значков для вилки Чувашова 
   {
   ObjectDelete("Tr_up1");
   //ObjectDelete("Tr_up2");
   //ObjectDelete("Fr_1");
   //ObjectDelete("Fr_2");
   //ObjectDelete("Fr_3");
   }
void CreateLine()       // Создание и отрисовка трендовых линий Sell линий вилки Чувашова 
   {
   ObjectCreate("Tr_down1",OBJ_TREND,0,tim2,VMF2,tim1,VMF1);
   ObjectSet("Tr_down1",OBJPROP_COLOR,Red);
   ObjectSet("Tr_down1",OBJPROP_WIDTH,1);  // тонкой линией и 
   ObjectSet("Tr_down1",OBJPROP_STYLE,STYLE_SOLID);// пунктиром
   //ObjectCreate("Tr_down2",OBJ_TREND,0,tim2,VMF2,tim1,VMF1);
   //ObjectSet("Tr_down2",OBJPROP_COLOR,Aqua);
  // ObjectSet("Tr_down2",OBJPROP_WIDTH,1);  // тонкой линией и 
  // ObjectSet("Tr_down2",OBJPROP_STYLE,STYLE_DOT);// пунктиром 
   }
  
   void CreateLineH()       // Создание и отрисовка трендовых линий BUY линий вилки Чувашова 
   {
   ObjectCreate("Tr_up1",OBJ_TREND,0,timL2,VMFL2,timL1,VMFL1);
   ObjectSet("Tr_up1",OBJPROP_COLOR,Green);
   ObjectSet("Tr_up1",OBJPROP_WIDTH,1);  // тонкой линией и 
   ObjectSet("Tr_up1",OBJPROP_STYLE,STYLE_SOLID);// пунктиром
   //ObjectCreate("Tr_up2",OBJ_TREND,0,timL2,VMFL2,timL1,VMFL1);
   //ObjectSet("Tr_up2",OBJPROP_COLOR,Aqua);
   //ObjectSet("Tr_up2",OBJPROP_WIDTH,1);  // тонкой линией и 
  // ObjectSet("Tr_up2",OBJPROP_STYLE,STYLE_DOT);// пунктиром 
   }

Je veux obtenir deux lignes et lire leurs valeurs sur n'importe quelle barre via iCustom.

 

Chers membres du forum, à l'aide !

J'ai besoin d'un indicateur répondant aux exigences suivantes : 1) Intersection de deux MA (vous pouvez choisir le type de MA, la période de MA, ce à quoi la MA est appliquée, ainsi que le décalage).

2) L'indicateur dessine une flèche au point d'intersection.

3) Au moment du passage, il y aura un bip et un message électronique.

4) Le signal est produit une seule fois. Au moment de traverser le MA.

Il y a deux indicateurs : MA_Shift_Crossover_Alert.mq4 et 2MA CrossoverWithPrice_fixed.ex4

Le premier n'aime pas que le signal soit donné à chaque bougie et après le franchissement de la MA. Le second ne parvient pas à fixer le décalage MA.

Existe-t-il un moyen d'ajouter la possibilité de déplacer la MA au deuxième indicateur ?

Les indicateurs sont joints dans l'archive.

Merci.

Dossiers :