




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
..精選實用文檔..精選MQL4ReferenceMQL4命令手冊〔本手冊采用Office2007編寫〕2021年2月..精選實用文檔..精選目錄MQL4Reference 1MQL4命令手冊 1Basics根底 12Syntax語法 12Comments注釋 12Identifiers標識符 12Reservedwords保存字 13Datatypes數據類型 13Typecasting類型轉換 14Integerconstants整數常量 14Literalconstants字面常量 14Booleanconstants布爾常量 15Floating-pointnumberconstants(double)浮點數常量〔雙精度〕 15Stringconstants字符串常量 15Colorconstants顏色常數 16Datetimeconstants日期時間常數 16Operations&Expressions操作表達式 17Expressions表達式 17Arithmeticaloperations算術運算 17Assignmentoperation賦值操作 17Operationsofrelation操作關系 18Booleanoperations布爾運算 18Bitwiseoperations位運算 19..精選實用文檔..精選Otheroperations其他運算 19Precedencerules優先規那么 20Operators操作符 21Compoundoperator復合操作符 21Expressionoperator表達式操作符 21Breakoperator終止操作符 21Continueoperator繼續操作符 22Returnoperator返回操作符 22Conditionaloperatorif-else條件操作符 23Switchoperator跳轉操作符 23Cycleoperatorwhile循環操作符while 24Cycleoperatorfor循環操作符for 24Functions函數 25Functioncall函數調用 26Specialfunctions特殊函數 27Variables變量 27Localvariables局部變量 28Formalparameters形式變量 28Staticvariables靜態變量 29Globalvariables全局變量 29Definingexternvariables外部定義變量 30Initializationofvariables初始化變量 30Externalfunctionsdefinition外部函數的定義 30Preprocessor預處理 31Constantdeclaration常量聲明 31..精選實用文檔..精選Controllingcompilation編譯控制 32Includingoffiles包含文件 32Importingoffunctions導入功能 33Standardconstants標準常數 35Seriesarrays系列數組 35Timeframes圖表周期時間 35Tradeoperations交易操作 36Priceconstants價格常數 36MarketInfo市場信息識別符 36Drawingstyles畫線風格 37Arrowcodes預定義箭頭 38Wingdings宋體 39Webcolors顏色常數 39Indicatorlines指標線 40IchimokuKinkoHyo 41MovingAveragemethods移動平均方法 41MessageBox信息箱 41Objecttypes對象類型 43Objectproperties對象屬性 44Objectvisibility 45Uninitializereasoncodes撤銷初始化原因代碼 45Specialconstants特別常數 46Errorcodes錯誤代碼 46Predefinedvariables預定義變量 50Ask最新賣價 50..精選實用文檔..精選Bars柱數 50Bid最新買價 50Close[]收盤價 51Digits匯率小數位 51High[]最高價 51Low[]最低價 52Open[]開盤價 53Point點值 53Time[]開盤時間 53Volume[]成交量 54ProgramRun程序運行 56ProgramRun程序運行 56Importedfunctionscall輸入函數調用 57Runtimeerrors運行錯誤 57Accountinformation賬戶信息 68AccountBalance()賬戶余額 68AccountCredit()賬戶信用點數 68AccountCompany()賬戶公司名 68AccountCurrency()根本貨幣 68AccountEquity()賬戶資產凈值 68AccountFreeMargin()賬戶免費保證金 69AccountFreeMarginCheck()賬戶當前價格自由保證金 69AccountFreeMarginMode()賬戶免費保證金模式 69AccountLeverage()賬戶杠桿 69AccountMargin()賬戶保證金 69..精選實用文檔..精選AccountName()賬戶名稱 70AccountNumber()賬戶數字 70AccountProfit()賬戶利潤 70AccountServer()賬戶連接效勞器 70AccountStopoutLevel()賬戶停止水平值 70AccountStopoutMode()賬戶停止返回模式 71Arrayfunctions數組函數 72ArrayBsearch()數組搜索 72ArrayCopy()數組復制 72ArrayCopyRates()數組復制走勢 73ArrayCopySeries()數組復制系列走勢 74ArrayDimension()返回數組維數 75ArrayGetAsSeries()返回數組序列 75ArrayInitialize()數組初始化 75ArrayIsSeries()判斷數組連續 75ArrayMaximum()數組最大值定位 76ArrayMinimum()數組最小值定位 76ArrayRange()返回數組指定維數數量 76ArrayResize()改變數組維數 77ArraySetAsSeries()設定系列數組 77ArraySize()返回數組工程數 78ArraySort()數組排序 78Checkup檢查 79GetLastError()返回最后錯誤 79IsConnected()返回聯機狀態 79..精選實用文檔..精選IsDemo()返回模擬賬戶 79IsDllsAllowed()返回dll允許調用 80IsExpertEnabled()返回智能交易開啟狀態 80IsLibrariesAllowed()返回數據庫函數調用 80IsOptimization()返回策略測試中優化模式 81IsStopped()返回終止業務 81IsTesting()返回測試模式狀態 81IsTradeAllowed()返回允許智能交易 81IsTradeContextBusy()返回其他智能交易忙 82IsVisualMode()返回智能交易“圖片模式〞 82UninitializeReason()返回智能交易初始化原因 82Clientterminal客戶端信息 83TerminalCompany()返回客戶端所屬公司 83TerminalName()返回客戶端名稱 83TerminalPath()返回客戶端文件路徑 83Commonfunctions常規命令函數 84Alert彈出警告窗口 84Comment顯示信息在走勢圖左上角 84GetTickCount獲取時間標記 84MarketInfo在市場觀察窗口返回不同數據保證金列表 85MessageBox創立信息窗口 85PlaySound播放聲音 86Print窗口中顯示文本 86SendFTP設置FTP 86SendMail設置Email 87..精選實用文檔..精選Sleep指定的時間間隔內暫停交易業務 87Conversionfunctions格式轉換函數 88CharToStr字符轉換成字符串 88DoubleToStr雙精度浮點轉換成字符串 88NormalizeDouble給出環繞浮點值的精確度 88StrToDouble字符串型轉換成雙精度浮點型 89StrToInteger字符串型轉換成整型 89StrToTime字符串型轉換成時間型 89TimeToStr時間類型轉換為"yyyy.mm.ddhh:mi"格式 89Customindicators自定義指標 91IndicatorBuffers 91IndicatorCounted 92IndicatorDigits 92IndicatorShortName 93SetIndexArrow 94SetIndexBuffer 94SetIndexDrawBegin 95SetIndexEmptyValue 95SetIndexLabel 96SetIndexShift 97SetIndexStyle 98SetLevelStyle 98SetLevelValue 99Date&Timefunctions日期時間函數 100Day 100..精選實用文檔..精選DayOfWeek 100DayOfYear 100Hour 100Minute 101Month 101Seconds 101TimeCurrent 101TimeDay 102TimeDayOfWeek 102TimeDayOfYear 102TimeHour 102TimeLocal 102TimeMinute 103TimeMonth 103TimeSeconds 103TimeYear 103Year 104Filefunctions文件函數 105FileClose關閉文件 105FileDelete刪除文件 105FileFlush將緩存中的數據刷新到磁盤上去 106FileIsEnding文件結尾 106FileIsLineEnding 107FileOpen翻開文件 107FileOpenHistory歷史目錄中翻開文件 108..精選實用文檔..精選FileReadArray將二進制文件讀取到數組中 108FileReadDouble從文件中讀取浮點型數據 109FileReadInteger從當前二進制文件讀取整形型數據 109FileReadNumber 109FileReadString從當前文件位置讀取字串符 110FileSeek文件指針移動 110FileSize文件大小 111FileTell文件指針的當前位置 111FileWrite寫入文件 112FileWriteArray一個二進制文件寫入數組 112FileWriteDouble一個二進制文件以浮動小數點寫入雙重值 113FileWriteInteger一個二進制文件寫入整數值 113FileWriteString當前文件位置函數寫入一個二進制文件字串符 114Globalvariables全局變量 115GlobalVariableCheck 115GlobalVariableDel 115GlobalVariableGet 115GlobalVariableName 116GlobalVariableSet 116GlobalVariableSetOnCondition 116GlobalVariablesDeleteAll 117GlobalVariablesTotal 117Math&Trig數學和三角函數 119MathAbs 119MathArccos 119..精選實用文檔..精選MathArcsin 119MathArctan 120MathCeil 120MathCos 120MathExp 121MathFloor 121MathLog 122MathMax 122MathMin 122MathMod 122MathPow 123MathRand 123MathRound 123MathSin 124MathSqrt 124MathSrand 124MathTan 125Objectfunctions目標函數 126ObjectCreate建立目標 126ObjectDelete刪除目標 127ObjectDescription目標描述 127ObjectFind查找目標 127ObjectGet目標屬性 128ObjectGetFiboDescription斐波納契描述 128ObjectGetShiftByValue 128..精選實用文檔..精選ObjectGetValueByShift 129ObjectMove移動目標 129ObjectName目標名 129ObjectsDeleteAll刪除所有目標 130ObjectSet改變目標屬性 130ObjectSetFiboDescription改變目標斐波納契指標 131ObjectSetText改變目標說明 131ObjectsTotal返回目標總量 131ObjectType返回目標類型 132Stringfunctions字符串函數 133StringConcatenate字符串連接 133StringFind字符串搜索 133StringGetChar字符串指定位置代碼 133StringLen字符串長度 134StringSetChar 134StringSubstr提取子字符串 134StringTrimLeft 135StringTrimRight 135Technicalindicators技術指標 136iAC比爾.威廉斯的加速器或減速箱振蕩器 136iAD離散指標 136iAlligator比爾?威廉斯的鱷魚指標 136iADX移動定向索引 137iATR平均真實范圍 137iAO比爾.威廉斯的振蕩器 138..精選實用文檔..精選iBearsPower熊功率指標 138iBands保力加通道技術指標 138iBandsOnArray保力加通道指標 139iBullsPower牛市指標 139iCCI商品通道索引指標 139iCCIOnArray商品通道索引指標 140iCustom指定的客戶指標 140iDeMarker 140iEnvelopes包絡指標 141iEnvelopesOnArray包絡指標 141iForce強力索引指標 142iFractals分形索引指標 142iGator隨機震蕩指標 142iIchimoku 143iBWMFI比爾.威廉斯市場斐波納契指標 143iMomentum動量索引指標 143iMomentumOnArray 144iMFI資金流量索引指標 144iMA移動平均指標 144iMAOnArray 145iOsMA移動振動平均震蕩器指標 145iMACD移動平均數匯總/別離指標 146iOBV能量潮指標 146iSAR拋物線狀止損和反轉指標 146iRSI相對強弱索引指標 147..精選實用文檔..精選iRSIOnArray 147iRVI相對活力索引指標 147iStdDev標準偏差指標 148iStdDevOnArray 148iStochastic隨機震蕩指標 148iWPR威廉指標 149Timeseriesaccess時間序列圖表數據 150iBars柱的數量 150iBarShift開始時間的柱 150iClose 150iHigh 151iHighest 151iLow 152iLowest 152iOpen 152iTime 153iVolume 153Tradingfunctions交易函數 155Executionerrors 155OrderClose 157OrderCloseBy 158OrderClosePrice 158OrderCloseTime 158OrderComment 159OrderCommission 159..精選實用文檔..精選OrderDelete 159OrderExpiration 160OrderLots 160OrderMagicNumber 160OrderModify 160OrderOpenPrice 161OrderOpenTime 161OrderPrint 162OrderProfit 162OrderSelect 162OrderSend 163OrdersHistoryTotal 164OrderStopLoss 164OrdersTotal 164OrderSwap 165OrderSymbol 165OrderTakeProfit 165OrderTicket 166OrderType 166Windowfunctions窗口函數 167HideTestIndicators隱藏指標 167Period使用周期 167RefreshRates刷新預定義變量和系列數組的數據 167Symbol當前貨幣對 168WindowBarsPerChart可見柱總數 168..精選實用文檔..精選WindowExpertName智能交易系統名稱 169WindowFind返回名稱 169WindowFirstVisibleBar第一個可見柱 169WindowHandle 169WindowIsVisible圖表在子窗口中可見 170WindowOnDropped 170WindowPriceMax 170WindowPriceMin 171WindowPriceOnDropped 171WindowRedraw 172WindowScreenShot 172WindowTimeOnDropped 173WindowsTotal指標窗口數 173WindowXOnDropped 173WindowYOnDropped 174Obsoletefunctions過時的函數 175..精選實用文檔..精選MetaQuotesLanguage4(MQL4)是一種新的內置型程序用來編寫交易策略。這種語言可以創立你自己的智能交易,使自己的交易策略能夠完全自動地執行。而且,MQL4還能自定義客戶指標,腳本和數據庫。內包含了大量可以分析當前及歷史報價所必須的函數,以及一些根本的運算和邏輯操作。并內置了一些根本的指標和操作命令。MetaEditor4集合了編寫MQL4程序代碼的各種語句,它能幫助使用者方便地寫出標準的代碼。MetaQuotesLanguageDictionary是MQL4語言的幫助工具,它包含了我們在使用工程中所有可能用到的函數。MetaQuotesLanguage4可以編寫不同作用的程序代碼:■智能交易是一種連接到特定圖表的自動交易系統。它能夠根據設置的節點自動啟動,當它開始運行后,它不會同時去處理另一個新的指令(也就是說必須等到當前程序完成)。這種交易系統能夠在提醒用戶可以交易的同時,將交易定單自動送到交易效勞器。與大多數交易系統一樣,它也能夠用歷史數據測試交易策略,并在圖表上顯示出來。智能交易存儲在terminal_directory\experts。■自定義指標可用來編寫新的技術指標,和內置的指標一樣,它不能用來進行自動交易,只能作為分析數據的工具。自定義指標儲存在terminal_directory\experts\indicators。■腳本是執行單一功能的一段程序,和智能交易不同,腳本不能單獨執行,只能被調用。腳本存儲在terminal_dictionary\experts\scripts。■數據庫常被使用的自定義函數的集合。數據庫不能單獨運行。數據庫建議存儲在terminal_directory\experts\libraries。■包含文件包含文件常被使用的程序塊源代碼,這些文件能夠被包含在智能交易,腳本,客戶指標和數據庫的源代碼中。使用包含文件比調用資料庫更靈活快捷。包含文件交易儲存在terminal_directory\experts\include。..精選實用文檔..精選Basics根底MetaQuotesLanguage4(MQL4)是一種新型的交易策略內置語言。用來編寫交易策略的程序語言。這種語言可以創立你自己的智能交易,使自己的交易策略能夠完全地自動執行。程序內包含了分析歷史報價的必備函數,以及一些根本的運算法和邏輯操作和一些根本的指標和操作命令。而且,MQL4還能自定義自己的客戶指標,腳本和數據庫。Syntax語法MQL4的語法類似于C語言,除了以下這些特點:沒有運算地址;沒有do...while語句;沒有goto...語句;沒有[條件][表達式1]:[表達式2]語句;沒有復合數據類型(結構);復合負值是不允許的,例如:val1=val2=0;arr[i++]=val;cond=(cnt=OrdersTotal)>0;等等;邏輯表達式的計算完成前不可以提前終止。Comments注釋多行注釋使用/*作為開始到*/結束,在這之間不能夠嵌套。單行注釋使用//作為開始到新的一行結束,可以被嵌套到多行注釋之中。例如://單獨注解/*multi-line//嵌入單獨注解comment*/..精選實用文檔..精選Identifiers標識符標識符用來給變量、函數和數據類型進行命名,長度不能超過31個字節,你可以使用數字0-9、拉丁字母大寫A-Z和小寫a-z(大小寫有區分的)還有下劃線(_)。此外首字母不可以是數字,標識符不能和保存字沖突.例如:NAME1namelTotal_5PaperReservedwords保存字下面列出的是固定的保存字。不能使用以下任何保存字進行命名。數據類型儲存類型操作符其他bool布爾數據externbreakfalsecolor顏色數據staticcasetruedatetime日期時間數據continuedouble浮點型數據defaultint整型數據elsestring字符串數據forvoidif字符數據(char)returnswitchwhile..精選實用文檔..精選Datatypes數據類型所有的程序都依靠數據來運作,數據因目的不同可以有不同的類型。比方,訪問數組可以用整型數據,價格可以用雙精度的浮點型數據。在MQL4中沒有專門用來標記貨幣值的數據類型。不同的數據類型有不同的處理速度,整型數據是最快的。雙精度的數據處理需要額外的處理器,所以處理浮點型數據比擬復雜,比處理整型數據慢一些。字符串是處理速度最慢的,因為它要存取動態內存。主要的數據類型如下:整型數據(int)布爾數據(bool)字符數據(char)字符串數據(string)浮點型數據(double)顏色數據(color)日期時間數據(datetime)color和datetime可以使我們更清楚的區分圖表中的內容,在expertadvisor和indicator中經常使用這些數據類型。顏色和日期時間數據用整數來表示。int和double都屬于數值〔數字〕型。在表達式運算中使用強制的類型轉換。Typecasting類型轉換表達式中使用強制的數據轉換,轉換時類型的優先級如下:int(bool,color,datetime);double;string;在運算完成之前(除了數據已被定義的),數據會根據優先級被轉換。當定義數據的操作完成前,數據會轉換成被定義的數據類型。..精選實用文檔..精選例如:inti=1/2;//沒有類型轉換,結果為0inti=1/2.0;//表達式中有浮點型數據,但會轉換成整型數據,結果為0類型轉換不但運用在常量中,還被運用在相應的變量中。Integerconstants整數常量十進制:數字0-9,包括負數。例如:12,111,-9561007十六進制:數字0-9,字面a-f或者A-F代表10-15;以0x或者0X開頭。例如:0x0A,0x12,0X12,0x2f,0xA3,0Xa3,0X7C7整型數據占用4字節的空間,其數值范圍介于-2147483648~2147483647之間。如果超出這個范圍,那么視為無效。Literalconstants字面常量任何帶單引號的單一字符或者十六進制的ASCII碼如'\x10'都是字符數據。一些特殊的字符如單引號(')、雙引號(")、問號(?)、反斜線(\)和控制符必須以反斜線開頭(\),組合表達原來的意思,如下表所示:換行NL(LF)\n制表符HT\t..精選實用文檔..精選回車CR\r反斜線\\\單引號'\'雙引號"\"十六進制ASCIIhh\xhh如果上述字符不使用反斜線,結果將不被定義:inta='A';intb='$';intc='?';//代碼0xA9intd='\xAE';//貨幣對代碼?字符數據占用4字節的空間。其數值范圍介于0~255之間。如果超出這個范圍,那么視為無效。Booleanconstants布爾常量Boolean用來表示是和否,還可以用數字1和0進行表示。True和Flase可以忽略大小寫。例如:boola=true;boolb=false;boolc=1;它的十進制表示一個長度為4-byte的整數值。Boolean常數可以表示0或1值。Floating-pointnumberconstants(double)浮點數常量〔雙精度〕浮點型數據由整數局部、小數點(.)和小數局部組成,其中整數局部和小數局部為一系列十進制數字。..精選實用文檔..精選例如:doublea=12.111;doubleb=-956.1007;doublec=0.0001;doubled=16;浮點型數據(雙精度)占用4字節的空間。其數值范圍介于-1.7*e-308~1.7*e308之間。如果超出這個范圍,那么視為無效。Stringconstants字符串常量字符串數據是帶有雙引號的一連串ASCII字符,如:"Characterconstant"。字符串數據是引號里的一組字符,如果字符串中需要插入一個雙引號(")必須在它前面使用反斜線(\)。任何特殊字符都必須有前置的反斜線(\)才能在字符串中使用。字符串可以容納0到255個字符,如果超過這個長度,右邊多余的字符將被忽略,編譯器也會有相應的警示。例如s:"Thisisacharacterstring""Copyrightsymbol\t\xA9""thislinecontainsalinefeedsymbol\n""C:\\ProgramFiles\\MetaTrader4""A""1234567890""0""$"字符串數據占用8個字節的空間。其中第一局部為長的整型存儲字符串緩沖區分布的長度。第二局部是32位的存儲字符串緩沖區的地址。Colorconstants顏色常數顏色數據可以用三種方法表示:字符數據、整型數據或者是顏色名(只能是Webcolors中已命名的).字符數據的表達方法是用三個數字來表示三種主要顏色:紅、綠、藍的比例。以C開頭,用單引號括住。數字的值在0~255之間按比例選取。..精選實用文檔..精選整數數據的表達方法使用十六進制或十進制數字。十六進制數字如0x00BBGGRR,其中RR是紅色的比例,GG是綠色的比例,BB是藍色的比例。十進制數不能直接表達紅綠藍的比例,而是十六進制數字的十進制表示方式。特殊的顏色名可以參考Webcolorsset表。例如://字符數據C'128,128,128'//灰色C'0x00,0x00,0xFF'//藍色//顏色名RedYellowBlack//整型數據0xFFFFFF//白色16777215//白色0x008000//綠色32768//綠色顏色數據占用4字節的空間。第一個字節一般被忽略,后三個字節包含了紅綠藍的組成信息。Datetimeconstants日期時間常數日期時間數據由6個局部的字符組成:年、月、日、時、分、秒,以D開頭,用單引號括起。日期(年、月、日)或者時間(時、分、秒)甚至兩者一起都可以不用填寫。日期時間數據開始于1.1.1970截止到12.31.2037例如:D'2004.01.0100:00'//新年D'1980.07.1912:30:27'..精選實用文檔..精選D'19.07.198012:30:27'D'19.07.198012'//等于D'1980.07.1912:00:00'D'01.01.2004'//等于D'01.01.200400:00:00'D'12:30:27'//等于D'[編譯日期]12:30:27'D''//等于D'[編譯日期]00:00:00'日期時間數據占用4字節空間長度的整型數值。其值從1970年1月00:00開始以秒的形式顯示總數。Operations&Expressions操作表達式一些數字和字符的組合是特別重要的,它們被稱為運算符,例如:+-*/%算術運算符&&||邏輯運算符=+=*=負值運算符運算符應用在表達式中實現特定的作用。需要特別注意標點符號如圓括號、方括號、逗號、冒號、分號。運算符、標點符號、空格用來分割語句的不同局部。Expressions表達式一個表達式可以擁有多個字符和操作符,一個表達式可以寫在幾行里面。例如:a++;b=10;x=(y*z)/(w+2)+127;一個表達式的最后一個分號(;)操作符。..精選實用文檔..精選Arithmeticaloperations算術運算算術運算符包括加法和乘法運算:求和i=j+2;求差i=j-3;改變運算符x=-x;求積z=3*x;求商i=j/5;求模minutes=time%60;自加1i++;自減1k--;添加1的運算符不能使用在表達式中。例如:inta=3;a++;//有效表達式intb=(a++)*3;//無效表達式Assignmentoperation賦值操作表達式的值包括左邊值給出的賦值運算符。把變量x的值賦予變量yy=x;以下表達式中賦值運算符結合了算術運算符或位運算符:在y值上加上xy+=x;在y值上減去xy-=x;在y值上乘以xy*=x;在y值上除以xy/=x;在y值上求x的模y%=x;..精選實用文檔..精選把y值向右做x位邏輯移位y>>=x;把y值向左做x位邏輯移位y<<=x;AND位運算符y&=x;OR位運算符y|=x;把x和y按做邏輯異或的操作y^=x;表達式中可以只能有一個賦值運算符。位運算符只能用于整型數據。邏輯移位運算符中x值只能是小于5位的二進制數,過大的數值將會被拒絕。所以移動范圍只能是0到31。用%=運算符(用x的模板求y值),其結果等于余數。Operationsofrelation操作關系邏輯值FALSE代表整數零值,邏輯值TRUE代表不同于零的任何值。用返回0(False)或1(True)來表示兩個量之間的關系。等于ba=b;不等于ba!=b;小于ba<b;大于ba>b;小于等于ba<=b;大于等于ba>=b;2個不標準的浮點型數據不能用=或!=運算符比擬,但是我們可以把2者相減,正常化后和null進行比擬。Booleanoperations布爾運算否認運算符(!),用來表示真假的反面的結果。如果運算值是FALSE(0)結果為TRUE(1);如果運算不同于FALSE(0)等于FALSE(0)。if(!a)Print("不是'a'");x和y值的邏輯運算符或OR(||)用來表示兩個表達式只要有一個成立即可。如果x和y值為真的,表達式值為TRUE(1)。否那么,值為FALSE(0)。邏輯表達式被完全計算。..精選實用文檔..精選if(x<0||x>=max_bars)Print("超出范圍");x和y值的邏輯運算符AND(&&)。如果x和值都是真實的,表達式值為TRUE(1)。Otherwise,itisFALSE(0).if(p!=x&&p>y)Print("TRUE");Bitwiseoperations位運算運算符對操作數執行按位求補操作。表達式的數字值中包含1,其中n包含0和數字值中包含0,其中n包含1。b=~n;運算符x向右移動到數字y代表二進制代碼。向右移動是邏輯運算,即左側將被零填滿。x=x>>y;運算符x向右移動到數字y代表二進制代碼。左側將被零填滿x=x<<y;二進制的x和y代表位邏輯運算符AND。在所有數組中x和y的值都不含有零表達式的值包含1(TRUE);在所有其他數字中包含0(FALSE)。b=((x&y)!=0);二進制的x和y代表位邏輯運算符OR。在所有數字中x和y的值都不等于零表達值包含1并且在所有其他數字中包含0。b=x|y;二進制的x和y代表位邏輯運算符EXCLUSIVE。在所有數字中x和y的值都不同于二進制值表達值包含1并且在所有其他數字中包含0。b=x^y;位邏輯運算符只作用于Integers類型。Otheroperations其他運算指數在數組第一元素的位置,表達式值為i的系列數變量值。..精選實用文檔..精選例如:array[i]=3;//數組的3的計算值到第i個元素。只有整數能夠成為數組指數。四維以下的數組是禁止的。每組的檢測是從0到測量大小-1。特定情況下,對于維數組由50個元素組成,參照的第一個數組將為[0],這樣最后一個數組將是[49]。獲取超出數組,將會發生常規錯誤ERR_ARRAY_INDEX_OUT_OF_RANGE,可以調用GetLastError()函數。調用x1,x2,...,xn自變數函數每一個自變數可以顯示一個常數,一個變量和相應類型表達式。自變數的通過必須根據通道命令。用此函數返回表達式值。如果返回的表達式值為空,一些函數不能進行中轉。請確認表達式x1,x2,...,xn是按照命令執行的。例如:doubleSL=Bid-25*Point;intticket=OrderSend(Symbol(),OP_BUY,1,Ask,3,SL,Ask+25*Point,"Mycomment",123,0,Red);標點操作符從左到右的表達式用標點分開。所有表達式的計算是從左至右的。結果類型和值相互吻合,說明表達式是正確的。參量列表可以作為范例被通過。例如:for(i=0,j=99;i<100;i++,j--)Print(數組[i][j]);Precedencerules優先規那么下面是從上到下的運算優先規那么,優先級高的將先被運算。()函數調用從左到右[]數組元素參考!真假運算符從右到左..精選實用文檔..精選-改變運算符++增量--減量~位邏輯運算符&位邏輯運算符AND從左到右|位邏輯運算符OR^位邏輯運算符OR<<左移>>右移*乘法從左到右/除法%百分比+加法從左到右-減法<小于從左到右<=小于等于>大于>=大于等于==等于!=不等于||邏輯OR從左到右&&邏輯AND從左到右=值從右到左+=加法值-=減法值..精選實用文檔..精選*=乘法值/=除法值%=百分比值>>=右移值<<=左移值&=位邏輯運算符AND值|=位邏輯運算符OR值^=位邏輯運算符OR值,逗號從左到右插入語會顯示所優先執行的運算注意:在MQL4程序中執行優先運算不同于在C語言范圍內的運算。Operators操作符語言操作符必須對執行完成任務的一些運算法操作進行描述。程序本身是這樣的序列語句。語句逐個隨后以分號別離。一個語句能占領一條或幾條線。二個或更多語句可能位于同樣線。單獨執行命令的語句(if,if-else,switch,whileandfor)可以相互插入例如:if(Month()==12)if(Day()==31)Print("新年快樂!");Compoundoperator復合操作符一個復合操作符有一個(一個區段)和由一個或多個任何類型的操作符組成的的附件{}.每個表達式使用分號作為結束(;)。例如:if(x==0)..精選實用文檔..精選{Print("無效位置x=",x);return;}Expressionoperator表達式操作符任何以分號(;)結束的表達式都被視為是一個操作符。這里是一些表達式操作符得范例:稱號運算符:Identifier=expression;x=3;y=x=3;//錯誤稱號運算符在表達式操作符中只限一次使用。函數調用運算符:Function_name(argument1,...,argumentN);FileClose(file);空運算符:它是由分號(;)組成并且使用在一個檢測運算符中。Breakoperator終止操作符一個嵌入操作符終止最近外部操作符switch,while或for的執行。在終止操作符之后給出檢測操作符。這個操作符的目的之一:當中心值指定為變量時,操作符完成循環執行。例如://搜索第一個零元素for(i=0;i<array_size;i++)if((array[i]==0)break;..精選實用文檔..精選Continueoperator繼續操作符一個繼續操作符。我們將其放在嵌套內的指定位置,用來在指定情況下跳過接下來的運算,直接跳入下一次的循環while或for操作符。操作符嵌入位置與此操作符相反。例如://總結數組非零元素intfunc(intarray[]){intarray_size=ArraySize(array);intsum=0;for(inti=0;i<array_size;i++){if(a[i]==0)continue;sum+=a[i];}return(sum);}Returnoperator返回操作符一個return將需要返回的結果放在return后面的()中。例如:intCalcSum(intx,inty){return(x+y);}在函數中省缺值類型被返回,此return操作符必須使用:..精選實用文檔..精選voidSomeFunction(){Print("Hello!");return;//這個操作符被刪除}函數正確的震動表示return操作符執行。Conditionaloperatorif-else條件操作符如果表達式為true,操作符執行并按照操作符1給出的檢測。如果表達式為false,操作符2執行。if(expression)operator1elseoperator2if操作符else局部可能被忽略。if操作符忽略else局部,顯示分歧可能會嵌入。這種情況下,else位置在先前if操作符的最近部位,這樣不會出現else局部。例如://else局部提及到第二個if操作符:if(x>1)if(y==2)z=5;elsez=6;//else局部提及到第一個if操作符:if(x>l){if(y==2)z=5;}..精選實用文檔..精選elsez=6;//嵌入操作符if(x=='a'){y=1;}elseif(x=='b'){y=2;z=3;}elseif(x=='c'){y=4;}elsePrint("ERROR");Switchoperator跳轉操作符在case全部變量和相應表達式值檢測的操作符之內比擬常數表達式值。每一個case變量會在整數或常數表達式內標注。常數表達式不包含函數變量調用。switch表達式操作符必須是整數類型。switch(expression){caseconstant:operatorscaseconstant:operators精選實用文檔..精選default:operators}如果在case操作符等于表達式值,操作符default標簽連接將會執行。此default變量無需在最后。如果相應表達式值和default變量沒有獲取,不會有任何執行。關鍵詞case和常數被標注,并且if操作符執行case變量,程序將執行以下所有操作符直至break操作符生成。一個常數表達式的計算是在編譯期間。在一個switch操作符內部存在兩個相同值的常數。例如:switch(x){case'A':Print("CASEA");break;case'B':case'C':Print("CASEBorC");break;default:Print("NOTA,BorC");break;}Cycleoperatorwhile循環操作符while如果表達式為true,操作符執行直至表達式變成false。如果表達式為false,將檢測最近操作符。while(expression)operator;..精選實用文檔..精選在操作符執行前,一個表達式值已經被指定。不過,如果開始表達式為false,操作符根本不會執行。例如:while(k<n){y=y*x;k++;}Cycleoperatorfor循環操作符for用表達式1Expression來定義初始變量,當表達式2Expression2為真的時候執行操作運算符,在每次循環結束后執行表達式3Expression3。如果true,運算符for將被執行。循環重復直至Expression2變為false。如果false,循環將會被中斷并且檢測運算符文本。稍候執行。for(Expression1;Expression2;Expression3)operator;此for運算符以下運算符成功:Expression1;while(Expression2){operator;Expression3;};使用for(;)可以造成一個死循環如同while(1)一樣.表達式1和表達式3都可以內嵌多個用逗號(,)分割的表達式。<例如:for(x=1;x<=7;x++)Print(MathPower(x,2));..精選實用文檔..精選for(;;){Print(MathPower(x,2));x++;if(x>10)break;}for(i=0,j=n-l;i<n;i++,j--)a[i]=a[j];Functions函數函數是局部程序的一個名稱,它可以在需要時從任何一個局部調用。它是由定義分類返回值,名稱,形式參量和合成運算符組成并執行的。通過的總數被限定在64個字符之內。例如:double//被返回值的類型linfunc(doublex,doublea,doubleb)//函數名稱和參量列表{//合成運算符return(a+b);//返回值}"返回"運算符可以返回在這個運算符內表達式的值。如果需要,此表達式值可以轉換為函數結果類型。函數沒有返回的值必定是“省缺〞類型。例如:voiderrmesg(strings){Print("錯誤:"+s);}通過函數的參量可能存在由特定類型常數指定的默認值。..精選實用文檔..精選例如:intsomefunc(doublea,doubled=0.0001,intn=5,boolb=true,strings="passedstring"){Print("需求參量a=",a);Print("以下參量被傳送:d=",d,"n=",n,"b=",b,"s=",s);return(0);}如果此默認值指定一個參量,那么所有的參量也必須存在默認值。錯誤范例:intsomefunc(doublea,doubled=0.0001,intn,boolb,strings="passedstring"){}Functioncall函數調用如果顯示的文件沒有描述,它將考慮上下文的聯系作為函數名稱。函數名稱(x1,x2,...,xn)自變數(形式參量)以值的形式通過。計算每一個表達式xl,...,xn并將其值發送到函數。表達式計算命令值是被保證的。在執行系統測試數字和自變數類型期間會給出函數。這種形式的函數調用被稱作調用值。調用函數是一個通過函數返回的表達式的值。描述函數類型必須相應類型返回的值。全球范圍內程序的任何一個局部函數是被公布或描述的,即其他函數之外。在另外函數里,函數不能被公布或描述。例如:intstart(){doublesome_array[4]={0.3,1.4,2.5,3.6};doublea=linfunc(some_array,10.5,8);..精選實用文檔..精選//...}doublelinfunc(doublex[],doublea,doubleb){return(a*x[0]+b);}函數的調用是默認參量,通過參量的列表是被限定的,但不是之前的第一默認參量。例如:voidsomefunc(doubleinit,doublesec=0.0001,intlevel=10);//functionprototypesomefunc();//錯誤調用,第一請求參量必須存在。somefunc(3.14);//正確調用somefunc(3.14,0.0002);//正確調用somefunc(3.14,0.0002,10);//正確調用當我們調用一個函數時,不可以忽略參量,存在默認值:somefunc(3.14,,10);//錯誤調用。第二參量被忽略。Specialfunctions特殊函數在MQL4中存在三種預定義名稱函數:init()在載入時調用,可以用此函數在開始自定義指標或者自動交易之前做初始化操作。start()是根本函數。對于智能交易,在下一個價格變動進入之后被調用。對于客戶指標,在指標添加到圖表之后,客戶端開始(如果指標添加到圖表)并且下一個價格變動進入之后,函數被調用。對于腳本,在腳本被添加到圖表之后立即執行并初始化。如果在模板中不存在start()函數,模板(智能交易,腳本或客戶指標)不能開啟。deinit()當數據變動時觸發,對于自定義指標或者自動交易的編程主要依靠此函數進行預定義函數需要一些參量。不過,當這些參量被客戶端調用時,外部沒有參量提供。start(),init()和deinit()函數從模板的任何一點按照常規調用,等于其他函數。不建議從init()函數調用start()函數或是執行交易業務,作為圖表數據,市場開價格。模板的初始化會出現殘缺。這時,init()和deinit()函數必須盡可能結束運行。在調用start()函數之前,嘗試重新全面開啟運行。..精選實用文檔..精選Variables變量可變量必須在公開之前使用。可變量必須擁有特殊的識別名。相關可變量的定義描述會顯示。根本類型如下:布爾數據-布爾值的true和false;字串符數據-特殊字符串;雙精度數字-帶有浮點雙精度數字。例如:stringMessageBox;intOrders;doubleSymbolPrice;boolbLog;附加類型:顏色為整數代表RGB顏色;日期時間為日期和時間,起始時間從1979年1月上午0.00開始以秒數計算。添加數據類型在輸入參量的屬性窗口方便查看。例如:datetimetBegin_Data=D'2004.01.0100:00';colorcModify_Color=C'0x44,0xB9,0xE6';數組相同數列數據被標注序列。inta[50];//50整數的一維數組doublem[7][50];//7個數組的二維數組..精選實用文檔..精選//每一個由50個整數組成。唯一整數可以是數組指數。不允許四唯數列。數組元素開始編號為0。一個一維列陣的最后元素是1的數字比列陣大小。這就意味著,請求數列的最后元素包括50個整數將出現作為a[49]。維度被標注從0到維度大小-1.一個二維數組的最后元素從例如將出現作為m[6][49]。如果訪問超出數列范圍,執行系統將發生錯誤可能生成錯誤ERR_ARRAY_INDEX_OUT_OF_RANGE,在GetLastError()函數中可以得到。Localvariables局部變量在任意的地方內可變量的公開是局部的。局部變量在公開的局部里是被限定的。局部變量可以由任意一個表示結果初始化。每次函數的運行只可以初始化一個局部變量。局部變量儲存在相應的存儲器上。例如:intsomefunc(){intret_code=0;return(ret_code);}Formalparameters形式變量通過函數的變量是局部的。范圍是在作用塊內。在作用之內正式變量的名稱必須不同于其他外部定義變量和函數變量。作用塊內的正式變量值已經被賦予。例如:voidfunc(intx[],doubley,boolz){if(y>0.0&&!z)Print(x[0]);..精選實用文檔..精選...}正式參量可能由常數初始化。在這種情況下,初始化的值作為缺省值被考慮。參量,在旁邊〔intialized〕,必須初始化。例如:voidfunc(intx,doubley=0.0,boolz=true){...}這樣作用顯現時,初始化的參量可能被省去,缺省值會代替它們。例如:func(123,0.5);MQL4資料庫功能在外部函數變量模塊之內無法有默認值初始化。參量值通過。在任何情況下,變量里布局的修改將不會顯示在功能板塊內。它是可以通過數列作為參量。但是,為了數列可以作為變量,需要改變它的數列元素。它是還可能通過參量參考。在這種情況下,修改的這樣參量將被顯示在對應的變量。數組元素無法參考通過。參量可能只在一個模塊參考通過,數據庫不提供。例如:voidfunc(int&x,double&y,double&z[]){doublecalculated_tp;...for(inti=0;i<OrdersTotal();i++){if(i==ArraySize(z))break;if(OrderSelect(i)==false)break;..精選實用文檔..精選z[i]=OrderOpenPrice();}x=i;y=calculated_tp;}數組可以通過參考通過,全部改變會在數列來源內顯示。不同于簡單的參量,數組可以進入數據庫...以缺省值參量通過無法初始化。最大參量不可以超過64個。Staticvariables靜態變量"靜止"記憶被稱作靜態變量。在數據類型之前指定成分"靜止"被公開。例如:intsomefunc(){staticintflag=10;return(flag);}靜態變量被存放在永久記憶里,在函數退出后靜態變量不會喪失。所有在同一板塊內〔除正式變量作用外〕,可能作為靜止變量定義。靜態變量可以由相對應的類型常數初始化。與局部變量不同。如果沒有明確地初始化,靜態變量初始化以零。靜態變量在"init()"函數之前只可應用一次。Globalvariables全局變量整體變量作為函數被定義在相同水平,即,不可以局部使用。例如:..精選實用文檔..精選intGlobalFlag=10;//整體變量intstart(){...}整體變量的范圍是整個程序。整體變量在所有程序內是被定義的。如果它的值沒有被定義,初始化值為零。整體變量只對于相應的常數初始化。整體變量只可以在init()函數操作之前一次性初始化。注解:變量在整體變量的水平位上不能夠與客戶端GlobalVariable...()函數混淆。Definingexternvariables外部定義變量外部定義的可變量。在數據類型公布之前指定外部變量。例如:externdoubleInputParameter1=1.0;externcolorInputParameter2=red;intinit(){...}確定從外部程序輸入的變量,會直接顯現輸入數據窗口。數列本身不能作為外部變量。Initializationofvariables初始化變量任何情況定義可變物可以初始化。如果它的原始值未被限定,任何可變物初始化為零(0)。整體變量和靜態變量的初始化由相應的常數進行。整體變量和靜態變量只能一次性初始化。局部變量的初始化與相應的調動進行。例如:intn=1;..精選實用文檔..精選doublep=MarketInfo(Symbol(),MODE_POINT);strings="hello";doublef[]={0.0,0.236,0.382,0.5,0.618,1.0};inta[4][4]={1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4};數組元素值列表必須被附寄在括號內。初始化省去的值被考慮為零。如果初始化的數組大小不被定義,它將由編譯器定義。多維數組由一個一維序列,即序列初始化沒有另外的括號。所有數列,只能以常數初始化。Externalfunctionsdefinition外部函數的定義類型外在作用被定義在程序的其它組分必須明確地被描述。缺乏這樣定義也許導致錯誤在程序期間的編輯、聯結,或施行。當描述一個外在對象,主題詞進口必須被使用以在模塊的參考。例如:#import"user32.dll"intMessageBoxA(inthWnd,stringszText,stringszCaption,intnType);intSendMessageA(inthWnd,intMsg,intwParam,intlParam);#import"lib.ex4"doubleround(doublevalue);#import進口可能被使用容易地描述作用叫從外在DLLs或編寫EX4圖書館。尖對可變物可能通過對進口的dll作用。串類型的數據被通過作為尖對對應的記憶塊(你應該記住串數據的內部表示法包括二份:記憶塊長度和記憶阻攔尖)。如果有需要通過數據內部或雙重型,那么對應的型的一維一些應該參考通過作為參量。例如:#import"some_lib.dll"voidPassIntegerByref(int&OneInt[]);#import..精選實用文檔..精選intstart(){intarray[1];//...PassIntegerByref(array);Print(array[0]);//...}Preprocessor預處理預處理程序是一個特殊MQL4的子程序,在程序執行之前預先準備的程序源代碼。預處理程序會盡可能地讀取源代碼。代碼的結構可能包括MQL4程序源代碼的特殊文件。對于讀取的代碼盡可能地按照具體常數分配儲存。預處理程序允許MQL4程序參量指定。如果#標志被使用在程序的第一線,這條線是預處理程序方針。預處理程序方向末端以換行字符結尾。Constantdeclaration常量聲明使用#define定義常數可以在程序中指定貨幣對字串符并且定義貨幣對名稱或貨幣對常數。稍候,編輯器會按照相應的字串符名稱復原所有顯示。事實上,這些名稱可以由任意數組文本替換:#defineidentifiervalue此常數識別符符合變量名稱的規那么值可以是以下任意類型:#defineABC100#defineCOMPANY_NAME"MetaQuotesSoftwareCorp."精選實用文檔..精選voidShowCopyright(){Print("版權所有?2001-2007,",COMPANY_NAME);Print("://");}Controllingcompilation編譯控制每個MQL4程序允添加以#property名稱特殊的參量來幫助客戶端效勞。這是一個內設指標。#property識別值常數類型描述linkstring公司網站的相關連接copyrightstring公司名稱stacksizeint棧式儲存器大小library
資料庫;查看任何可出現的功能錯誤indicator_chart_windowvoid在圖表窗口顯示指標indicator_separate_windowvoid在指定窗口顯示指標indicator_buffersint對于指標計算的數字,最大為8indicator_minimumdouble在指標窗口下端indicator_maximumdouble在指標窗口的上端indicator_colorNcolor在1和8之間顯示線的顏色indicator_widthNint在1和8之間顯示線的寬度..精選實用文檔..精選indicator_styleNint在1和8之間顯示線的風格indicator_levelNdouble在客戶指標窗口1和8之間N的水平indicator_levelcolorcolor水平線顏色indicator_levelwidthint水平線寬度indicator_levelstyleint水平線風格show_confirmvoid在腳本運行之前顯示確認show_inputsvoid在腳本運行之前顯示它的屬性和確認例如:#propertylink"://"#propertycopyright"MetaQuotesSoftwareCorp."#propertylibrary#propertystacksize1024在執行模板設定時,編譯器將會寫入值。Incl
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 自然科學類博物館AI應用行業跨境出海戰略研究報告
- 中國酸霧塔行業發展前景預測及投資方向研究報告
- 2025至2030年中國山楂小果脯市場現狀分析及前景預測報告
- 2025年中國方形數顯百分表行業市場發展前景及發展趨勢與投資戰略研究報告
- 2024-2030年中國天然材料壁紙行業發展監測及投資戰略研究報告
- 2025年中國純電動物流車行業市場全景分析及投資戰略規劃報告
- 2025至2030年中國咖啡研磨器市場分析及競爭策略研究報告001
- 坑塘改造的可行性研究報告
- 2025至2030年中國吊帶市場分析及競爭策略研究報告
- 2022-2027年中國母嬰電商行業市場全景評估及發展戰略研究報告
- 2024帶病體保險創新研究報告
- 3.28百萬農奴解放紀念日演講稿1500字2篇
- 員工節能環保培訓課件
- 《精益生產培訓》課件
- 學校招生工作培訓方案
- 訪談記錄表模板
- 初高中物理的區別以及如何學好高中物理課件
- 工程結構靜力試驗
- 國家開放大學《人文英語3》章節測試參考答案
- 撤銷冒名登記(備案)申請表
- 牛排培訓大全課件
評論
0/150
提交評論