Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 816

 

Forum sul trading, sistemi di trading automatico e test di strategie di trading

Nuova versione di MetaTrader 5 build 1730: Progetti in MetaEditor e strumenti sintetici

Renat Fatkhullin, 2017.12.28 08:59

Nella build 1730 abbiamo trovato e risolto questo errore(ora resettando la cache al fallimento della ricerca), che ha portato al tuo errore

 
Ivan Ivanov:

Sono disponibili solo informazioni su 1 posizione (selezionata ) alla volta:

Sta affermando un fatto o un riferimento? Non ho trovato niente del genere da nessuna parte con una ricerca.

 
pivomoe:

Sta affermando un fatto o sta chiedendo un certificato? Non ho trovato niente del genere da nessuna parte attraverso una ricerca.

Per recuperare qualsiasi proprietà di posizione, la posizione richiesta deve essere preselezionata.
Potete vedere qualsiasi descrizione delle funzioni per recuperare le proprietà delle posizioni PosotionGetXXXX nell'aiuto:
La funzione restituisce la proprietà richiesta di una posizione aperta, precedentemente selezionata con la funzionePositionGetSymbol oPositionSelect.
Puoi pensarla in questo modo: al supermercato, se vuoi leggere cosa c'è scritto sull'etichetta di un barattolo di marmellata, devi prima prendere il barattolo di marmellata.
 
fxsaber:
A giudicare dal "che ha portato al tuo errore" non hanno trovato l'errore nel 1730, ma in una versione precedente. Cioè secondo gli sviluppatori nel 1730 tutto funziona perfettamente in questo senso ora.
 
Vladimir Karputov:
Per ottenere qualsiasi proprietà della posizione, è necessario selezionare prima la posizione desiderata.
Potete vedere qualsiasi descrizione delle funzioni per recuperare le proprietà delle posizioni PosotionGetXXXX nell'aiuto:
La funzione restituisce la proprietà richiesta di una posizione aperta, precedentemente selezionata con la funzionePositionGetSymbol oPositionSelect.
Puoi pensarla in questo modo: in un supermercato, se vuoi leggere cosa c'è scritto sull'etichetta di un barattolo di marmellata, devi prima prendere il barattolo di marmellata.
Capisco che dobbiamo selezionare una posizione e un ordine prima di ottenere le loro informazioni. Non vedo cosa c'entri la classe CPositionInfo. Se abbiamo una classe, possiamo creare molti oggetti di questa classe. E, di conseguenza, ognuno di questi oggetti può essere impostato per la propria posizione. Questo è pazzesco - potete creare un milione di oggetti CPositionInfo, ma tutti lavoreranno solo con la posizione che è stata selezionata per ultima usando il metodo Select().
 
pivomoe:
Capisco che dobbiamo selezionare una posizione e un ordine prima di ottenere informazioni su di essi. Non capisco cosa c'entra la classe CPositionInfo? Se abbiamo una classe, possiamo creare molti oggetti di quella classe. E, di conseguenza, ognuno di questi oggetti può essere impostato per la propria posizione. Questo è pazzesco - potete creare almeno un milione di oggetti CPositionInfo, ma tutti funzioneranno solo con la posizione che è stata selezionata per ultima usando il metodo Select().
La funzione PositionSelect() copia i dati di posizione nell'ambiente del programma e le successive chiamate aPositionGetDouble(),PositionGetInteger() ePositionGetString()restituiscono i dati precedentemente copiati
Se volete salvare un array di dati su due o più posizioni, scrivete la vostra struttura e copiate i dati di posizione in essa.
 
pivomoe:
Capisco che bisogna selezionare una posizione e un ordine prima di ottenere informazioni su di essi. Non capisco cosa c'entri la classe CPositionInfo. Se abbiamo una classe, possiamo creare molti oggetti di quella classe. E, di conseguenza, ognuno di questi oggetti può essere impostato per la propria posizione. Questo non ha senso, potete creare almeno un milione di oggetti CPositionInfo, ma tutti funzioneranno solo con la posizione che è stata selezionata per ultima usando il metodo Select().
CArrayObj vi aiuterà. E memorizzare gli oggetti ordine/posizione in questa lista. E ottenere tutti i dati necessari su di loro.
 

Continuiamo qui.

Vladimir Karputov:
La funzione PositionSelect() copia i dati di posizione nell'ambiente di programmazione e le chiamate successive aPositionGetDouble(),PositionGetInteger() ePositionGetString()restituiscono i dati precedentemente copiati

Capisco tutto questo perché è ben spiegato nella guida. Non capisco cosa abbia a che fare questo con la classe CPositionInfo?

Ha una funzione Volume() . Ci sono dei requisiti prima di chiamare questa funzione (selezionare una posizione prima di usarla). Sto soddisfacendo questi requisiti. Non vedo perché restituisce un volume assolutamente sbagliato. Bene, è così, difficile ricordare al momento dell'ultima chiamata (per questo oggetto di classe) Select() simbolo, che mi interessa, e avere al momento delle chiamate Volume() trovare la posizione che corrisponde a questo simbolo e restituire il volume corrispondente a questa posizione?



In altre parole, usare due oggetti della classe PositionInfo in questo caso è sbagliato.

Si scopre che non ha senso la classe CPositionInfo, perché normalmente si può lavorare con un solo oggetto di questa classe.

 
Ho capito bene che il metodo Volume della classe CPositionInfo restituisce il volume corrispondente al momento in cui il metodo Select() è stato chiamato per ultimo? Cioè è possibile scoprire il volume che c'era un mese fa per questo simbolo?
 
pivomoe:

Continuiamo qui.

Capisco tutto questo perché è ben spiegato nella guida. Non capisco cosa abbia a che fare questo con la classe CPositionInfo.

Ha una funzione Volume() . Ci sono dei requisiti prima di chiamare questa funzione (selezionare la posizione prima di usarla). Sto soddisfacendo questi requisiti. Non capisco perché restituisce il volume sbagliato. Bene davvero, è così, difficile da memorizzare al momento dell'ultima chiamata (per questo oggetto di classe) Select() simbolo, che mi interessa, ed è già al momento della chiamata Volume() per trovare la posizione che corrisponde a questo simbolo e restituire il volume corrispondente a questa posizione?


Si scopre che non ha senso la classe CPositionInfo, perché normalmente si può lavorare con un solo oggetto di questa classe.

La classe di trading CPositionInfo funziona perfettamente quando si capisce cosa fa.
Mi spiego: CPositionInfo non è uno scrigno che memorizza tutte le proprietà della posizione selezion ata, è una chiave (comoda, veloce, che sostituisce un mucchio di righe di codice) per accedere alle proprietà della posizione selezionata.

Motivazione: