[ARCHIVIO] Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 3. - pagina 34

 

Ciao!

Potete dirmi per favore se una linea di tendenza è disegnata programmaticamente su un grafico, è possibile leggere il suo valore nel punto desiderato (di nuovo, programmaticamente)?

 
demlin:

Ciao!

Potete dirmi per favore se c'è una linea di tendenza disegnata programmaticamente sul grafico, è possibile leggere il suo valore nel punto desiderato (di nuovo, programmaticamente).

Qualche tempo fa ho scritto un articolo in cui la linea di tendenza veniva usata per trovare il punto giusto sul grafico. Dai un'occhiata, forse troverai qualcosa per te... :)
 
demlin:

Ciao!

Potete dirmi per favore se una linea di tendenza è disegnata programmaticamente su un grafico, è possibile leggere il suo valore nel punto desiderato (di nuovo, programmaticamente)?


Sembra impossibile, ma se lo voglio davvero, suppongo che posso...:-Р
 
Roman.:

Non sembrano essere in grado di farlo, ma se lo vuoi davvero, puoi...:-Р

Mi piacerebbe molto :)

Volevo fare un indicatore, ma siccome è la prima volta che ho a che fare con gli indicatori, mi sono perso. Le linee sono disegnate come dovrebbero essere, ma non riesco a trovare il modo di infilare l'array con i valori. Alla fine, non sono arrivato da nessuna parte.

 
artmedia70:
Una volta ho scritto un articolo in cui ho usato la linea di tendenza per trovare il punto giusto sul grafico. Dai un'occhiata, forse troverai qualcosa per te... :)
Grazie, ho la funzione di linea retta lì, la torcerò un po'.
 

Con MoveFileA tutto è andato bene. Grazie mille, TheXpert!

 
demlin:

Mi piacerebbe molto :)

Volevo fare un indicatore, ma siccome è la prima volta che ho a che fare con gli indicatori, mi sono perso. Le linee sono disegnate come dovrebbero essere, ma non riesco a trovare il modo di infilare l'array con i valori. Di conseguenza, non sono riuscito a spremerlo.

Ma se tu avessi mostrato il codice e mi avessi detto cosa vuoi, avresti potuto fare a meno dell'equazione della linea retta... È un indicatore e tutti i dati necessari sono nei suoi buffer... Anche se ... :)
 
Credo di avere un'idea... Se avete costruito una linea di tendenza, allora, utilizzando la funzione di equazione della linea retta, correte nel ciclo dal valore del suo punto iniziale al valore del suo punto finale e ad ogni barra inserite i valori restituiti dalla funzione di equazione della linea retta in un altro array di indicatori creato per questo scopo. Poi, usando il numero della barra necessaria, prendete questi valori dall'array. Va più o meno così...
 
artmedia70:
Se mi mostrassi il codice e mi dicessi cosa vuoi, probabilmente non avresti bisogno dell'equazione della linea retta... È un indicatore e tutti i dati necessari sono nei suoi buffer... Anche se ... :)

Ecco il codice, copiato dal tutorial dello stesso sito :)

#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);// пунктиром 
   }

Voglio ottenere due linee e leggere i loro valori su qualsiasi barra tramite iCustom

 

Cari membri del forum, aiuto!

Ho bisogno di un indicatore con i seguenti requisiti: 1) Intersezione di due MA (è possibile scegliere il tipo di MA, il periodo di MA, a cosa viene applicato il MA, così come lo spostamento).

2) L'indicatore disegna una freccia nel punto di intersezione.

3) Al momento dell'attraversamento, ci sarà un segnale acustico e un messaggio e-mail.

4) Il segnale viene prodotto solo una volta. Al momento di attraversare il MA.

Ci sono due indicatori: MA_Shift_Crossover_Alert.mq4 e 2MA CrossoverWithPrice_fixed.ex4

Al primo non piace che il segnale venga dato ad ogni candela e dopo aver attraversato la MA. Il secondo non riesce a impostare il cambio MA.

C'è un modo per aggiungere la possibilità di spostare la MA al secondo indicatore?

Gli indicatori sono allegati nell'archivio.

Grazie.

File:
Motivazione: