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

 

Per favore, datemi un suggerimento. Non capisco perché MathMax non funzioni.

Anche la versione semplificata del codice (non potrebbe essere più semplice) non funziona. La variabile GBPUSD_High non funziona :-( Mentre GBPUSD_Low funziona bene.

P.S. Sono interessato solo ai valori sulle barre dal momento in cui l'indicatore viene caricato.

//+-------------------------------------------------------------------
#property indicator_separate_window
#property indicator_buffers3
#property indicator_color1 Black
#property indicator_color2 Gray
#property indicator_color3 Gray
//--------------------------------------------------------------------
double GBPUSD[], GBPUSD_High[], GBPUSD_Low[];
//--------------------------------------------------------------------

int init()
{
//--------------------------------------------------------------------

SetIndexBuffer(0
,GBPUSD);
SetIndexStyle (0,DRAW_LINE,STYLE_SOLID,2
);
SetIndexBuffer(1
,GBPUSD_High);
SetIndexStyle (1,DRAW_LINE,STYLE_DOT,1
);
SetIndexBuffer(2
,GBPUSD_Low);
SetIndexStyle (2,DRAW_LINE,STYLE_DOT,1);
//--------------------------------------------------------------------

return;
}
//--------------------------------------------------------------------

int start()
{

int Counted_bars, i;
//--------------------------------------------------------------------
Counted_bars=IndicatorCounted();
i=Bars-Counted_bars-1;

while (i>=0)
{
GBPUSD[i]=Close[i];

if (GBPUSD_Low[i]==0) GBPUSD_Low[i]=GBPUSD[i];
GBPUSD_High[i]=MathMax(GBPUSD_High[i],GBPUSD[i]);
GBPUSD_Low[i]=MathMin(GBPUSD_Low[i],GBPUSD[i]);
i--;
}
//--------------------------------------------------------------------

return;
}
//--------------------------------------------------------------------

Da caricare, ovviamente, su GBPUSD.

 
alderru >> :

Per favore, datemi un suggerimento. Non capisco perché MathMax non funzioni.

Anche la versione semplificata del codice (non potrebbe essere più semplice) non funziona. La variabile GBPUSD_High non funziona :-( Mentre GBPUSD_Low funziona bene.

P.S. Mi interessano solo i valori sulle barre dal momento del caricamento dell'indicatore.

Naturalmente, devo caricarlo su GBPUSD.

MathMax non c'entra niente. Variante:

while ( i>=0)
{
GBPUSD[ i]=Close[ i];
GBPUSD_High[ i]=High  [ i];
GBPUSD_Low[ i]=Low[ i];

//if (GBPUSD_Low[i]==0) GBPUSD_Low[i]=GBPUSD[i];

GBPUSD_High[ i]=MathMax( GBPUSD_High[ i], GBPUSD[ i]);
GBPUSD_Low[ i]=MathMin( GBPUSD_Low[ i], GBPUSD[ i]);
i--;
}
 
tmp.0 >> :

>>MathMax non ha niente a che fare con questo.

Esattamente! Quindi chiaramente High è sempre maggiore o uguale a Close, MathMin è lo stesso ;)

 
OneDepo писал(а) >>

Esattamente! Quindi chiaramente High è sempre maggiore o uguale a Close, MathMin è lo stesso ;)

Come esempio, ho dato volutamente il calcolo di valori già noti. Nell'originale, sto cercando il massimo e il minimo su una barra di una variabile completamente diversa. Quando l'indicatore viene disegnato, la curva della variabile viene ridisegnata mentre la barra viene formata, ovviamente. Sto cercando i punti di confine.

Non capisco perché la funzione MathMax non funziona da sola. MathMin funziona bene; la curva GBPUSD_Low è disegnata...

In termini di grammatica di programmazione, hai qualche osservazione?

Per favore, installa l'indicatore, dimmi cosa c'è di sbagliato, perché GBPUSD_High non viene calcolato.

 
alderru >> :

Come esempio, ho dato volutamente il calcolo di valori già noti. Nell'originale, cerco il massimo e il minimo su una barra di una variabile completamente diversa. Quando l'indicatore viene visualizzato, la curva della variabile viene ridisegnata, ovviamente, durante la formazione della barra. Sto cercando i punti di confine.

Non capisco perché la funzione MathMax stessa non funzioni.

Hai qualche osservazione dal punto di vista della programmazione grafica?

Installa l'indicatore e dimmi cosa c'è di sbagliato qui, perché GBPUSD_High non viene calcolato.

Non fatevi ingannare, incollate questo nella vostra parte preferita del codice:

Print (GBPUSD_High[i],":",GBPUSD_Low[i],":",GBPUSD[i]); 
e avrete un'epifania nella scheda "esperti".
 
tmp.0 писал(а) >>

Non fatevi ingannare, mettete questo nel posto dove vi piace il codice:

e avrete un'epifania nella scheda "esperti".

Quindi cosa...

Non c'è nessuna epifania. Print stampa solo due valori, così come visualizza l'indicatore. E il terzo?

Avete almeno provato a fare quello che consigliate?

 
La prossima domanda, per favore :)
 
tmp.0 писал(а) >>
Prossima domanda, per favore :)

Molto intelligente.

Grazie per l'"aiuto".

 
alderru >> :

Molto intelligente.

Grazie per l'"aiuto".

La risposta vi è già stata data sopra. La ragione è l'utilizzo di un valore non assegnato nella parte destra dell'operatore di assegnazione. A cosa corrisponde GBPUSD_High[i] nella stringa

GBPUSD_High[i]=MathMax(GBPUSD_High[i],GBPUSD[i]);

Ti è stata mostrata anche un'opzione per correggere la situazione. Lasciatevi alle spalle l'ironia.


 
OneDepo писал(а) >>

La ragione è l'uso di un valore non assegnato nella parte destra dell'operatore di assegnazione.

Quindi dichiarare i buffer degli indicatori non significa che i valori delle celle siano zero. Giusto?

Pertanto, MathMax non viene calcolato poiché uno dei valori da confrontare (vale a dire, GBPUSD_High) non ha alcun valore (per niente, nemmeno zero).

Capisco. Grazie OneDepo.

Mi scuso per aver confuso tutti con la mia semplificazione (gioco di parole). Come ho già detto, non mi interessa il valore di High quotes, mi interessa il valore massimo sulla barra della mia funzione, la cui curva l'indicatore disegna e ricorre con successo mentre forma la barra. Questo è l'intervallo di ridisegno dell'indicatore durante la barra a cui ero interessato.

Ci penserò.

P.S. Ma perché MathMin è considerato senza problemi, le condizioni sono uguali e sono dichiarate uguali?

P.S. Sono molto schietto. Non posso farlo. Aiuto, per favore.

Motivazione: