Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 68
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
È senza dimensione così com'è, ma è bidimensionale, e si può mettere un numero senza dimensione di elementi in due dimensioni.
Cosa stai facendo comunque, hai un'idea di quale dovrebbe essere il risultato del lavoro che fai? O ti stai inventando la logica man mano che vai avanti?
Nell'esempio attuale, voglio essere in grado di piazzare un numero infinito di ordini con qualsiasi lotto per evitare di superare i limiti specificati.
Certo, conosciamo i limiti, ma vorrei fare così.
Procedo dal fatto che se si specifica un elemento tra parentesi, sarà l'ultimo
Così ho ricevuto questo tipo di schifezze. Mi aspettavo un ordine per ordine... Voglio che il risultato (lotto di un tale ordine *coefficiente) sia aggiunto all'ordine invece del lotto
e la questione del recupero dei dati da lì
Voglio ottenere il seguente risultato come lo vedo io
MyArray[0][0.01]
MyArray[1][0.01]
MyArray[2][0.02]
ecc...
void CalcOrders()
{
int CountOrders=0;
double MyArray [99][99];
for(i=OrdersTotal()-1; i>=0; i--)
{
if((OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) && (OrderSymbol()==Symbol())
&& (OrderMagicNumber()==Magic) && (OrderType()==OP_SELL))
CountOrders++;
ArrayResize(MyArray,CountOrders+1);
MyArray[CountOrders][0]=OrderLots();
Print("MyArray[CountOrders][0]",MyArray[CountOrders][0]);
}
}
2017.01.13 12:51:14.372 2017.01.05 16:30:00 martin GBPUSD,M5: MyArray[CountOrders][0]0.02
2017.01.13 12:51:14.372 2017.01.05 16:25:00 martin GBPUSD,M5: MyArray[CountOrders][0]0.01
2017.01.13 12:51:14.372 2017.01.05 16:25:00 martin GBPUSD,M5: MyArray[CountOrders][0]0.02
2017.01.13 12:51:14.371 2017.01.05 16:20:00 martin GBPUSD,M5: MyArray[CountOrders][0]0.01
2017.01.13 12:51:14.371 2017.01.05 16:20:00 martin GBPUSD,M5: MyArray[CountOrders][0]0.02
2017.01.13 12:51:14.371 2017.01.05 16:15:00 martin GBPUSD,M5: MyArray[CountOrders][0]0.01
Nell'esempio attuale, voglio essere in grado di piazzare un numero infinito di ordini con qualsiasi lotto per non superare i suoi limiti.
Naturalmente, conosciamo tutti i limiti, ma voglio farlo in questo modo
Procedo dal fatto che se si specifica un elemento tra parentesi, sarà l'ultimo
Così ho ricevuto questo tipo di schifezze. Mi aspettavo un ordine per ordine... Voglio che il risultato(lotto di un tale ordine *coefficiente) sia aggiunto all'ordine invece del lotto
E la questione del recupero dei dati da lì
void CalcOrders()
{
int CountOrders=0;
double MyArray [99][99];
for(i=OrdersTotal()-1; i>=0; i--)
{
if((OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) && (OrderSymbol()==Symbol())
&& (OrderMagicNumber()==Magic) && (OrderType()==OP_SELL))
CountOrders++;
ArrayResize(MyArray,CountOrders+1);
MyArray[CountOrders][0]=OrderLots();
Print("MyArray[CountOrders][0]",MyArray[CountOrders][0]);
}
}
2017.01.13 12:51:14.372 2017.01.05 16:30:00 martin GBPUSD,M5: MyArray[CountOrders][0]0.02
2017.01.13 12:51:14.372 2017.01.05 16:25:00 martin GBPUSD,M5: MyArray[CountOrders][0]0.01
2017.01.13 12:51:14.372 2017.01.05 16:25:00 martin GBPUSD,M5: MyArray[CountOrders][0]0.02
2017.01.13 12:51:14.371 2017.01.05 16:20:00 martin GBPUSD,M5: MyArray[CountOrders][0]0.01
2017.01.13 12:51:14.371 2017.01.05 16:20:00 martin GBPUSD,M5: MyArray[CountOrders][0]0.02
2017.01.13 12:51:14.371 2017.01.05 16:15:00 martin GBPUSD,M5: MyArray[CountOrders][0]0.01
Potrebbe spiegare di cosa ha bisogno?
Memorizziamo tutto in un array, e poi?
Poi ruotiamo l'array e cerchiamo la posizione che ti serve, cosa?
Lotto che posizione, c'è una definizione, o a occhio, ho guardato la scheda Commercio, sì bisogno 6, giusto?Puoi per favore spiegare di cosa hai bisogno?
Mettiamo tutto in un array, e poi?
Ruoteremo la matrice, cercheremo la posizione che ti serve, cosa?
Guardo la scheda "Trade" e so che me ne servono 6, giusto?OnTick()
se la condizione per aprire una posizione è corretta
{posizione aperta}
se la condizione di apertura della posizione è corretta
{riempire la stessa quantità }
Se l'ultimo lotto è la posizione 2 - aggiungiamo il lotto *1.5 (la funzione trova l'ultimo restituirà il secondo) e questo sarà il terzo
se questo è il quarto ordine
ricarica {lotto zero+lotto uno}
se sarà il quinto ordine
riempire {lotto 1 posizione +lotto 3}
Attualmente c'è una definizione dell'ultima posizione nella lista
Dobbiamo scriverlo in un array e tirare fuori subito quello giusto, perché non vedo altro modo di implementazione al momento, quindi il numero di ordini e posizioni dovrebbe essere teoricamente infinito
Vi ho mostrato quello che ho fatto nella funzione, non so se è corretto o no.
Ho bisogno di estrarre i dati e sapere in anticipo quale ordine può essere aperto nel mio conto
Non pretendo che il sistema funzioni, l'implementazione è importante
Buon pomeriggio. Potete consigliarmi se ho bisogno di testare un EA e usa comandi per scrivere e leggere bit e file csv, come sappiamo gli errori si verificano in modalità test quando si usano operazioni su file.
Non si verificano errori. Scrive solo in una cartella diversa se il flag non è usato
FILE_COMMON
4096
Posizione del file nella cartella condivisa di tutti i terminali client \Terminal\Common\Files. Questo flag è usato quando si aprono i file (FileOpen()), si copiano i file (FileCopy(), FileMove()) e si verifica l'esistenza dei file (FileIsExist())
Non si verifica alcun errore. Scrive solo in una cartella diversa se il flag non è usato
FILE_COMMON
4096
Posizione del file nella cartella condivisa di tutti i terminali client \Terminal\Common\Files. Questo flag è usato quando si aprono i file (FileOpen()), si copiano i file (FileCopy(), FileMove()) e si verifica l'esistenza dei file (FileIsExist())
Bene, io uso FileOpen()
input string InpDirectoryName="";
string path=InpDirectoryName+"//"+InpFileName;
C:\Users\Rassvet\AppData\Roaming\MetaQuotes\Terminal\36A64B8C79A6163D85E6173B54096685\MQL5\Files
5004:ERR_FILE_CANNOT_OPEN = Errore di apertura del file
Bene, sto usando FileOpen()
input string InpDirectoryName="";
string path=InpDirectoryName+"//"+ InpFileName;
C:\Users\Rassvet\AppData\Roaming\MetaQuotes\Terminal\36A64B8C79A6163D85E6173B54096685\MQL5\Files
5004:ERR_FILE_CANNOT_OPEN = Errore di apertura del file
FileOpen() non è una bandiera... Labandiera è FILE_COMMON.
Se non volete scrivere in una cartella separata, non dovete specificarla come una stringa vuota nel percorso. L'inutile è evidenziato in giallo.
FileOpen() non è una bandiera... Labandiera è FILE_COMMON.
Se non volete scrivere in una cartella separata, non dovete specificarla come una stringa vuota nel percorso. L'inutile è evidenziato in giallo.
Puoi dirmi dove posso leggere sulla proprietà #property strict ?
Ciao!
Potete dirmi dove posso leggere sulla proprietà #property strict?