int Terminal(string symbol) { /*------------------------------------------------------------------------------------------------------------------------------*/ //========Μηδενίζουμε το νέο array μέσω του Orderselect θα ξαναγραφτούνε όλες οι live(OrdersTotal) εντολές======================// // if (Mas_Ord_New[0][0][0]!=0) { ArrayInitialize(Mas_Ord_New,0);// //========Μηδενίζουμε τον αριθμό των νέων εντολών θα ξαναγραφτεί μέσω του for loop και των δύο==================================// //========εντολών 1)Mas_Ord_New[0][0][0]++ και 2)Kol=Mas_Ord_New[0][0][0]======================================================// int Kol=0; } // if (Mas_Ord_New[0][0][0]!=0) //=======Μηδενίζουμε το παλιό array μέσω του orderselect θα ξαναγραφτούνε όλες οι παλιές(OrdersHistoryTotal)εντολές=============// {ArrayInitialize(Mas_Ord_Old, 0); //========Μηδενίζουμε τον αριθμό των παλιών εντολών θα ξαναγραφτεί μέσω του for loop και των δύο================================// //========εντολών 1)Mas_Ord_Old[0][0][0]++; και 2)Old_Kol=Mas_Ord_Old[0][0][0]==================================================// int Old_Kol=0;} /*------------------------------------------------------------------------------------------------------------------------------*/ /*------------------------------------------------------------------------------------------------------------------------------*/ //==============Δημιουργία for loop για να επιλέξουμε όλες τις live εντολές οι οποίες επιλέγονται από τις OrdersTotal===========// for (int i=OrdersTotal()-1;i>=0;i--) { if(OrderSelect(i, SELECT_BY_POS)==true) //=======Ενώ παράλληλα ορίζουμε τη μεταβλητή SymbolIndex η οποία αποθηκεύει στο array===========================================// //=======τις εντολές για το κάθε σύμβολα ξεχωριστά.============================================================================// //=======Η μεταβλητή Symbols είναι extern και έχει δηλωθεί στο include <GetSymbolString.mq4>====================================// //=======αν δηλαδή έχουμε δηλώσει extern Symbols=3 δηλαδή τα 3 πρώτα σύμβολα 1 - EURUSD, 2 - GBPUSD, 3 - USDCHF==============// //=======ο δείκτης SymbolIndex θα πάει μέχρι το 3 δηλαδεί η μία διάσταση του array θα είναι 3===================================// for (int SymbolIndex=1; SymbolIndex<=Symbols; SymbolIndex++) // For all symbols in the terminal { if( symbol==GetSymbolString(SymbolIndex,symbol,2)) break; } //If there is the next and our currency pair { //=======Αύξηση του αριθμού των εντολών κατά μία στο for loop όσες εντολές έχουμε πόσες φορές θα τρέξει το for loop=============// Mas_Ord_New[0][0][0]++ ; //=======Αύξηση του αριθμού των εντολών για το κάθε Symbol χωριστά==============================================================// Mas_Ord_New[SymbolIndex][0][0]++; //=======Ορίζουμε τη μεταβλητή Mas_Ord_New[SymbolIndex][0][0] σαν Kol για να μπορεί να χρησιμοποιηθεί στο array.================// //=======Έτσι αποθηκεύονται και τα 14 χαρακτηριστικά των εντολών ανά Symbol ανάλογα τον SymbolIndex=============================// //=======και ανά αριθμού εντολής ανάλογα το Kol=Mas_Ord_New[SymbolIndex][0][0];================================================// Kol=Mas_Ord_New[SymbolIndex][0][0]; Mas_Ord_New[SymbolIndex][Kol][1] = NormalizeDouble(OrderOpenPrice (),Digits); // Order open rate Mas_Ord_New[SymbolIndex][Kol][2] = NormalizeDouble(OrderStopLoss (),Digits); // SL rate Mas_Ord_New[SymbolIndex][Kol][3] = NormalizeDouble(OrderTakeProfit(),Digits); // ?? rate Mas_Ord_New[SymbolIndex][Kol][4] = OrderTicket () ; // Order number Mas_Ord_New[SymbolIndex][Kol][5] = OrderLots () ; // Count of lots Mas_Ord_New[SymbolIndex][Kol][6] = OrderType () ; // Order type Mas_Ord_New[SymbolIndex][Kol][7] = OrderMagicNumber () ; // Magic number Mas_Ord_New[SymbolIndex][Kol][8] = NormalizeDouble(OrderOpenTime (),Digits); Mas_Ord_New[SymbolIndex][Kol][9] = NormalizeDouble(OrderProfit (),Digits); Mas_Ord_New[SymbolIndex][Kol][10]= NormalizeDouble(OrderClosePrice(),Digits); Mas_Ord_New[SymbolIndex][Kol][11]= NormalizeDouble(OrderCloseTime (),Digits); Mas_Ord_New[SymbolIndex][Kol][13]= NormalizeDouble(OrderCommission(),Digits); Mas_Ord_New[SymbolIndex][Kol][14]= NormalizeDouble(OrderSwap (),Digits); } } /*------------------------------------------------------------------------------------------------------------------------------*/ /*------------------------------------------------------------------------------------------------------------------------------*/ //=======Η ίδια διαδικασία επαναλαμβάνεται και για τις παλιές εντολές μέσω του for loop και του OrdersHistoryTotal==============// for ( i=OrdersHistoryTotal()-1; i>=0; i--) { if(OrderSelect(i, SELECT_BY_POS,MODE_HISTORY)==true) for (SymbolIndex=1; SymbolIndex<Symbols; SymbolIndex++) { if( symbol==GetSymbolString(SymbolIndex,symbol,2)) break; } //If there is the next and our currency pair { Mas_Ord_Old[0][0][0]++ ; Mas_Ord_Old[SymbolIndex][0][0]++; Old_Kol=Mas_Ord_Old[SymbolIndex][0][0]; // Count the total amount of orders Mas_Ord_Old[SymbolIndex][Old_Kol][1] = NormalizeDouble(OrderOpenPrice (),Digits); // Order open rate Mas_Ord_Old[SymbolIndex][Old_Kol][2] = NormalizeDouble(OrderStopLoss (),Digits); // SL rate Mas_Ord_Old[SymbolIndex][Old_Kol][3] = NormalizeDouble(OrderTakeProfit(),Digits); // ?? rate Mas_Ord_Old[SymbolIndex][Old_Kol][4] = OrderTicket () ; // Order number Mas_Ord_Old[SymbolIndex][Old_Kol][5] = OrderLots () ; // Count of lots Mas_Ord_Old[SymbolIndex][Old_Kol][6] = OrderType () ; // Order type Mas_Ord_Old[SymbolIndex][Old_Kol][7] = OrderMagicNumber () ; // Magic number Mas_Ord_Old[SymbolIndex][Old_Kol][8] = NormalizeDouble(OrderOpenTime (),Digits); Mas_Ord_Old[SymbolIndex][Old_Kol][9] = NormalizeDouble(OrderProfit (),Digits); Mas_Ord_Old[SymbolIndex][Old_Kol][10]= NormalizeDouble(OrderClosePrice(),Digits); Mas_Ord_Old[SymbolIndex][Old_Kol][11]= NormalizeDouble(OrderCloseTime (),Digits); Mas_Ord_Old[SymbolIndex][Old_Kol][13]= NormalizeDouble(OrderCommission(),Digits); Mas_Ord_Old[SymbolIndex][Old_Kol][14]= NormalizeDouble(OrderSwap (),Digits); } } /*------------------------------------------------------------------------------------------------------------------------------*/ Kol=Mas_Ord_New[0][0][0]; // Save to the zero cell Old_Kol=Mas_Ord_Old[0][0][0]; // Save to the zero cell return(0); }
And I have created another function in order to export the orders characteristics in a txt file
void Trade_List (string report_name, string symbol) { for (int SymbolIndex=1; SymbolIndex<=Symbols; SymbolIndex++) // For all symbols in the terminal { if( symbol==GetSymbolString(SymbolIndex,symbol,2)) break; } //If there is the next and our currency pair { for (int i=Mas_Ord_Old[SymbolIndex][0][0]-1;i>=0;i--) { int Old_Kol=Mas_Ord_Old[SymbolIndex][0][0]; // Count the total amount of orders int handle=FileOpen(report_name,FILE_CSV|FILE_WRITE,';'); Print("handle:",handle); Print("File REPORT not found, the last error 1 is ", GetLastError()); if(handle<1) return; FileWrite(handle,"Buy/Sell","Market","Entry Date","Size","Entry Price","Exit Date","Size","Exit Price","Trade P/L","Running P/L"); FileWrite(handle,Mas_Ord_Old[SymbolIndex][i][6],symbol,TimeToStr(Mas_Ord_Old[SymbolIndex][i][8],TIME_SECONDS),Mas_Ord_Old[SymbolIndex][i][5], Mas_Ord_Old[SymbolIndex][i][1],TimeToStr(Mas_Ord_Old[SymbolIndex][i][11],TIME_SECONDS),Mas_Ord_Old[SymbolIndex][i][5],Mas_Ord_Old[SymbolIndex][i][10]); Print("File REPORT not found, the last error 2 is ", GetLastError()); } } }
![MQL5 - Language of trade strategies built-in the MetaTrader 5 client terminal](https://c.mql5.com/i/registerlandings/logo-2.png)
You are missing trading opportunities:
- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
Registration
Log in
You agree to website policy and terms of use
If you do not have an account, please register
Hi, I tried to make a trade list for my EA I use the two following functions
1)GetSymbolString in order to have an multicurrency EA
2)Terminal in order to save the orders characteristics