| MQL4 to MQL5 porting table ver. 0.2 coded by fai. | |
| MQL4 | MQL5 |
| Ask | SymbolInfoDouble(Symbol(),SYMBOL_ASK); |
| Bid | SymbolInfoDouble(Symbol(),SYMBOL_BID); |
| Bars | Bars(Symbol(),PERIOD_CURRENT); |
| Digits | _Digits or Digits() |
| Point | _Point or Point() |
| extern | input |
| Close[] High[] Low[] Open[] Time[] Volume[] |
int
OnCalculate(const int rates_total, const int prev_calculated, const datetime &Time[], const double &Open[], const double &High[], const double &Low[], const double &Close[], const long &Volume[], const long &Real_Volume[], const int &Spread[]) { ArraySetAsSeries(Open,true); ArraySetAsSeries(High,true); ArraySetAsSeries(Low,true); ArraySetAsSeries(Close,true); ArraySetAsSeries(Time,true); ArraySetAsSeries(Volume,true); ArraySetAsSeries(Spread,true); |
| in
EA/script use CopyClose,CopyHigh,CopyLow,CopyOpen,CopyTime, CopyTickVolume |
|
| AccountBalance() | AccountInfoDouble(ACCOUNT_BALANCE); |
| AccountCredit() | AccountInfoDouble(ACCOUNT_CREDIT); |
| AccountCompany() | AccountInfoString(ACCOUNT_COMPANY); |
| AccountCurrency() | AccountInfoString(ACCOUNT_CURRENCY); |
| AccountEquity() | AccountInfoDouble(ACCOUNT_EQUITY); |
| AccountFreeMargin() | AccountInfoDouble(ACCOUNT_FREEMARGIN); |
| AccountFreeMarginCheck() | read AccountFreeMarginCheck |
| AccountFreeMarginMode() | ??? |
| AccountLeverage() | AccountInfoInteger(ACCOUNT_LEVERAGE); |
| AccountMargin() | AccountInfoDouble(ACCOUNT_MARGIN); |
| AccountName() | AccountInfoString(ACCOUNT_NAME); |
| AccountNumber() | AccountInfoInteger(ACCOUNT_LOGIN); |
| AccountProfit() | AccountInfoDouble(ACCOUNT_PROFIT); |
| AccountServer() | AccountInfoString(ACCOUNT_SERVER); |
| AccountStopoutLevel() | AccountInfoDouble(ACCOUNT_MARGIN_SO_SO); |
| AccountStopoutMode() | AccountInfoInteger(ACCOUNT_MARGIN_SO_MODE); |
| ArrayBsearch() | read ArrayBsearch |
| ArrayCopyRates() | read CopyRates |
| ArrayCopySeries() | read CopyClose/CopyHigh/CopyLow/CopyOpen/CopyTickVolume/CopyTime |
| ArrayDimension() | ???? |
| ArraySort() | //
MQL4 ArraySort(SortInt, 0, 0, MODE_ASCEND); ArraySort(SortInt); //MQL4 ArraySort(SortInt, 0, 0, MODE_DESCEND); ArraySetAsSeries(SortInt,true); ArraySort(SortInt); |
| GetLastError() | you need to call ResetLastError() before use. |
| IsConnected() | (bool)TerminalInfoInteger(TERMINAL_CONNECTED)?? |
| IsDemo() | bool
IsDemo(){ ENUM_ACCOUNT_TRADE_MODE tradeMode=(ENUM_ACCOUNT_TRADE_MODE)AccountInfoInteger(ACCOUNT_TRADE_MODE); if(tradeMode == ACCOUNT_TRADE_MODE_DEMO) return(true); // tradeMode is ACCOUNT_TRADE_MODE_CONTEST or ACCOUNT_TRADE_MODE_REAL return(false); } |
| IsDllsAllowed() IsLibrariesAllowed() |
(bool)MQL5InfoInteger(MQL5_DLLS_ALLOWED)??? |
| IsOptimization() | (bool)MQL5InfoInteger(MQL5_OPTIMIZATION)??? |
| IsTesting() | (bool)MQL5InfoInteger(MQL5_TESTING)??? |
| IsTradeAllowed() |
(bool)MQL5InfoInteger(MQL5_TRADE_ALLOWED)
&& (bool)TerminalInfoInteger(TERMINAL_TRADE_ALLOWED)?? |
| IsExpertEnabled() | (bool)TerminalInfoInteger(TERMINAL_EXPERTS_ENABLED)?? |
| IsTradeContextBusy() | LOST???? |
| IsVisualMode() | (bool)MQL5InfoInteger(MQL5_VISUAL_MODE)??? |
| UninitializeReason() | _UninitReason |
| TerminalCompany() | TerminalInfoString(TERMINAL_COMPANY) |
| TerminalName() | TerminalInfoString(TERMINAL_NAME) |
| TerminalPath() | TerminalInfoString(TERMINAL_PATH) TerminalInfoString(TERMINAL_DATA_PATH) TerminalInfoString(TERMINAL_COMMONDATA_PATH) |
| Alert() | LOST???? |
| MarketInfo() | read SymbolInfoInteger/Double/String |
| CharToStr() | CharToString() |
| DoubleToStr() | DoubleToString() |
| StrToDouble() | StringToDouble() |
| StrToInteger() | StringToInteger() |
| StrToTime() | StringToTime() |
| TimeToStr() | TimeToString() |
| IndicatorBuffers() | #property
indicator_buffers 7 #property indicator_plots 7 |
| IndicatorCounted() | const int prev_calculated |
| IndicatorDigits() | IndicatorSetInteger(INDICATOR_DIGITS,_Digits); |
| IndicatorShortName() | IndicatorSetString(INDICATOR_SHORTNAME,name); |
| SetIndexArrow() | PlotIndexSetInteger(0,PLOT_ARROW,213); |
| SetIndexBuffer() | SetIndexBuffer(0,MABuffer,INDICATOR_DATA); // or INDICATOR_CALCULATIONS |
| SetIndexDrawBegin() | PlotIndexSetInteger(0,PLOT_DRAW_BEGIN,KPeriod); |
| SetIndexEmptyValue() | PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0.0); |
| SetIndexLabel() | PlotIndexSetString(0,PLOT_LABEL,"Moving Average"); |
| SetIndexShift() | PlotIndexSetInteger(0,PLOT_SHIFT,26); |
| SetIndexStyle() | PlotIndexSetInteger(0,PLOT_LINE_STYLE,STYLE_SOLID); PlotIndexSetInteger(0,PLOT_LINE_WIDTH,2); PlotIndexSetInteger(0,PLOT_LINE_COLOR,DeepPink); |
| SetLevelStyle() | IndicatorSetInteger(INDICATOR_LEVELSTYLE,STYLE_DOT); |
| SetLevelValue() | IndicatorSetInteger(INDICATOR_LEVELS,2); IndicatorSetDouble(INDICATOR_LEVELVALUE,0,20); IndicatorSetDouble(INDICATOR_LEVELVALUE,1,80); |
| Day() DayOfWeek() DayOfYear() Hour() Minute() Month() Seconds() Year() |
MqlDateTime
tm; TimeCurrent(tm); int Day=tm.day; int DayOfWeek=tm.day_of_week; int DayOfYear=tm.day_of_year; int Hour=tm.hour; int Minute=tm.min; int Seconds=tm.sec; int Year=tm.year; |
| TimeDay() TimeDayOfWeek() TimeDayOfYear() TimeHour() TimeMinute() TimeMonth() TimeSeconds() TimeYear() |
datetime
TargetTime = D'2003.12.31'; MqlDateTime tm; TimeToStruct(TargetTime,tm); int Day=tm.day; int DayOfWeek=tm.day_of_week; int DayOfYear=tm.day_of_year; int Hour=tm.hour; int Minute=tm.min; int Seconds=tm.sec; int Year=tm.year; |
| FileOpenHistory() | LOST???? |
| FileSeek() | read FileSeek |
| ObjectXXXX | use mt4objects.mqh (http://forum.mql4.com/26550/page16) |
| ObjectCreate() | ObjectCreate(0,… |
| ObjectDelete() | ObjectDelete(0,name); |
| ObjectDescription() | ObjectGetString(0,name,OBJPROP_TEXT); |
| ObjectFind() | ObjectFind(0,name); |
| ObjectGet() | read ObjectGetIngeger/Double/String |
| ObjectGetFiboDescription() | ObjectGetString(0,name,OBJPROP_LEVELTEXT,int level); |
| ObjectGetShiftByValue() | ObjectGetTimeByValue(0,string name,double value,int line_id); |
| ObjectGetValueByShift() | ObjectGetValueByTime(0,string name,datetime time, int line_id); |
| ObjectMove() | ObjectMove(0, string name, int point, datetime time1, double price1) |
| ObjectName() | ObjectName(0,int pos,int nwin=-1,int type=-1); |
| ObjectsDeleteAll() | ObjectsDeleteAll(0,int window=EMPTY, int type=EMPTY) |
| ObjectSet() | read ObjectSetIngeger/Double/String |
| ObjectSetFiboDescription() | ObjectSetString(0,string name,OBJPROP_LEVELTEXT,int level,string newstring); |
| ObjectSetText() | ObjectSetString(0,string name,OBJPROP_TEXT,string newstring); |
| ObjectsTotal() | ObjectsTotal(0,int nwin=-1,int type=-1); |
| ObjectType() | ObjectGetInteger(0,name,OBJPROP_TYPE); |
| StringConcatenate() | int StringConcatenate(string& string_var,void arg1,void arg2....); |
| StringGetChar() | StringGetCharacter() |
| StringSetChar() | StringSetCharacter() |
| iBars() | Bars() |
| iBarShift() iClose() iHigh() iHighest() iLow() iLowest() iOpen() iTime() iVolume() |
use mt4timeseries.mqh (http://forum.mql4.com/26550/page14) |
| iTime() | datetime
iTime(string symbol,ENUM_TIMEFRAMES timeframe,int index) { datetime Times[]; datetime tm=0; ArraySetAsSeries(Times,true); int copied=CopyTime(symbol,timeframe,0,Bars(symbol,timeframe),Times); if(copied>0 && index<copied) tm=Times[index]; return(tm); }// My Simple code.. |
| iMA | //
1. Add iMA_handle in Grobal variable; //SAMPLE CODE is
Sample_iMA.mq5 int iMA_handle; // 2. Set iMA in OnInit() iMA_handle=iMA(Symbol(),0,MAPeriod,0,MODE_EMA,PRICE_CLOSE); // 3. CopyBuffer in OnCalculate(); int copied=CopyBuffer(iMA_handle,0,0,rates_total,MALineBuffer); |
| iMAOnArray | //
1. add MovingAverages.mqh
//SAMPLE CODE is Sample_iMAOnArray2.mq5 #include <MovingAverages.mqh> // 2. add MAonArrayBuffer in Grobal variable; double MAonArrayBuffer[]; // 3. Set ArraySetAsSeries in OnInit(). ArraySetAsSeries(MAonArrayBuffer,true); // 4. Resize Arraysize of MAonArrayBuffer in OnCalculate(). ArrayResize(MAonArrayBuffer,Bars); // 5. Call Simple/Exponential/LinearWeighted/SmoothedMAOnBuffer int ret=ExponentialMAOnBuffer(Bars,0,0,MAPeriod,OriginalBuffer,MAonArrayBuffer); |
| HideTestIndicators() | LOST???? |
| Period() | PeriodSeconds(Period())/60 |
| RefreshRates() | LOST???? |
| WindowBarsPerChart() | ChartGetInteger(0,CHART_VISIBLE_BARS) |
| WindowExpertName() | MQL5InfoString(MQL5_PROGRAM_NAME) |
| WindowFind() | ???????? |
| WindowFirstVisibleBar() | ChartGetInteger(0,CHART_FIRST_VISIBLE_BAR) |
| WindowHandle() | ChartGetInteger(0,CHART_WINDOW_HANDLE) //MQL4 WindowHandle(Symbol(),Period()) |
| WindowIsVisible() | ChartGetInteger(0,CHART_WINDOW_IS_VISIBLE) |
| WindowOnDropped() | ChartWindowOnDropped() |
| WindowPriceMax() | ChartGetDouble(0,CHART_PRICE_MIN,0); |
| WindowPriceMin() | ChartGetDouble(0,CHART_PRICE_MAX,0); |
| WindowPriceOnDropped() | ChartPriceOnDropped() |
| WindowRedraw() | ChartRedraw() |
| WindowScreenShot() | read ChartScreenShot |
| WindowTimeOnDropped() | ChartTimeOnDropped() |
| WindowsTotal() | ChartGetInteger(0,CHART_WINDOWS_TOTAL) |
| WindowXOnDropped() | ChartXOnDropped() |
| WindowYOnDropped() | ChartYOnDropped() |