427 lines
		
	
	
	
		
			7.9 KiB
		
	
	
	
		
			MQL4
		
	
	
	
	
	
		
		
			
		
	
	
			427 lines
		
	
	
	
		
			7.9 KiB
		
	
	
	
		
			MQL4
		
	
	
	
	
	
| 
								 | 
							
								#define PAUSE 100
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#define MAX_AMOUNTSYMBOLS 15
							 | 
						||
| 
								 | 
							
								#define MAX_POINTS 100000
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								string SymbolsStr;
							 | 
						||
| 
								 | 
							
								int Height, Depth;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								string Symbols[MAX_AMOUNTSYMBOLS];
							 | 
						||
| 
								 | 
							
								int AmountSymbols;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								double Vectors[][MAX_POINTS], Divers[MAX_POINTS], Recycles[MAX_POINTS];
							 | 
						||
| 
								 | 
							
								int CurrTime, Times[MAX_POINTS];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								int MatrixRows;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								string UName, SymbolPosName;
							 | 
						||
| 
								 | 
							
								double V[];
							 | 
						||
| 
								 | 
							
								int SymbolPos;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								int Global, PrevGlobal, PrevTime, PrevEndInterval;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								string FontName = "Arial";
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void GetConfig( string FileName )
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								  int handle = FileOpen(FileName, FILE_CSV|FILE_READ);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  SymbolsStr = FileReadString(handle);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  FileReadNumber(handle); // Correlation
							 | 
						||
| 
								 | 
							
								  Depth = FileReadNumber(handle);
							 | 
						||
| 
								 | 
							
								  FileReadNumber(handle); // Method
							 | 
						||
| 
								 | 
							
								  FileReadNumber(handle); // Iterations
							 | 
						||
| 
								 | 
							
								  Height = FileReadNumber(handle);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  FileClose(handle);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  return;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								string StrDelSpaces( string Str )
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								  int Pos, Length;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  Str = StringTrimLeft(Str);
							 | 
						||
| 
								 | 
							
								  Str = StringTrimRight(Str);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  Length = StringLen(Str) - 1;
							 | 
						||
| 
								 | 
							
								  Pos = 1;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  while (Pos < Length)
							 | 
						||
| 
								 | 
							
								    if (StringGetChar(Str, Pos) == ' ')
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								      Str = StringSubstr(Str, 0, Pos) + StringSubstr(Str, Pos + 1, 0);
							 | 
						||
| 
								 | 
							
								      Length--;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    else
							 | 
						||
| 
								 | 
							
								      Pos++;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  return(Str);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								int StrToStringS( string Str, string Razdelitel, string &Output[] )
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								  int Pos, LengthSh;
							 | 
						||
| 
								 | 
							
								  int Count = 0;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  Str = StrDelSpaces(Str);
							 | 
						||
| 
								 | 
							
								  Razdelitel = StrDelSpaces(Razdelitel);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  LengthSh = StringLen(Razdelitel);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  while (TRUE)
							 | 
						||
