FORTI Si prega di aiutare - pagina 10

 
Mikalas:

Sei anche il nostro "lettore"... Domanda:

Perché costruire serie temporali se i dati sono pronti ( CopyTime(symbol,period,first_date+PeriodSeconds(period),1,times) )?

Non sono pronti. Probabilmente sono su disco. È anche possibile che siano sincronizzati con la storia del server (se il grafico è aperto o un altro programma li ha richiesti di recente).

Ma questo non significa che la funzione ci creda e basta. È necessario interrogare i dati dal disco, costruire una cache in memoria, e solo allora si può dire che la storia è lì e inizia da questa data.

Ma né questa mia risposta, né le risposte ripetute degli sviluppatori, né il codice funzionante, né la documentazione vi aiuteranno. La funzione non funziona come pensavi, c'è un errore qui.

 
antt:

Leggete la documentazione con più attenzione, non in modo selettivo. La presenza di dati storici su disco non significa necessariamente per il terminale "Sicuramente lì". In questo caso (quando si accede dall'indicatore), le funzioni lavorano solo con la cache delle serie temporali in memoria. Significa che viene eseguito un accesso sincrono alla memoria e se non c'è una serie temporale preparata, la data SERIES_FIRSTDATE (del primo elemento dell'array) non verrà restituita. Ma naturalmente, la richiesta avvia la preparazione-caricamento delle serie temporali nella memoria.

La richiesta SERIES_TERMINAL_FIRSTDATE è collegata all'inizializzazione del database e alla sincronizzazione con il server, quindi la prima chiamata non funzionerà immediatamente.

In linea di principio, la capacità di ottenere la cronologia richiesta viene controllata utilizzando SERIES_SERVER_FIRSTDATE. Naturalmente, si può contare su X iterazioni di richiesta della storia, ma se il terminale conferma la presenza della storia in SERIES_SERVER_FIRSTDATE, allora la disponibilità dei dati delle serie temporali è solo una questione di tempo (sincronizzazione della base m1 con il server e generazione della serie temporale).

L'ho capito, ma dimmi, perché non si potrebbe fare nel modo che ho descritto sopra?

Non avrebbe influenzato in alcun modo la velocità di elaborazione delle informazioni:

Se c'era qualche informazione su uno strumento - registrate la data della prima occorrenza di essa e memorizzatela - 8 byte!

Puoi anche non memorizzarlo, ma quando fai SymbolSelect(), lo metti in memoria.

Quando lo indirizziamo con la funzione SeriesInfoInteger (SERIES_TERMINAL_FIRSTDATE), otteniamo:

A -1 - nessun dato

Б. 0 - nessun dato disponibile ma non pronto

В. Data della prima informazione

Allora tutto sarebbe chiaro e trasparente.

-1 - Andare al server

0 - Aspetta la prossima iterazione per controllare e/o costruire la serie temporale

> 0 Costruire serie temporali

Dal tuo riferimento ho capito che TU l'hai quasi fatto, ma non è così.

A quanto pare un programmatore ha iniziato a scrivere e qualcun altro ha finito

La tua implementazione è buona per il FOREX, ma molto scomoda per FORTS.

Per FORTS, le quotazioni possono non arrivare per molto tempo e la serie temporale viene scaricata dalla piattaforma.

e devi ripetere tutto il processo di nuovo, e devi andare sul server!

2015.03.27 20:24:56.568  (GAZR-6.15,M1) OnCalculate: Не скопированы тийминги по символу - GAZR-9.15
2015.03.27 20:25:34.092  (VTBR-6.15,H1) OnCalculate: Не получены бары по символу - VTBR-9.15
2015.03.27 20:25:34.100  (VTBR-6.15,H1) OnCalculate: Не получены бары по символу - VTBR-9.15
2015.03.27 20:25:34.326  (VTBR-6.15,H1) OnCalculate: Не получены бары по символу - VTBR-9.15
2015.03.27 20:25:34.326  (VTBR-6.15,H1) OnCalculate: Не получены бары по символу - VTBR-9.15
2015.03.27 20:34:40.098  (SILV-6.15,H1) OnCalculate: Не получены бары по символу - SILV-9.15
2015.03.27 20:34:40.126  (SILV-6.15,H1) OnCalculate: Не получены бары по символу - SILV-9.15
2015.03.27 20:37:21.475  (RTS-9.15,H1)  OnCalculate: Не получены бары по символу - RTS-12.15
2015.03.27 20:37:21.491  (RTS-9.15,H1)  OnCalculate: Не получены бары по символу - RTS-12.15
2015.03.27 20:37:41.563  (RTS-9.15,H1)  OnCalculate: Не получены бары по символу - RTS-12.15
2015.03.27 20:40:41.051  (SILV-6.15,H1) OnCalculate: Не получены бары по символу - SILV-9.15
2015.03.27 20:40:56.579  (RTS-9.15,H1)  OnCalculate: Не получены бары по символу - RTS-12.15
2015.03.27 20:40:56.595  (RTS-9.15,H1)  OnCalculate: Не получены бары по символу - RTS-12.15
2015.03.27 20:40:58.886  (VTBR-6.15,H1) OnCalculate: Не получены бары по символу - VTBR-9.15
2015.03.27 20:40:58.896  (VTBR-6.15,H1) OnCalculate: Не получены бары по символу - VTBR-9.15
2015.03.27 20:40:59.436  (SILV-6.15,H1) OnCalculate: Не получены бары по символу - SILV-9.15
2015.03.27 20:41:00.892  (VTBR-6.15,H1) OnCalculate: Не получены бары по символу - VTBR-9.15
 
Mikalas:

La tua implementazione è buona per il FOREX, ma molto scomoda per FORTS.

Su FORTS le quotazioni possono non arrivare per molto tempo, e la serie temporale viene scaricata dai paiachi

e devi ripetere l'intero processo per ottenere i dati da capo, con il login del server!

Mikalas, ho ancora fiducia in te. Leggerete sicuramente tutto quello che è stato detto qui.

FORTI Si prega di aiutare.

L'indicatore multivaluta non è così semplice.

Per prima cosa, controlla la disponibilità degli strumenti:

bool CorrectSymbol( string symbol )
{
        ResetLastError();
        if ( SymbolInfoDouble( symbol, SYMBOL_BID ) > DBL_EPSILON ) return(true);

        // символ не выбран в "Обзоре рынка" (нет в списке доступных)
        if ( GetLastError() == 4302 )
        {
                if ( SymbolSelect( symbol, true ) && SymbolInfoInteger( symbol, SYMBOL_SELECT ) ) return(true);
        }

        return(false);
}

Poi aprite i grafici di tutti gli strumenti utilizzati (un oggetto grafico invisibile è sufficiente) in modo che la storia si carichi normalmente.

E solo allora provate a caricare la storia usando CheckLoadHistory.

Ma anche questo potrebbe non essere sufficiente.


 

E tra l'altro non mi piace nemmeno questa situazione con l'analisi multivaluta e la costruzione di indicatori. Come si realizza.

È una danza del tamburello, prima di cominciare a calcolare qualcosa bisogna fare un mucchio di controlli... Non l'ho visto in nessun'altra piattaforma. Tutto è più semplice dal punto di vista dell'utente.

Non è un segreto che molte persone, anche quelle che hanno imparato la programmazione MT4 sono spaventate dalla complessità della programmazione MT5.

Se fossi lo sviluppatore, cercherei di renderci la vita più facile. Combina tutto questo tamburello in un solo comando, come

GatData(RTS,1000)

e il terminale risolve questo compito, fa controlli, se necessario, apre grafici, scambia la storia, aggiorna, ecc.

E dopo la sua esecuzione ho dei dati reali con cui lavorare.

Z.I. Ricordo che c'era un motto: "Terminale per casalinghe"...

 
komposter:

Mikalas, ho ancora fiducia in te. Leggerete sicuramente tutto quello che è stato detto qui.


komposter!

(Qualsiasi cosa in più - senza offesa!)

Cosa avete trovato di male nel mio modello di ottenere informazioni su tamseries?

Perché non è da te!?

Sto cercando di "passare" agli sviluppatori per rendere le cose più facili per tutti noi

"vita", ma ci sono SEMPRE persone come te che sono le più intelligenti!

Quindi sarà così!

 
Prival-2:

E tra l'altro non mi piace nemmeno questa situazione con l'analisi multivaluta e la costruzione di indicatori. Come si realizza.

È una danza del tamburello, prima di cominciare a calcolare qualcosa bisogna fare un mucchio di controlli... Non l'ho visto in nessun'altra piattaforma. Tutto è più semplice dal punto di vista dell'utente.

Non è un segreto che molte persone, anche quelle che hanno imparato la programmazione MT4 sono spaventate dalla complessità della programmazione MT5.

Se fossi lo sviluppatore, cercherei di renderci la vita più facile. Combina tutto questo tamburello in un solo comando, come

GatData(RTS,1000)

e il terminale risolve questo compito, fa controlli, se necessario, apre grafici, scambia la storia, aggiorna, ecc.

E dopo la sua esecuzione ho dei dati reali con cui lavorare.

Ricorda il motto: "Terminale per casalinghe"...

Ciao!

Un approccio universale e semplice renderebbe impossibile scrivere programmi efficienti. Non si può fare una sola funzione DyData che avrà tutti i controlli - sarà una fatica, inutile per l'utente nel 95% dei casi.
Nel caso dell'indicatore - lavora il più velocemente possibile con i dati del suo grafico. È progettato per questo scopo. Se lo rendiamo "pronto per ogni situazione", un semplice MA rallenterà come un mostro complesso.

Non sto difendendo gli sviluppatori, in nessun modo. Anche a me non piacciono molte cose.
Ma sto cercando di essere costruttivo, e capisco che non conosco tutti gli interni del terminale.

Mikalas ha ragione in qualche modo - chiudetevi (non leggendo) e continuate a gridare "Uncomfortable!", e le discussioni diventano popolari e visibili agli sviluppatori. E fanno qualcosa al riguardo (hanno già risolto alcuni bug sulla sua punta).
Quindi, probabilmente sto solo brontolando per niente )

 
Mikalas:

komposter!

(Tutto il resto, senza offesa!)

Cosa avete trovato di male nel mio modello di ottenere informazioni su tamserials?

Perché non è da te!!!?

Sto cercando di "passare" agli sviluppatori per rendere le cose più facili per tutti noi

"vita", ma ci sono SEMPRE persone come te che sono le più intelligenti!

Quindi sarà così!

Ce l'ho già.

Il compito era solo quello di scrivere un indicatore. E si è scoperto che dovevamo migliorare la lingua.

Non darei nessun consiglio se fosse così).

 
komposter:

