[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate. Non posso andare da nessuna parte senza di te. - pagina 314

 
Non ho capito bene? Quando disegno l'indicatore Kon nella finestra, funziona bene. Spiegare...
 
kon12 >> :
Non ho capito bene? Quando disegno l'indicatore Kon in finestra, funziona bene. Spiegare...

quando si disegna nella finestra, si hanno le barre dell'istogramma verde o verde. con il primo corrispondente al buffer up e il secondo al dn. se solo dn è disegnato sulla barra 0, e si accede all'indicatore iCustom(0,0, "Kon",10,0,0), cioè il parametro del modo è 0 (guardate il vostro 0 è su - SetIndexBuffer(0,up);), allora il risultato della chiamata di funzione sarà molto probabilmente EMPTY_VALUE.


È più chiaro?

 

Ho provato a cambiare il numero di buffer sia a 1 che a 2 - nessun aiuto

 

controlla se la stringa "Kon" nella chiamata iCast è la stessa del nome del file mq4, compreso il caso dei caratteri

e quale valore emette la funzione in ogni caso?

 

La domanda è abbastanza semplice. Sto cercando di fare riferimento all'indicatore OsMA, che si trova nel set standard di indicatori personalizzati. Voglio semplicemente disegnare una linea di questo indicatore nella finestra degli indicatori. L'indicatore OsMA ha parametri 12,26,9 e viene disegnato sul buffer 0. Cosa c'è di sbagliato nel codice? La linea 0 viene disegnata nella finestra dell'indicatore e questo è tutto.

#property indicator_separate_window
#property indicator_buffers 1
#property indicator_level1 0.0
#property indicator_color1 Olive

double z;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   SetIndexBuffer(0, z);
   SetIndexStyle(0,DRAW_HISTOGRAM);
    return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  { z= iCustom(NULL,0,"OsMA",12,26,9,0,0); 
  //----
   return(0);
  }
 
kon12 >> :

La domanda è abbastanza semplice. Sto cercando di utilizzare la funzione OsMA che si trova nel set standard di indicatori personalizzati. Voglio semplicemente disegnare una linea di questo indicatore nella finestra degli indicatori. L'indicatore OsMA ha parametri 12,26,9 e viene disegnato usando il buffer 0. Cosa c'è di sbagliato nel codice? La linea 0 viene disegnata nella finestra dell'indicatore e questo è tutto.

No, non funziona così.

La z è una matrice e i dati devono essere scritti in essa elemento per elemento. Per esempio:

for(i=100;i>=0;i--)

{

z[i]= iCustom(NULL,0,"OsMA",12,26,9,0,i);

}

 
Sì, ha funzionato! Grazie per il vostro aiuto, i primi passi sono i più difficili...
 

Un'altra domanda sul mio argomento. Supponiamo che io disegni una curva sul grafico, per esempio MA. Poi uso un indicatore personalizzato che utilizza questa MA attraverso la funzione iCustom. Possono essere legati in modo che il periodo MA nel grafico sia automaticamente cambiato quando viene cambiato il periodo МА nell'indicatore personalizzato?

 

Potete consigliarmi, sto lavorando su un programma giornaliero.

E voglio accedere ai dati dei minuti. È aggiornato o sono dati vecchi?

 

Domanda - come funziona (ottimizzazione dell'indicatore):


if( MA_Fast[ i+1]> MA_Slow[ i+1]) {
   string RectangleSell = StringConcatenate("RECTANGLE_", StartBoxTime);
   ObjectDelete( RectangleSell);
   ObjectCreate( RectangleSell, OBJ_RECTANGLE, 0,  StartBoxTime, BoxLow,  EndBoxTime, BoxHigh);
   ObjectSet( RectangleSell, OBJPROP_STYLE, STYLE_SOLID);
   ObjectSet( RectangleSell, OBJPROP_RAY, False);
   ObjectSet( RectangleSell, OBJPROP_WIDTH, 1);
   ObjectSet( RectangleSell, OBJPROP_BACK , True);
   ObjectSet( RectangleSell, OBJPROP_COLOR, ColorSell);
}


Ho capito bene che ad ogni nuovo tick lo stesso rettangolo

(stessa dimensione con lo stesso numero di barre) saranno cancellati e ridisegnati?

Vale la pena aggiungere un controllo per il numero di barre (se ci sono più barre, allora ridisegna solo allora)

per alleggerire la CPU del computer o il guadagno sarà minimo e non vale la pena preoccuparsene?

Motivazione: