MetaTrader 4 Build 600 with Updated MQL4 Language and Market of Applications Released - page 3

 

I think it's because of this:

Terminal: All client terminal components require support for SSE2 instruction set by PC's processor for efficient operation and high performance.

 
alexvd:

How to reproduce it?

It is said that it wants without being unable to use 509 and carryingout.

aytugan:

I think it's because of this:

Terminal: All client terminal components require support for SSE2 instruction set by PC's processor for efficient operation and high performance.

Yes, it wants without earning a term, since there is no means which only 509 uses.


 

MetaEditor does not support mulitbyte character correctly.

The problem is that the carret position is wrong with multibyte characters.


The following gif shows what the problem is.

The font selected is Japanese font, and the script is also Japanese, of course input multibyte characters are Japanese.

This does not occur on build 509.


Wrong carrent with multibyte characters

 
I see that my demo version of MT4 is upgraded to Build 600 (without any warning) but I am missing now my preset files. Any idea where they went to? Although you mentioned that no files are deleted during the update, I can't find my preset files anymore!!

No files or folders are deleted during the update! All file copy operations including used file paths are fixed in the terminal Journal during the update.
 
Is is working CUSTOM optimization now?
 
d.saravana21:

Dear Brothers I founded a bug

I was using this code to export the data file to c:\Data before updated to build 600

it was working fine. I updated to build 600 and changed the code like as alexvd told

the file stored well in the Terminal Data Folder

But it's not moving the files to path C:\Data

Because of the windows file handler ShellExecuteA is not executed

Kindly Fix the Problem


With Thanks and Regards

Saravana

And what about this post ?

 
While upgrading the version, the installation goes into a loop. Thank you.
 

hi to all,

Before build600 code below work perfectly. Why should I change to use indicator

#property copyright "Copyright © 2011, PatPatel"
#property link      "forexfactory.pat1@gmail.com"
#include <WinUser32.mqh>
#include <stdlib.mqh>
#import "user32.dll"
    int RegisterWindowMessageA(string lpString); 
#import

#property indicator_chart_window

//-------------------------------------------------------------------
extern int NumOfPairs = 8;
extern int MaxBars = 1000;
extern int TF = 5;
extern string BasketName="#BK";

string Pair_suffix;
string shortname;

string Pair[20];
double Factor,multiplier[20];
int j,StartBar;
string Currency;
static int ExtHandle=-1;
static int tf = 0;
int MN=0;
int MT4InternalMsg;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()


{
   
   Pair_suffix=StringTrimLeft(StringTrimRight(StringSubstr(Symbol(),6,StringLen(Symbol())-6)));
   
   Get_Trade_Pairs();
   Currency=BasketName+PadValINT(NumOfPairs,2)+Pair_suffix; 
   GlobalVariableSet(Currency+"_"+TF+"_Fact",Factor);
   
   for(int kj=0;kj<NumOfPairs;kj++)
   {
   if(StringSubstr(Pair[kj],3,3)=="JPY") multiplier[kj]=1.0; else multiplier[kj]=100.0;
   }
   IndicatorShortName(Currency);


   if (TF==0) tf = Period();
   else tf = TF;
   
//Create initial file
   int    version=400;
   string c_copyright;
   string c_symbol=Currency;
   int    i_period=tf;
   int    i_digits=3;
   int    i_unused[13];


//DNK - indentify
   i_unused[0]=3; i_unused[1]=3; i_unused[2]=3;

//----  
   ExtHandle=FileOpenHistory(c_symbol+i_period+".hst", FILE_BIN|FILE_WRITE);
   if(ExtHandle < 0) return(-1);
//---- write history file header
   c_copyright="Copyright © 2011, PatPatel";
   FileWriteInteger(ExtHandle, version, LONG_VALUE);
   FileWriteString(ExtHandle, c_copyright, 64);
   FileWriteString(ExtHandle, c_symbol, 12);
   FileWriteInteger(ExtHandle, i_period, LONG_VALUE);
   FileWriteInteger(ExtHandle, i_digits, LONG_VALUE);
   FileWriteInteger(ExtHandle, 0, LONG_VALUE);       //timesign
   FileWriteInteger(ExtHandle, 0, LONG_VALUE);       //last_sync
   FileWriteArray(ExtHandle, i_unused, 0, 13);
   FileFlush(ExtHandle);
   if(ObjectFind(Currency+shortname+tf)==0)ObjectDelete(Currency+shortname+tf);
   return(0);
  }
  
//---- 
int deinit() {
   FileFlush(ExtHandle);
   FileClose(ExtHandle);
   ObjectDelete (Currency+shortname+tf);
   return(0);
}

//####################################################################
//+------------------------------------------------------------------+
//| Main program
//+------------------------------------------------------------------+
static datetime lastbar = 0;
static int last_fpos = 0;
static int hwnd;
static datetime last_time=0;

int start()

{


   if (ExtHandle==-1) Print ("Error");
   
   int counted_bars=IndicatorCounted();
   //---- check for possible errors
   if(counted_bars<0) return(-1);
   
   StartBar = MaxBars;
   //StartBar=Bars;
   if (counted_bars>0) StartBar=Bars-counted_bars;

   //---- main loop
   for(int i=StartBar; i>=0; i--)
   {  
      if (lastbar < iTime(Symbol(),tf,i)) 
      {
         last_fpos=FileTell(ExtHandle);
         lastbar=iTime(Symbol(),tf,i);
      }
      else
      {
         FileSeek(ExtHandle,last_fpos,SEEK_SET);  
      }
      

      datetime timebar=iTime(Symbol(),tf,i);
      
      // Change kk to -1300 if HLOC values are less than 0. 
      double kk=-Factor;
      double sum_A_Pair_C=kk;
      double sum_A_Pair_H=kk;
      double sum_A_Pair_L=kk;
      double sum_A_Pair_O=kk;
      double sum_A_Pair_V=0.0;
      
      for (j=0;j<NumOfPairs;j++)
      {
        int shift=iBarShift(Pair[j],tf,timebar);
         if (iTime(Pair[j],tf,i)>iTime(Pair[j],tf,shift)) {
            shift++;         
         } 
         sum_A_Pair_C=sum_A_Pair_C  +iClose(Pair[j],tf,shift)*multiplier[j];
         sum_A_Pair_H=sum_A_Pair_H  + iHigh(Pair[j],tf,shift)*multiplier[j];
         sum_A_Pair_L=sum_A_Pair_L  +  iLow(Pair[j],tf,shift)*multiplier[j];
         sum_A_Pair_O=sum_A_Pair_O  + iOpen(Pair[j],tf,shift)*multiplier[j];
         sum_A_Pair_V=sum_A_Pair_V  +iVolume(Pair[j],tf,shift);
      }
      
      //Update file with current values
         
      FileWriteInteger(ExtHandle, lastbar, LONG_VALUE);
      FileWriteDouble(ExtHandle, sum_A_Pair_O, DOUBLE_VALUE);
      FileWriteDouble(ExtHandle, sum_A_Pair_L, DOUBLE_VALUE);
      FileWriteDouble(ExtHandle, sum_A_Pair_H, DOUBLE_VALUE);
      FileWriteDouble(ExtHandle, sum_A_Pair_C, DOUBLE_VALUE);
      FileWriteDouble(ExtHandle, sum_A_Pair_V, DOUBLE_VALUE);
      FileFlush(ExtHandle); 
      }
      
      // Update Basket Chart if Available
      
      static int hwnd = 0;
      if (hwnd == 0)  hwnd = WindowHandle(Currency, tf);

    if(MT4InternalMsg == 0) 
        MT4InternalMsg = RegisterWindowMessageA("MetaTrader4_Internal_Message");

    if(hwnd != 0) if(PostMessageA(hwnd, WM_COMMAND, 0x822c, 0) == 0) hwnd = 0;
    if(hwnd != 0 && MT4InternalMsg != 0) PostMessageA(hwnd, MT4InternalMsg, 2, 1);
      
      
   return(0);
}
//+------------------------------------------------------------------+


