Mt4 Fine del supporto. - pagina 24

 
Реter Konow:

Ho già risposto che i bar si aprono indipendentemente dall'arrivo di un preventivo. Se non c'è una quotazione, il prezzo della nuova barra sarà il prezzo di chiusura della barra precedente. Il fatto di una nuova barra sarà fissato indipendentemente dall'arrivo delle quotazioni, dai contatori stessi, che funzionano su un timer.

Il timeframe specifico non ha importanza, perché è solo un contatore che raggiunge il suo valore e imposta l'evento della nuova barra di questo timeframe. Questo è semplicemente un metodo per sincronizzarsi con l'apparizione di nuove barre di diversi timeframes. SINCRONIZZAZIONE.

Anche lo strumento non ha importanza. Se le quotazioni provengono da un server, significa che hanno lo stesso tempo di apparizione delle nuove barre. Pertanto, non importa quale strumento, purché questi strumenti provengano da un punto del mondo.


Finirò quello che ho detto e farò altre cose. Un po' di cose buone).

vi sbagliate.

Con rispetto.

P.S. la formazione di una nuova barra inizia con l'arrivo di un nuovo tick, che è il prezzo di apertura di una nuova barra. nel tuo algoritmo c'è un calcolo del timer che non ha nulla a che fare con l'arrivo di un nuovo tick, da qui il disaccordo. infatti il tuo algoritmo non dà il fatto di aprire una nuova barra, ma l'inizio del tempo dopo il quale ci si può aspettare l'arrivo della prima quotazione in una barra.
 
Artyom Trishkin:

Siete voi, nel vostro algoritmo, che pensate che il bar sia aperto. Infatti - fisicamente - non è ancora presente nel terminale. Questa è una totale incoerenza con la realtà del server.

Anche il periodo di tempo specifico è importante.

Tutti coloro che si sono avvicinati ai robot di trading multivaluta lo sanno.

È un peccato che non vogliate arrivare alla conclusione a cui vi stiamo portando - visivamente e con un esempio tangibile.

Per l'evento di una nuova barra non importa quale simbolo sia. Nuove barre di diversi simboli appaiono sincronicamente (per ogni timeframe).

C'è un contatore per ogni periodo di tempo. Quando il contatore raggiunge il valore del suo timeframe, viene azzerato e viene impostato un nuovo evento barra per questo timeframe.

Inoltre, chiamando la funzione viene restituito un nuovo evento barra una volta durante la barra corrente.

Grazie a tutti e arrivederci.

 
Реter Konow:

Non c'è differenza tra il simbolo usato per il nuovo evento della barra. Nuove barre di diversi simboli appaiono sincronicamente (per ogni timeframe).

Il timer ha un contatore per ogni intervallo di tempo. Quando il contatore raggiunge il valore del suo timeframe, viene resettato e viene impostato un nuovo evento barra per questo timeframe.

Inoltre, l'accesso alla funzione restituirà l'evento di una nuova barra una volta durante la barra corrente.

Questa è la fine della spiegazione.

Grazie a tutti e arrivederci.

Non sei tu quello che sta facendo lo spelling - la tua logica è chiara. Ma, purtroppo, è sbagliato. Dovete ottenere i dati dall'ambiente di trading - eventualmente dal server.

E se non c'è una nuova quotazione sul server, allora non c'è una nuova barra che si apre nel terminale.

Il tuo algoritmo, lavorando nel timer, "timbrerà" nuove barre quando il mercato è chiuso. Ma non ce ne sono sul server e quindi nel terminale client.

E credetemi, la differenza nell'arrivo delle quotazioni per diversi simboli causerà anche una differenza nell'apertura di una nuova barra - l'inizio della formazione di una nuova barra sarà attivato solo quando arriva il tick (quotazione) corrispondente al tempo di questa barra. Se il tick viene ricevuto 4 minuti e 15 secondi dopo la chiusura dell'ultima barra su M1, allora si perderanno tre barre perché non c'è una quotazione su cui eseguirle.

Vi ho dato un indizio.

 
Andrey Kisselyov:
vi sbagliate.

Sinceramente.

P.S. La formazione di una nuova barra inizia con l'arrivo di un nuovo tick, che è il prezzo di apertura di una nuova barra. Nel tuo algoritmo, c'è un calcolo basato sul timer che non ha nulla a che vedere con l'arrivo di un nuovo tick, da qui il disaccordo.

Sì, con un timer. Appare una nuova barra senza citazione. Siamo interessati esattamente all'evento di comparsa di una barra e possiamo fissare la quotazione in Optisk();

La barra apparirà in ogni caso. Se è un fine settimana e non ci sono bar, va bene. La funzione non cambierà e sarà sincronizzata con l'arrivo delle barre all'inizio della sessione.

 
Artyom Trishkin:

Non sei tu che lo mastichi - la tua logica è comprensibile. Ma, purtroppo, è difettoso. Dovete ottenere i dati dall'ambiente di trading - eventualmente dal server.

E se non c'è una nuova quotazione sul server, allora non c'è una nuova barra che si apre nel terminale.

Il tuo algoritmo, lavorando nel timer, "timbrerà" nuove barre quando il mercato è chiuso. Ma non ce ne sono sul server e quindi nel terminale client.