| 
								 | 
							
								  {
							 | 
						||
| 
								 | 
							
								    Pos = StringFind(Str, Razdelitel);
							 | 
						||
| 
								 | 
							
								    Output[Count] = StringSubstr(Str, 0, Pos);
							 | 
						||
| 
								 | 
							
								    Count++;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if (Pos == -1)
							 | 
						||
| 
								 | 
							
								      break;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    Pos += LengthSh;
							 | 
						||
| 
								 | 
							
								    Str = StringSubstr(Str, Pos);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  return(Count);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								int GetRightSideTime()
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								  static int Shift = 0;
							 | 
						||
| 
								 | 
							
								  static int PrevPos = 0;
							 | 
						||
| 
								 | 
							
								  int Pos, EndInterval;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  Pos = WindowFirstVisibleBar() - WindowBarsPerChart();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (Pos < 0)
							 | 
						||
| 
								 | 
							
								    Pos = 0;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (PrevPos == Pos)
							 | 
						||
| 
								 | 
							
								  {
							 | 
						||
| 
								 | 
							
								    EndInterval = ObjectGet("EndInterval", OBJPROP_TIME1);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if (EndInterval != PrevEndInterval)
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								      if ((EndInterval > Times[MatrixRows - 1]) || (EndInterval < Times[Depth]))
							 | 
						||
| 
								 | 
							
								        Shift = 0;
							 | 
						||
| 
								 | 
							
								      else
							 | 
						||
| 
								 | 
							
								        Shift = iBarShift(Symbol(), Period(), EndInterval) - Pos;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      PrevEndInterval = EndInterval;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  PrevPos = Pos;
							 | 
						||
| 
								 | 
							
								  Pos += Shift;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  return(Time[iBarShift(Symbol(), Period(), GlobalVariableGet(UName + "LastTime")) + Pos]);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void GetData( string FileName )
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								  int i;
							 | 
						||
| 
								 | 
							
								  int handle = FileOpen(FileName, FILE_BIN|FILE_READ);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  ArrayResize(Vectors, AmountSymbols);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  MatrixRows = 0;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  while (FileTell(handle) < FileSize(handle))
							 | 
						||
| 
								 | 
							
								  {
							 | 
						||
| 
								 | 
							
								    Times[MatrixRows] = FileReadInteger(handle);
							 | 
						||
| 
								 | 
							
								    Recycles[MatrixRows] = FileReadDouble(handle);
							 | 
						||
| 
								 | 
							
								    Divers[MatrixRows] = FileReadDouble(handle);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    for (i = 0; i < AmountSymbols; i++)
							 | 
						||
| 
								 | 
							
								      Vectors[i][MatrixRows] = FileReadDouble(handle);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    MatrixRows++;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  FileClose(handle);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  return;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								int GetTimePos( int SearchTime )
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								  int LeftTime, RightTime, PosTime;
							 | 
						||
| 
								 | 
							
								  int Left, Right, Pos = 0;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  Left = 0;
							 | 
						||
| 
								 | 
							
								  Right = MatrixRows - 1;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  LeftTime = Times[Left];
							 | 
						||
| 
								 | 
							
								  RightTime = Times[Right];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (SearchTime >= RightTime)
							 | 
						||
| 
								 | 
							
								    Pos = Right;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  while ((LeftTime < SearchTime) && (SearchTime < RightTime))
							 | 
						||
| 
								 | 
							
								  {
							 | 
						||
| 
								 | 
							
								    Pos = (Left + Right) >> 1;
							 | 
						||
| 
								 | 
							
								    PosTime = Times[Pos];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if (Pos == Left)
							 | 
						||
| 
								 | 
							
								      break;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if (SearchTime >= PosTime)
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								      Left = Pos;
							 | 
						||
| 
								 | 
							
								      LeftTime = PosTime;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    else // if (SearchTime < PosTime)
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								      Right = Pos;
							 | 
						||
| 
								 | 
							
								      RightTime = PosTime;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  return(Pos);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void GetVector( int time, double& V[] )
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								  int Pos = GetTimePos(time);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  for (int i = 0; i < AmountSymbols; i++)
							 | 
						||
| 
								 | 
							
								    V[i] = Vectors[i][Pos];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  return;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void HideObject( string Name, bool Hide )
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								  if (Hide)
							 | 
						||
| 
								 | 
							
								   ObjectSet(Name, OBJPROP_TIMEFRAMES, EMPTY);
							 | 
						||
| 
								 | 
							
								  else
							 | 
						||
| 
								 | 
							
								   ObjectSet(Name, OBJPROP_TIMEFRAMES, NULL);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 return;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void SetBar( string Name, double Value )
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								  int i, Pos;
							 | 
						||
| 
								 | 
							
								  string Tmp;
							 | 
						||
| 
								 | 
							
								  int Avg = Height / 2;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  HideObject(Name + "Plus", TRUE);
							 | 
						||
| 
								 | 
							
								  HideObject(Name + "Minus", TRUE);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (Value >= 0)
							 | 
						||
| 
								 | 
							
								    Tmp = "Plus";
							 | 
						||
| 
								 | 
							
								  else
							 | 
						||
| 
								 | 
							
								    Tmp = "Minus";
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  ModifyTextObject(Name + Tmp, DoubleToStr(Value, 4));
							 | 
						||
| 
								 | 
							
								  HideObject(Name + Tmp, FALSE);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  for (i = 0; i <= Height; i++)
							 | 
						||
| 
								 | 
							
								   HideObject(Name + i, TRUE);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  Pos = Value * Avg;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (Value >= 0)
							 | 
						||
| 
								 | 
							
								    for (i = Avg; i >= Avg - Pos; i--)
							 | 
						||
| 
								 | 
							
								      HideObject(Name + i, FALSE);
							 | 
						||
| 
								 | 
							
								  else
							 | 
						||
| 
								 | 
							
								    for (i = Avg; i <= Avg - Pos; i++)
							 | 
						||
| 
								 | 
							
								      HideObject(Name + i, FALSE);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  return;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								double iIF( bool Cond, double Num1, double Num2 )
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								  if (Cond)
							 | 
						||
| 
								 | 
							
								    return(Num1);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  return(Num2);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void ModifyTextObject( string Name, string Text )
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								  int Color = ObjectGet(Name, OBJPROP_COLOR);
							 | 
						||
| 
								 | 
							
								  int FontSize = ObjectGet(Name, OBJPROP_FONTSIZE);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  ObjectSetText(Name, Text, FontSize, FontName, Color);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  return;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void SetArrow()
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								  int Pos = GetTimePos(CurrTime);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  ObjectSet("Arrow", OBJPROP_TIME1, Times[Pos]);
							 | 
						||
| 
								 | 
							
								  ObjectSet("Arrow", OBJPROP_PRICE1, iIF(SymbolPos < AmountSymbols, MathAbs(Vectors[SymbolPos][Pos]), Recycles[Pos]));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  return;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void SetVertLine( string Name, int Pos)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								  ObjectSet(Name, OBJPROP_TIME1, Pos);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  return;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void DrawVector( double& Vector[] )
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								  string Tmp, Tmp2 = "";
							 | 
						||
| 
								 | 
							
								  int time, Pos = GetTimePos(CurrTime);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  SetArrow();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (Pos < Depth - 1)
							 | 
						||
| 
								 | 
							
								  {
							 | 
						||
| 
								 | 
							
								    time = Time[iBarShift(Symbol(), Period(), Times[0]) + Depth - 1 - Pos];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    Tmp2 = " (about)";
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  else
							 | 
						||
| 
								 | 
							
								    time = Times[Pos - Depth + 1];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  SetVertLine("BeginInterval", time);
							 | 
						||
| 
								 | 
							
								  SetVertLine("EndInterval", Times[Pos]);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  Tmp = "Depth = " + Depth + " bars (" + TimeToStr(time) + Tmp2 + " - " + TimeToStr(Times[Pos]) + ")";
							 | 
						||
| 
								 | 
							
								  ModifyTextObject("Depth", Tmp);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  Tmp = "Deviation = " + Divers[Pos];
							 | 
						||
| 
								 | 
							
								  ModifyTextObject("Deviation", Tmp);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  Tmp = "Recycle = " + Recycles[Pos];
							 | 
						||
| 
								 | 
							
								  ModifyTextObject("Recycle", Tmp);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (SymbolPos < AmountSymbols)
							 | 
						||
| 
								 | 
							
								  {
							 | 
						||
| 
								 | 
							
								    Tmp = Symbol() + " Koef = " + MathAbs(Vector[SymbolPos]);
							 | 
						||
| 
								 | 
							
								    ModifyTextObject("SymbolKoef", Tmp);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  for (int i = 0; i < AmountSymbols; i++)
							 | 
						||
| 
								 | 
							
								    SetBar(Symbols[i], Vector[i]);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  WindowRedraw();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (TRUE)
							 | 
						||
| 
								 | 
							
								    AddTick();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  return;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								int GetCondition()
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								  int Cond = 0;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (!GlobalVariableCheck(UName))
							 | 
						||
| 
								 | 
							
								    return(Cond); // 0
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  Global = GlobalVariableGet(UName);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (Global == 0)
							 | 
						||
| 
								 | 
							
								    return(Cond); // 0
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  Cond++;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (PrevGlobal != Global)
							 | 
						||
| 
								 | 
							
								    return(Cond); // 1
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  Cond++;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  RefreshRates();
							 | 
						||
| 
								 | 
							
								  CurrTime = GetRightSideTime();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (CurrTime != PrevTime)
							 | 
						||
| 
								 | 
							
								    return(Cond);  // 2
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  Cond++;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  return(Cond);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void Shadowing()
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								  UName = "hwnd" + WindowHandle(Symbol(), Period());
							 | 
						||
| 
								 | 
							
								  SymbolPosName = UName + "SymbolPos";
							 | 
						||
| 
								 | 
							
								  bool Flag = TRUE;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  while (!IsStopped())
							 | 
						||
| 
								 | 
							
								  {
							 | 
						||
| 
								 | 
							
								    switch (GetCondition())
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								      case 0:
							 | 
						||
| 
								 | 
							
								        Flag = TRUE;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        PrevGlobal = 0;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        break;
							 | 
						||
| 
								 | 
							
								      case 1:
							 | 
						||
| 
								 | 
							
								        if (Flag)
							 | 
						||
| 
								 | 
							
								        {
							 | 
						||
| 
								 | 
							
								          GetConfig(UName + ".ini");
							 | 
						||
| 
								 | 
							
								          SymbolPos = GlobalVariableGet(SymbolPosName);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								          AmountSymbols = StrToStringS(SymbolsStr, ",", Symbols);
							 | 
						||
| 
								 | 
							
								          ArrayResize(V, AmountSymbols);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								          PrevTime = 0;
							 | 
						||
| 
								 | 
							
								          PrevEndInterval = ObjectGet("EndInterval", OBJPROP_TIME1);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								          Flag = FALSE;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        PrevGlobal = Global;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        GetData(UName + "i.dat");
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        break;
							 | 
						||
| 
								 | 
							
								      case 2:
							 | 
						||
| 
								 | 
							
								        GetVector(CurrTime, V);
							 | 
						||
| 
								 | 
							
								        DrawVector(V);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        PrevTime = CurrTime;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        break;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    Sleep(PAUSE);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  return;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void init()
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								  Shadowing();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  return;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void start()
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								  return;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#import "user32.dll"
							 | 
						||
| 
								 | 
							
								  int PostMessageA( int hWnd, int Msg, int wParam, int lParam );
							 | 
						||
| 
								 | 
							
								  int RegisterWindowMessageA( string lpString );
							 | 
						||
| 
								 | 
							
								#import
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void AddTick()
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								  if (!IsDllsAllowed())
							 | 
						||
| 
								 | 
							
								    return;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  int hwnd = WindowHandle(Symbol(), Period());
							 | 
						||
| 
								 | 
							
								  int MT4InternalMsg = RegisterWindowMessageA("MetaTrader4_Internal_Message");
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  PostMessageA(hwnd, MT4InternalMsg, 2, 1);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  return;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 |