Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 6. - pagina 43

 

Aiutatemi a scrivere una funzione che restituisca il valore massimo di ATR tra le barre visibili nella finestra. Ho cercato su internet, ma non ho trovato nulla di simile.

Grazie,

 
dr.Vasgenich :

Aiutatemi a scrivere una funzione che ottenga il valore massimo di ATR tra le barre visibili nella finestra. Ho cercato su internet, ma non ho trovato nulla di simile.

Grazie,

/

extern int p = 4; // periodo ATR

//------

int start()

{

int i;

doppia m;

while( i < WindowBarsPerChart() - p )

{

doppio a = iATR( NULL, 0, p, i );

se ( m < a )

{

m = a;

}

i++;

}

Alert( " Il massimo valore ATR in pip per il numero di barre visibile è ", m / Point ); //

/////

ritorno(0);

}

 

Boeing747 Grazie. Avrei dovuto scrivere subito qui.

Così la variante finale della funzione nella mia versione appare come segue

doppio ATR_Max() {
int i;
doppia m;
while( i < WindowBarsPerChart() - p ) {
doppio a = iATR( NULL, 0, p, i );
se ( m < a ) {
m = a;
}
i++;
}
Alert( " Il valore massimo di ATR per il numero di barre visibile è - ", m );
ritorno(m);
}

 
dr.Vasgenich :

Boeing747 Grazie. Avrei dovuto scriverlo subito qui.

Quindi, la variante finale della funzione nella mia versione si presenta così

doppio ATR_Max() {
int i;
doppia m;
while( i < WindowBarsPerChart() - p ) {
doppio a = iATR( NULL, 0, p, i );
se ( m < a ) {
m = a;
}
i++;
}
Alert( " Il valore massimo di ATR per il numero di barre visibile è - ", m );
ritorno(m);
}

Devo aver fatto un errore in while( i < WindowBarsChart() - p )

molto probabilmente la funzione iATR( NULL, 0, p, i ); calcola i valori per tutte le barre del grafico e puoi, o forse dovresti

corretto in while( i < WindowBarsChart() ). Non ho mai lavorato con iATR(); dovrei provare qualche volta.

In realtà potete scrivere la vostra funzione senza usare la funzione iATR(), per dire nella sua forma pura.

 
Boeing747 :

Devo aver fatto un errore in while( i < WindowBarsChart() - p )

Molto probabilmente, la funzione iATR( NULL, 0, p, i ); calcola i valori per tutte le barre del grafico.

corretto in while( i < WindowBarsChart() ). Non ho mai lavorato con iATR(); dovrei provare qualche volta.

Fondamentalmente, posso scrivere la vostra funzione senza usare iATR(), quindi nella sua forma pura.


Ho anche pensato ora che il periodo non ha nulla a che fare con esso. Probabilmente sarebbe meglio rimuoverlo.

Non si può fare attraverso un array? Raccogliete in un array i valori di tutti gli APR nella finestra e poi trovate il massimo usando questa funzione - ArrayMaximum Temo che la mia conoscenza non sia sufficiente.




 
dr.Vasgenich :

Ho pensato ora che il periodo non c'entra niente. Probabilmente è meglio rimuoverlo.

Non si può fare questo attraverso un array? Raccogliete in un array i valori di tutti gli APR nella finestra e poi trovate il massimo usando questa funzione - ArrayMaximum Temo che la mia conoscenza non sia sufficiente per questo.




Sì, è possibile scorrere iATR(); nel ciclo per segnare gli array e quindi utilizzando ArrayMaximum per estrarre il valore massimo di ATR. Ma ancora ottenere burro come è ancora necessario utilizzare il ciclo per segnare gli array come nella prima opzione . ma nella prima versione del massimo è stato calcolato nel processo di scorrimento del ciclo che è molto più economico che l'opzione ArrayMaximum. Non c'è bisogno di saperne molto, potete ottenere informazioni dettagliate su ArrayMaximum in un libro di testo o in un libro di riferimento.
 
Boeing747 :
Sì, è possibile far scorrere iATR(); in un ciclo per segnare gli array con esso e poi usare ArrayMaximum per estrarre il valore massimo ATR. ma lo stesso risulta olio come appositamente per questo scopo è necessario usare un ciclo per segnare gli array come nella prima variante. ma nella prima variante il massimo è stato calcolato durante lo scorrimento di un ciclo che è molto più economico che con una variante ArrayMaximum. Non avete bisogno di alcuna conoscenza speciale, potete trovare descrizioni dettagliate su ArrayMaximum in un libro di testo o di riferimento.

Grazie, proverò a controllare domani. Un'altra domanda, come posso salvare le risorse del tester in questa funzione, in modo che il valore massimo sia calcolato dopo che appare una nuova barra e non ad ogni tick?
 
dr.Vasgenich :

Grazie, cercherò di controllare il funzionamento domani. Un'altra domanda, come posso salvare le risorse del tester in questa funzione, in modo che il valore massimo sia calcolato dopo che appare una nuova barra e non ad ogni tick?

Puoi provare in questo modo per cominciare

a livello globale dichiarare t

e sopra il ciclo scrivere

se ( t != Tempo[0] )

{

t = Tempo[0];

// ciclo in cui viene calcolato ATRmax

}

in questo modo il calcolo nel ciclo sarà fatto una volta all'apertura di una nuova barra. forse ci sono altre varianti più intelligenti...

 

Boeing747, dr.Vasgenich, ragazzi, non potete usare il tasto "SRC" o vi sta bene?

 
Zhunko :

Boeing747, dr.Vasgenich, ragazzi, non potete usare il tasto "SRC" o vi sta bene?

Continuo a dimenticare di usare il pulsante "SRC". Deve essere un'abitudine. A 60 anni, è difficile cambiare idea. Cercherò di usare il tuo pulsante domani