Vous êtes sur la page 1sur 2100
Le manuel de référence du langage METAQUOTES LANGUAGE 5 pour le terminal de client MetaTrader 5 ETUDIEZ le langage MQL5 et résoudrez toutes les taches: See Cn tet ee ier Vinee Cr Curae rely Contec) RE olde Col Set TL ba Re) eee euresr a mar cn Cue Co Pc ineneea access © Le développement des outils analytiques & la eter meres Become nti Cte Co Ce eee eta ol eel eC Let Ey des taches - le commerce, le monitoring, des Bruen COP SEU M rei einen nm Tenear MQL5 Teneur Références MOL5 1 Principes de la langue. Syntaxe 38 Commentaires 36 Identificateurs 37 Mots réservés 38 ‘Types des données -. 40 Types entiers a Types char, short, int et ong. 2 45 8 50 51 52 54 59 Constantes de caractires, Type datetime Type color Type bool Enunérations ‘Types réels (double, float), Type string Srtuctures et Classes 6 Objet du tableau dynamique 6 Conformation des types 6 ‘Type void et la constante NULL. % Indicateurs des objets, 1% Références. Modificateur Bet le mot-cé this. 7 Opérations et expressions Expressions Operations arithmetiques. at Opérations dattribution 82 Opérations des relations 8 Operations logiques Ba Opérations bit &bit 85 Les autres opérations 88 Les priorités et Fordre des opérations 92 Opérateurs 4 Opérateur composé 96 Opérateur dexpression. 97 Opérateur de retour return 98 Opérateur conditionnel if-else 99 Opérateur conditionnel? 100 Opérateur-aiguiteur switch sor Opérateur de boucle while, 103 Opérateur de boucle for 104 Opérateur de boucle do while 105 Opérateur caccomplissement break 106 Opérateur extension continue 107 Opérateur de la génération de fobjet new 108 Opérateur de la suppression de fobjet delete, 110 Fonetions ‘Appel de fonction, 113 Transmission des paremétres 115 Surcharge des fonctions 118 Description des fonctions extérieures. aa Exportation des fonctions m Fonctions de traitement des événements 1m Variables ‘© 2000-20 aQuotes Software ¢ 32 | Tenear 2 Constantes standards, énumérations et structures. MQL5 Variables locales 13 Parametres formels 105 Variables statiques. Variables globates Variables Input. Variables Extern. Initialization des variables Portée de visibité et a durée de vie des variables. Création et destruction des objets. Préprocesseur Déclaration de constante. Propriétés des programmes Inclusion de fichiers, Importation des fonctions. Programmation orientée objet. Encapsulation et extensibiité des types. Heritage, Polymorphisme surcharge. Fonction: virtuees. Constantes des graphiques . Types des événements de graphique, m7 Périodes des graphiques 180 Propriétés des graphiques. 1 Positionnement du graphique 186 Afichage des graphiques 7 Constantes des objets Types des objets Propriétés des objets. 182 -Méthodes du rattachement des objets. 196 LLangle du rattachement 200 Visibiité des objets. 202 Niveaux des ondes dEhott, 205 Objets de Gann 206 Ensemble des couleurs Web. 208 Wingdings, Constantes des indicateurs. Constantes de prix [Méthodes des glssantes. Lignes des indicateurs Styles du dessin Propriétés des indicateurs dutisateurs 22 ‘Types des indicateurs techniques 225 Identificateurs des types de données. 2 Etat d’environnement Etat du terminal de client. 229 Linformation sur le programme NQLS exécuté. 21 Information sur Toute 233 Information sur le compte 240 Constantes commerciales . Information sur les données historiques sur Fouti 243 Propriété des ordres: 244 Propriété des postions 288 Propriété des marchés 250 ‘Types des transactions commerciales 253 Ordres commerciaux dans e profondeur de marché 254 Constantes nommées -. {© 2000-2010, MetaQuotes Software Corp. ie mous Macrosubstitutions prédéterminges. 256 Constantes mathématiques, 258 Constantes des types de données numériques. 260 Ratsons de la dénitialsation 263 Contréle de tindicateur de robjet 265 Les autres constantes, 266 Structures des données Structure dela date Structure des paramétres dentrée de findicateur an Structure des données historiques. 22 Structure du profendeur de marché. 273 Structure dela requéte commerciale 274 Structure du résultat dela requéte commerciale 278 Structure pour la réception des valeurs présentes, 282 Codes des erreurs et des avertissements Codes du retour du serveur commercial 284 Avertissements de compilateur 286 Erreurs de la compilation, 288 Erreurs du temps de fexécution, 297 Constantes de Ventrée/sortie Drapeaux de fouverture des fichiers 306 Positionnement a intérieur du fichier 309 Utiisation de la page de code. 310 MessageBox 3 Programmes MQLS. Exécution des programmes Evénements du terminal de client Appel des fonctions importées -. Erreurs de Vexécution 4. Variables prédéter minées... Dieits Point cLasten “Period StopFlag “Symbot “UninitReason 5 Fonctions communes .. Alert CheckPointer Comment DebugBreak ExpertRemove GetPointer GetTickCount MessageBox PeriodSeconds PlaySound Print PrintFormat ResetLastError SetUserError SendFT? SendMait Steep Terminalclose TesterWithdrawal taQuotes Software Corp. ZZ Tenear ZeroHomery 6 Opérations avec les tableaux. ArrayBsearch ArrayCopy ArrayFree ArrayGetAsSeries Arrayinitialize .. ‘ArraylsDynamic Arraylsseries ArrayMaximum ArrayMinimum ArrayRange ArrayResize ArraySetasseries ArraySize ‘ArraySort 7 Conversion des données. CharTostring CharArrayTostring . ColorTostring DoubleTostring IntegerTostring, ShortTostring ShortArrayTostring TimeTostring -. NormalizeDouble .. StringTochar Array . StringToCotor .. StringTobouble StringTointeger StringToshortArray StringToTime .. StringFormat 8 Fonctions mathématiques. Mathabs Mathareeos Matharesin Matharctan Mathceit Mathcos MathExp MathFloor MathLog MathLogio Mathttax. Mathttin Mathttod MathPow MathRand MathRound Mathsin Mathsart Mathsrand MathTan MathlsVatidNumber 9 Fonctions de chaine, Stringadd, 00-2010, MetaQuotes Softwa so | Tenear StringBufferLen StringConcatenate .. StringFit StringFind StringGetCharacter Stringlnit StringLen StringSetCharacter Stringsubstr StringToLower StringToUpper StringTrimLeft.. StringTrimRight 10. Date et temps .. TimeCurrent TimeTradeServer TimeLocat TimeGHT TimeDaylightSavings TimecHTortset TimeTostruct . StructToTime . 11 Information sur le compte. ‘AccountinfoDouble ‘Accountinfolnteger Accountinfostring 12. Verification de Uétat. GetLastérror {stopped UninitiaizeReason Terminallnfointeger Terminallnfostring MoLSinfolnteger MoLSInfostring Symbot Period Digits Point 13, Réception de SymbolsTotat.. Symbotlame Symbotselect . Symbollssynchronized .. SymbotinfoDouble.. Symbolinfolnteger -. Symbolinfostring .. SymbolinfoTick MarketBookAdd MarketBookRetease MarketBookGet ese . 14 Accas aux timeséries et les données des indicateurs Direction de Uindexation dans les tableaux, tes buffers et les timeséries Organisation de Vaccés aux données Seriesinfolnteger Bars BarsCalculated formation de march aQuotes Softwa = mous IndicatorCreate IndicatorRelease .. CopyButfer CopyRates CopyTime CopyOpen Copytiigh copyLow CopyCtose CopyTickVolume . CopyRealVotume .. CopySpread 15. Opérations avec les eraphiques, ChartApplyTemplate ChartWindowFind Chartopen ChartFirst Chartlext Chartclose ChartRedraw .. ChartSetDoubte Chartsetinteger ChartSetstring ChartGetDouble ChartGetinteger ChartGetstring ChartNavigate Chartio Chart WindowonDropped ChartPriceOnDropped ChartTimeOnDropped ChartXOnbropped -. ChartYonDropped -. ChartSetsymbolPeriod ChartScreenshot .. 16 Fonction commerciales. Ordersend PositionsTotal. PositionGetsymbot .. Positionselect -. PositionGetDouble . PositionGetinteger .. PositionGetstring .. OrdersTotat OrderGetTicket Ordersetect OrderGetDouble OrderGetinteger OrderGetstring HistorySetect . HistoryOrdersetect HistoryOrdersTotat HistoryOrderGetTicket HistoryOrderGetDouble HistoryOrderGetinteger HistoryOrderGetstring 00-2010, MetaQuotes Softwa | Tenear HistoryDeatsetect HistoryDeatsTotal HistoryDealGetTicket .. HistoryDealGetDouble HistoryDealGetinteger HistoryDealGetstring. . 17 Variables globales du terminal de client.. GlobatVariablecheck GlobatvariableTime GlobatVariableDet GlobatVariableGet GlobatVariableName GlobatVariableset GlobatVariablesFlush GlobatVariableTemp GlobatVariableSetOnCondition .. GlobatVariablesDeleteAtt GlobatVariablesTotat 18 Operations de fichier. FileFindFirst FileFindtlext FileFindClose .. FilelsExist Fileopen FileClose Filecopy FileDelete FileMove FileFtush FilelsEnding FilelsLineEnding FileReadArray « FileReadBoo!-. FileReadDatetime . FileReadDouble FileReadFtoat.. FileReadinteger FileReadLong -. FileReadNumber FileReadstring- FileReadstruct Fileseek Filesize FileTett Filewrite FileWritearray FileWriteDouble File WriteFloat -. FileWritelnteger FileWriteLong - FileWritestring FileWritestruct Foldercreate .. FolderDelete .. Folderctean 19. Indicateurs d'util Lien entre tes propriétés de Uindicateur et les fonctions correspondantes ateur 00-2010, MetaQuotes Softwa 3 | Tenear SetindexBuffer IndicatorSetDouble IndicatorSetinteger IndicatorSetString -. PlotindexSetDouble -. PlotindexSetinteger PlotindexSetstring -. PlotindexGetinteger - 20 Objets graphiques. ObjectCreate Ovjectilame Ovjectdetete .. Objectsbeleteat .. Ovjectring ObjectGetTimeBy Vatu ObjectGetVatueByTime Ovjecttove OvjectsTotat ObjectSetDoube .. Objectsetinteger . Objectsetstring OvjectGetDouble . ObjectGetinteger ObjectGetstring 24. Indicateurs techniques. IADXWilder iAtigator iAMA ino iATR \BearsPower ‘Bands \BullsPower ier ichaikin custom DENA iDeMarker iEnvetopes ‘Force iFractats iFrAMA Gator ichimoku. iBwHFL Momentum imme ima iosta imacD iopy SAR inst inv istapev 00-2010, MetaQuates Software Corp, was Istochastie - TEMA iTeix iwer ivipya WVotumes 22 Travailavec les événements.. EventSetTimer Eventkil(Timer EventChartCustom 23. Une bibliothéque standard. Basic Class CObject -. Prev Prev Next Next 167 Compare, 768 save 70 Load ™m Type 74 Classes of data array 76 step ™ step 78 Total 779 Avalable 780 ax 78 IsSorted 782 SortMode 783 lear 784 sort 785 save 786 Load 787 ‘cArrayChar. 788 Reserve 790 Resize 71 Shutdown 792 ada 793 Adaarray 794 Adaarray 795 Insert 797 Insertarray. 798 Insertarray. 799 AssignArray. 801 Assignarray. 802 Update B04 shift 805 Delete 806 DeleteRange 807 at 808 Comparearray. 810 Comparearray. att Incertsort 812 Search 819 SearchGreat. B14 SearchLess 815 SearchGreatOrEqual 816 SearchLessOrEqual 817 ‘© 2000-20 aQuotes Software ¢ - mous SearchFirst. 818 SearchLast .. 319 save 820 Load eat Type 323 CcarrayShort 824 Reserve 826 Resize a2? Shutdown 228 ada 329 Adaarray 830 Adaarray ast Insert 833 InsertArray... a4 InsertArray.. 835 Assignarray . 837 AssignArray . 838 Update 840 shift Bat Delete 822 DeleteRange 343 at . Bad Comparearray. 846 Comparearray. ear Incertsort 823 Search 849 SearchGreat.. 850 SearchLess .. 851 SearchGreatOrEqual 852 SearchLessOrEqual 859 SearchFirst.. 854 SearchLast .. 855 save 856 Load 858 Type 860 ccarrayint... B61 Reserve 863 Resize B64 Shutdown 865 ada 866 Adaarray 867 Adaarray 868 Insert 870 InsertArray... art InsertArray.. 872 Assignarray . 874 AssignArray . 875 Update 877 shift 878 Delete 879 DeleteRange 880 at . eet Comparearray. 883 Comparearray. 884 Incertsort 885 Search 886 SearchGreat.. 887 SearchLess .. 888 {© 2000-2010, MetaQuotes Software Corp. = mous SearchGreatOrEqual 889 SearchLessOrEqual 890 SearchFirst.. aot Searchlast .. 892 save 893 Load 895 Type 397 ccarrayLong.. 898 Reserve 900 Resize sor Shutdown 902 Ada 903 Addarray 904 Adaarray 905 Insert 907 IncertArray... 908 IncertAreay.. 909 AssignArray ont AssignArray . 912 Update 914 shift 915 Delete 916 DeleteRange on at . 918 Comparearray, 920 Comparearray, oat Incertsort 922 search 923 SearchGreat.. 924 SearchLess 925 SearchGreatOrEqual 926 SearchLessOrEqual oar SearchFirst.. 928 Searchlast .. 929 save 930 Load 902 Type a4 CcarrayFloat, 995 Delta 97 Reserve 998 Resize 999 Shutdown 940 ada oat Adaarray 942 Adaarray 9a Insert 945 InsertArray... 946 InsertArray.. oar Assignarray . 949 AssignArray . 950 Update 952 shift 959 Delete 954 DeleteRange 955 at oo 956 Comparearray. 958 Comparearray. 959 Incertsort 960 {© 2000-2010, MetaQuotes Software Corp. = mous search 96t SearchGreat.. 962 SearchLess ... 963 SearchGreatOrEqual 964 SearchLessOrEqual 965 SearchFirst.. 966 Searchlast .. 967 save 968 Load 970 Type 972 CcArrayDouble 973 Detta 975 Reserve 976 Resize or Shutdown 978 ada 979 Adaarray 980 Adaarray ser Insert 983 InsertArray... 94 InsertArray.. 985 Assignarray . 987 AssignArray . 988 Update 990 shift oot Delete 992 DeleteRange 993 at . 994 Comparearray. 996 Comparearray. 997 Incertsort 998 Search 1 998 SearchGreat.. +000 SearchLess 1001 SearchGreatOrEqual 1002 SearchLessOrEqual 1003 SearchFist... 004 SearchLast 1005 save 1006 Load 1008 Type 1010 Ccarraystring, 1011 Reserve 1009 Resize sora Shutdown 1015 ada 1016 Adaarray 1017 Adaarray 1018 Insert 1020 Insertarray... s021 InsertArray... 1022 AssignArray... 024 Assignarray... 1025 Update 1077 shift 1078 Delete 1029 DeleteRange... 1000 at 1031 {© 2000-2010, MetaQuotes Software Corp. Comparearray Comparearray Incertsort search SearchGreat.. SearchLess SearchGreatOrEqual SearchLessOrEqual SearchFirst... SearchLast save Load Type ccarrayOb}... FreeMode FreeMode Reserve Resize lear Shutdown, CreateElement. Ada Adaarray Insert Insertarray... Assignarray... Update shite Detach Delete DeleteRange... at o Comparearray Incertsort Search SearchGreat.. SearchLess SearchGreatOrEqual SearchLessOrEqual SearchFist... SearchLast save Load Type cust FreeMode FreeMode Total IsSorted SortMode CreateElement. Ada Insert Detachcurrent Deletecurrent Delete Clear Indexor MQL5 1009 1004 1095 1096 1097 1008 1009 1040 soa 1042 1003 1085 1047 1088 1059 1054 1056 1057 1059 1060 1061 1063 064 1067 1069 so71 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 084 1085 1086 1087 1088 1089 1091 1092 t094 1095 1097 1098 1099 +1100 1101 1102 1104 1105 1106 1107 108 {© 2000-2010, MetaQuotes Software Corp. — GetNodestindex... GetFirstNode, GetPrevNode.. GetCurrentNode... GGetNextNode, GetLastNode.. sort o MoveTolndex.. Exchange Comparetist.. search save Load Type CTreeNode.. ‘owner Left Right Balance Balancel BalanceR Createsample. RefreshBalance GetNext SaveNode LoadNode Type ctree Root . CreateElement. Insert Detach Delete lear Find save Load . Type ee Classes for Graphic Objects . cChartobject Chartla Window Name NumPoints Attach SetPoint Delete Detach shiftobject... shiftPoint Time Price Color style wiath BackGround... Selected Selectable {© 2000-2010, MetaQuotes Software Corp. ro Teneur Description... Timeframes... CreateTine... LevelsCount... Levelcolor Levelstyle Levelwiath Levelvatue LevelDescription.. Getinteger Setlnteger. GetDouble SetDouble Getstring setstring save Load Type Objects Lines. (CChartObjectVLine. Create Type (CChartObjectHLine. Create Type CChartobjectTrend Create RayLett RayRight save Load Type (CChartObjectTrendByangle, Create Angle Type CChartObjectcycles. Create Type Objects Channels ‘CChartObjectChannel Create Type (CChartObjectRegression Create Type senses (CChartObjectsteDevChannel Create Deviations, save Load Type ChartObjectPitchfork. Create Type Gann Tod... (CChartObjectGannLine Create MQL5 180 181 1182 1183 sea 1186 1188 1190 1192 1194 1196 1198 1200 1202 1204 1206 1207 1208 1209 120 an rar 209 114 125 1216 a 1218 20 1200 raat mm 123 1a 1225 1206 ww 128 18 1200 rat 12 1299 1204 1235 1236 v7 1238 129 120 oa pe 2a rou 1285 1246 ar 28 {© 2000-2010, MetaQuotes Software Corp. Fibonacci Tools... MQL5 PipsPerBar. 28 save 1250 Load 1251 Type 1282 CChartObjectGannFan.. 1253 Create 1254 PipsPerBar. 1255 Downtrend 1256 save 1257 Load 1258 Type 1259 CChartobjectGannGni. 1260 Create 1261 PipsPerBar. 1262 Downtrend 1263 save 1264 Load 1265 Type 1266 1267 CChartobjectFibo. 1268 Create 1269 Type 1270 (CChartObjectFiboTimes an Create wn Type oe a3 CChartObjectFiboFan... sa Create 1075 Type 1276 CChartObjectFibost... an Create 1278 Scale 1279 Ellipse 1280 save 1281 Load 1282 Type os 1283 (CChartObjectFbochannel... 184 Create 1285 Type os 1286 CChartObjectFiboExpansion. 1287 Create 1288 Type 1289 Ehiott Took... onan 1290 CCChartObjectéliottWaves... rat Create 1292 Degree 1293 Lines 1294 save 1295 Load 1296 Type os 1297 CChartObjectéliottWaves... 1298 Create 1299 Type 1301 Objects shapes... 1902 ‘CChartObjectRectangle 1903 Create 1904 Type os se os os oneness 1905 (CChartObjectT rangle. ..cisseinnisnetinneeninieneieniinennnneessnnesesesses 1906 Create 1907 {© 2000-2010, MetaQuotes Software Corp. mas Type 1908 CChartobjectélipse 1909 Create 1310 Type sit Objects Arron... on (CChartObjectArrow 1319 Create ra ArrowCode 1316 Anchor 1318 save 1320 Load s2 Type ss 2 Arrows with fixed code 1003 Create 1925 ArrowCode 1307 Type 1328 Objects Contras. 1309 (CChartObjectText. 1300 Create 1001 Angle 1302 Font 1999 Fontsize ra04 Anchor 1995 save 1396 Load 1397 Type 1098 CChartObjectLabel 1399 Create 1340 x Distance. 1341 ‘Distance. 1322 X Size 0 Size 1344 comer 1385 Time 1346 Price 1347 save 138 Load 138 Type 1350 CChartobjectéait 1951 Create 1382 X Size 1959 Size 1354 BackColor 1955 Angle 1356 save 1957 Load 1958 Type 1959 CChartObjectButton.... 1360 state 1361 save 1362 Load 1363 Type 1364 (CChartObjectsubChart. 1365 Create 1367 x Distance. 1368 ‘Distance. 1369 comer 1370 X Size sont {© 2000-2010, MetaQuotes Software Corp. = Size Symbol Period Scale Datescale Pricescale Time Price save Load Type ChartObjectBitmap.... Create BmpFile save Load Type CChartObject8impLabel Create x Distance. ‘Distance. comer X Size Size BmpFiieOn. BmpFeort. state Time Price save Load Type Class for working with chart. Chartio. Mode. Foreground. shift shittsize ‘Autoscral Scale. ScaleFix. ScaleFix_11.. FixeaMax FixedMin, PoittsPerBar ScalePPa ShowOHLC, ShowLineBi ShowLinetsk ShowLastLine ShowPeriodSep.... Showsrid ShowVolumes ShowObjectDescr. ColorBackeround.. ColorForeground.. ColerGria ColorBarUp {© 2000-2010, MetaQuotes Software Corp. 20 Teneur ColorBarDown, ColorCandleBul... ColarCandleBear.. ColorChartLine... Color Volumes, ColorLineBid ColorLineask ColorLineLast. ColorstopLevels.. VisibeBars... WindowsTota. Window! Visible... wiathineixes HeightinPixes Pricemin. PriceMax, Attach . Chart. Nextchart. Open Detach.. Close Navigate, Symbo . Period .. Redraw. Getinteger. Setinteger. GetDouble SetDowe, cetstring, setstring SetSymboPeriod. ApplyTemplate Screenshot... Windowondropped PriceOnbropped... TemeOnDropped... xOnDropped. ‘YonDropped. save Load Type essen Classes for file operations cre Handle Filename Flags SetUnicode SetCommon... Open Close Delete IsExist Copy {© 2000-2010, MetaQuotes Software Corp. Tencur Move size Tet Seek Flush IsEnding IsLineEnaing... FolderCreate.. FolderDelete... FolderClean... FieFindFirst.. FieFindNext.. FieFindCse . crieBin Open Writechar: Wrteshort Wniteinteger. WriteLong. WriteFlat. WriteDouble... Woitestring... Writechararray... Writeshortarray... Writeintegerarray, WriteLongarray... WriteFloatArray... WriteDoublearray.. writeobyect . Readchar Readshort Readinteger... ReadLong, ReadFloat ReadDowe... Readstring ReadChararray ReadshortArray, Readintegerarray.. ReadLongArray ReadFloatArray ReadDoubles ReadObject... crieTxt Open an Wotestring... Readstring Class for String operations string. str Len Copy Fil Assign Append Insert Compare CompareNocase... Yo {© 2000-2010, MetaQuotes Software Corp. Left Right ma Trim TrimLett Trinkight lear ToUpper ToLower Reverse Find FindRev Remove Replace sarseatnnnse Classes for working with Indicators indicator Base Class. Handle Name status NumBurtfes... Timeframe Symbol Period CurrentNeed.. Create urtsize Getata ion inValue ‘Nexium axValue Refresh Periodstr ethodstr Pricestr Volumestr on CindicatorButfer Auxtiary Class size offset Name at ioimum ‘Nexium Refresh Refresh 0_only Trend Indicaters.. CWOX MaPeriod Create nan Plus ious Type cuDXWider... aPeriod Create nan Plus {© 2000-2010, MetaQuotes Software Corp. ve mous ious 1619 Type r614 ciBands 1615 MaPeriod 1616 ashitt 1617 Deviation 1618 Applied 1619 Create 1620 Base 1621 Upper 162 Loner 1623 Type 1624 Cinvelopes... 1625 aPeriog 1626 ashitt 1607 MaMethod. 1628 Deviation 1629 Applied 1620 Create 1631 Upper 1602 Loner 1633 Type 1604 Cilchimoku . 1695 TenkanSenPertod... 1636 KijunsenPeriod. 1637 SenkouSpanBPeriod, 1698 Create 1639 Tenkansen, 1640 Kijunsen 1641 SenkouSpana 1682 Senkouspan. 163 CChinkouspan 1644 Type 1645 cima . 1646 MaPeriod 1647 ashitt 1688 aMethod. 1689 Applied 1650 Create 1651 nai 1682 Type 1659 CAR 1654 Sarstep 1655 Naxinun 1656 Create 1657 nai 1658 Type 1659 cistaDev 1660 MaPeriod 1661 ashitt 1662 aMethod. 1663 Applied 1664 Create 1665 nan 1666 Type 1667 CEMA. 1668 MaPeriod 1669 Inashitt 1670 {© 2000-2010, MetaQuotes Software Corp. Tencur Appied Create nan Type CEMA. ‘MaPeriod Inasnitt Apptied Create nai Type FAM aPeriod Indsnitt Appied Create nan Type CAMA. MaPeriod Fast€maPeriod. Siowmaeriod. Indsnitt Appied Create nan Type civipya ‘cmoPeriod, EmaPeriod, Inashitt Apptied Create nai Type Oscilators. cATR. aPerioa Create nai Type CiBearsPower. MaPeriod Create nan Type ciBulsPower.. MaPeriod Create MQL5 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1699 1694 1695 1696 1697 1698 1699 1700 701 1702 1703 1704 1705 1706 1707 708 1709 1710 mn m2 1719 m4 m5 116 m7 18 179 1720 wma m2 ma wa m5 176 wm 8 {© 2000-2010, MetaQuotes Software Corp. MQL5 FastMaPeriod.. 1m SiowMaPeried.. 17390 MaMethod. wt Applied 32 Create 4733 nan 34 Type 1735 cibemarker... 1736 MaPerioa 37 Create 1738 nan a9 Type 170 ciForce ama MaPeriod wa aMethod. 173 Applied sa Create 1785 nan 1746 Type war imac 1788 FastEmaPeried, 179 SiowmaPeriod. 1750 SignaPeriod 751 Applied 152 Create 1759 nan 154 Signal 1755 Type 1756 ‘ciMomentum.. 1757 aPeriog 1758 Applied 1759 Create 1760 nan 761 Type 1762 ciosma . 1763 FastEmaPeried. tT64 SiowmaPeriod. 1765 SignaPeriod 1766 Applied 1767 Create 1768 nan 1769 Type 1710 cst wm aPeriod wm Applied m7 Create 174 nan 1775 Type 1776 RVI wm MaPeriod 178 Create 179 hain 1780 Signal 781 Type os se os os onneonns 1782 a E period rea Dperiod 1785 siowing 1786 {© 2000-2010, MetaQuotes Software Corp. Tencur MQL5 MaMethod. 787 PriceField 788 Create 1789 hain 1790 Signal 1791 Type 1792 cAWPR 1793 alePeriod, 1794 Create 1795 nai 1796 Type 197 citrix 1798 aPeriod 1798 Applied 1800 Create 801 nai 1802 Type 1803 Volume Indicators, 1804 cup . 1805 Applied 1806 Create 1807 nai 1808 Type 1809 cel 1810 ten re 189 rea 1815 cioav 1816 Applied 1817 Create 1818 nan 189 Type 1820 volumes... tert Applied 12 Create 1823 nan tera Type 1825 Bx Wiliams Indicators 1826 cae o 187 Create 19828 nai 18 Type 1800 Cimtigator 1801 JawPeriod. 1802 sawshit 1899 TeethPered. e048 Teethshitt. 1895 LipsPeriod. 1896 Lipsshirt 1897 aMethod. 1898 Applied 1899 Create 180 Jaw 1841 Teeth 182 Lips 180 Type 1844 {© 2000-2010, MetaQuotes Software Corp. cao . Create nan Type cractats Create Upper Loner Type cigator awPeriod. Jawshit TeetnPertod. Teethshitt. LipsPeriod. Lipsshirt aMethod. Appied Create Upper Loner Type cise Applied Create nan Type senses indicators Classes Collection... Create Refresh Trade Classes ‘cAccountinfo Login TradeMode . TradeModeDescrption.. Leverage os NarginMode ote NarginModeDescription, Tradedloned.. TradeExpert.. Balance credit Profit Equity aren FreeNargin... NarginLevel.. Nargincell NarginstopOut, Name Server currency Company Infolnteger... InfoDouble. Infostring Nargincheck FreeMargincheck . {© 2000-2010, MetaQuotes Software Corp. ve mous MaxLOtChedk J. .o:ssnsnsesnsnanninnatinnsiatinusinnaniannnsnannsesanesaserees 1904 csymbalinto.. cinenpiennnnninntineninnennanineneieniieneenanennaenenesessss 1905 RefESA cnssnntnnnsnininnvnnnininaninnisinninnrinnnisaninisnannsnnnesasssses 1908 RefreshRates.. 1910 Select sen IsSynchronized a2 Volume 190 Volumetigh... a4 VolameLow. 195 VolumeBid 1916 Volameask 1817 Time 1918 spread 1919 SpreadFioat... 1920 TickBookDepth, ser StopsLevel 2 FreezeLevel.. 190 Bia 92 Bictigh 1925 BiaLow 1926 Ask 1877 Ackttigh 1928 AskLow 19 Last 1900 LastHign 1931 LastLow 1902 TradeCaleMode o 1903 TradeCalcModeDescription... 904 TradeMode . 1995 TradeModeDescrption.. 1996 TradeExecution . 1907 TradeExecutionDescrption.. 1908 SMBPMOUE vones nse 1909 ‘SwapModeDescription... 1940 ‘wmapRoloverdays. 1941 ‘wmapRolover3daysDescription, 1942 Nargininitil. 190 ‘NarginMaintenance. saa NarginLone... 1945 Narginshort.. 1946 NargnLimit.. 1947 Nargnstop 1948 NarginstopLinit... 1949 TradeTimeFlags 1950 TradeF Flags 1951 Digits 1952 Pont 1959 TickValue 1954 TiekSize 1955 Contractsize.. 1956 Lotsa 1957 LotsMax 1958 Lotsstep 1959 LotsLimit 1960 ‘smapLong 1961 ‘smapshort 1962 CurrencyBase 1963 CurrencyProfit 1964 {© 2000-2010, MetaQuotes Software Corp. 29 Teneur CurrencyMargin.. Bank . Description... Path . Infolnteger... InfoDouble. Infostring NormalizePrice. TypeDescriptior state o StateDescription... TimeExpiration, TimeDone TypeFiting, TypeFitingDescription... TypeTime TypeTimeDescription... Nagic Positiontd Volmeinitial. VolumeCurrent, Priceopen StopLoss TakeProfit PriceCurrent. PriceStopLimit, Symbol Conment Infolnteger... InfoDouble. Infostring Storestate. Checkstate... Select CistoryOrderinto Timesetup Type . TypeDescriptior state . StateDescription... TimeExpiration, TimeDone TypeFiting. TypeFilingDescription... TypeTime TypeTimeDescription... Nagic Positiontd Volreinitial. VolumeCurrent, Priceopen StopLoss TakeProfit PriceCurrent. MQL5 1965 1966 1967 1968 1969 1970 set 72 1973 1975 1976 1977 1978 1979 1980 1981 1982 1989 1984 1985 1986 1987 1988 1989 1990 1991 1992 1999 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 {© 2000-2010, MetaQuotes Software Corp. Et Teneur PricestopLimit, Symbol Conment Infolnteger... InfoDouble. Infostring Ticket CPositioninto Time . Type . TypeDescriptior Nagic Identiti Volume Priceopen StopLoss TakeProfit PriceCurrent. Commission... ‘map Profit Symbol Infointeger... InfoDouble. Infostring Select Storestate. CheckState... Cealingo... Order Time . Type . TypeDescriptior Entry . EntryDescription.. Nagic Positiontd Volume Price Commision ‘map Profit Symbol Conment Infolnteger... InfoDouble. Infostring Ticket Trade sot SetéxpertmagicNumber SetDeviationinPoits... OrderOpen Ordermedity.. OrderDetete... PositionOpen.. PositionWodity PositionClece.. ResultRetcode, MQL5 2025 2026 2027 2028 2029 2090 2031 2032 2034 2035 2036 2097 2038 2039 2040 2041 2042 2043 2048 2045 2046 2047 2048 2049 2050 2051 2052 2053 2054 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2077 2078 2079 2081 2082 2083 2084 2085 2086 {© 2000-2010, MetaQuotes Software Corp. Teneur MQL5 ResultRetcodeDescription sss einsisnetnnesnntnieieienineinnnnannneseanuesesesses 2087 ResultDeal 2088 ResultOrder. siusinnnivnaninnisinninnnnanninsenninininnnsnnnes aes sees 2089 ResUltVoluMe snr snnsnstisnnsannintnnetnntsiatannsiseinnivennntnieensntannseseseees 2090 ResultPrice .. 2091 ResultBid| 2092 ResultAsk 2093 ResultComment Jsninennniinaninnivnatinnasiininniinnninsetonsnnesnnesisesnees 2094 PrintRequest...sotsinisnsninnennntnnennnennninneninninennntnnesnnssnsnsesesseies 2095 PrintResut 2096 24 Passage du MQL4.. - 2097 {© 2000-2010, MetaQuotes Software Corp. MQL5 Références MQL5 francais ‘MetaQuotes Language 5 (MQL5) - cest un langage intégré de la programmation des stratégies commerdales, qui a été mis au point par la compagnie MetaQuotes Software Corp. en basant sur son expérience pluriannuel de création des plateaux commerciales et informatiques. Ce langage permet de créer ses propres programmes-experts (Expert Advisors), qui automatisent la gestion des processus commerdales et qui sont parfaitement adapté & la mise en oeuvre des ses propres stratégies commerdales. En outre dans MQL5 on peut créer ses propres indicateurs techniques (Custom Indicators), scripts (Scripts) et des librairies des fonctions (Libraries) La structure MQL5 comprend un grand nombre de fonctions nécessaires pour tanalyse des cotations présentes et antérieures & venir, les indicateurs et les fonctions principales de gestion des positions commerdales et de contréle se sont integrés dans ce programme Pour écrire le code du programme on utilise un éditeur expert textuel MetaEditor § qui extrait par le couleur des différentes constructions du langage MQL5, qui permet & (utilisateur de mieux naviguer dans le texte du systéme expert. On utilise MetaQuotes Language Dictionary comme le systéme daide dans le langage MQLS. Guide de référence contient des fonctions réparties dans des catégories des fonctions, des opérations, des mots réservés et les autres constructions du langage et permet de trower le description de chaque élément quon utilise dans le langage. Les programmes écrits en MetaQuotes Langue 5, ont des caractéristiques et des buts différents: * Conseiller-expert- dest un systéme méchanique commercial (SMC), qui est attaché au graphique déterminé, Le Conseiller-expert est exécuté lorsquun événement se produit, il peut gérer Lévénement, les événements de Uinitialisation et déinitiatisation, un événement darrivée de nouvelle tique, un événement de minuterie, profondeur de tévolution du marché dévénement, des événement de graphique et des événement des utitisateurs. Le Conseiller expert peut & la fois travailler dans un régime de t information de la possibilité de passer un acte et passer des actes ‘automatiquement sur le compte commerdal en les envoyant directement sur le serveur de commerce, Les Conseillers-experts se sont stockés dans le répertoire dossier_terminal\MQL5 \Experts. * Indicateur d'utilisateur - indicateur technique écrit par t utilisateur en addition aux indicateurs, ‘qui sont déja integrés au terminal de client. Les indicateurs dutilisateur ainsi que les intégrés ne peuvent pas commercer automatiquement et ils sont destinés pour la réalisation des fonctions analytiques Les indicateurs d utitisateur se sont stockés dans le répertoire dossier_terminallMQLS\Indicators * Script est un programme destin & une seule exécution de certaines actions. A la différence des Conseillers-experts les scripts ne traitent pas aucuns événements sauf un événement de démarrage (Cela nécessite la fonction de gestionnaire OnStart dans un script). Les scripts se sont stockés dans le répertoire dossier_terminal\MQLS\Scripts + Librairie - une bibliothéque de fonctions personnalisées congue pour le stackage et la distribution des blocs de programmes des utilisateurs utitisés le plus souvent. Les librairies ne peuvent pas étre exécutées de maniére indépendante, Les bibliothéques se sont stockés dans le répertoire dossier_terminal\ MQLS\Libraries * Fichier inctus - ¢ est un texte source des blocs fréquemment utilisés des programmes ¢ utilisateur, Tels fichiers peuvent étre indus dans les textes sources des conseillers-experts, les scripts, des indicateurs dutilisateur, des bibliothéques lors de la compilation. L'utilisation des fichiers indus est préférable que [utilisation des bibliothéques en raison des charges (© 2000-2010, MetaQuotes Software Corp. MQL5 supplémentaires en appelant des fonctions des bibliothéques. Les fichiers inclus peuvent étre stockés dans le méme répertoire que le fichier source, dans ce cas, on utilise la directive #include avec les guillemets doubles. Un autre endroit pour stocker les fichiers inclus est dans le répertoire - dossier_terminal\MQLS\nclude, dans ce cas on utilise la directive Hindude avec les chevrons. © 2000-2010, MetaQuotes Software Corp, (© 2000-2010, MetaQuotes Software Corp. Principes de la langue MQL5 Les principes du langage Le langage MetaQuotes Language 5 (MQL5) est le langage orientée objet de programmation de haut niveau et destinge & la rédaction des stratégies automatiques commerdales, des indicateurs techniques ¢ utitisateurs pour tanalyse des différents marchés finanders. Elle permet non seulement décrire une variété de systémes experts, congus pour fonctionner en temps réel, mais aussi créer leurs propres outils graphiques pour aider & prendre des dédisions commerdales. MQLS est basée sur la conception du langage de programmation C++ largement répandu, en comparaison de MQL4 le nouveau langage a maintenant des énumérations, des structures, des asses et le traitement des événements. En augmentant le nombre des types insérés prindpaux, linteraction des programmes exécutés dans MQLS avec dautres applications par tintermédiaire de dll est faclitée au maximum. La syntaxe MQLS est similaire & la syntaxe du langage C + + et ca permet de lui transférer des programmes des langages de programmation moderne. Pour vous aider @ étudier le langage MQL5, tous les thémes sont regroupés dans les catégories suivantes + Types de données + Opérations et expressions + Opérateurs + Fonctions * Variables * Préprocess eur * Programmation orlentée objet (© 2000-2010, MetaQuotes Software Corp. Principes de la langue MQL5 Syntaxe Quant & la syntaxe, le langage de programmation des stratégies commerciales MQLS ressemble au langage de programmation C++, sauf pour quelques caractéristiques: © aucun arithmétique dadresse *# aucun opérateur goto; ‘+ [énum ération anonyme ne peut pas étre déclarée; * les constructeurs de classes et de structures ne peuvent pas avoir des paramétres; * aucun succession multiple (© 2000-2010, MetaQuotes Software Corp. Principes de la langue MQL5 Commentaires Les commentaires de multiligne se commencent par la paire des symboles /* et se terminent par la paire */, Ces commentaires ne peuvent pas étre imbriqués. Les commentaires dune seule ligne se commencent par la paire des symboles //, se terminent par le symbole de nouvelle ligne et peuvent 8tre imbriqués dans les commentaires de multitigne. Les commentaires sont autorisés partout oi! les espaces sont acceptés, ils peuvent avoir niimporte quel nombre despaces Exemples: //--~ Commentaire d'une seule ligne y* Wulti- Ligne // Commentaires inbriqué d'une seule ligne commentaire 7 (© 2000-2010, MetaQuotes Software Corp. za Principesde ta langue MQL5 Identificateurs Les identifiants sont utilisés comme des noms des variables et des fonctions. La longueur de Uidentificateur ne peut pas dépasser 31 caractéres: Les caractéres autorisés pour Cécriture de Cidentificateur: les chiffres 0-9, les lettres majuscules et minuscules latins a-z et A-Z, reconnus comme des caractéres différents, le caractére de soulignem ent (L). Le premier caractére ne peut pas étre un chiffre, Lidentificateur ne doit pas coindder avec mot rés ervé Exemples: MAME] nanel Total_§ Paper Voir aussi Variables, Fonctions (© 2000-2010, MetaQuotes Software Corp. Principes de ta langue MQL5 Mots réservés Les identificateurs suivants sont enregistrés comme des mots réservés, dont chacun correspond 8 une certaine action, et ne peut pas étre utilisé dans un autre sens: Types de données boot enum struct dass int int color long ‘ulong datetime short ushort double string. void const private protected public virtual extern input static Opérateurs break do return wase abe sizeof continue for switch defauit if white delete new Autres false Hdefine property this Himport (© 2000-2010, MetaQuotes Software Corp. Ea Principesde ta langue MQL5 true Hindude (© 2000-2010, MetaQuotes Software Corp. rt Principes de la langue MQL5 Les types des donées Tout programme opére avec les données. Les données peuvent étre des types différents selon de leur destination. Par exemple, pour acces aux éléments du massif on utilise les données du type entier. Les données de prix ont le type de texactitude double avec la virgule flottante. C'est rattaché au fait qUaucun type spécial nest pas prévu dans MQL5 pour les données de prix, Les données des types différents se sont traitées avec la vitesse différente. Les données de nombre entier sont traités plus vite. Pour traiter les données de précision doubles un coprocesseur spécial est utilisé. Cependant & cause de la complexité de la représentation intérieure des données avec la virgule flottante elles sont traitées davantage que les données entiéres. Les données de chaine sont traitées le plus longtemps. Cela est dii & [allocation et & la redistribution dynamique de la mémoire de tordinateur. Les types de données fondamanteux sont: * entiers (char, short, int, long, uchar, ushort, vint, ulong) * logiques (boo!) © constantes littérales (char, uchar) * les chaines (string) * avec la virgul flottante (double, float) * le couleur (color) * la date et les heures (datetime) ** les enumérations (enum) Types de données complex sont: « les structures * les dasses Dans les termes de la POO les types complexes de données s'appellent les types abstraits de données. Les types color et datetime ont le sens seulement pour le confort de la représentation et de entrée des paramétres, spécifiés du dehors - du tableau des propriétés du conseiller ou Cindicateur dutitisateur (tonglet "Inputs"). Les données des types color et datetime se présentent en forme des nombres entiéres. Les types entiers avec les types avec la virgule flottante s'appellent les types arithm étiques (num ériques). Dans les expressions_ on utilise la conformation implicite des types, si on miindique pas le conformation évidente. Voir aussi Conform ation des types (© 2000-2010, MetaQuotes Software Corp. Principes de la langue MQL5 Les types entiers Les types entiers sont représentés au langage MQLS par onze espéces. Certains types peuvent étre utilisés avec les autres, si dest nécessaire par la logique du programme mais dans ce cas-la ill est nécessaire de rappeler les ragles de la conversion des types. Le tableau ci-dessous donne les caractéristiques de chaque type. En outre, dans une derniére colonne le type correspondant dans le langage de programmation C++ est indiqué pour chaque type. Type Grandeur en Valeur minimale Valeur ‘Analogue C++ bits maximale char 1 -128 127 char char, 1 o 255 unsigned char, BYTE boot 1 O(fatse) A(true) bool short 2 -32 768 32 767 short, wehar_t short 2 0 65535 unsigned short, WORD int 4 +2147 483 648 | 2147 483647 | int int 4 0 4294967295 | unsigned —_ int, DWoRD color 4 a4 1677215 int, COLORREF long 8 -9 223 372 036 | 9 223 372 036 | _intea 854775 808 854775 807 long 8 0 18 446 744 073 | unsigned _intéd 709 551 615 datetime 8 0 (1970.01.01 | 32 535244799 | __timesa_t 0:00:00) (3000.12.31 73:59:59) On peut aussi présenter les valeurs des types entiers en forme des constantes numériques, les literals colorées, les literals de la date-temps, les constantes symboliques et les énum érations: Voir aussi La conversion des données, Les constants des types num éraux (© 2000-2010, MetaQuotes Software Corp. Principes de la langue MQL5 Types char, short, int et long char Le type char prend 1 byte de mémoire (8 bits) et permet dexprimer dans le systéme de numération binaire 2°8 de valeur =256. Le type char peut contenir les valeurs tant positives que négatives. Le gamme des valeurs est de-128 8 127, uchar Le type uchar prend aussi 1 byte de mémoire, comme le type char, mais & la différence de lui, uchar est destiné pour les valeurs positives seulement, La valeur minimale est zéro, la valeur maximale est 255. La premiére lettre u au nom du type duchar est labrégement pour le mot unsigned (non signé) short Le type short a la grandeur 2 bytes (16 bits) et il permet dexprimer téventail des valeurs égales au 2 8 { échelon 16: 2°16=65 536. Comme le type short est un signe et contient & la fois les valeurs positives et négatives, la gamme de valeurs est comprise entre -32 768 et 32 767, ushort Le type non signé short est le type ushort, qui a également la grandeur 2 bytes. La valeur minimale est zéro, la valeur maximale est 65 535. int Le type int a la grandeur 4 bytes (32 bits). La valeur minimale est -2 147 483 648, la valeur maximale est 2 147 483 647. uint Le type non signé uint prend 4 byte de mémoire et permet dexprimer les valeurs entiers de a 4294 967 295, long Le type long a la grandeur 8 bytes (64 bits). La valeur minimale est -9 223 372 036 854 75 808, le valeur maximale est 9 223 372 036 854 775 807. ulong Le type ulong prend aussi 8 bytes et permet de stocker les valeurs de 0 & 18 446 744073 709 551 615. Exemples: short sh=-S000; ant ine2445777; (© 2000-2010, MetaQuotes Software Corp. Principesde ta langue MQL5 Comme les types non signés ne sont pas destinés & conserver des valeurs négatives, la tentative de fixer une valeur négative peut conduire 8 des cons équences inattendues. Un tel script simple conduira 8 une boudle infinie: I void OnStart() ‘ uchar_w_ch; boucle infinie for (char che-128;eh¢128;chH+) neh) La variante correcte est: //--~ variante corrects void OnStart() ‘ uchar wel for (char che-128;eh¢=127;ch++) ‘ w_ehech, Print("ch = ",ch," uch = if(ch==127) break; ize 128 130 asi 432 133 134 135 136 437 ase 13s 40 aan az 143 aaa (© 2000-2010, MetaQuotes Software Corp. Za Principesde ta langue MQL5 = “LL weh= 145 Exemples: //--~ 11 est interdit de consérver les valeurs négatives dans les types non-signés uchar w_eh=-120; ushort w_sh=-5000; uint u_ins-401280; Hexadécimals: les chiffres 0-9, les lettres af ou A-F pour les valeurs 10-15; commencent par Ox ou 0x. Exemples: QkOA, O12, CHO2, Ox2E, OkA3, OAs, CHICT Voir aussi Conform ation des types (© 2000-2010, MetaQuotes Software Corp. Principes de la langue MQL5 Les constantes de caractéres Nimporte quel caractére entre les guillemets simples ou le code hexadédmal ASCII & un caractére "10! est la constante de caractére et a le type int. Certains caractéres, tels que les apostrophes ('), les guillemets ("), le point dinterrogation (?), la barre oblique inverse (\) et les symboles diregeants peuvent étre présentés par une combinaison de caractéres, qui commence de la barre oblique inverse (\), conformément avec le tableau au-dessous: nouvelle ligne (conversion de la ligne)ML (LF) \n tabulation horizontale aT \e retour de chariot cr \e barre oblique inverse \ uv apostrophes y wy guillenents " 7 code hexadécimal ASCII bh \enh Si le caractare barre oblique inverse doit étre différente de ce qui précide, le résultat rest pas déterminé: ant as 'A' int b = 1s" ant c= 'e!; 11 code OxaS int @ = '\xAE'; —// code du symbole © Le représentation intérieure est le type ushort. Les constantes de caractéres peuvent prendre des valeurs de 0 & 65535, Si la constante excéde la gamme spédifiée, le résultat est indéfini. Aussi a voir StringSetCharacter{), StringGetCharacter, Les constantes de caractéres Les symboles, comme télément de ligne dans MQLS sont des index dans tensemble de caractéres Unicode, Ils sont les valeurs de 16 bits, lesquelles on peut transformer en nombres entiéres et avec lesquelles on peut manipuler les opération entiéres tels que addition et la soustraction. Nimporte quel symbole séparé conclu aux guillemets simples, ou le code hexadécimal ASCII du symbole dans Caspect "\x10! est la constante symbolique et a le type ushort. Par exemple, inscription de aspect '' présente delle-méme la valeur numérique 30, correspondant & index, selon laquelle dans le tableau des symboles se trouve le symbole le zéro, Exemple: (© 2000-2010, MetaQuotes Software Corp. Zz Principes de la langue MQL5 void onstart() ‘ //--- définizons les constantes symboliques Ant symbol_O='0'; Ant symbol_S=symbol_0#9; // recevrons 1s symbole ‘9! //-- déduirons les vgleurs des constantes printf ("Dans l'aspect décimal: symbol 0 = 4d, symbol_9 = 44",symbol_0,symbol_9) 7 printf ("Dans l‘aspect hexadécimal: symbol_O + Ox4x, Symbol_@ = Ocsx",symbol,_O, sym) //--~ établirons les constantes dans 1a chaine string teste"; ‘SvringSetCharacter (test, 0,syabol_0); SvringSetCharacter (test,1,syabol_8); //-~- Et voici counent ils apparaissent dans la chaine Print(test); ) La barre inverse oblique est le symbole dirigeant pour le compilateur 8 tanalyse des chaines constantes et les constantes symboliques dans le texte initial du programme, On peut présenter certains caractéres, tels que les apostrophes ('), les guillemets ("), la barre oblique inverse (\), et les symboles dirigeants par la combinaison de symboles qui commencent par la barre inverse oblique(\), conformément & la table présentée ci-dessous : Nom du symbole Enregistrement Valeur numérique dans MQLS représentation une nowelle chaine | LF Nn 13 (la conversion de la chaine) a tabulation HT ne 9 horizontale le retour du chariot | CR Ne 10 la barre inverse | \ WY 92 oblique les apostrophes . " 39 les guillements . 34 le code hexadécimal_—- hhh "xhhhi De 1 & 4 signes hexadécimaux le code décimal d Nd le nombre décimal de 0 jusqua 65535 Le résultat niest pas défini si le symbole qui se différe des énum érées suivit la barre inverse oblique. Exemple (© 2000-2010, MetaQuotes Software Corp. Principes de la langue MQL5 void onstart() ‘ I amoncerons les constantes symboliques a 11 code Oxas \xRE'; // code du symbole © imprimons les constantes Print(a,b,c,d) ajouterons le symbole 4 1a chaine string test"; StringSetCharacter (test,0,a) Print(test); remplacerons le syabole dans 1a chaine StringSeccharacter (test, 0,b) : Print(test); remplacerons le symbole dans 1a chaine StringSetcharacter (test,0,c) Print(test); remplacerons le syabole dans la chaine ‘StringSetcharacter (test, 0,d) 7 Print(test); présenterons les symboles comme le nombre ant al=65; int bl=36; ant dl=174; ajouterons le symbole 4 1a chaine ‘StringSetCharacter (test,1,al) ? Print(test); remplacerons le syabole dans 1a chaine ‘StringSetCharacter (test,1,bl) 7 Print(test); remplacerons le syabole dans la chaine StringSeccharacter (test,1,c1) 7 Print(test); remplacerons le syabole dans la chaine ‘StringSecCharacter (test,1,dl) 7 Print (test); ) Comme ila été déja dit d-dessus, la valeur de la constante symbolique (ou la variable) représente index dans le tableau des symboles, mais puisque lindex est la nombre entire, il est admissible de Uenregistrer par des voies différentes (© 2000-2010, MetaQuotes Software Corp. Za Principes de la langue MQL5 void onstart() ‘ I J/ code du symbole @ correspond @ 1a literal '\xAE! // code du symbole @ correspond a la literal '\x24' // code du symbole @ correspond @ 1a literal '\xAS' 263A; // code du symbole © correspond a la literal '\x263A' déduirons Les valeurs Print(a,b,c,d) 7 ajouterons le symbole a la chaine string test"; StringSetCharacter (test,0,a) Print(test); remplacerons le syabole dans 1a chaine StringSeccharacter (test, 0,b) : Print(test); remplacerons le symbole dans 1a chaine StringSetcharacter (test,0,c) Print(test); remplacerons le syabole dans la chaine ‘StringSetcharacter (test, 0,d) 7 Print(test); codes des couleurs ant al=0x2660; 02663; ajouterons 1s symbole de 1a pique ‘StringSetCharacter (test,1,al) 7 Print(test); ajouterons le symbols des coeurs ‘StringSetCharacter (test, 2,bl) 7 Print(test); ajouterons le symbole des carreaux ‘StringSetCharacter (test,3,c1) 7 Print(test); ajouterons le symbole de tréfle ‘StringSetcharacter (test,4,dl) 7 Print(test); exemple des literals symboliques dans 1a chain veste"Dane \x2660A8\x2662" 7 prince ("4s",test) ; ) La représentation intérieure de la literal symbolique - le type ushort. Les constantes symbotiques peuvent accepter les valeurs de 0 jusquls 65535. Voir aussi StringSetCharacter(), StringGetCharacter( StringToShortArray() ShortToString(), ShortArrayToString(), (© 2000-2010, MetaQuotes Software Corp. Principes de la langue MQL5 Le type datetime Le type datetime est destiné pour le stockage de la date et de theure comme le nombre de secondes 4coulées depuis le 01 janvier 1970. Il prend le 8 bytes de mémoire: Les constantes de la date et det heure peuvent étre présentés comme la ligne literal, qui se compose de 6 parties, représentant la valeur numérique det an, du mois, les nombres (ou le nombre, le mois, année), t heure, la minute et la seconde. La constante est encadrée par les guillements simples et commence par le symbole D. La date (t année, le mois, le nombre) ou le temps (les heures, les minutes, les secondes) ou tous ensemble peuvent étre omis. La gamme des significations est du 1 janvier 1970 jusqdau31 decembre 3000. Exemples: D*2004.01.01 00:00" // Nouvel an D'1980.07.19 12:30:27" ‘19.07.1980 12:30:27" ‘19.07.1980 12' //équivalent &D'1980.07.19 12:00:00" 01.01.2004" //équivalent & D'O1.01.2004 00:00: 00! D'12: 30:27! //equivalent &D'[dave de compilation) 12:30:27! be //equivalent &D'[date de compilation] 00:00: 00' Voir aussi Structure de la dat ate et temps, TimeToString, StringToTime (© 2000-2010, MetaQuotes Software Corp. Za Principes de la langue MQL5 Type color Le type color est destiné @ conserver { information du couleur et prend 4 bytes de la mémoire, Le premier byte est ignoré, les autres 3 bytes contiennent les composants RGB. Les constantes de couleur peut étre représentés de trois fagons: littéralement, en nombres entiers ou 8 aide du nom (pour les Web-couleurs seulement). La représentation literale se compose de trois parties, qui représente les valeurs numériques de Uintensité de trois principales composantes de la couleur: rouge (red), vert (green), bleu (blue). Le constante commence par le symbole C et est entourée de guillemets simples. Les valeurs num ériques de tintensité de composante de la couleur sont dans la gamme de 0 & 256. La représentation entiére est écrite dans une forme dun nombre hexadécimal ou dun nombre dédmal. Le nombre hexadécimal a la forme Ox00BBGGRR, od RR - dest la valeur de lintensité de composante rouge du couleur, GG - de composante verte, et BB- de comporante bleue. Les constantes décimales nne sont pas directement reflétées dans RGB. IIb représentent une valeur décimale de la représentation entiare hexadécimal. Les couleurs spécifiques reflétent ce quon appelle le W eb-couleurs définies. Exemples: J/n- Livtérae 128,128,128 // gris C*0x00, 0x00, OKFF! // blew //ies noms de couleur Red // rouge Yellow // jaune Black H/ noir //--~ représentations entiéres OkFFFFFF 1 blanc 16777215 1 blanc ‘ox008000 vert. 32768 vert. Voir aussi Ensemble des couleurs Web, ColorToString, StringToColor, Conformation des types (© 2000-2010, MetaQuotes Software Corp. | Principesde ta langue MQL5 Le type bool Le type bool est destiné & conserver les valeurs logiques true (la vérité) ou fale (le faux), dont le représentation numérique est 1 ou 0, proportionnellem ent. Exemples: bool a = true; bool b = false; bool ¢ = 1; La représentation intérieure - est un nombre entier qui a la grandeur 1 byte. ILest nécessaire de noter Uon peut utiliser les types entiers ou matériel ou les expressions de ces types au tieu de type bool dans les expressions logiques, le compilateur ne produira pas d erreur. Dans ce cas, la valeur zéro sera interprétée comme fausse et toutes les autres valeurs - comme vraies. Exemples: ant is! double d=-2.5; Af(i) Print("i = ",i,"et a la valeur true"); else Print("i = ",i,"et a la valeur false"); f(a) Print(’ else Print("d “)dy"et a la valeur true"); d,"et a la valeur false"); 450; Af (4) Print(’ else Print ("i “)iptet a la valeur true"); yiy"et a la valeur false"); 40.0; f(a) Print(’ else Print("d “)dy"et a la valeur true"); d,"et a la valeur false"); résultats d'exécution 5S ev a la valeur true 2,§0000000 et a la valeur true O et a la valeur false // d= 0,00000000 «t a 1a valeur false Voir aussi Opérations logiques, Les priorités et tordre des opérations (© 2000-2010, MetaQuotes Software Corp. Principes de la langue MQL5 Les énumérations Des données du type enum appartiennent & un ensemble limité des certaines données. La définition du type énumeré: enum nom du_type_énuneré ‘ Liste_des valeurs La liste des valeurs dénumération est une liste de variables, séparées par des virgules. Exemple: enum months // émumération des constantes noameés ( January, February, March, april, May, Sune, July, August, September, october, Movember, December y Aprés que ténum ération est déclarée, un nouveau type de données de 4 bytes évalué de nombre entier apparait. L'annonce dun now eau type des données permet au compilateur de contréler strictement les types des paramétres transmis parce que Cenumération introduit de nouvelles constantes nomm es Dans texemple d-dessus, la constante nommée January a la valeur 0, February a la valeur 1, December a la valeur 11. La ragle: si une certaine valeur nl est pas attribuge & ls constante nommée qui est le membre de snumération alors ca valeur sera générée automatiquement. Si elle est le premier membre de ‘énum ération, la valeur 0 sera attribuée, Pour tous les membres séquentiels la valeur sera calculée sur la base de la valeur des membres antérieurs en y ajoutant Cunité. Exemple; enum intervals // énunération des constantes nounées ( month=1, // intervalle d'un mois ‘two_months, // deux mois // trois mois ~ quartier // senestre // an ~ 12 mois (© 2000-2010, MetaQuotes Software Corp. Principes de la langue MQL5 Notes # Ala différence de C++, la valeur de la représentation intérieure du type énumeré dans MQLS est toujours égale & 4 bytes. C'est-a-dire, sizeof(months) renvoie la valeur 4. * Ala difference de C++ ténumération anonyme ne peut pas étre déclarée dans MQLS. Cest-i-dire, un nom unique doit toujours étre spécifié aprés le mot-clé enum. Voir aussi Conformation des types (© 2000-2010, MetaQuotes Software Corp. Principes de la langue MQL5 Les types réels (double, float) Les types réels (ou les types & virgule flottante) représentent des valeurs ayant une partie fractionnaire, Dans le langage MQLS il existe deux types pour les nombres & virgule flottante, La méthode pour la représentation de nombres réels dans la mémoire informatique est définie par le norme IEEE 754 et elle est indépendante des plates-formes, des systémes opérationnels ou des langages de programmation. Type Grandeur en Valeur Valeur Bactitude Analogue C+ bytes minimale maximale de + positive représentati float 4 1,175494361 | 3.402823466 | 7chiffres float 238 +38 significatifs double 8 2.225073858 | 1.797693134 | 15chiffres double 5072014e- | 8623158e+30 | significatifs 308 8 Le nom double signifie, que t exactitude de ces nombres dépasse le double celle de nombres de type float. Dans la plupart des cas le type double est plus commode. Dans la plupart des cas t exactitude limitée de nombre float n' est pas suffisante. La raison pour laquelle le type float est encore utilisé - ¢ est l économie de la mémoire de stockage (¢ est important pour les gros tableaux de nombres réels). Les constantes & virgule flottante se comporent dune partie entire, du point (.) et dune partie fractionnaire. Les parties entiéres et fractionnaires se présentent des séquences de chiffres décimaux. Exemples: double a=12.111; double b=-856.1007; float ¢ =0.0001; float 4 =lé; ILy a-une facon scientifique d écrire des constantes réels, souvent cette méthode denregistrem ent est plus compacte que la traditionnelle Exemple: double el=1,12123515e-25; double ©2-0. 00000000000000000000000112123515; // 24 zéros aprés la virgule décima Print("L. cl =",DoubleToString(¢1,16)) // Pégultat: 1. 1 = 0.0000000000000000 Print("2. cl =",DoubleToString(el,-16)): // Bisultat: 2. el = 1.121285148999999¢e-025 Print("3. c2 =",DoubleToString(c2,-16)); // Bisuleat: 3. 2 = 1.121235145999999¢e-025 (© 2000-2010, MetaQuotes Software Corp. Principes de la langue MQL5 Il faut se rappeler que les nombres réels sont stockés dans la mémoire de fordinateur avec une certaine exactitude limitée dans le systéme de numération binaire, pendant que le systéme de numération dédmale est plus convenu. C'est pourquoi beaucoup de nombres qui sont justement enregistrés dans le systéme décimal peut étre rédigé uniquement en tant que la fraction infini dans le systeme binaire. Par exemple, le nombre de 0.3 et 0.7 se sont représentés dans lordinateur par les fractions infinies, tandis que le nombre de 0,25 est stocké exactement, car il représente la puissance de deux A ce propos il est recommandé catégoriquement de ne pas comparer les deux nombres réels pour Uégalité, car une telle comparaison nest pas correcte. Exemple: void onstart() ‘ Is double three=3.0; double x,¥,27 xeL/three; yeasthree; zeS/three; Af (xtys=2) Primt("1/3 + 4/3 == 5/3"); else Print ("1/3 + 4/3 '= 5/3"); // Biigultat: 1/3 + 4/3 '= 5/3 ) Sil faut comparer deux nombres réels pour tégalité, on peut faire ca par deux fagons différentes. Le premiére méthode consiste 8 comparer la différence entre deux chiffres avec un petit nombre qui spécifie lexactitude de la com paraison. Exemple: bool EqualDoubles (double dl,double d2,double epsilon) ‘ {Af (epsiloncO) epsilon=-epsilon: I Af (dl-d2>epsilon) return false; Af (dl-d2<-epsilon) return false; I return true; ) void Onstart() ‘ double d_val=0.7; float f_val=0.7; Lf (EqualDoubles(d_val,f_val,0.000000000000001)) Print(d_val,"equals ",f val)? else Print ("Different: d_val = ",DoubleToString(d_val,1é), £ val = ",DoubleTostring(f_val,16))+ // Riigultat: Different: dval = 0.7000000000000000 f_val = 0.689: ) 19988070710 (© 2000-2010, MetaQuotes Software Corp. Principes de la langue MQL5 I faut noter que la valeur de Cepsilon dans exemple ci-dessus ne peut étre moins de la constante prédéterminé DBL_EPSILON. La valeur de cette constante est 2.2204460492503131e-016. Pour le type float la constante relevante est FLT_EPSILON = 1,192092896e-07. La signification de ces valeurs est telle que dest la plus petite valeur, qui satisfait & la condition 1.0+DBL_EPSILON != 1.0 (pour les nombres du type float 1.0+FLT_EPSILON != 1.0). La deuxiéme méthode consiste comparer la différence normalisée de deux nombres réels avec le zéro, Il est inutile de comparer la différence de nombres normalisés avec un zéro parce que toute opération mathématique avec des nombres normatisés donne un résultat non- normalisé. Exemple: bool CompareDoubles (double number1,double number?) ‘ {Lf (Normal izeDouble (number1-number2,8) else return(false); ) void Onstart() ‘ double d_val=0.3; float f_val=0.3; {Af (CompareDoubles(d_val,f val) Print(d_val,"equals ",f_val); else Print ("Different: d_val = ",DoubleToString(d_val,1é), £ val = ",DoubleTostring(f_val,16))+ // Résultat: Different: val = 0.3000000000000000 f_val = 0. 3000000118208280 ) ) return (true): Quelques opérations du coprocesseur mathématiques peuvent donner le nombre réel invatide qui ne peut pas étre utilisé dans les opérations mathématiques et dans les opérations des comparaisons parce que le résultat dopérations avec les nombres réels invalides nf est pas défini, Par exemple, lorsquon essaye de calculer tarcsinus de 2, le résultat sera linfinité négative, Exemple: double abnormal = MathArcsin(2.0); Print("MathArcsin(2.0) =", abnormal); // Résultat: MathArcsin(2.0) = -1.#1ND0000 Sauf Cinfinité négative ily a tinfinité positive et PuN (pas un nombre). Pour déterminer que ce nombre rest pas valide, on peut utiliser la fonction MathlsVatidNumber(). Selon le standard IEEE ile ont le représentation spéciale de machine. Par exemple, Cinfinité positive pour le type double a ls représentation en bits 0x7FF0 0000 0000 0000. Exemples: struct strl ‘ double a; struct str2 ‘ Jong 1; (© 2000-2010, MetaQuotes Software Corp. Principesde ta langue MQL5 strl sl; str? 82; 1. deWatharesin(2.0); // dériver um nombre invalide ~1. 41ND af S164x",s1.d,82.1); ‘52, 1-0xFFFFO00000000000; // nombre invalide -1. #QNAN 82) printé("2. %£ $164",s1.d,82.1); '52.1-Qe7FF7000000000000;// pas un nombre le plus grand SWall Af SI64X",s1.4)82.1) 5 ‘92, 1-07 Fe000000000000; // pas un nombre le plus petit QNall Af SI64X",s1.4)82.1) 5 ‘52. 1+Qe7FFFOG000000000;// pas un nombre le plus grand QWfall 2 prineé("S. %£ 4164" s1.d,s2.1); 52. 1+Qe7FFO000000000000;// infinité positive 1.gINF et pas un nombre Le plus 2 prineé("é. %£ 4164" s1.d,s2.1); ‘52, 1-0xFFFO000000000000; // snfinité négative -1.#1NF sles2; printé("7. %£ $164",s1.4,82.1); 52. 1-Qea00og00000000000;// zro négatif -0.0 af S164x",s1.d,82.1); 10.5 Af SI64X",s1.4)82.1) 5 ‘52, 1-0x3FFO000000000000; 2.0 82) printé("L0. %£ 4164",s1.,s2.1); 52. 1-OcTFEFFFFFFFFFFFFF; —// 1 plus grand nobre normalisé (MAX DBL) 2 (© 2000-2010, MetaQuotes Software Corp. Za Principesde ta langue MQL5 ” a. -1.#1p00 2. -1-#QNANO 3. 1. #swaNO 4.1. #qNaNO 5. 1.#qwaNO 6. 1.#INFOO 7. -1.#1MFOO 8. ~0. 000000 8. 0.s00000 9. 1.000000 premee a2. 2, 13. 6, / Aussi a voir 4.l6e 4164",s1.d,s2.1): 52. 1+Qxo010000000000000;// Ie plus petit positif normalisé (MIN_DBL) 4lée 4. 16164X",81.4)82.1)5 // montrons que le nombre 0.7 - est une fraction infii 4lée 4. 16164X",81.4)82.1)5 FFFe000000000000 FFFFO00000000000 ‘7FF7000000000000 ‘7000000000000 ‘7FFFOO0000000000 ‘7FFOOO0000000000 FFFO000000000000 ‘sodq0000000000 ‘3FE0000000000000 ‘3FFOo00000000000 .7876931348623157e+308 7FEFFFFFFFFFFFFF 2250738585072014e-308 0010000000000000 -segsegoegsseeso¢e-O01 SFEGEEEEECEEEEEE DoubleToString, NormalizeDouble, Constantes des types numériques (© 2000-2010, MetaQuotes Software Corp. Principes de la langue MQL5 Le type string Le type string est destiné pour stocker les chaines de texte. Le texte de chafne est une séquence de caractéres au format Unicode avec le zéro final & la fin. A la variable string peut étre attribué le constante de chaine. La constante chaine est une séquence des caractéres Unicode, entourée de guillemets doubles: ‘est est une constante chaine’ La représentation intérieure est la structure de 8 bytes. Le premier élément de la structure est fentier du type int buf_len, contient le grandeur de distribué pour la chaine du buffer. Le deuxiame élément de la structure buf_ptr est le pointeur de 32 bits sur le buffer qui contient la chaine. La variable str_len du type int se place avant le buffer immédiatement qui contient la longueur de la chaine (le nombre de caractéres dans la chaine & la fin de zéro) Le membre de la structure buf_len peut avoir une des valeurs suivantes: 0 - indique quil s'agit dune constante de chaine qui est stocké dans un réservoir de constantes chaines; #-1 ~ indique que la ligne appartient au terminal client (cette ligne est degagé par le terminal de client et pas le sous-systéme exécutif); + nombre - est la grandeur de buffer dans les caractéres du type short, basé dane la mémoire de ordinateur pour stocker des chaines. int buf_len —_pointour buf_ptr js I . longueur du buffer buf_ten int str_ten 4 bytes immédiatement avant le buffer sont destinés pour les renseignements de service sur la longueur de la chaine. Linformation sur la longueur de la chaine est tirée dic par la fonction StringLen(). La longueur de la chaine peut avoir la grandeur zéro, méme si le buffer alloué par la chaine, a la grandeur non-zéro. La fin de la chaine dans le buffer se trouve toujours la, ol le premier byte contenant 0 est rencont Sil est necéssaire dintroduire dans la chaine les guillemets doubles ("), il faut mettre avant la barre oblique inverse (\}. Nimporte quel caractére spécial des constantes peut étre introduit dans la chaine, sily a la barre oblique inverse avant (\). Exemples: string svar="This is a character string"; string svar2=StringSubstx (svar,0,4) ; Print("Symbole de copyright \t\xO0AS") ¢ Filelrite (handle,"cette chaine contient le symbole de conversion de chaine\n"); string MTSpath="C:\\Program Files\\MetaTrader 5"; (© 2000-2010, MetaQuotes Software Corp. = Principesde ta langue MQL5 Si le variable du type string n'est pas initialisé, le compilateur se substitue le code qui remet au zéro la structure spédifiée, C'est nécessaire pour éviter des erreurs critiques en appelant une telle variable, Voir aussi Conformation des types, Fonctions de chaine, FileOpen, FileReadString, FileW riteString (© 2000-2010, MetaQuotes Software Corp. 61 Principes de la langue MQL5 Les structures et les classes Les structures La structure est un ensemble déléments du type arbitraire (sauf le type void). Ainsi, la structure regroupe logiquement les données relatives de types différents. La déclaration de la structure Le type structuré de données est déterminé par la description suivante: ‘struct nom_du structure ‘ description des éléments Le nom de la structure ne peut pas étre utitisé comme un identificateur (nom de la variable ou de le fonction). Il faut noter que les éléments de la structure dans MQL5 se suivent directement sane alignement. Dans le langage C++ un tel ordre est fait au compilateur a Caide de Cinstruction, #pragma pack (1) Sil faut faire un autre alignement dans la structure, il faut utiliser les membres auxitiaires, -" remplisseur” des grandeurs justes: le Exemples: struct trade_settings ‘ uchar slippage? // valeur du glissenent admissible - est 1 byt de Ltespace char reservedl; short reserved?; je L'espace ant reserved4; —// encore 4 bytes de l'espace. On a garanti 1'alignes double take; // valeur du prix et de fixation du profit double stop: // valeur du prix de L'arrét protecteur Une telle description des structures alignées est necéssaire seulement pour le transfert aux fonctions dllimportées. Attention: cet exemple illstre des données incorrectement concues. Ce serait mieux dabord de dédlarer les données take et stop de le plus grande valeur du type double, et décarez ensuite le membre stippage du type double. Dans ce cas-lt, la représentation intérieure de données sera toujours la mame sans tenir compte de la valeur spécifiée dans Hpragma pack(). Si la structure contient des variables du type string et/ou (objet du tableau dynamique, le compilateur assigne & une telle structure un implicite constructeur, qui remit 8 zéro tous les membres de structure du type string et linitialisation correcte pour tobjet dun tableau dynamique. Les structures simples Les structures qui ne contiennent pas des chaines et des objets de tableaux dynamiques sont appelés (© 2000-2010, MetaQuotes Software Corp. Principes de la langue MQL5 les structures simples; les variables des telles structures peuvent étre librement copiées tun 8 fautre, mame s'ils sont de différentes structures. On peut transmettre les variables des structures simples, ainsi que leurs tableaux ’ titre des paramtres aux fonctions importées de DLL. L'accés aux membres de la structure Le nom de la structure est un noweau type de données et permet de décarer des variables de ce type. La structure peut étre déclarée quune seule fois au sein du projet. Laces aux membres des structures effectue & faide de € opération point (.) Exemple: struct trade_settings ‘ double take; // valeur du prix de la fixation du profit double stop; // valeur du prix de L'arrét protecteur uchar slippage; // valeur du glissement admissible In trade_settings my_set=(0.0,0.0,5}; Af (input_TP>0) my_sec. take=input_TP; on a créé et initialisé une variable de type trade_settings Les classes Les classes se different des structures dans le suivant: * on utilise le mot-clé class dans les annonces; + par défaut, tous les membres de ls classe ont le spécificateur de t accés private s'il nly @ pas une autre indication. Les membres-les données de la structure ont le type accés public, s'il ny @ pas une autre indication; * les objets de la dasse ont toujours un tableau des fonctions virtuelles, méme si aucune fonction virtuelle n'est pas déclarée dans la classe, Les structures ne peuvent pas avoir des fonctions virtuelles; * les classes peuvent tre héritées seulement par les classes, les structures peuvent étre héritées seulement par les structures. Les classes et les structures peuvent avoir un constructeur explicite et le destructeur. Dans le cas si le constructeur est défini, tinitiatisation de variable de type de la structure ou la classe & taide de le séquence initialis ée est impossible. Exemple: struct trade_settings ‘ double take; // valeur du prix de la fixation du profit double stop: // valeur du prix de L'arrét protecteur uchar slippage; // valeur du glissement admissible //--~ constructeur trade_settings() ( take=0.0; stop=0.0; slippage desteucteur wtrade_settings() ( Print ("C'est la fin"); } (© 2000-2010, MetaQuotes Software Corp. Principes de la langue MQL5 In trade_settings my_set=(0.0,0.0,5}; Le compilateur produira un message d'erreur que 1'initialisation est impossible Les constructeurs et les destructeurs Un constructeur est une fonction spédale, qui est appellé automatiquement quand Cobjet de le structure ou de la classe est créé et généralement utilisé pour initialiser les membres de la classe. Nous parlerons seulement des classes ensuite, en méme temps tout ce que était dit se rapporte aux structures aussi, si un autre r'était pas spécfié, Le nom du constructeur doit correspondre au nom de En MQLS les constructeurs rfont pas de paramétres dentrée. Ainsi, chaque classe peut avoir seulement un la classe, Le constructeur nla aucun type de retour (on peut spécifier le type void) constructeur. Les membres de la classe: les _chaines, les tableaux dynamiques et les objets qui nécessitent une initialisation, en tout cas seront initialisés, indépendamment de la présence de constructeur. Le destructeur- est une fonction spéciale qui est appelée automatiquement quand on détruit lobjet de la dasse, Le nom du destructeur est écrit comme un nom de classe avec un tilde (~). Les chaines, les tableaux dynamiques et les objets, exigeant la déinitiatisation en tout cas seront déinitialisés indépendamment de la présence de destructeur. S' ily a le destructeur, ces actions seront réalisées aprés Cappel de destructeur. Les destructeurs sont toujours virtuels, méme s'ils se sont declarés avec le mot-clé virtual ou non. La définition des métho des des classes Les fonctions-méthodes de la classe peuvent étre définies comme & tintérieur de la classe et en. dehors de la déclaration de la classe, Si la méthode est définie dans la classe, son corps suivit aprés tannonce de la méthode. Exemple: (© 2000-2010, MetaQuotes Software Corp. Principesde ta langue MQL5 class CTetrisshape ‘ protected: ant type, ant xpos, ant x _ypos, ant mxsize; ant mysize; ant a prev_tumn; ant tum; ant _right_border: public: void cTeteissnape (): void SetRightBorder (int border) ( m right bordersborder; } void SetYPos(int ypos) ( mypos-ypos; } void Set¥Pos(int xpos) ( a xpos=xpos? ) ant GetYPos() ( return (m_ypos) + ) ant Get¥os() ( return(m xpos) ; ) ant GetvSize() ( return (m_ysize ) ant GetxSize() ( return (m xsize ) ant GetType() r ) void Lett() ( ) void Right() ( ) void Rotate() r (H+a_turm>3) virtual void Draw() ( retum? ) virtual bool CheckDown(inte pad_arrayl]); virtual bool CheckLeft(inte side_row{]) : virtual bool CheckRight(inte side_rov[]) + Les fonctions de SetRightBorderlint border) au Draw() sont annoncées et définies 8 t intérieur de la classe CTetrisShape, Le constructeur CTetrisShape() et les méthodes CheckDown(int& pad_array{]), CheckLeft(int® side_row{]) et CheckRight(int&t side_row{]) sont annoncées seulement & ' intérieur de la classe, mais ne sont pas définies. Les définitions de ces fonctions seront suivits selon le code, Pour définir la méthode & lextérieur de la classe, on utilise lopération de résolution de contexte, le nom de classe est utilisé comme le contexte. Exemple: (© 2000-2010, MetaQuotes Software Corp. Principes de la langue MQL5 Ue //| Constructeur de 1a classe fondanentale Ue void CTetrisShape: : CTetrisshape() zieight,border-0; t We + 7/\ Le contréle de 1a capacité de bouger en bas (pour le baton et le cube) Wi + bool CTetrisShape::CheckDown(ints pad_array[]) t Ant 4)xsizesm_xsize/SHAPE SIZE; Wu for(ie0; cxsizes 144) t if (m_ypos+m_ysize>=pad_array[i]) return(false); 1 Wu retum (true): t Les modificateurs daccés public, protected et private En développant une nowelle classe, il e:t recommandé de restreindre tacoés aux membres de lextérieur. Pour ces buts, on utilise les mots clés private ou protected. Dans ce cas-l& accés aux données cachées peut étre effectué seulement des fonctions- les méthodes de la méme classe. Si le mot clé protected est utilisé, alors faccés aux données cachées peut étre effectué des méthodes des classes \ritiers de cette dasse, La méme méthode peut étre utilisée pour restreindre faccés aux fonctions-les méthodes de la classe. Sion a besoin d owrir un acces aux membres et/ou les méthodes de la dasse, on utilise le mot dé public: Exemple: class CTetrisField ‘ private: ant score; // compte ant m_ypos: // position actuelle de figu ant m_field[FIELD_HEIGHT]{FIELD WIDTH]; // matrice de Dox ant ‘_rows[FIELD_HEIGHT]; // munération des rangs de D ant a_last_row; // dernier rang Libre CTetrisshape —*m_shape; // figure de tetris bool 1 bover; // yeu est fink public: (© 2000-2010, MetaQuotes Software Corp. = Principes de la langue MQL5 void CTeteisField() ( m.shape-NULL; mbover=false; } void Init(); void Deinit(); void Down() void Lefe(): void Right () void Rotate(); void Drop () private: void MewShape() ; void CheckAndDeleteRows (); void Labelover(); he Tout les membres et les méthodes de classe qui sont déclarées aprés le spécificateur public: (et jusquau prochain spédficateur daccés), sont disponibles dans rlimporte quelle référence du programme pour tobjet de cette classe. Dans cet exemple, ce sont les membres suivants: les fonctions CTetrisField(), Init(), Deinit(), Down(), Left(), Right(), Rotate() et Drop(). Tous les membres de la classe qui sont déclarés aprés le spécificateur daccés aux éléments private: (et jusquau prochain spécificateur daccés), sont disponibles seulement aux fonctions- les membres de cette classe, Les spécificateurs daccés aux éléments toujours se terminent par le deux-points (:) et peuvent apparaitre dans la définition de la classe plusieurs fois. Liaccés aux membres de la classe de base peut étre redéfinie en termes dhéritage dans les classes dérivées Voir aussi Programmation orientée objet (© 2000-2010, MetaQuotes Software Corp. Principes de la langue MQL5 L'objet du tableau dynamique Les tableaux dynamiques Le tableau dynamique représente la structure de 40 bytes. Il est admis la déclaration pas plus que le tableau quadridimensionnet struct MqlArrayobject. ( ushort types “wp ushort flags; // drapeaux qui définient le statut de tableau uint itemien; // grandeur d'un élément d'un tableau en by int allocated; // grandeur réel, alloué pour le tableau données codé int rangeO;—// grandeur de 1a preniére dimension (initialenent égale a 0) int angel; // grandeur 0 amt range2;—// grandeur de 1a troisiéme dimension, s'il y a. Autrement 0 int range3;—// grandeur int reservedO; // données pour int reservedl; // int int reserved2; // usage La dewxi ¢ dimension, s'il y a. Autres je 1a quatriéme dimension, s'il y a. Autrement 0 Lorsquon déclare un tableau dynamique (le tableau de la valeur non-spécifiée dans la premiere paire de chevrons), le compilateur crée automatiquement la variable de la structure susnommée (tobjet du tableau dynamique) et fournit un code & finitialisation correcte. Les tableaux dynamiques se librent automatiquement & la sortie au-deld du domaine de la visibitité du bloc, oi ils sont annoncés, Exemple: double matrix[][10][20]; // tableau dynamique tridimensionnel ArrayResize(natrix,5); // on a mis la grandeur de la preniére dimension Les tableaux statiques Quand toutes les dimensions de tableau significative sont explicitement spécifiges, le compilateur affecte préventivement la grandeur nécessaire de mémoire. Un tel tableau s'appelle statique. Néanmoins, le compilateur affecte le mémoire supplémentaire pour fobjet du tableau dynamique, qui (objet) est associée avec le buffer statique préalablement distribué (la partie de mémoire pour stocker le tableau). Création dun objet du tableau dynamique est due & la nécessité éventuelle de redonner ce tableau statique comme un paramétre dans une fonction quelconque. Exemples: double stat_array[5]; // tab some_function (stat_array) ; statique unidimensionnel (© 2000-2010, MetaQuotes Software Corp. Principes de la langue MQL5 ool some_function(doublee arrayl]) ‘ if (ArrayResize (array,100)) return(false) 7 return (true) 7 ) Des tableaux dans les structures Quand un tableau statique est déclarée comme un membre dune structure, un objet de tableau dynamique ne créé pas. C'est fait pour assurer la compatibilité des structures de données utilisé dans Windows API. Pourtant, les tableaux statiques qui sont déclarés comme les membres des structures peuvent aussi atre passées aux fonctions MQLS. Dans ce cas & la transmission du paramétre un objet temporaire du tableau dynamique lié au tableau statique - le membre de la structure sera cré Voir aussi Opérations avec les tableaux, Initialisation des variables, Portée de visibilité et la durée de vie des variables, Les priorités et lordre des opérations (© 2000-2010, MetaQuotes Software Corp. Principes de la langue MQL5 La conformation des types La conversion des types numériques Souvent il est nécessaire de convertir un type numérique 8 une autre. Pas chaque type numérique peut étre transformé en autre, Le schéma montre les transformations admissibles dans MQL5: uchar ——» ushort —» uint —» ulong lf) | char —» short ——» int —» tong float —» double Les lignes continues avec des fléches indiquent les changements qui sont réatisées sans perte information. Au lieu du type char le type bool peut étre utilisé (tous les deux prennent 1 byte de la mémoire), au tieu du type int on peut utiliser le type color (4 bytes), au lieu du type long il est admis le type datetime (tous les deux prennent 8 bytes). Les quatre lignes interrompus erizes aussi marquées de fléches signifient les transformations, dans laquel la perte de lexactitude peut étre produite. Par exemple, le nombre de chiffres dans le nombre entier 123456789 (int) dépasse le nombre de chiffres qui peut étre représenté par le type float. int n=123456789; float f=n; // contenue f est égal a 1.234567892E8 Print("n = "yn," f= "/f)5 // vésultat n= 123456789 f= 123456782. 00000 Le nombre converti dans le type float a le méme ordre, mais ¢ exactitude un peu moins prédse, Les transformations, inverses aux fléches noires, peuvent étre exécutées avec la perte possible de données. Les transformations entre char et uchar, short et ushort, int et uint, long et ulong (les transformations aux deux cétés sont prévues), peuvent amener & la perte de tinformation, Ala suite de la transformation de valeur de virgule flottante au type entier la partie fractionnaire est toujours rejetée, Sil faut arrondir le nombre avec la virgule flottante au plus proche nombre entier (ce que est plus utile dans beaucoup de cas), il faut utiliser le fonction MathRound(). Exemple: //--~ accéléxation de 1a pesanteur double 9=9.8; double round_g=(int)g? double math_round_g-MathRound(g) ; Print("round_g = “,round_g); Print("math_round_g = ",math_round_g); J) Résultat 7/7 rouné_g = $.00000000 (© 2000-2010, MetaQuotes Software Corp. Principes de la langue MQL5 //_nath_round_g = 10.00000000 Si les deux valeurs se sont combinges par un opérateur binaire, avant Cexécution dopération opérande dun type plus bas est converti au plus haut type conformément & la priorité indiqué dans le schéma: char uuchar > int» uint —> long —> ulong_—> float —> usar 3 tint — long > ulong—> float double short Les types des données char, uchar, short et ushort dans les opérations se sont rapportés absolum ent au type int. Exemples: char cl=3; J/--~ premier exemple double d2-c1/240.37 Print("cl/240.3 =",d2)7 // Résultat: —¢1/240.3 = 1-30000000 I deuxitme exemple :1/2.040.3; Print(""cl/2.0+0.3 =",42); // Résultat: —¢1/2.0+0.3 = 1.80000000 Ltexpression calculée se compose de deux opérations. Dans le premier exemple, la variable cl du type char est convertie & une variable temporaire du type int, que le second opérande dans topération de division, la constante 2, a le type int qui est plus haut. A la suite de la division de nombre entier 3/2 on recoit la valeur 1, qui a le type int. Dans la deuxiéme opération du premier exemple le second opérande est la constante 0.3, qui a le type double, donc le résultat de la premiare opération est convertie en variable temporaire du type double avec la valeur 1.0. Dans le deuxiéme exemple la constante cl du type char est convertie en variable temporaire du type double, que le second opérande dans topération de division, la constante 2.0, a le type double; les autres changements ne sont pas effectués La conformation des types numériques Dare les expressions de langage MQL5 on peut utilisé la conformation explicite et implicite des types. La conformation explicite des types s'enregistre de la facon suivante: var_l = (type)var_2; Llexpression ou le résultat dune exécution de fonction peut ére comme une variable var2. Ltenregistrem ent fonctionnel de conformation explicite des types est possible: var_l = type(var_2); (© 2000-2010, MetaQuotes Software Corp. Za Principes de la langue MQL5 Examinons une conformation explicte sur la base du premier exemple, I troisiéme exemple double d2= (double) ¢1/240.3; Print(""(double)cl/2+0.3 =",42); // Résultat: (double) ¢1/2#0.3 = 1.80000000 Avant texécution dopération de la division la variable cl améne au type double. Maintenant, la constante entire 2 s' améne 8 la valeur 2,0 du type double, donc & la suite de la conversion un premier opérande a recu le type double. En fait, la conversion explicite du type est une opération unaire. En outre lorsquon essaye de faire la conformation des types le résultat peut aller aurdels de la gamme admissible. Dans ce cas, la troncature se produit. Par exemple: char ¢; uchar u; ¢=400; u=400; Print/ Print ("ue ree // résultat ma); // résultae ue Avant de Cexécution dopération (sauf topération affectation) il est converti en type qui 2 la plus grande priorité, et avant les opération daffectation - en type entier. Exemples: ant Print/ // iL n'y a pas de conformation des types, le résultat: 0 // expression est induit au type double, jk); // aprés induit au type entier int, le résultat: 0 -0/2.0; // il ny a pas de conformation des types, le résultat: 0.5 a) 2 +03 // expression est induit au type double, 0; "/e)#// qui coincide avec le type entier, le résultat: 0.5 // expression a "eds // résultat: 0.0 type int est induit au type entier double, La conformation pour le type string Le type string @ la plus haute priorité parmi les types simples. Donc, si un des opérande dans une opération est a le type string, un autre opérande sera jeté au type string automatiquement. Il faut noter que pour le type string une unique opération daddition dyadique est admissible, Le conformation explicite dune variable du type string au type numérique est permise, Exemples: string s1=1.0/87 // expression est induit au type double, (© 2000-2010, MetaQuotes Software Corp. Principes de la langue MQL5 Print("sl-1.0/8; ",s1); // aprés au type entier string, // résultat:"0.12500000" (la chaine qui contient 10 caractéres) string s2-NULL, // déinitialisation de 1a chaine Print ("s2=NULL, // xésultat: une chaine vide string s3-"Ticket N"+12345; // expression est induit au type string Print(""s=\"Ticket N"+12345,83) ; string string string string Print(bool (str) ) Print (color (ste2)) + Print (datetime (str3))+ Print (double (str4)) La conformation des données des structures simples On peut assigner les données de type des structures simples tun & tautre seulement dans le cas, si tous les membres de deux structures ont des types numériques. Ainsi dans topération dattribution tous les deux opérandes, et 8 gauche et & droite, doivent étre les types de structures. La conformation terme & terme ne se produit pas, un simple copiage se produit. Si les structures sont de différentes valeurs, puis on copie le nombre de bytes qui correspond & une valeur plus petite. Ainsi absence des unions (union) est compensée dans le langage MQLS. Exemples: struct strl ‘ double 4; Is struct str2 ‘ dong 1s Is struct str3 ‘ ant low part; ant high part; Ue void OnStart() ‘ strl sl, str? 82; (© 2000-2010, MetaQuotes Software Corp. Za Principes de la langue MQL5 str3 83; I 1. deWatharesin(2.0); u Ls prineé("L. 3£ *1644",s1.d,s2.1)7 ‘ecevrons un nombre invalide -1. #IND I 2 printf("2. high part of long 4.8% low part of long 4.8%", 53.high_part,s3. low part) ; ) Encore un exemple montre comment on peut organiser sa propre fonction pour abtenir du type color les représentation des couleurs en RGB (Red,Green,Blue). Pour faire ca créez deux structures de la méme grandeur, mais avec un différent contenu intérieur. Pour plus de commodité, ajoutors la fonction au structure, qui rend la couleur & la répresentation de RGB comme une chaine. #property script_show_inputs input color testColorsBlue;// spécifier la couleur pour le test, //--~ steucture pour la répresentation en RGB. struct RGB ‘ uchar blue; // composante bleue de couleur uchar green; // composante verte de couleur uchar reds // composante rouge de couleur uchar empty: // ce byte ne s! utilise pas string toString(); // fonction pour recevoir 1a chain’ In string RGB::toString(void) ‘ string ou return out; fonction pour afficher les couleurs comme 1a chains ("4(string) red#":"4 (string) green#":"+(string)bluet")"; In struct builtcolor structure pour le stockage de type intégré color //\ Script program start function 1 i void OnStart() ‘ //--~ variable pour le stockage dans RGB RGB colorRGB; //-- variable pour le stockage du type color builtcolor test; test. cetestColor; //--~ conformation de deux structures en copiant le contenu (© 2000-2010, MetaQuotes Software Corp. Principes de la langue MQL5 colozRGB=test; Print("color ", test. c,"=",coloxRGB. toString()); I ) La conformation des types des indicateurs des classes de base aux indicateurs des classes dérivées Les objets de le dasse ouverte eénérée peuvent également atre considérés comme des objets de la classe de base correspondante. Cela sert § quelques conséquences intéressantes. Par exemple, malgré le fait que les objets de différentes classes générées par une classe de base, peuvent se différer de facon significative tun de tautre, nous pouvons créer une liste reliée (List), parce que nous les considérons comme des objets du type de base, Mais le contraire niest pas vrai: les objets de classe de base ne sont pas automatiquement les objets de la classe dérivée, On peut utiliser la conformation explicite des types pour convertir les indicateurs de la classe de base aux indicateurs de la dasse dérivée, Mais il faut étre assuré en admissibilité dune telle transformation, parce quautrement une erreur critique du temps dexécution sera produite et le programme ma{§ sera arrété, (© 2000-2010, MetaQuotes Software Corp. Za Principes de la langue MQL5 Le type void et la constante NULL Syntaxiquement le type void est un type fondamental ainsi que les types char, uchar, bool, short, short, int, uint, color, long, ulong, datetime, float, double et string. Ce type est utilisé pour ind quer que la fonction ne rend pas de valeur, ou comme un paramétre de fonction il dénote tabsence de paramétres, La variable constante prédéterminée NULL 2 le type void. Elle peut étre allouge aux variables dautres types fondamentaux sans conversion. La comparaison des variables du type fondamental avec la valeur NULL est autorisée, Exemple: //--~ Si 1a chaine n'est pas initialisée, allouez-y notre valeur prédéterminée Af (some_string==NULL) some_string="enpty"; ‘Aussi NULL peut étre comparé avec les indicateurs aux objets, créés & [aide de f opérateur new. Voir aussi Variables, Fonctions (© 2000-2010, MetaQuotes Software Corp. Za Principesde ta langue MQL5 dicateurs des objets Les En MOLS ily a la possibilité de créer dynamiquement des objets du type complexe. C'est fait & taide de lopérateur new, qui rend le descripteur de (objet créé. Le descripteur a la valeur 8 bytes Syntaxiquement, les descripteurs dobjet dans MQL5 sont semblables aux indicateurs dans C++. Exemples: MyObject® hobject= nev Myobyect() ; Il faut répéter encore une fois, qu 3 la différence de C++, la variable hobject de texemple au-dessus n'est pas lindicateur & la mémoire, elle est descripteur de tobjet Voir aussi Variables, |nitiatisation des variables, Portée de visibilité et la durée de vie des variables, Création et destruction des objets (© 2000-2010, MetaQuotes Software Corp. Za Principes de la langue MQL5 Les références. Le modificateur & et le mot-cle t La transmission des paramétres selon la référence ‘A MQLS on peut transmettre les paramétres des types simples selon la valeur ainsi que selon la référence, pendant que les paramétres des types complexes sont transmis toujours selon la référence, Pour tindication au compilateur sur la nécessité de la transmission du paramatre selon la référence, devant le nom du paramatre on met le signe ET commerdal &. La transmission du paramatre selon la référence signifie la transmission de adresse de la variable, est pourquoi tous les changements produits sur le paramétre transmis selon la référence, se refléteront tout de suite dans la variable initiale aussi. En utilisant la transmission des paramétres selon la référence on peut organiser le retour simultanément de quelques résultats de la fonction, Pour prévenir le changement du paramétre transmis selon la référence, il est nécessaire dutiliser le modificateur const. Ainsi, si le paramétre dentrée de la fonction est le tableau, tobjet de la structure ou de la dasse, dans le titre de la fonction aprés le type de la variable et devant son nom on met le symbole‘. Exemple class CDenoClass ‘ private: double m_array[]; public: void setarray(double earray[]); void CDemoClass: :setArray(double carray[]) Af (ArraySize (array)>0) ‘ ArrayResize (m_array, ArraySize (array) ) 7 ArrayCopy(m_array, array); : ) Dare texemple cité ci-dessus on a annoncé la classe CDemoClass, qui contient le membre particulier - le tableau m_array{] du type double. La fonction setArray() a été annoncée, auquelle on transmit le tableau array{] selon la référence. Si écrire le titre de la fonction sans indication de la transmission selon la référence, cest-8-dire enlever le signe ET commercial, & la tentative de la compilation dun tel code on donnera le message derreur. Maleré le fait que le tableau est transmis selon la référence, nous ne pouvons pas faire fattribution dun massif & (autre, Il est nécessaire de faire le copiage de chaque élément du contenu de tableau- source au tableau- récepteur. La présence du symbole & pour les tableaux et les structures & la transmission 8 titre du paramatre de la fonction est obligatoire 3 la description de la fonction. Le mot-cleé this (© 2000-2010, MetaQuotes Software Corp. Za Principes de la langue MQL5 La variable du type de la classe (tobjet) peut étre transmise selon la référence, ainsi que selon Uindicateur, Lindicateur comme la référence sert pour recevoir taccés 8 objet, Aprés tannonce de Uindex de objet il est nécessaire de lui apptiquer topérateur new pour sa création et tiitiatisation. Le mot réservé this est destiné & la réception de la référence de objet sur lui-méme, accessible & tintérieur des méthodes de la classe ou la structure. this se référe toujours @ objet, dont la méthode ilutilise, et expression GetPointer(this) donne findicateur de tobjet, dont le membre est la fonction, dans laquelle Cappel de fonction GetPointer() est effectué, A MQLS les fonctions ne peuvent pas rendre les objets, mais il est permis de rendre tindicateur de tobjet, Ainsi, stil est nécessaire que la fonction rendra objet, nous pouvons rendre tindicateur de cet objet en forme de GetPointer(this). Ajouterons & la description de la dasse CDemoClass la fonction getDemoClass(), qui rend findicateur de tobjet de cette classe. class CDenoClass ‘ private: double m_array[]; public: void setarray(double earray[]); (DenoClass ngetDemoClass() setarray(double carray[]) Af (ArraySize (array)>0) ‘ ArrayResize (m_array,ArraySize (array)) + ArrayCopy(m_atray, atray) ; ) ) Ue 7/| vend L'indicateur personnel Ue CDenoClass *CDemoClass: : getDemoClass (void) ‘ ‘return (GetPointer (this) ) ) Les structures rfont pas les indicateurs, on ne peut pas leur apptiquer les opérateurs new et delete, et on ne peut pas utiliser GetPointer(this). Voir aussi Les indicateurs des objets, La création et la destruction des objets, Le Domaine de la visibilité et le temps de la vie des variables (© 2000-2010, MetaQuotes Software Corp. Principes de la langue MQL5 Opérations et expressions On attache une importance spéciale & quelques caractéres et séquences de caractéres, C'est soi-disant les symboles dopérations, par exemple: + /% — symboles d'opérations arithmétiques eel symboles d'opérations logiques ete te symboles d'opérations d' attribution Les symboles dopération sont utilisés dans les expressions et ont le sens quand les opérandes se sont appropriées. Aussi on accorde de fimportance aux signes de ponctuation, Les signes de ponctuation comprennent des parenthéses, des parenthéses figurées, une virgule, des deux-points et un point- virgule. Les symboles des opérations, les signes de ponctuation et les espaces se servent pour séparer les éléments du langage. Cette section contient la description des thémes suivants + Expressions * Opérations arithm étiques * Opérations dattribution * Opérations des relations * Opérations lopiques * Opérations bit a bit * Autres opérations * Priorités et fordre des opérations (© 2000-2010, MetaQuotes Software Corp. = Principesde ta langue MQL5 Les expressions Ltexpression se compose dun ou de plusieurs opérandes et les symboles dopérations. Une expression peut étre écrite & plusieurs lignes, Exemples: att; b= 10; // plusieurs expressions sont situés sur une Ligne //--~ expression est divisée en plusieurs lignes xe (y"z)/ (w+ 2) +1275 Une expression qui se termine par un point-virgule (;) est Copérateur. Voir aussi Les priorités et fordre des opérations (© 2000-2010, MetaQuotes Software Corp. Principesde ta langue MQL5 Les opérations arithmétiques Les opérations additives et multiplicatives appartiennent aux opérations arithm étiques: Somme de variables aeg42 Diftérence de variables asg-% Changement du signe x Multiplication des valeurs zest x; Quotient de 1a division Leas: Excts de la division time % 60; Addition 1 a 1a valeur de la variable Addition 1 a 1a valeur de la variable Soustraction 1 de la valeur de la variable Soustraction 1 de la valeur de la variable Llopération dincrément et de décrément sont appliquées uniquement aux variables et ne s'appliquent as aux constantes. Lincrément (++i) et le décrément (--k) préfixes s'appliquent @ la variable juste avant (utilisation de cette variable dans expression, Lincrément (i++) et le décrément (k--) postfix s'appliquent & la variable juste avant tutilsation de cette variable dans texpression. Exemples: // expression valide Ant bs(att)"3;// expression invalide Voir aussi Les priorités et tordre d opérations (© 2000-2010, MetaQuotes Software Corp. Principes de la langue MQL5 Les opérations d'attribution La valeur de Cexpression qui inclut topération dattribution, est la valeur dopérande gauche aprés attribution: Avtribution de la valeur x a la variable y y Les opérations suivantes combinent les opérations arithmétiques ou les opérations bit & bit avec opération dattribution: Addition de la valeur de la variable y sur x Soustraction de la valeur de la variable y sur x Multiplication de 1a valeur de 1a variable y sur x Division de la valeur de 1a variable y sur x Excts de 1a division de 1a valeur de la variable y sur x Décalage de la représentation binaire de Y a droite par x bits Décalage de la représentation binaire de Y A gauche par x bits opération bit & bit ET des représentations binaires y et x WK opération bit & bit OU des représentations binaires y et x opération bit & bit excluant 0U des représentations binaires y et x y Les opérations bit & bit se produisent seulement avec des nombres entiers. A texécution de topération le progrés logique de la représentation y droite/’ gauche sur bit xest utilisé les 5 catégories cadettes binaires de ls valeur x, les catégories principales sont rejetées, cest-i-dire le progrés est produit sur bit 0-31. En exécutant Copération % (la valeur y sur le module x) le signe du résultat coincide avec le signe du dividende, Lopérateur dattribution peut étre utilisé plusieurs fois dans une expression. Dans ce cas-la le traitement de expression est exécuté de droite 8 gauche: yee3; Dabord, la valeur 3 sera attribuée & la variable x, aprés la valeur de la variable x sera attribuée & le valeur y c'est- & dire 3 aussi Voir aussi Les priorités et fordre des opérations (© 2000-2010, MetaQuotes Software Corp. Principes de la langue MQL5 Les opérations des relations La valeur logique FAUX est représentée par la valeur entiére de zéro, et la valeur VRAI est représentée par nlimporte quelle valeur non-zéro. FAUX (0) ou VRAI (1) sont la valeur expressions qui contiennent les opérations des relations ou les opérations logiques. Veai, si a est égal ab Vrai, si a n'est pas égal ab Veai, si a est moins que b Vrai, si a est plus que b Veai, si a est moins ou égal ab Vrai, si a est plus ou égal a b Ine faut pas comparer deux nombres réels & fégalité tun fautre, Dans la plupart des cas, les deux nombres apparemment identiques peuvent étre inégales & cause de la différence de la valeur dans le 15-iame signe aprés la virgule, Pour la comparaison correcte de deux nombres réels il faut comparer la difference normalisée de ces nombres @ la valeur nulle. Exemple: bool CompareDoubles (double number1,double number?) ‘ {Lf (Normal izeDouble (number1-number2,8) else return(false); ) void OnStart() ‘ double first: double secon double third=second-2.7; Af (first!=thira) ‘ if (CompareDoubles (first, third) ) printé("¥.16f 4.16£ pourtant sont égaux",first, third) ; ) return (true): ) // Résultat: 0. 3000000000000 0.29sssssesess9898 sont égaux Voir aussi Les priorités et fordre des opérations (© 2000-2010, MetaQuotes Software Corp. | Principes de la langue MQL5 Les opérations logiques Négation Logique NON (!) L’ opérande de la négation logique NON (!) doit avoir le type arithmétique. Le résuttat est égal au VRAI (1), si la valeur dopérande est FAUX(0) et est égal au FAUX(0), si fopérande n'est pas égal au FAUX(0). Af(!a) Print("pas ‘a! Opération logique OU (||) Une opération logique OU (||) des valeurs x et y. La valeur de expression est VRAI (1), si la valeur x ou y est vrai (pas le zéro). Au contraire ¢ est - FAUX (0) AE(K x ly: Exemple: char csalb; Print("a Print("a |b // Résultat sera: Wa=87 b= 98 Ialb=99 Opération bit a bit excluant OU Llopération bit & bit excluant OU (eXclusive OR) des représentations binaires x et y. La valeur de expression contient 1 dans les chiffres, dans lesquels x et y ont les valeurs binaires différentes, et 0 - dans tous les autres chiffres. bexry. (© 2000-2010, MetaQuotes Software Corp.

Vous aimerez peut-être aussi