Ce l'ho già.

È solo che il compito è stato espresso: scrivere un indicatore. Ma si è scoperto che era necessario migliorare la lingua.

Non darei nessun consiglio se fosse così).

Andrey!

Hai passato molto più tempo a scrivere i tuoi post qui.

Avresti potuto scrivere un indicatore per le "mie" rivendicazioni (per FORTS) durante questo periodo.

E tu stesso hai visto quelle "stampelle" di cui parlo!

 
Mikalas:

Andrei!

Hai passato più tempo a postare qui.

Durante questo periodo avresti potuto scrivere un indicatore per il "mio" piagnisteo (per FORTS)

E hai visto tu stesso queste "stampelle" di cui parlo!

Ho scritto, per questo so di cosa sto parlando.

Avresti già ottenuto il tuo indicatore, se l'obiettivo fosse stato quello di ottenere un indicatore, non di sistemare la lingua.

 
komposter:

Ho scritto, ed è per questo che so di cosa sto parlando.

A quest'ora avresti già ottenuto il tuo indicatore, se l'obiettivo era quello di ottenere un indicatore, non di fissare la lingua.

Ho scritto un indicatore, ma è impossibile usarlo.

Non posso usarlo, non importa cosa provo, ho problemi ovunque!

Ho OrderSendAsync() - nessun meccanismo di tracciamento, anche se c'è ORDER_ID

C'è una variabile globale - quando chiudo il terminale, si resetta...

Ci sono ritardi "incomprensibili" nell'esecuzione degli ordini - metà fatto e il prossimo

un'accusa di ciarlataneria....

E così via...

Sollevo questioni perché i problemi e gli errori esistono.

(Non me li sto inventando!)

Faccio trading sul BUREAU per soldi VERI, non per divertimento!

E così è ARCHIVIO per me e per TUTTI coloro che commerciano che le funzioni di trading

ARCHIVI che le funzioni di trading sono FREQUENTI.

L'architettura di MT5 è SUPER, mi piace molto, ma tutto deve funzionare correttamente e

L'accesso ai dati deve essere facile e veloce.

И... Chiudiamola qui, per favore.

Motivazione: