Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 1214

 
Artyom Trishkin:

Per mantenere i dati storici aggiornati "a caldo", è necessario accedere a questi dati ogni due minuti utilizzando una qualsiasi delle funzioni CopyXXX, iXXX, ad esempio CopyTime(), iTime(), ecc.

Non so quali volumi non si ottengono nel tester. Ci sono volumi reali e di zecca. Senza il codice non può rispondere alla sostanza.

Il codice è lo stesso che ho scaricato prima (leggermente modificato). Copiare le zecche:

 MqlTick tick_array[];
      uint start = GetTickCount();
      int received = CopyTicks(_Symbol, tick_array, COPY_TICKS_TRADE, periodStartTime*1000, ticksSizeToCopy);
            if(received != -1) {
               PrintFormat("%s: received %d ticks in %d ms", _Symbol, received, GetTickCount() - start);
               if(GetLastError() != 0) 
                  PrintFormat("%s: таймер Ticks are not synchronized yet, %d ticks received for %d ms. Error=%d",
                              _Symbol, received, GetTickCount() - start, _LastError);
            }

Poi c'è una richiesta di volumi. Per esempio (semplificato):

int ticks = ArraySize(tick_array);
for (int i = 0; i < ticks; i ++) {
         if((tick_array[i].flags&TICK_FLAG_BUY) == TICK_FLAG_BUY) {
               if(tick_array[i].volume > max) max = tick_array[i].volume;
        }
}

Se lo si attacca semplicemente a un grafico, allora va bene. Se lo attacco a un tester, allora per qualche motivo non ci sono volumi...

 
Yevhenii Levchenko:

Il codice è lo stesso che ho postato prima (leggermente modificato). Copiatura di zecche:

Poi c'è una richiesta di volumi. Per esempio (semplificato):

Se lo collego solo a un grafico, allora va bene. Se è nello Strategy Tester, allora non ha volumi...

Nota sulla funzione CopyTicks(). Sulle bandiere.

Документация по MQL5: Доступ к таймсериям и индикаторам / CopyTicks
Документация по MQL5: Доступ к таймсериям и индикаторам / CopyTicks
  • www.mql5.com
[in]  Количество запрашиваемых тиков. Если параметры from и count не указаны, то в массив ticks_array[] будут записаны все доступные последние тики, но не более 2000. Первый вызов CopyTicks() инициирует синхронизацию базы тиков, хранящихся на жёстком диске по данному символу. Если тиков в локальной базе не хватает, то недостающие тики...
 

Colleghi, per favore consigliate perché non posso mettere 2 o 3 indicatori ATR con diversi timeframes su un grafico allo stesso tempo?

Anche cambiando l'Offset per evitare sovrapposizioni visive, solo un indicatore funziona e viene mostrato sul grafico?

input int InpOffsetX = 10; // Offset X
input int InpOffsetY = 80;// Offset Y

Più precisamente, se cambio TF, il secondo appare, ma il primo scompare; tutti e tre si mostrano alternativamente su diversi TF, ma non tutti insieme. L'ordine non può essere rintracciato.

 
Artyom Trishkin:

Leggete la nota su CopyTicks(). Sulle bandiere.

Non riesco a capire cosa vuoi dire. Mi sembra di usare le bandiere giuste... E funziona nella vita reale... ma il tester non vuole che sia così.
 
Artyom Trishkin:

Dove ho detto che non sono bravo in logica?

Le tue parole del post precedente: "Per fare algoritmi, mi sembra, hai bisogno di logica. E questo è lontano dalla matematica. E qui non sono amico - solo il materiale di riferimento necessario e l'aiuto di coloro che sono amici".
 
Artyom Trishkin:
Fare algoritmi, penso, richiede logica. E questo è lontano dalla matematica. E qui non sono amichevole con esso - solo il materiale di riferimento giusto e l'aiuto di coloro che sono.

Il lavoro del programmatore non è quello di risolvere compiti complessi, ma di farli fare al computer per lui. Ma questo può richiedere la risoluzione di altri compiti complessi, che il programmatore esegue obbedientemente. :)

 
ANDREY:
Le tue parole di un post precedente: "Per fare algoritmi, mi sembra, c'è bisogno di logica. E questo è lontano dalla matematica. E io non sono amico di esso - solo il materiale di riferimento giusto e l'aiuto di coloro che lo sono".

No, non lo è. È così:

"Per fare algoritmi, mi sembra, c'è bisogno di logica. E questo è lontano dalla matematica. E io non sono amico di esso - solo il materiale di riferimento giusto e l'aiuto di coloro che lo sono".

In termini di significato le due frasi sono una accanto all'altra. Ma tu hai trovato il tuo significato...

 
Mihail Matkovskij:

Il lavoro del programmatore non è quello di risolvere compiti complessi, ma di farli fare al computer per lui. Ma questo può richiedere la risoluzione di altri compiti complessi, che il programmatore esegue obbedientemente. :)

Il task setter delle regole del corso. Ma deve essere un programmatore per rimanere sul corso))))

 
Valeriy Yastremskiy:

Le regole del problem solving, ovviamente. Ma deve essere un programmatore per rimanere sul corso))))

Questo è il punto, il task manager è anche l'esecutore. Anche se non sempre.

 

Si prega di avvisare. Ho un EA che prende i dati (tempo) da un indicatore e conta la differenza in millisecondi tra i tick.

Lo emetto via Alert e ottengo quanto segue (vedi immagine). Per come la vedo io, prima ottengo il numero totale di millisecondi e poi la differenza in millisecondi tra gli ultimi 4 tick (tra 1 e 2, 2 e 3, 3 e 4).

Perché è così? Ho bisogno solo dei valori per il 4° tick.

tempo

File:
ind_time.mq4  1 kb
exp_time.mq4  2 kb
Motivazione: