Tableau de conversion MQL4 à MQL5

 

Nous avions promis de vous tenir au courant au niveau de la conversion MQL4 à MQL5, et donc voici quelques nouvelles. Tout d’abord, nous avons désormais la confirmation que les programmes écris en MQL4 ne pourront pas fonctionner sur la plateforme MQL5. Toutefois le style de programmation MQL4 (c’est à dire non objet) pourra être employé par ceux qui le souhaitent sur Metatrader 5 et MQL5. Reste dans tous les cas à apprendre les équivalences de fonctions et de variables prédéfinies.

Fai que nous remercions (cf son site japonais…) nous propose donc à ce propos une table de conversion pour obtenir les équivalences entre MQL4 et MQL5. Cliquez ici pour obtenir la version mise à jour de la table.

A noter que certains travaillent déjà à permettre une réutilisation des fonctions classiques. C’est déjà chose faite pour les fonctions des séries temporelles comme iClose, iLow, iOpen, iClose, iTime, iVolume, iHighest, iLowest, iBarShift, and iBars grâce au fichier suivant: mt4timeseries.mqh.

Pour les fonctions correspondantes aux objets graphiques vous pouvez utilisez le fichier de compatibilité: mt4objects.mqh .

Pour les fonctions correspondantes aux infos du compte vous pouvez utilisez le fichier de compatibilité: mt4accountinfo.mqh .

Pour les fonctions correspondantes aux fonctions temporelles vous pouvez utilisez le fichier de compatibilité: mt4datetime.mqh .

Pour les fonctions correspondantes aux manipulations des strings vous pouvez utilisez le fichier de compatibilité: mt4string.mqh .

A noter que ces  fichiers sont proposés gracieusement par Circlesquares ici.

 

Table de conversion de MQL4 à MQL5

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()
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
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_LEVELTEXT,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..
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)
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()

 

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>