Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 536

 
Artyom Trishkin:
Da dove esattamente stai eseguendo l'indicatore nel terminale?
Se intendi il mio, alloraC:-Users\AppData\Roaming\MetaQuotes\Terminal\CE01488447B8E5332C971089AB90, se intendi BB, onestamente non so da dove gira, ma ho usato per stampare il problema (ho scoperto se il BB stesso dà più di 4 cifre) e ho anche preso BB da questa cartella.
 
Павел Козлов:
Mi sono addentrato nel codice per guardare queste cose.

Non so tutti, ma io ho due posti dove si trovano gli indici e gli esperti, è C:\Program Files (x86)\ MT4\MQL4\indicators e C:\Users\AppData\Roaming\MetaQuotes\Terminal\CE01488447B8E5332C971089AB90 (questa cartella si apre da terminale File-Open data directory) in entrambi i posti ho cercato il codice ed è identico.Forse mi è sfuggito di nuovo il punto, puoi chiarirlo per qualcuno che non lo sa. Qual è la differenza tra custom e standard e dove trovarli entrambi?

Quella standard si chiama BollingerBands e quella personalizzata è Bands e si trova in posti diversi.


 
Artyom Trishkin:
Da dove esattamente si esegue l'indicatore nel terminale?

Dubito che abbia familiarità con la modalità /portable

 
Alexey Viktorov:

Quella standard si chiama BollingerBands e quella personalizzata si chiama Bands e si trova in posti diversi.


Grazie. Non posso spiegare a Sua Maestà dal mio cellulare dove e cosa si trova.
Ecco perché stavo cercando di dire che lancia una cosa, ma il codice ne guarda un'altra.
 
Alexey Viktorov:

Dubito che abbia familiarità con la modalità /portable

Non ho davvero familiarità con questa modalità e nel mio thread che ho creato separatamente su questo problema ho rivelato il mio livello di conoscenza, vi prego di perdonare ancora la stupidità, ma non è stato così facile come si potrebbe pensare per me. Eppure mi hai mostrato il problema, ora cercherò di capire come risolverlo. Grazie per il tuo consiglio e quello di Artem.
 
Павел Козлов:
Non ho davvero familiarità con questa modalità e nel mio thread che ho creato separatamente su questo problema ho rivelato il mio livello di conoscenza, vi prego di perdonare ancora la stupidità, ma non è stato così facile come si potrebbe pensare per me. Eppure mi hai mostrato il problema, ora cercherò di capire come risolverlo. Grazie per il tuo consiglio e quello di Artem.

Non volevo in alcun modo prenderti alla sprovvista con l'ignoranza. Era un dialogo con Artem, un semplice chiarimento che sta chiedendo ciò che non si sa, dal mio punto di vista. Non sapere non è vergognoso e abbastanza normale.

 
Cosa sto sbagliando ora, ho imparato la funzione iCustom. Fatto il codice (preso la linea superiore come esempio). Ma dà ancora 4 caratteri. DoubleToString produce 5, ma stronzate, non dati reali.
double BUp = iCustom(NULL,0, "Bands",20,0,2,1,1);
Please help, help in code. Non nella stampante, basta scrivere i dati dall'indicatore Bands.ex4 nella mia variabile indicatore, per esempio la linea superiore. Preferibilmente usando valori numerici, non sostituendoli con variabili.
 
Павел Козлов:
Beh, cosa sto facendo di sbagliato ora, ho imparato la funzione iCustom. Fatto il codice (preso la linea superiore come esempio). Ma dà ancora 4 caratteri. DoubleToString dà 5, ma sono stronzate, non dati reali. Non nella stampante, basta scrivere i dati dell'indicatore Bands.ex4 nella variabile del mio indicatore, per esempio la linea superiore. È auspicabile utilizzare valori numerici e non sostituirli con variabili.

Il codice è posto in OnInit(), perché OnTick() non funzionerà oggi.


Hmmm: non ho letto attentamente. Non ho notato questa frase.

È auspicabile utilizzare valori numerici e non sostituirli con variabili.


Ma non dipende dal fatto che si metta un numero o una variabile nell'iCustom.

File:
 
Павел Козлов:
Cosa sto sbagliando ora, ho imparato la funzione iCustom. Fatto il codice (preso la linea superiore come esempio). Ma dà ancora 4 caratteri. DoubleToString dà 5, ma sono stronzate, non dati reali. Non nella stampante, basta scrivere i dati dell'indicatore Bands.ex4 nella variabile del mio indicatore, per esempio la linea superiore. Usare preferibilmente valori numerici e non sostituirli con variabili.
Stai controllando in modo sbagliato. iCustom, iBands non arrotondano il valore di ritorno.
   double   BUp = iCustom(NULL,0,"Bands",20,0,2.0,1,1);
   Print(DoubleToString(BUp,16));
 

Aiutami a capire perché l'indicatore non viene reso. Voglio alla fine creare qualcosa come ZigZag.

//+------------------------------------------------------------------+
//|                                                      ProjectName |
//|                                      Copyright 2012, CompanyName |
//|                                       http://www.companyname.net |
//+------------------------------------------------------------------+
#property link      ""
#property version   "1.00"
#property strict
#property indicator_chart_window
//--------------------------------
#property indicator_buffers 1       // Количество буферов
#property indicator_color1 Blue     // Цвет линии 0 буфера
double Buf_0[];
double Max_B=0,
Min_B=10000;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int init()
  {
   SetIndexBuffer(0,Buf_0);                  //Назначение массива буфера
   SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,1); //стильлинии
   return(0);
  }
//------------------------------
int start()
  {
   int i;
   int n,
   step=10;
   int Counted_bars;
   double Max_A,
   Min_A;
   Counted_bars=IndicatorCounted();
   i=Bars-Counted_bars-1;
//--------------------------------------------------------------------------------------------------------------+
   while(i>=0) //цикл, который считает просчитывает значение на i-ом баре               
     {
      Max_A=High[i];                         //присвоили максимальное значение i-ого бара переменной Max_A            
      Min_A=Low[i];                          //присвоили минимальное значение i-ого бара переменной Min_A
      if(Max_A>Max_B)
         Max_B=Max_A;
      if(Min_A<Min_B)
         Min_B=Min_A;
      //------------------------------------------------------------------------------------------------------------- 
      if(i>=step)
        {
         for(n=0;n<step;n++) //цикл, который будет сравнивать значения баров на определённом интервале        
           {
            if(High[i+n]>Max_A)
              {
               Max_A=High[i+n];
              }
            else
              {
               if(High[i+n]<Min_A)
                  Min_A=High[i+n];
              }
           }
        }
      if(i<step)
        {
         for(n=step;n>0;n--) //цикл, который будет сравнивать значения баров на определённом интервале        
           {
            if(High[i-n]>Max_A)
              {
               Max_A=High[i-n];
              }
            else
              {
               if(High[i-n]<Min_A)
                  Min_A=High[i-n];
              }
           }
        }
      if(Max_A>Max_B)
        {
         Buf_0[i]=Max_A;
        }
      else
        {
         if(Min_A<Min_B)
            Buf_0[i]=Min_A;
        }
      i--;
     }
   return(0);
  }
//+------------------------------------------------------------------+