新版MetaTrader 4平台build 1260

 

MetaTrader 4更新将于2020年1月24日,星期五,进行发布。此次更新提供了错误修复和性能改进。

新版本将通过实时更新系统获得。

 

终于出新版本了。

不知道这个版本具体解决了什么问题。

 
不是说不更新了吗
 
MetaTrader 4的下载地址在哪里?找 2天没找到
 
Aev pnkuai:
Where is the download address for MetaTrader 4? 2 days to find

download MT4 from the broker website (any broker who is supporting MT4).

从经纪人网站(支持MT4的任何经纪人)下载MT4。


 
从哪里下载
 
haitang liu:
Where to download

from the broker's website.
从任何经纪人的网站(支持MT4的经纪人;很多经纪人都具有MT4和网站)。

 

到底还是需要不断更新 


本人钻学MT4后又钻学MT5  现基本都可以把自己的思路写成工具  无论指标还是EA   总结得出:

1、MT4属于稳定的版本, MT5貌似有点好高骛远.....;

2、同样的东西,在MT4毫无错误的得以显示,而到了MT5感觉简单的东西搞复杂了,字符增加近一倍,方可无措编译,可实际显示却依然不尽人意......;

3、MT5中,初始化里面一旦引入有多数组多元素多重计算的较为复杂的函数后,初始化基本就是100%不成功,若将此函数直接放入OnCalculate里面更是不予计算。因此自定工具非得通过切换一下周期方可计算显示;

4、尤其是引入较多自定指标后,MT4对于同品种同时打开多周期的多个图表时,各自显示一切正常,而到了MT5会莫名的有相互"打架"的现象;

5、MT5中,貌似OnInit()和OnDeinit(const int reason)会相互矛盾,刚刚初始化的东西偶尔会被OnDeinit干掉;

6、尤其是简单的外汇现货交易,MT4已经十分完美,对于MT5个人愚见属于有画蛇添足的方面,对于自定指标和EA来说,同样的东西,MT5相对于MT4,反而会耗用翻倍的内存,当然也许是本人学艺不精,导致错误胡说了!

最后建议:永久保留MT4。或者将MT5分为AB两版 ,一版就沿用原来的MT4足以应对外汇现货交易。一版着重于股票等复杂性交易。否则,融合在一起 反而导致MT5远没有MT4流畅了。


比如:对于止损或拟锁 ,提前预估最大回撤,需要估算最大亏损额度时:

//-------------------------------------------------------------------------------------

于MT4:

double Gua_Kui(string pm)
  {
   int     cnt,i, b=0,s=0;
   double  BOpen[50]={0}, SOpen[50]={0}, Kui=0, kuiB=0, kuiS=0, YDE=MarketInfo(pm,MODE_TICKVALUE), Poi=MarketInfo(pm,MODE_POINT);
   string  Bcom[50]={""}, Scom[50]={""};
   for(cnt=OrdersTotal()-1;cnt>=0;cnt--)
     {
      if(OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)==false) break;
        {
         if(OrderSymbol()==pm)
           {
            if(OrderStopLoss()!=0)
              {
               if(OrderType()==OP_BUY  || OrderType()==OP_BUYLIMIT )    kuiB=kuiB+(OrderOpenPrice()-OrderStopLoss())/Poi*OrderLots()*YDE;
               if(OrderType()==OP_SELL || OrderType()==OP_SELLLIMIT)    kuiS=kuiS+(OrderStopLoss()-OrderOpenPrice())/Poi*OrderLots()*YDE;
              }
            if(OrderType()==OP_SELLSTOP)                             {  Bcom[b]=OrderComment();  BOpen[b]=OrderOpenPrice();  b++;  }
            if(OrderType()==OP_BUYSTOP)                              {  Scom[s]=OrderComment();  SOpen[s]=OrderOpenPrice();  s++;  }
           }
        }
     }
   for(i=0;i<b;i++)
     {
      for(cnt=OrdersTotal()-1;cnt>=0;cnt--)
        {
         if(OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)==false) break;
         if(OrderSymbol()==pm && OrderStopLoss()==0 && OrderTicket()==StringToInteger(Bcom[i]))
           {
            if(OrderType()==OP_BUY || OrderType()==OP_BUYLIMIT)         kuiB=kuiB+(OrderOpenPrice()-BOpen[i])/Poi*OrderLots()*YDE;
           }
        }
     }
   for(i=0;i<s;i++)
     {
      for(cnt=OrdersTotal()-1;cnt>=0;cnt--)
        {
         if(OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)==false) break;
         if(OrderSymbol()==pm && OrderStopLoss()==0 && OrderTicket()==StringToInteger(Scom[i]))
           {
            if(OrderType()==OP_SELL || OrderType()==OP_SELLLIMIT)       kuiS=kuiS+(SOpen[i]-OrderOpenPrice())/Poi*OrderLots()*YDE;
           }
        }
     }
   Kui=kuiB+kuiS;
   return(Kui);
  }