E credetemi, la differenza nell'arrivo delle quotazioni per diversi simboli causerà anche una differenza nell'apertura di una nuova barra - l'inizio della formazione di una nuova barra sarà attivato solo quando arriva il tick (quotazione) corrispondente al tempo di questa barra. Se il tick arriva 4 minuti e 15 secondi dopo l'ultima barra di M1, allora si perderanno tre barre perché non c'è una quotazione su cui costruirle.

Vi ho dato un indizio.

Le quotazioni possono essere ottenute da OnTick(). È possibile associare l'evento di apertura di un nuovo bar con la conferma dell'arrivo del preventivo. Io non lo farei. Ma dipende da tutti.
 
Реter Konow:

Sì, con un timer. Appare una nuova barra senza citazione. Ci interessa esattamente il caso in cui si verifichi una barra mentre possiamo fissare la quotazione in Optisk();

La barra apparirà comunque. Se è un fine settimana e non ci sono bar, va bene. La funzione non crollerà e sarà sincronizzata con l'arrivo delle barre nel momento in cui inizia la sessione.

Supponiamo che tu voglia prendere le letture dell'indicatore a 1 e 2 barre in funzione dell'evento di inizio di una nuova barra. Guardando la logica del tuo algoritmo, otterrai i valori di 1 e 2 barre prima che arrivi la nuova quotazione e la barra appaia sul grafico. Di conseguenza, quando proverai a leggere l'indicatore otterrai non i valori di 1 e 2 barre come dovrebbe essere al momento dell'arrivo della nuova quotazione, ma i valori di 1 e 2 barre che si sposteranno di 1 barra per essere 2 e 3 barre.


Sinceramente.

 

Artyom Trishkin:

E, credetemi, la differenza nell'arrivo delle quotazioni per diversi simboli fa anche la differenza nell'apertura di una nuova barra - l'inizio della costruzione di una nuova barra si attiva solo con l'arrivo di un tick (quota), corrispondente al tempo di questa barra. Se il tick viene ricevuto 4 minuti e 15 secondi dopo l'ultima barra di M1, allora si perderanno tre barre, perché non c'è una quotazione su cui costruirle.


Ora, riguardo a questa domanda, - penso che lei si sbagli. Si prega di controllare con servicedesk. Lasciamo che rispondano alla domanda: se si formano nuove barre nella piattaforma, indipendentemente dall'arrivo delle quotazioni, oppure no. Se no, allora in caso di una nuova barra controlla se c'era una citazione su di essa. Se lo era, il nuovo bar è stato formato. Possiamo farlo in questo modo. Non c'è bisogno di cambiare molto.

 
Andrey Kisselyov:
Supponiamo che tu voglia prendere le letture dell'indicatore a 1 e 2 barre in base all'evento dell'inizio di una nuova barra. Guardando la logica del tuo algoritmo, avrai un inizio di nuova barra prima che la quotazione arrivi e la barra appaia sul grafico. Di conseguenza, quando proverai a leggere l'indicatore otterrai non i valori di 1 e 2 barre come dovrebbe essere quando la quotazione arriva, ma i valori di 1 e 2 barre che saranno spostati di 1 barra quando la nuova quotazione arriva e saranno 2 e 3 barre.


Saluti.

È possibile. Aggiungete dei controlli per la nuova citazione ad ogni nuovo evento del bar e questo è tutto. Non lavorare con l'evento di una nuova barra, ma con l'evento di una barra e una citazione, per esempio.
 
Реter Konow:
Possibile. Aggiungete un controllo dell'arrivo della citazione su ogni nuovo evento del bar e questo è tutto. Lavora non con l'evento di una nuova barra, ma con l'evento di una barra e una citazione, per esempio.
Non ho bisogno di questo algoritmo, è una tua invenzione, lo sto solo rivedendo per trovare errori e possibili miglioramenti, esercizi per il cervello, per così dire.

Con rispetto.
 
Реter Konow:
Prendi le tue quotazioni da OnTick(). È possibile associare l'evento dell'apertura di una nuova barra alla conferma della ricezione di un preventivo. Io non lo farei. Ma questa è una questione personale.

So come ottenere preventivi :)

In un programma multi-valuta - in un timer in un ciclo sui simboli giusti. E l'apertura di una nuova barra (fisica, non virtuale - errata - come nel tuo caso) è controllata dal tempo dell'ultima quotazione e confrontare questo tempo con il tempo del simbolo della barra zero.

Tu, d'altra parte, stai facendo a caso - un bar virtuale che potrebbe non esistere. Nel fine settimana non esistono, ma si suppone che tu li abbia - questa è la cosa più semplice da dare come esempio.

E, vedi, tu sei l'unico che non lo farebbe in questo modo. Il resto di noi lo fa nel modo giusto e affidabile. Ma questo, ovviamente, è solo affar suo.

Volevo dirvi come farlo correttamente e mostrare la grande differenza tra la semplicità della scrittura in OOP, e i complessi intrecci dello stile procedurale quando si risolve lo stesso problema.

Ma probabilmente ne sai di più e non ne hai bisogno. Non oso far finta di sapere altro davanti a te. Mi dispiace.