Come si raccolgono e si usano le informazioni sui commercianti? Ho bisogno di raccogliere informazioni su tutte le posizioni EA, il loro volume, profitto, tipo, prezzo di apertura. E poi fare riferimento alle informazioni sulla posizione più recente, o la posizione più grande. Trovo difficile scrivere in array.
1. È proprio necessario avere a che fare con gli array?
2. è meglio usare un array di strutture o diversi array?
3. Perché ho bisogno di un array dinamico se devo comunque allocare la memoria? Non è più facile usare un array statico? O non possiamo fare a meno di uno dinamico, perché può essere indicizzato al contrario?
Codice di esempio senza oop, perché non potrei nemmeno scrivere questo costrutto, se non è troppo disturbo, grazie.
Perché costruire qualcosa? Dovete fare un loop attraverso le posizioni ed elaborare le informazioni - e non avete bisogno di assemblarle. Tutto ciò che si raccoglie nello stesso momento è un'informazione obsoleta.
1. Quando si ha a che fare con la storia del commercio, di solito si rinuncia agli array. Questo è più o meno come nell'esempio:https://www.mql5.com/ru/docs/trading/historyselect. Vale la pena esplorare tutte le funzioni nella colonna a sinistra del link (e tutti gli esempi lì).
2. Un array di strutture è molto utile. Ma le funzioni integrate che possono essere applicate agli array multidimensionali - ArraySort() ecc.
3. Se siete sicuri che la dimensione iniziale specificata dell'array sia sufficiente, potete usare anche gli array statici. Se le loro dimensioni sono ragionevoli.
Perché raccogliere qualcosa? È necessario scorrere le voci ed elaborare le informazioni - e non è necessario raccoglierle. Tutto ciò che si raccoglie nello stesso periodo è un'informazione obsoleta.
int OnInit() { ENUM_POSITIONS_TYPE ar [1000]; //проинициализирую нулем еще, просто я не копирую, а вручную всё пишу, и некоторые очевидные куски не пишу. return(INIT_SUCCEEDED); } void OnDeinit(const int reason) {} void OnTick() { for(int index=PositionsTotal()-1; index>=0; index--) { ulong ticket=PositionGetTicket(index); PositionSelectByTicket(ticket); // И вот я готов вызывать функции для выуживания данных, только я не знаю //как их вписывать в массив.
1. Quando si ha a che fare con la storia del commercio, di solito si rinuncia agli array. Questo è più o meno come nell'esempio:https://www.mql5.com/ru/docs/trading/historyselect. Vale la pena esplorare tutte le funzioni nella colonna a sinistra del link (e tutti gli esempi lì).
2. Un array di strutture è molto utile. Ma le funzioni integrate che possono essere applicate agli array multidimensionali - ArraySort() ecc.
3. Se siete sicuri che la dimensione iniziale specificata dell'array sia sufficiente, potete usare anche gli array statici. Se le loro dimensioni sono ragionevoli.
Non è con la storia, voglio analizzare le posizioni aperte. Qual è il modo migliore per farlo?
Quasi lo stesso, ma senza HistorySelect(). Iniziamo con la funzione PositionsToatal() e poi da quel link esploriamo tutte le funzioni che iniziano con Position
Scrivo una griglia senza OOP. Ho bisogno di sapere quale delle posizioni aperte è la più grande, ed è da quale tipo di operazioni, comprare o vendere. Ho capito che dovrei prima raccogliere i dati da ogni posizione nel ciclo, scriverli in un array e poi analizzare l'array o prendere l'elemento più recente se è dinamico con indicizzazione inversa.
Non è necessario schierare le posizioni e cercare gli alti e i bassi man mano che si procede.
Non c'è bisogno di passare attraverso l'array e cercare il massimo e il minimo man mano che si procede.
Grazie. Ma può farci un breve esempio? Dobbiamo scriverlo per confrontarlo, no? E scriverlo dove se non in un array? Non riesco a capire come fare senza scrivere. Stiamo lavorando con una posizione in un passaggio di loop, come possiamo confrontare un'altra posizione se è in un altro passaggio di loop?
Grazie. Può farci un breve esempio? Dobbiamo scriverlo per confrontarlo, no? E scriverlo dove ma in un array? Non riesco a capire come fare senza scrivere. Stiamo lavorando con una posizione in un passaggio di loop, come possiamo confrontare un'altra posizione se è in un altro passaggio di loop?
int Magic=123; double maxBuyPrice=0; ulong maxBuyTicket=0; double minSellPrice=DBL_MAX; ulong minSellTicket=0; for(int i=0;i<PositionsTotal();i++){ ulong ticket=PositionGetTicket(i); if(ticket!=0){ long magic=PositionGetInteger(POSITION_MAGIC); string symbol=PositionGetString(POSITION_SYMBOL); if(magic==Magic && symbol==Symbol()){ long type=PositionGetInteger(POSITION_TYPE); if(type==POSITION_TYPE_BUY){ if(PositionGetDouble(POSITION_PRICE_OPEN)>maxBuyPrice){ maxBuyPrice=PositionGetDouble(POSITION_PRICE_OPEN); maxBuyTicket=ticket; // тут можно и другие данные позиции запоминать в переменные } } else if(type==POSITION_TYPE_SELL){ if(PositionGetDouble(POSITION_PRICE_OPEN)<minSellPrice){ minSellPrice=PositionGetDouble(POSITION_PRICE_OPEN); minSellTicket=ticket; // и тут } } } } } if(maxBuyTicket!=0){ } if(minSellTicket!=0){ }
Grazie per questo esempio.
long magic=PositionGetInteger(POSITION_MAGIC); string symbol=PositionGetString(POSITION_SYMBOL); if(magic==Magic && symbol==Symbol())
Pensavo di essere l'unico che preferiva metterla così, piuttosto che scrivere "non lo so".
if(PositionGetInteger(POSITION_MAGIC)==Magic && PositionGetString(POSITION_SYMBOL)==Symbol())
hz significa "vorrei sapere"... non fraintendetemi...
ps; Aiuta a tenere traccia di tutto durante il debug del programma.
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Accetti la politica del sito e le condizioni d’uso
Come si raccolgono e si usano le informazioni sui commercianti? Ho bisogno di raccogliere informazioni su tutte le posizioni EA, il loro volume, profitto, tipo, prezzo di apertura. E poi fare riferimento alle informazioni sulla posizione più recente, o la posizione più grande. Trovo difficile scrivere in array.
1. È proprio necessario avere a che fare con gli array?
2. è meglio usare un array di strutture o diversi array?
3. Perché ho bisogno di un array dinamico se devo comunque allocare la memoria? Non è più facile usare un array statico? O non possiamo fare a meno di uno dinamico, perché può essere indicizzato al contrario?
Codice di esempio senza oop, perché non potrei nemmeno scrivere questo costrutto, se non vi dispiace, grazie.