//-------------------------------------------------------------------------------------

于MT5:

double Gua_Kui(string pm)
  {
   int     cnt,i, b=0,s=0;
   double  BOpen[50]={0}, SOpen[50]={0}, Kui=0, kuiB=0, kuiS=0;
   double  YDE=SymbolInfoDouble(pm,SYMBOL_TRADE_TICK_VALUE), Poi=SymbolInfoDouble(pm,SYMBOL_POINT);
   string  Bcom[50]={""}, Scom[50]={""};
   for(cnt=PositionsTotal()-1;cnt>=0;cnt--)
     {
      if(PositionGetSymbol(cnt)==pm && PositionGetDouble(POSITION_SL)!=0)
        {
         if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
         kuiB=kuiB+(PositionGetDouble(POSITION_PRICE_OPEN)-PositionGetDouble(POSITION_SL))/Poi*PositionGetDouble(POSITION_VOLUME)*YDE;

         if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
         kuiS=kuiS+(PositionGetDouble(POSITION_SL)-PositionGetDouble(POSITION_PRICE_OPEN))/Poi*PositionGetDouble(POSITION_VOLUME)*YDE;
        }
     }
   for(cnt=OrdersTotal()-1;cnt>=0;cnt--)
     {
      if(OrderGetTicket(cnt)>0)
        {
         if(OrderGetString(ORDER_SYMBOL)==pm)
           {
            if(OrderGetDouble(ORDER_SL)!=0)
              {
               if(OrderGetInteger(ORDER_TYPE)==ORDER_TYPE_BUY_LIMIT)
               kuiB=kuiB+(OrderGetDouble(ORDER_PRICE_OPEN)-OrderGetDouble(ORDER_SL))/Poi*OrderGetDouble(ORDER_VOLUME_INITIAL)*YDE;

               if(OrderGetInteger(ORDER_TYPE)==ORDER_TYPE_SELL_LIMIT)
               kuiS=kuiS+(OrderGetDouble(ORDER_SL)-OrderGetDouble(ORDER_PRICE_OPEN))/Poi*OrderGetDouble(ORDER_VOLUME_INITIAL)*YDE;
              }
            if(OrderGetInteger(ORDER_TYPE)==ORDER_TYPE_SELL_STOP)
              {
               Bcom[b]=OrderGetString(ORDER_COMMENT);
               BOpen[b]=OrderGetDouble(ORDER_PRICE_OPEN);
               b++;
              }
            if(OrderGetInteger(ORDER_TYPE)==ORDER_TYPE_BUY_STOP)
              {
               Scom[s]=OrderGetString(ORDER_COMMENT);
               SOpen[s]=OrderGetDouble(ORDER_PRICE_OPEN);
               s++;
              }
           }
        }
     }
   for(i=0;i<b;i++)
     {
      for(cnt=PositionsTotal()-1;cnt>=0;cnt--)
        {
         if(PositionGetSymbol(cnt)==pm && PositionGetDouble(POSITION_SL)==0 && PositionGetInteger(POSITION_TICKET)==StringToInteger(Bcom[i]))
           {
            if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
            kuiB=kuiB+(PositionGetDouble(POSITION_PRICE_OPEN)-BOpen[i])/Poi*PositionGetDouble(POSITION_VOLUME)*YDE;
           }
        }
      for(cnt=OrdersTotal()-1;cnt>=0;cnt--)
        {
         if(OrderGetTicket(cnt)>0)
           {
            if(OrderGetString(ORDER_SYMBOL)==pm && OrderGetDouble(ORDER_SL)==0 && OrderGetInteger(ORDER_TICKET)==StringToInteger(Bcom[i]))
              {
               if(OrderGetInteger(ORDER_TYPE)==ORDER_TYPE_BUY_LIMIT)
               kuiB=kuiB+(OrderGetDouble(ORDER_PRICE_OPEN)-BOpen[i])/Poi*OrderGetDouble(ORDER_VOLUME_INITIAL)*YDE;
              }
           }
        }
     }
   for(i=0;i<s;i++)
     {
      for(cnt=PositionsTotal()-1;cnt>=0;cnt--)
        {
         if(PositionGetSymbol(cnt)==pm && PositionGetDouble(POSITION_SL)==0 && PositionGetInteger(POSITION_TICKET)==StringToInteger(Scom[i]))
           {
            if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL)
            kuiS=kuiS+(SOpen[i]-PositionGetDouble(POSITION_PRICE_OPEN))/Poi*PositionGetDouble(POSITION_VOLUME)*YDE;
           }
        }
      for(cnt=OrdersTotal()-1;cnt>=0;cnt--)
        {
         if(OrderGetTicket(cnt)>0)
           {
            if(OrderGetString(ORDER_SYMBOL)==pm && OrderGetDouble(ORDER_SL)==0 && OrderGetInteger(ORDER_TICKET)==StringToInteger(Scom[i]))
              {
               if(OrderGetInteger(ORDER_TYPE)==ORDER_TYPE_SELL_LIMIT)
               kuiS=kuiS+(SOpen[i]-OrderGetDouble(ORDER_PRICE_OPEN))/Poi*OrderGetDouble(ORDER_VOLUME_INITIAL)*YDE;
              }
           }
        }
     }
   Kui=kuiB+kuiS;
   return(Kui);
  }

//-------------------------------------------------------------------------------------


以上仅属个人愚见,不对之处,敬请谅解,且望予以指正,十分感谢!

 

xiaoqiang Wang:

到底还是需要不断更新 


本人钻学MT4后又钻学MT5  现基本都可以把自己的思路写成工具  无论指标还是EA   总结得出:

1、MT4属于稳定的版本, MT5貌似有点好高骛远.....;

2、同样的东西,在MT4毫无错误的得以显示,而到了MT5感觉简单的东西搞复杂了,字符增加近一倍,方可无措编译,可实际显示却依然不尽人意......;

3、MT5中,初始化里面一旦引入有多数组多元素多重计算的较为复杂的函数后,初始化基本就是100%不成功,若将此函数直接放入OnCalculate里面更是不予计算。因此自定工具非得通过切换一下周期方可计算显示;

4、尤其是引入较多自定指标后,MT4对于同品种同时打开多周期的多个图表时,各自显示一切正常,而到了MT5会莫名的有相互"打架"的现象;

5、MT5中,貌似OnInit()和OnDeinit(const int reason)会相互矛盾,刚刚初始化的东西偶尔会被OnDeinit干掉;

6、尤其是简单的外汇现货交易,MT4已经十分完美,对于MT5个人愚见属于有画蛇添足的方面,对于自定指标和EA来说,同样的东西,MT5相对于MT4,反而会耗用翻倍的内存,当然也许是本人学艺不精,导致错误胡说了!

最后建议:永久保留MT4。或者将MT5分为AB两版 ,一版就沿用原来的MT4足以应对外汇现货交易。一版着重于股票等复杂性交易。否则,融合在一起 反而导致MT5远没有MT4流畅了。

您说的对,引入复杂运算MT5确实跟你描述的一样,

初始化烂、得不断切换周期、有时候甚至连切换周期都显示不出来,我也被这样的毛病纠结了好几年。

因此MT5一直都是拿来玩玩。

 

16G内存  i7主板的电脑   就打开MT4 MT5总共三个客户端  别的程序都没开

今晚这行情  MT5多个单情况下的EA    在设置损盈平仓等方面跟手动一样慢

MT4一样的多个单流畅得很  点到眨眼完成各个操作

总结  MT5太...

 
xiaoqiang Wang:

到底还是需要不断更新 


本人钻学MT4后又钻学MT5  现基本都可以把自己的思路写成工具  无论指标还是EA   总结得出:

1、MT4属于稳定的版本, MT5貌似有点好高骛远.....;

2、同样的东西,在MT4毫无错误的得以显示,而到了MT5感觉简单的东西搞复杂了,字符增加近一倍,方可无措编译,可实际显示却依然不尽人意......;

3、MT5中,初始化里面一旦引入有多数组多元素多重计算的较为复杂的函数后,初始化基本就是100%不成功,若将此函数直接放入OnCalculate里面更是不予计算。因此自定工具非得通过切换一下周期方可计算显示;

4、尤其是引入较多自定指标后,MT4对于同品种同时打开多周期的多个图表时,各自显示一切正常,而到了MT5会莫名的有相互"打架"的现象;

5、MT5中,貌似OnInit()和OnDeinit(const int reason)会相互矛盾,刚刚初始化的东西偶尔会被OnDeinit干掉;

6、尤其是简单的外汇现货交易,MT4已经十分完美,对于MT5个人愚见属于有画蛇添足的方面,对于自定指标和EA来说,同样的东西,MT5相对于MT4,反而会耗用翻倍的内存,当然也许是本人学艺不精,导致错误胡说了!

最后建议:永久保留MT4。或者将MT5分为AB两版 ,一版就沿用原来的MT4足以应对外汇现货交易。一版着重于股票等复杂性交易。否则,融合在一起 反而导致MT5远没有MT4流畅了。


比如:对于止损或拟锁 ,提前预估最大回撤,需要估算最大亏损额度时:

//-------------------------------------------------------------------------------------

于MT4:

于MT5:

以上仅属个人愚见,不对之处,敬请谅解,且望予以指正,十分感谢!

就代码量而言,貌似你的后两个for循环可以封装成一个函数.性能可能是有点问题,代码量有办法减少