int Get_Trade_Pairs()
  {
   switch (NumOfPairs)
      {
      case 1:  Pair[0] = "GBPJPY" + Pair_suffix;
               Factor=0.0;
               break;
      case 2:  Pair[0] = "GBPUSD" + Pair_suffix;
               Pair[1] = "EURUSD" + Pair_suffix;
               Factor=200.0;
               break;
      case 3:  Pair[0] = "GBPUSD" + Pair_suffix;
               Pair[1] = "EURUSD" + Pair_suffix;
               Pair[3] = "AUDCAD" + Pair_suffix;
               Factor=300.0;
               break;
               
      case 4:  Pair[0] = "AUDUSD" + Pair_suffix;
               Pair[1] = "EURUSD" + Pair_suffix;
               Pair[2] = "GBPUSD" + Pair_suffix;
               Pair[3] = "NZDUSD" + Pair_suffix;
               Factor=400.0;
               break;
      case 5:  Pair[0] = "AUDJPY" + Pair_suffix;
               Pair[1] = "NZDUSD" + Pair_suffix;
               Pair[2] = "EURJPY" + Pair_suffix;
               Pair[3] = "GBPJPY" + Pair_suffix;
               Pair[4] = "GBPUSD" + Pair_suffix;               
               Factor=500.0;
               break;         
      case 6:  Pair[0] = "EURADU" + Pair_suffix;
               Pair[1] = "EURCAD" + Pair_suffix;
               Pair[2] = "EURNZD" + Pair_suffix;
               Pair[3] = "BGPAUD" + Pair_suffix;
               Pair[4] = "GBPCAD" + Pair_suffix;
               Pair[5] = "GBPNZD" + Pair_suffix;
               Factor=600.0;
               break;
      /*case 7:  Pair[0] = "EURAUD" + Pair_suffix;
               Pair[1] = "EURCAD" + Pair_suffix;
               Pair[2] = "EURNZD" + Pair_suffix;
               Pair[3] = "GBPAUD" + Pair_suffix;
               Pair[4] = "GBPCAD" + Pair_suffix;
               Pair[5] = "GBPNZD" + Pair_suffix;
               Pair[6] = "USDCAD" + Pair_suffix;               
               Factor=700.0;
               break;      */    
      case 7:  Pair[0] = "EURUSD" + Pair_suffix;
               Pair[1] = "EURCHF" + Pair_suffix;
               Pair[2] = "EURGBP" + Pair_suffix;
               Pair[3] = "EURCAD" + Pair_suffix;
               Pair[4] = "EURAUD" + Pair_suffix;
               Pair[5] = "EURNZD" + Pair_suffix;
               Pair[6] = "EURJPY" + Pair_suffix;               
               Factor=700.0;
               break;   
                 
      case 8:  Pair[0] = "GBPUSD" + Pair_suffix;
               Pair[1] = "EURJPY" + Pair_suffix;
               Pair[2] = "AUDUSD" + Pair_suffix;
               Pair[3] = "NZDJPY" + Pair_suffix;
               Pair[4] = "EURUSD" + Pair_suffix;
               Pair[5] = "GBPJPY" + Pair_suffix;
               Pair[6] = "NZDUSD" + Pair_suffix;
               Pair[7] = "AUDJPY" + Pair_suffix;
               Factor=800.0;
               break;
      case 9:  Pair[0] = "AUDCAD" + Pair_suffix;
               Pair[1] = "AUDCHF" + Pair_suffix;
               Pair[2] = "AUDJPY" + Pair_suffix;
               Pair[3] = "AUDUSD" + Pair_suffix;
               Pair[4] = "CADJPY" + Pair_suffix;
               Pair[5] = "GBPCHF" + Pair_suffix;
               Pair[6] = "GBPJPY" + Pair_suffix;
               Pair[7] = "NZDJPY" + Pair_suffix;
               Pair[7] = "NZDUSD" + Pair_suffix;              
               Factor=900.0;
               break;       
      case 10: Pair[0] = "GBPUSD" + Pair_suffix;
               Pair[1] = "EURGBP" + Pair_suffix;
               Pair[2] = "GBPJPY" + Pair_suffix;
               Pair[3] = "CADJPY" + Pair_suffix;
               Pair[4] = "NZDUSD" + Pair_suffix;
               Pair[5] = "EURUSD" + Pair_suffix;
               Pair[6] = "USDJPY" + Pair_suffix;
               Pair[7] = "AUDUSD" + Pair_suffix;
               Pair[8] = "NZDJPY" + Pair_suffix;
               Pair[9] = "GBPCHF" + Pair_suffix;
               Factor=1000.0;
               break;
      case 12: Pair[0] = "GBPUSD" + Pair_suffix;
               Pair[1] = "EURGBP" + Pair_suffix;
               Pair[2] = "GBPJPY" + Pair_suffix;
               Pair[3] = "CADJPY" + Pair_suffix;
               Pair[4] = "NZDUSD" + Pair_suffix;
               Pair[5] = "AUDJPY" + Pair_suffix;
               Pair[6] = "EURUSD" + Pair_suffix;
               Pair[7] = "USDJPY" + Pair_suffix;
               Pair[8] = "AUDUSD" + Pair_suffix;
               Pair[9] = "NZDJPY" + Pair_suffix;
               Pair[10] = "GBPCHF" + Pair_suffix;
               Pair[11] = "CHFJPY" + Pair_suffix;
               Factor=1200.0;
               break;
      case 14: Pair[0] = "GBPUSD" + Pair_suffix;
               Pair[1] = "EURGBP" + Pair_suffix;
               Pair[2] = "GBPJPY" + Pair_suffix;
               Pair[3] = "USDCHF" + Pair_suffix;
               Pair[4] = "NZDUSD" + Pair_suffix;
               Pair[5] = "AUDJPY" + Pair_suffix;
               Pair[6] = "EURJPY" + Pair_suffix;
               Pair[7] = "EURUSD" + Pair_suffix;
               Pair[8] = "USDJPY" + Pair_suffix;
               Pair[9] = "AUDUSD" + Pair_suffix;
               Pair[10] = "NZDJPY" + Pair_suffix;
               Pair[11] = "GBPCHF" + Pair_suffix;
               Pair[12] = "CHFJPY" + Pair_suffix;
               Pair[13] = "EURCHF" + Pair_suffix;
               Factor=1400.0;
               break;
      /*case 15: Pair[0] = "GBPUSD" + Pair_suffix;
               Pair[1] = "EURGBP" + Pair_suffix;
               Pair[2] = "GBPCHF" + Pair_suffix;
               Pair[3] = "CHFJPY" + Pair_suffix;
               Pair[4] = "AUDJPY" + Pair_suffix;
               Pair[5] = "EURJPY" + Pair_suffix;
               Pair[6] = "USDCHF" + Pair_suffix;
               Pair[7] = "CADJPY" + Pair_suffix;
               Pair[8] = "AUDUSD" + Pair_suffix;
               Pair[9] = "USDJPY" + Pair_suffix;
               Pair[10] = "EURUSD" + Pair_suffix;
               Pair[11] = "EURCHF" + Pair_suffix;
               Pair[12] = "GBPJPY" + Pair_suffix;
               Pair[13] = "USDCAD" + Pair_suffix;
               Factor=1400.0;
               break;*/
      case 20: Pair[0] = "GBPCHF" + Pair_suffix;
               Pair[1] = "EURGBP" + Pair_suffix;
               Pair[2] = "USDJPY" + Pair_suffix;
               Pair[3] = "AUDJPY" + Pair_suffix;
               Pair[4] = "GBPUSD" + Pair_suffix;
               Pair[5] = "EURAUD" + Pair_suffix;
               Pair[6] = "NZDCAD" + Pair_suffix;
               Pair[7] = "GBPJPY" + Pair_suffix;
               Pair[8] = "EURCHF" + Pair_suffix;
               Pair[9] = "AUDCAD" + Pair_suffix;
               Pair[10] = "AUDCHF" + Pair_suffix;
               Pair[11] = "GBPCAD" + Pair_suffix;
               Pair[12] = "EURUSD" + Pair_suffix;
               Pair[13] = "NZDJPY" + Pair_suffix;
               Pair[14] = "EURCAD" + Pair_suffix;
               Pair[15] = "GBPNZD" + Pair_suffix;
               Pair[16] = "NZDCHF" + Pair_suffix;
               Pair[17] = "CHFJPY" + Pair_suffix;
               Pair[18] = "USDCHF" + Pair_suffix;
               Pair[19] = "EURJPY" + Pair_suffix;               
               Factor=2000.0;
               break;
               
       default: break;
       }
       Currency=Currency+Pair_suffix;
//----
   return(0);
  }
  
  string PadValINT(int Val,  int PadSpc)
{
  string S = Val;
  
  while ( StringLen(S) < PadSpc ) S = "0" + S;
  
  return(S); 
}
 
saklas:

hi to all,

Before build600 code below work perfectly. Why should I change to use indicator

Go to the author and ask him to fix it.
 
RaptorUK:
Go to the author and ask him to fix it.


Ha Ha Ha.. as always RaptorUK
Reason: