Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 866

 
Aleksey Vyazmikin:

OK, passando alla visualizzazione dei pensieri :)

Il bianco mostra dove stiamo facendo la richiesta, il giallo il tempo della barra che dovremmo ottenere.

È più chiaro? In caso contrario, si prega di fare domande per chiarire.

Alexey, nel post sopra hai fatto una richiesta per un compito REVEAL...

"Ho bisogno della data dell'ultima barra del timeframe corrente, che si riferisce alla barra selezionata del timeframe superiore.

È chiaro?"

Quindi è difficile capire di cosa hai veramente bisogno.

Sulla richiesta precedente - ho risposto - https://www.mql5.com/ru/forum/6343/page869#comment_7537714.

Se sull'ultimo "con visualizzazione dei pensieri", allora chiedete solo il tempo di apertura della barra del TF superiore con uno spostamento di 0.

Non è molto chiaro - qual è il problema?

Вопросы от начинающих MQL5 MT5 MetaTrader 5
Вопросы от начинающих MQL5 MT5 MetaTrader 5
  • 2018.05.23
  • www.mql5.com
Подскажите пожалуйста, такой показатель тестера в жизни реален? И хороший это или плохой результат за год с депо 3000...
 
Kirill Belousov:

Alexey, nel post sopra hai fatto una richiesta per un compito RETURN...

"Ho bisogno della data dell'ultima barra del timeframe corrente, che si riferisce alla barra selezionata del timeframe superiore.

È chiaro?"

Quindi è difficile capire di cosa hai veramente bisogno.

Sulla richiesta precedente - ho risposto - https://www.mql5.com/ru/forum/6343/page869#comment_7537714.

Se sull'ultimo "con visualizzazione dei pensieri", allora chiedete solo il tempo di apertura della barra del TF superiore con uno spostamento di 0.

Non è molto chiaro - qual è il problema?

Scusa, mi è sfuggita la tua risposta.

Kirill Belousov:

Se ho capito bene la sua richiesta, allora:

1. determinare il tempo di chiusura della barra richiesta del TF superiore.

Ecco cosa non posso fare!

Kirill Belousov:

Se per quest'ultimo "con visualizzazione dei pensieri", allora richiedete semplicemente il tempo di apertura della barra del TF superiore con un offset di 0.

Non mi è chiaro: qual è il problema?

Se lo richiedo in questo modo, ottengo 10:00 e devo ottenere il tempo 23:49!

 
Aleksey Vyazmikin:

OK, passando alla visualizzazione dei pensieri :)

Il bianco mostra dove stiamo facendo la richiesta, il giallo il tempo della barra che dovremmo ottenere.

È più chiaro? In caso contrario, si prega di fare domande per chiarire.

Domanda:

Alle 10:30 dovremmo ottenere il numero di barre del periodo H1 con il tempo 23:45 sul grafico M5

Ho capito bene?

 
Alexey Viktorov:

Domanda:

Alle 10:30 ho bisogno di ottenere il numero della barra del periodo H1 con un tempo di 23:45 sul grafico M5

Ho capito bene?

Ho bisogno di ottenere il tempo 23:45 in questo caso (in realtà non ho M5, ma M1 TF corrente, ma non importa) - è il tempo dell'ultima barra del TF corrente nella struttura dell'ultima barra del TF sopra. Lo spostamento sul grafico è di 1 barra per H1, ma ci può essere un altro spostamento, diciamo che ho bisogno di ottenere informazioni a ore 11, cioè lo spostamento sarà di 2.

 
Aleksey Vyazmikin:

Scusa, mi è sfuggita la tua risposta.

Ecco cosa non posso fare!

Se lo richiedo, ottengo 10:00 e devo ottenere un tempo di 23:49!

1. definite lo spostamento (barra) che volete per il TF alto. - Il tempo tra l'apertura e la chiusura di questa barra (per quanto ho capito) lo stai analizzando per le barre del TF inferiore al suo interno.

2. Ottenere il suo orario di apertura

3. Aggiungere la durata del TF in secondi per questo TF al tempo di apertura. - cioè è così che otterrete il tempo di chiusura della barra del TF maggiore.

4. sottrarre la durata del TF junior (se M1, allora 60 secondi) - questo è il tempo di apertura dell'ultima barra del TF junior nella struttura del TF senior. Trova lo spostamento di questa barra in base al tempo calcolato. (Puoi semplicemente sottrarre 2-3 secondi dal tempo della chiusura della barra del TF maggiore e trovare la barra del TF minore a cui questo tempo si riferisce). Se l'interrogazione NON è rigorosa, ottiene semplicemente la barra disponibile più vicina a sinistra (dal tempo richiesto), se improvvisamente l'ultima barra del TF junior è assente.

 
Kirill Belousov:

1. determinare lo spostamento (barra) necessario per il TF superiore. - Il tempo tra l'apertura e la chiusura di questa barra (come ti capisco) lo stai analizzando per le barre del TF inferiore al suo interno.

2. Ottenere il suo orario di apertura

3. Aggiungere la durata del TF in secondi per questo TF al tempo di apertura. - cioè è così che otterrete il tempo di chiusura della barra del TF maggiore.

4. sottrarre la durata del TF junior (se M1, allora 60 secondi) - questo è il tempo di apertura dell'ultima barra del TF junior nella struttura del TF senior. Trova lo spostamento di questa barra in base al tempo calcolato. (Puoi semplicemente sottrarre 2-3 secondi dal tempo della chiusura della barra del TF maggiore e trovare la barra del TF minore a cui questo tempo si riferisce). Se la richiesta non è rigorosa, allora basta ottenere la barra disponibile più vicina a sinistra (dal tempo richiesto), nel caso in cui l'ultima barra sul timeframe più giovane sia assente.

Non ci crederete, ma un'ora fa ho scritto un algoritmo simile su carta! Ma è un po' doloroso, pensavo ci fosse un modo più semplice.

Solo il punto 4 potrebbe non funzionare, il mio controllo è al contrario - se la situazione non è standard, devo ciclare il tempo fino a quando la barra non esce dalla gamma.

 
I commenti non relativi a questo argomento sono stati spostati in "Domande dai principianti di MQL4 MT4 MetaTrader 4".
 

Voglio dichiarare un array di strutture - nessun problema, finché non ho visto da qualche parte che una struttura può avere un costruttore...

Come si dichiara un array di strutture con un costruttore? (So come sbarazzarmi di questo costruttore)

funziona:

struct MyStruct
  {
   int               arr[];
   int               size;
                     MyStruct(int sz){ if(ArrayResize(arr,sz)>0) size=sz; else Print(__FUNCTION__,"Ошибка инициализации массива"); }
                    ~MyStruct(){ ArrayFree(arr); size = -1; }
  };
//+------------------------------------------------------------------+
MyStruct cluster(100);

non funziona, ma io voglio che funzioni:

struct MyStruct
  {
   int               arr[];
   int               size;
                     MyStruct(int sz){ if(ArrayResize(arr,sz)>0) size=sz; else Print(__FUNCTION__,"Ошибка инициализации массива"); }
                    ~MyStruct(){ ArrayFree(arr); size = -1; }
  };
//+------------------------------------------------------------------+
MyStruct cluster(100)[47];
 

Una cattiva soluzione. È meglio usare le classi invece delle struct. È lo stesso, ma si può lavorare con i puntatori.

class MyClass : 
  {
   public:
   int               arr[];
   int               size;
                     MyStruct(int sz){ if(ArrayResize(arr,sz)>0) size=sz; else Print(__FUNCTION__,"Ошибка инициализации массива"); }
                    ~MyStruct(){ ArrayFree(arr); size = -1; } // этого не надо
  };
//+------------------------------------------------------------------+
MyClass * cluster[47];

for(int n = 0; n < 47; n++)
        cluster[n] = new MyClass;

L'ho scritto nel mio browser, non credo di aver sbagliato. Sono scappato per un'ora.

 
Lo so, lo so che mettere le variabili in pubblico è scomodo, ma non ne ho il tempo.
Motivazione: