任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. - 页 816

 

我刚刚对 "报价档案 "进行了实验。通过单独更新每个图表,几乎所有图表的历史记录都开始正常工作,除了几个异国货币对,我删除并更新了几次--图表没有新数据。总的来说,我们可以说问题已经解决了


谢谢你的效率))))

 

亲爱的程序员....,我有一个问题...我创建了一个EA....,它正常打开交易(在测试器中)....,但只关闭买入交易....,在完成测试后只关闭卖出交易...这里有一段代码....,你能帮助我吗?

 

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

void CloseSell() 

{

   for (int trade = OrdersTotal() - 1; trade >= 0; trade--) 

   {

      if (OrderSelect(trade, SELECT_BY_POS, MODE_TRADES) == true) 

      {   

      if (OrderSymbol() == Symbol()) 

         {

            if (OrderMagicNumber() == Magic && OrderType() == OP_SELL) 

               OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, Green);

         }

      }

   }

}

//+------------------------------------------------------------------+

void CloseBuy() 

{

   for (int trade = OrdersTotal() - 1; trade >= 0; trade--) 

   {

      if (OrderSelect(trade, SELECT_BY_POS, MODE_TRADES) == true)

      {

         if (OrderSymbol() == Symbol()) 

         {

            if (OrderMagicNumber() == Magic && OrderType() == OP_BUY) 

               OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, Green);

         }

      }

   }

}

//+------------------------------------------------------------------+

void OpenSellOrder()

{

   mlots = GetLots();

   

   if (AutoSL) sl = CalcSL(OP_SELL);

   else sl = ND(Bid - StopLoss*Point);

   

   tp = ND(Bid - TakeProfit*Point);

   

   ticket = OrderSendReliable(Symbol(), OP_SELL,  mlots, Bid, Slippage, 0, 0, comment, Magic, 0, Red);

   if(ticket > 0)

      OrderModifyReliable(OrderTicket(), OrderOpenPrice(), sl, tp, 0);


}

//+------------------------------------------------------------------+

int OpenBuyOrder()

{

   mlots = GetLots();

   

   if (AutoSL) sl = CalcSL(OP_BUY);

   else sl = ND(Bid - StopLoss*Point);


   tp = ND(Ask + TakeProfit*Point);


   ticket = OrderSendReliable(Symbol(), OP_BUY,  mlots, Ask, Slippage, 0, 0, comment, Magic, 0, Blue);

   if(ticket > 0)

      OrderModifyReliable(OrderTicket(), OrderOpenPrice(), sl, tp, 0);

}

//+------------------------------------------------------------------+

void ModifyLoss()

{

   for (int trade = OrdersTotal() - 1; trade >= 0; trade--) 

   {

      if (OrderSelect(trade, SELECT_BY_POS, MODE_TRADES) == true)

      {

         if (OrderSymbol() != Symbol() || OrderMagicNumber() != Magic) continue;

         if (OrderType() == OP_BUY)

         {

            sl = ND(OrderOpenPrice() + LossPoints*Point);

            if (OrderStopLoss() < sl && (Ask - OrderOpenPrice())/Point >= LossLimit)

            {

               if (sl != ND(OrderStopLoss()))

                  OrderModify(OrderTicket(), OrderOpenPrice(), sl, OrderTakeProfit(), 0);

            }

         } 

         else

         if (OrderType() == OP_SELL)

         {

            sl = ND(OrderOpenPrice() - LossPoints*Point);

            if (OrderStopLoss() > sl && (OrderOpenPrice()-Bid)/Point >= LossLimit)

            {

               if (sl != ND(OrderStopLoss()))

                  OrderModify(OrderTicket(), OrderOpenPrice(), sl, OrderTakeProfit(), 0);

            }

         }

      }

   }

}

//+------------------------------------------------------------------+

double CalcSL(int otype)

{

   double sloss = 10000000;

   

   if (otype == OP_BUY)

   {

      double min;

      for (int i=1; i<=SLBars; i++) 

      {

         min = iLow(NULL, 0, i);

         if (min < sloss)

            sloss = min;

      }

      

      sloss = ND(sloss - SLPips*Point);

      if ((Ask-sloss)/Point < MinSL)

         sloss = ND(Ask - MinSL*Point);

             

      if ((Ask - sloss)/Point > MaxSL)

         sloss = ND(Ask - MaxSL*Point);

      else 

         sloss = ND(sloss - SLPips*Point);


      return(sloss);

   }

   else

   if (otype == OP_SELL)

   {

      double max;

      sloss = 0;

      

      for (i=1; i<=SLBars; i++) 

      {

         max = iHigh(NULL, 0, i);

         if (max > sloss)

            sloss = max;

      }

      

      if ((sloss - Bid)/Point < MinSL)

         sloss = ND(Bid + MinSL*Point);

          

      if ((sloss - Bid)/Point > MaxSL)

         sloss = ND(Bid + MaxSL*Point);

      else

         sloss = ND(sloss + SLPips*Point); 


      return(sloss);

   }

   return(0);

}

//+------------------------------------------------------------------+

double GetLots()

{

   if (!UseMM) return(FixLot);


   double clots;

   clots = AccountBalance()    / 10000.0 * LotsFor10000;

   clots = MathMax(clots, MarketInfo(Symbol(), MODE_MINLOT));

   clots = MathMin(clots, MarketInfo(Symbol(), MODE_MAXLOT));

   clots = NormalizeDouble(clots, 2);

   return (clots);

}

//+------------------------------------------------------------------+

int CountBuy() 

{

   int count = 0;

   for (int trade = OrdersTotal() - 1; trade >= 0; trade--) 

   {

      if (OrderSelect(trade, SELECT_BY_POS, MODE_TRADES))

      {

         if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_BUY)

             count++;

      }

   }

   return (count);

}

//+------------------------------------------------------------------+

int CountSell() 

{

   int count = 0;

   for (int trade = OrdersTotal() - 1; trade >= 0; trade--) 

   {

      if (OrderSelect(trade, SELECT_BY_POS, MODE_TRADES))

      {

         if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_SELL)

             count++;

      }

   }

   return (count);

}

//+------------------------------------------------------------------+

int CountTrades()

{

   return(CountBuy() + CountSell()); 

}

//+------------------------------------------------------------------+

double ND(double value)

{

   return (NormalizeDouble(value, Digits)); 

 
你能告诉我如何确定一个枚举里有多少个元素吗?
 
CJIeCaPb:

预选订单 OrderSelect(Ticket_first_order,SELECT_BY_TICKET)。

如果(OrderOpenPrice()+10*Point==Ask)

OrderSend(Symbol(),OP_BUY,Lot,Ask,10,Ask-SL*Point,Ask+TP*Point,NULL,Magic,0,Green) 。

那么如何确定Ticket_first_order?
 

我想这是一个工作分支......哎呀,对不起。

大家晚安!!!。新年快乐!

决定通过文件保存缓冲区数据。创建一个文件并向其写入没有问题,但要从其读出却很难。

这里有一个试用程序。请帮助。问题是,要么有额外的写入文件,要么无法从文件中读取。我只是想从文件中读取一个列表,例如,数组...如果我懒得写,请链接到类似的材料,但我只找到教程...但最好在网站上有一个现成的变体)))。

无论如何都要提前感谢!))。

//+------------------------------------------------------------------+
//|                                                   Proba file.mq4 |
//|                        Copyright 2014, MetaQuotes Software Corp. |
//|                                              https://www.mql4.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2014, MetaQuotes Software Corp."
#property link      "https://www.mql4.com"
#property version   "1.00"
#property strict
#property indicator_chart_window
#property indicator_buffers 3
#property  indicator_color1 Blue
#property  indicator_color2 Lime
#property  indicator_color3 Red
extern int ind=0;   //--- выберем случайно номер строки
extern string СдвигДаты  = "30.12.2014  00:00";
extern bool   ВыключательСдвигаДаты = false; 
extern bool   ЗаписьФайла = true;
//--- глобальные переменные
int    Tm,hr,shift,shiftbar,size,InpFileName;
double H_buff[];
double L_buff[];
double C_buff[];
ulong  pos[];
double LastHigh,LastLow;
double OPEN,HIGH,LOW,CLOSE;
datetime pr,pr_1;
string  T1,T2,T3,T4,file_buffer;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {  
//--- привязка массива к индикаторному буферу с номером индекса
   SetIndexBuffer(0,H_buff);
   SetIndexBuffer(1,L_buff);
   SetIndexBuffer(2,C_buff);
//--- установка значений индикатора, которые не будут видимы на графике
   SetIndexEmptyValue(0,EMPTY);
   SetIndexEmptyValue(1,EMPTY);
   SetIndexEmptyValue(2,EMPTY);
//---- устанавить новый тип, стиль, ширину и цвет для указанной линии индикатора
   SetIndexStyle(0,DRAW_LINE,0,1);
   SetIndexStyle(1,DRAW_LINE,0,1);
   SetIndexStyle(2,DRAW_LINE,1,1);
//---- устанавить формат точности (количество знаков после десятичной точки
   IndicatorDigits(Digits);
//---- Устанавливает порядковый номер бара от начала данных, с которого должна начинаться отрисовка указанной линии 
   SetIndexDrawBegin(0,2);
//---
    return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
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 &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//----  Функия расчета ключевых точек 
if (ВыключательСдвигаДаты==true) 
    shiftbar  = iBarShift(Symbol(),PERIOD_D1, StrToTime(СдвигДаты), false); 
      else 
    shiftbar = 1; 
     hr=iBarShift(Symbol(),PERIOD_H1,iTime(Symbol(),PERIOD_D1,shiftbar));   // бервый бар дня для прорисовки уровней
     if(hr>=8)   shift= hr-4;
    HIGH= iHigh(Symbol(),PERIOD_H1,shift);
    LOW=  iLow(Symbol(),PERIOD_H1,shift);
    CLOSE= iClose(Symbol(),PERIOD_H1,shift);
//----  Функция проверки баров утренней сессии
    
   int limit=iBarShift(Symbol(),0,iTime(Symbol(),PERIOD_D1,shiftbar));   // бервый бар дня для прорисовки уровней
   int end=iBarShift(Symbol(),0,iTime(Symbol(),PERIOD_D1,shiftbar-1));

     if(Period()==PERIOD_H1 && hr>=8 && (TimeDayOfWeek(Time[0])<6 && TimeDayOfWeek(Time[0])>0))
      {
   for(int i=limit; i>=end; i--)
     {
     if (High[i+1]>LastHigh) LastHigh=High[i+1];
        if (Low[i+1]<LastLow) LastLow=Low[i+1];
         pr = TimeDay(Time[i]); 
      pr_1 = TimeDay(Time[i+1]);
     if (pr!=pr_1)
        {
         H_buff[i+1] = EMPTY;
         L_buff[i+1] = EMPTY;
         C_buff[i+1] = EMPTY;
        }
//----  Функция прорисовки уровней ZigZag на графике
         H_buff[i]=HIGH;
         L_buff[i]=LOW;
         C_buff[i]=CLOSE;
        }
       }
////////////////////////////////////////////////      ЭТО  БЫЛО   ВСТУПЛЕНИЕ   ДЛЯ   РАБОЧЕГО   ПОНИМАНИЯ    \\\\\\\\\\\\\\\\\\ 
   
//-----  Функция открытия и чтения значений из файла  
      ResetLastError();
//--- откроем файл
      if(ЗаписьФайла==true)
      InpFileName=FileOpen(Symbol()+" Z Point.txt",FILE_READ|FILE_TXT);
   if(InpFileName!=INVALID_HANDLE)
     {
      GetStringPositions(InpFileName,pos);                    //--- получим позицию начала для каждой строки в файле
      size=ArraySize(pos);                                    //--- определим сколько всего строк в файле   
      if(!size)                                               //--- если в файле нет строк, то завершаем работу
     FileClose(InpFileName);

      if(FileSeek(InpFileName,pos[ind],SEEK_SET)==true)       //--- сдвинем позицию на начало этой строки
        {
      Print("Текст строки с номером    ",ind,"   ",FileReadString(InpFileName),"  size  ",size);  //--- прочитаем и распечатаем строку с номером ind
      file_buffer=FileReadString(InpFileName);    // чтение строки из файла
      T1=StringSubstr(file_buffer,0,2+Digits);    // Извлекаем первые 7 символов
      T2=StringSubstr(file_buffer,7,2+Digits);    // Извлекаем вторые 7 символов
      T3=StringSubstr(file_buffer,14,2+Digits);   // Извлекаем третьи 7 символов
      T4=StringSubstr(file_buffer,21);            // Извлекаем остаток символов
        }
      FileClose(InpFileName);
     }
   
      if(ЗаписьФайла==true) {
       Comment("ЗАПИСЬ  В ФАЙЛ: IND ",ind,"  SIZE  ",size,"  T1:  ",StrToDouble(T1)," ||| T2:  ",StrToDouble(T2)," ||| T3:   ",StrToDouble(T3),"  |||  shift  ",StrToInteger(T4));   
        
        if(StrToDouble(T1)!=HIGH && StrToDouble(T2)!=LOW && StrToDouble(T3)!=CLOSE && StrToInteger(T4)!=shift)
        WRITEfile(); } else Comment("ЗАПИСЬ  ВЫКЛЮЧЕНА !");

//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
//| Функция определяет позиции начала для каждой из строк в файле и  |
//| помещает их в массив arr                                         |
//+------------------------------------------------------------------+
void GetStringPositions(const int handle,ulong &arr[])
  {
  
   int i,def_size=127;           //--- размер массива по умолчанию
   ArrayResize(arr,def_size);    //--- выделим память для массива
   if(!FileIsEnding(handle))     //--- если не конец файла, то есть хотя бы одна строка
     {
      arr[i]=FileTell(handle);
      i++;                       //--- счетчик строк
     }
   else
      return;                       // файл пуст, выходим
//--- определим сдвиг в байтах в зависимости от кодировки
   
   if(FileGetInteger(handle,FILE_IS_TEXT))
   while(!FileIsEnding(handle))  //--- в цикле перебираем строки до конца файла
     {
      FileReadString(handle);    //--- читаем строку
      if(!FileIsEnding(handle))  //--- проверка на конец файла
        {
         arr[i]=FileTell(handle)+1;   //--- запомним позицию следующей строки
         i++;
         if(i==def_size)         //--- увеличим размер массива, если он переполнен
           {
            def_size+=def_size+1;
            ArrayResize(arr,def_size);
           }
        }
      else
         break;               // конец файла, выходим
     }
   ArrayResize(arr,i);     //--- установим истинный размер массива
  } 
//+------------------------------------------------------------------+
void WRITEfile()   // запись в файл и его создание если его нет
  { 
//--- сбросим код ошибки
   ResetLastError();
//--- правильный способ работы в "файловой песочнице"
   InpFileName=FileOpen(Symbol()+" Z Point.txt",FILE_READ|FILE_WRITE|FILE_TXT);   // Имя файла
   if(InpFileName!=INVALID_HANDLE)
     {
   FileSeek(InpFileName,0,SEEK_END);
   FileWrite(InpFileName,DoubleToStr(HIGH,Digits),DoubleToStr(LOW,Digits),DoubleToStr(CLOSE,Digits),IntegerToString(shift,0));
    FileFlush(InpFileName);  
     }
   FileClose(InpFileName);           
  return;
  }
//+------------------------------------------------------------------+
 

唉,文件里 有录音就不那么容易了!((()

而这似乎......恰恰相反。

由于有教程中的例子,阅读已经解决了,但记录到文件中需要更复杂的代码。简而言之,我已经被骗了...我不知道如何将记录与 "从文件中读取 "同步移动。

我纠正了日线和历史(初始缓冲数据)的水平设置。

问题是一样的。请给我一个提示,如果写得太多,如何把缓冲区的数据写到文件中。

修改后的程序代码

//+------------------------------------------------------------------+
//|                                                   Proba file.mq4 |
//|                        Copyright 2014, MetaQuotes Software Corp. |
//|                                              https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2014, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
#property indicator_chart_window
#property indicator_buffers 3
#property  indicator_color1 Blue
#property  indicator_color2 Lime
#property  indicator_color3 Red
extern int ind=0;   //--- выберем случайно номер строки
extern string СдвигДаты  = "06.01.2015  00:00";
extern bool   ВыключательСдвигаДаты = false; 
extern bool   ЗаписьФайла = true;
//--- глобальные переменные
int    Tm,hr,shift,shiftbar,size,sizew,InpFileName,limit,end;
double H_buff[];
double L_buff[];
double C_buff[];
ulong  pos[],arrw[];
double LastHigh,LastLow;
double OPEN,HIGH,LOW,CLOSE;
datetime pr,pr_1;
string  T1,T2,T3,T4,file_buffer;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {  
//--- привязка массива к индикаторному буферу с номером индекса
   SetIndexBuffer(0,H_buff);
   SetIndexBuffer(1,L_buff);
   SetIndexBuffer(2,C_buff);
//--- установка значений индикатора, которые не будут видимы на графике
   SetIndexEmptyValue(0,EMPTY);
   SetIndexEmptyValue(1,EMPTY);
   SetIndexEmptyValue(2,EMPTY);
//---- устанавить новый тип, стиль, ширину и цвет для указанной линии индикатора
   SetIndexStyle(0,DRAW_LINE,0,1);
   SetIndexStyle(1,DRAW_LINE,0,1);
   SetIndexStyle(2,DRAW_LINE,1,1);
//---- устанавить формат точности (количество знаков после десятичной точки
   IndicatorDigits(Digits);
//---- Устанавливает порядковый номер бара от начала данных, с которого должна начинаться отрисовка указанной линии 
   SetIndexDrawBegin(0,2);
//---
    return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
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 &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//----  Функия расчета ключевых точек 
if (ВыключательСдвигаДаты==true) 
    shiftbar  = iBarShift(Symbol(),PERIOD_D1, StrToTime(СдвигДаты), false); 
      else 
    shiftbar = 0; 
     hr=iBarShift(Symbol(),PERIOD_H1,iTime(Symbol(),PERIOD_D1,shiftbar));   // бервый бар дня для прорисовки уровней
     if(hr>=9)   shift= hr-8;
    HIGH= iHigh(Symbol(),PERIOD_H1,shift);
    LOW=  iLow(Symbol(),PERIOD_H1,shift);
    CLOSE= iClose(Symbol(),PERIOD_H1,shift);
//----  Функция проверки баров утренней сессии
    
    if(ВыключательСдвигаДаты==true) 
     {
       limit=shift;
       end=iBarShift(Symbol(),0,iTime(Symbol(),PERIOD_D1,shiftbar))-23;
       }
        else 
       {
       limit=shift;
       end=iBarShift(Symbol(),0,iTime(Symbol(),PERIOD_D1,shiftbar))-hr;
        }
     if(Period()==PERIOD_H1 && hr>=8 && (TimeDayOfWeek(Time[0])<6 && TimeDayOfWeek(Time[0])>0))
      {
   for(int u=limit; u>=end; u--)
     {
     if (High[u+1]>LastHigh) LastHigh=High[u+1];
        if (Low[u+1]<LastLow) LastLow=Low[u+1];
         pr = TimeDay(Time[u]); 
      pr_1 = TimeDay(Time[u+1]);
     if (pr!=pr_1)
        {
         H_buff[u+1] = EMPTY;
         L_buff[u+1] = EMPTY;
         C_buff[u+1] = EMPTY;
        }
//----  Функция прорисовки уровней  на графике
         H_buff[u]=HIGH;
         L_buff[u]=LOW;
         C_buff[u]=CLOSE;
        }
       }
/////////////////////////////////////////////////////////////////////////  
   
//-----  Функция открытия и чтения значений из файла  
      ResetLastError();
//--- откроем файл
      if(ЗаписьФайла==true)
      InpFileName=FileOpen(Symbol()+" Z Point.txt",FILE_READ|FILE_TXT);
   if(InpFileName!=INVALID_HANDLE)
     {
      GetStringPositions(InpFileName,pos);                    //--- получим позицию начала для каждой строки в файле
      size=ArraySize(pos);                                    //--- определим сколько всего строк в файле   
      if(!size)                                               //--- если в файле нет строк, то завершаем работу
     FileClose(InpFileName);

      if(FileSeek(InpFileName,pos[ind],SEEK_SET)==true)       //--- сдвинем позицию на начало этой строки
        {
      Print("Текст строки с номером ",ind,"  ",FileReadString(InpFileName)," size  ",size);  //--- прочитаем и распечатаем строку с номером ind
      file_buffer=FileReadString(InpFileName);    // чтение строки из файла
      T1=StringSubstr(file_buffer,0,2+Digits);    // Извлекаем первые 7 символов
      T2=StringSubstr(file_buffer,7,2+Digits);    // Извлекаем вторые 7 символов
      T3=StringSubstr(file_buffer,14,2+Digits);   // Извлекаем третьи 7 символов
      T4=StringSubstr(file_buffer,21);            // Извлекаем остаток символов
        }
      FileClose(InpFileName);
     }
         if(ЗаписьФайла==true) {
        Comment("ЗАПИСЬ  В ФАЙЛ: IND ",ind,"  SIZE  ",size,"  T1:  ",StrToDouble(T1)," ||| T2:  ",StrToDouble(T2)," ||| T3:   ",StrToDouble(T3),"  |||  shift  ",StrToInteger(T4));   
          
   if(StrToDouble(T1)!=HIGH && StrToDouble(T2)!=LOW && StrToDouble(T3)!=CLOSE && StrToInteger(T4)!=shift)  
      WRITEfile(); } else 
     Comment("ЗАПИСЬ  ВЫКЛЮЧЕНА !");

//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
//| Функция определяет позиции начала для каждой из строк в файле и  |
//| помещает их в массив arr                                         |
//+------------------------------------------------------------------+
void GetStringPositions(const int handle,ulong &arr[])
  {  
   int j,def_size=127;           //--- размер массива по умолчанию
   ArrayResize(arr,def_size);    //--- выделим память для массива
   if(!FileIsEnding(handle))     //--- если не конец файла, то есть хотя бы одна строка
     {
      arr[j]=FileTell(handle);
      j+=1;                       //--- счетчик строк
     }
   else
      return;                       // файл пуст, выходим
//--- определим сдвиг в байтах в зависимости от кодировки
   
   //if(FileGetInteger(handle,FILE_IS_TEXT))
   while(!FileIsEnding(handle))  //--- в цикле перебираем строки до конца файла
     {
      FileReadString(handle);    //--- читаем строку
      if(!FileIsEnding(handle))  //--- проверка на конец файла
        {
         arr[j]=FileTell(handle)+1;   //--- запомним позицию следующей строки
         j+=1;
         if(j==def_size)         //--- увеличим размер массива, если он переполнен
           {
            def_size+=def_size+1;
            ArrayResize(arr,def_size);
           }
        }
      else
         break;               // конец файла, выходим
     }
   ArrayResize(arr,j);     //--- установим истинный размер массива
  } 
//+------------------------------------------------------------------+
void WRITEfile()   // запись в файл и его создание если его нет
  { 
  InpFileName=FileOpen(Symbol()+" Z Point.txt",FILE_WRITE|FILE_TXT);
   if(InpFileName!=INVALID_HANDLE)
     {   
     FileWrite(InpFileName,"Начало файловой записи.Проба");
  while(!FileIsEnding(InpFileName))  //--- в цикле перебираем строки до конца файла
     FileReadString(InpFileName);    //--- читаем строку
     FileSeek(InpFileName,0,SEEK_END);   // конец файла, пишем
   FileWrite(InpFileName,DoubleToStr(HIGH,Digits),DoubleToStr(LOW,Digits),DoubleToStr(CLOSE,Digits),IntegerToString(shift,0));
    FileFlush(InpFileName);      
        } 
    FileClose(InpFileName); 
   }   
//+------------------------------------------------------------------+
 

找到了我的问题的答案......关于文件操作)))。

用于将信息 从文件输出 到图表的脚本。

免费mt4代码的历史,有传输数据到文件的选项,也有反向操作。

谢谢大家,谢谢大家 ciao))))。

 

有一个大文件,其中的日期是以这种形式 "20141231"。要将字符串转换为日期时间 格式,你需要在年、月和数字之间加上 "YYYY.MM.DD "

如何才能做到这一点呢?

 
大家好,我想让专家顾问找到100条中的最高点或最低点,请问从哪里看?
 
zhezheria:
大家好,我想让EA找到100条中的最高点或最低点,请问在哪里读?

你可以阅读帮助,这一切都在那里,有例子。

High[iHighest(NULL,0,MODE_HIGH,100,0]

Low[iLowest(NULL,0,MODE_LOW,100,0]