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

 

Buon pomeriggio!

Potete dirmi come trovare 3 massimi (o minimi) su un grafico per un dato periodo, ricordarli e usarli per ulteriori calcoli?

O dammi un link al codice.

Ho cercato il codice sul forum, ma non ha funzionato attraverso la ricerca.

Grazie.

 
LOA:

Buon pomeriggio!

Potete dirmi come trovare 3 massimi (o minimi) su un grafico per un dato periodo, ricordarli e usarli per ulteriori calcoli?

O dammi un link al codice.

Ho cercato il codice sul forum, ma non ha funzionato attraverso una ricerca.

Grazie.


Per esempio, ho impostato un periodo di un giorno su Eurobucks. Aprire M15. Date un'occhiata allo screenshot qui sotto. I confini del giorno sono indicati da linee verticali rosse. L'indicatore frattale mostra che ci sono più di tre minimi e massimi in questo intervallo. Quindi, come dovrebbe fare il codice che state cercando a capire quale di questi estremi avete bisogno?

 
LOA:

Buon pomeriggio!

Potete dirmi come trovare 3 massimi (o minimi) su un grafico per un dato periodo, ricordarli e usarli per ulteriori calcoli?

O dammi un link al codice.

Ho cercato il codice sul forum, ma non ha funzionato attraverso la ricerca.

Grazie.

https://docs.mql4.com/ru/series/iHighest

https://docs.mql4.com/ru/series/iLowest
 

Vladimir e Vadim, grazie mille per la vostra risposta!

Un massimo che trovo...

1.

mas_UP[]//array di estremi superiori.

int index = iHighest(NULL,0,2,MODE_HIGH,20,i);
      double MAX = mas_UP[index];//первый максимум

2. o come questo (con frattali)

int size_up=ArrayRange(mas_UP,0);
      for (s=i;s<=size_up;s++);
      int index=ArrayMaximum(mas_UP);
      double MAX = UP[s];

Ma come procedere? Lo trovo difficile (sto ancora imparando)

Posso pensare a un modo per azzerare l'elemento che è stato trovato come massimo e poi scorrere di nuovo lo stesso array - troveremo il secondo massimo e poi il terzo .....

if (MAX>0)
      int n=n+1; //счётчик экстремумов
      mas_UP[index]=0;

Ma non sono sicuro che sia questo il caso.

 
LOA:

Vladimir e Vadim, grazie mille per la vostra risposta!

Un massimo che trovo...

1.

2. o così (con frattali)

Ma come procedere? Sono in perdita (sto ancora imparando).

Posso pensare a un modo per azzerare un elemento che è stato trovato come massimo, e poi scorrere di nuovo lo stesso array - trovare il secondo massimo, poi il terzo.....

Ma non sono sicuro che sia questo il caso.


Quindi vuoi gli ultimi tre massimi su un dato intervallo o qualche altro massimo?
 
drknn:

Quindi vuoi gli ultimi tre massimi in un dato intervallo o qualsiasi altro massimo?


Tre massimi nel periodo, non l'ultimo. O meglio, non necessariamente il più recente.

 
LOA:


Tre massimi in un periodo, non l'ultimo. O meglio, non necessariamente gli ultimi.


Oh. Bene, ti darò la sfida completa.

C'è un determinato intervallo di tempo. Sono necessari tre massimi di campione da questo intervallo.

Per risolvere questo problema avrete bisogno delle seguenti cose:

- Un algoritmo per riconoscere i confini di un dato intervallo

- Un algoritmo per trovare i massimi

- Un algoritmo per riconoscere i massimi desiderati dai massimi trovati.

P.S.

Poiché non si sa in anticipo quali massime saranno necessarie e come esattamente le massime saranno identificate, non si troverà il codice già pronto. Questo significa che risolvendo i problemi di cui sopra in sequenza si ottiene esattamente il codice di cui si ha bisogno.

 
drknn:


Oh, cavolo. Bene, vi darò l'intero problema.

C'è un determinato intervallo di tempo. Hai bisogno di tre massimi di campione da questo intervallo.

Per risolvere questo problema avrete bisogno delle seguenti cose:

- Un algoritmo per riconoscere i confini di un dato intervallo

- Un algoritmo per trovare i massimi

- Un algoritmo per riconoscere i massimi propri dai massimi trovati.


Un problema formulato correttamente è quasi una soluzione. Grazie.

Con il primo posso gestire, il secondo - anche. Ma l'ultimo punto - onestamente non lo so, ma penserò.

int n=0;//счётчик максимумов
      if (MAX>0)
      int n=n+1;
      mas_UP[index]=0;

Questa opzione è l'idea giusta, o dovrei scavare in una direzione diversa, cioè

per azzerare l'elemento dell'array, che è stato trovato come massimo, e poi scorrere di nuovo lo stesso array - troveremo il secondo massimo, poi il terzo.....

 
LOA:


Un problema formulato correttamente è quasi una soluzione. Grazie.

Posso affrontare la prima, anche la seconda. L'ultimo punto - onestamente non lo so, ma ci penserò.

È questa l'idea giusta, o devo scavare in una direzione diversa, cioè

azzerare l'elemento dell'array, che è stato trovato come massimo, e poi scorrere nuovamente lo stesso array - troveremo il secondo massimo, poi il terzo.....


Non essere minimamente interessato al codice in questo momento - fai un algoritmo - come dovrebbe essere esattamente il programma? Altrimenti si ristagna. Qualsiasi programma è un idiota - ha bisogno di istruzioni precise. Per fare questo, abbiamo bisogno di sapere esattamente cosa si suppone che il programma faccia. E solo allora possiamo scegliere come metterlo nel codice del programma.
 
drknn:

Ora potrebbe non interessarvi affatto il codice - fate un algoritmo - esattamente come il programma dovrebbe essere fatto. Altrimenti rimarrete fermi sul posto. Qualsiasi programma è un idiota - ha bisogno di istruzioni precise. Per fare questo, abbiamo bisogno di sapere esattamente cosa si suppone che il programma faccia. E solo allora possiamo scegliere come metterlo nel codice del programma.

Ok. Avremo l'algoritmo domani, perché sono già le due e mezza del mattino a San Pietroburgo e siamo senza energia.