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

 
evillive:

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


谢谢你
 

我有一个想法,从文件数据中画一个指标。

我从课本上取了一个例子。根据我的需要重写了脚本。

int start()                            // Спец. функция start
  {
//--------------------------------------------------------------- 2 --
   int Handle,                         // Файловый описатель
       shift,Text;                            // Стиль вертикальной линии
   string File_Name="News.csv",        // Имя файла
          Obj_Name,                    // Bмя объекта
          Instr,                       // Название валюты
          One,Two,                     // 1я и 2я чать названия инстр.
          Str_DtTm;                    // Дата и время события(строка)
   datetime Dat_DtTm;                  // Дата и время события(дата)
//--------------------------------------------------------------- 3 --
   Handle=FileOpen(File_Name,FILE_CSV|FILE_READ,";");// Открытие файла
   if(Handle<0)                        // Неудача при открытии файла
     {
      if(GetLastError()==4103)         // Если файла не существует,..
         Alert("Нет файла с именем ",File_Name);//.. извещаем трейдера 
      else                             // При любой другой ошибке..
         Alert("Ошибка при открытии файла ",File_Name);//..такое сообщ
      PlaySound("Bzrrr.wav");          // Звуковое сопровождение
      return(0);                          // Выход из start()      
     }
//--------------------------------------------------------------- 4 --
   while(FileIsEnding(Handle)==false)// До тех пор, пока файловый ..
     {                                // ..указатель не в конце файла
      //--------------------------------------------------------- 5 --
      Str_DtTm =FileReadString(Handle);// Дата и время события(дата)
      Text     =FileReadString(Handle);// Текст описания события
      //--------------------------------------------------------- 6 --
      Dat_DtTm =StrToTime(Str_DtTm);   // Преобразование типа данных
      //--------------------------------------------------------- 7 --
      shift=iBarShift(NULL,0,Dat_DtTm);
      Alert("Время=",TimeToString(Time[shift]),"Text=",Text); 
      if(FileIsEnding(Handle)==true)   // Файловый указатель в конце
      break;                        // Выход из чтения и рисования
     }
//--------------------------------------------------------------- 8 --
   FileClose( Handle );                // Закрываем файл
   return(0);                             // Выход из start()
  }
//--------------------------------------------------------------- 9 --

可以删除"警报"一行。

其逻辑是在指标中获取日期,并与文件进行比较,如果相同,则将该值分配给缓冲区。

但我认为,如果我们从文件的开头开始搜索每个条形图,其中的数据已经被考虑进去了,这将是相当昂贵的。

问题是如何在指标中固定已处理的文件行并在它们之后开始搜索?

 
Forexman77:

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

如何才能做到这一点呢?

string sdt="20141231"
string dt=StringSubstr(sdt,0,4)+"."+StringSubstr(sdt,4,2)+"."+StringSubstr(sdt,6,2)
 
vicmos:

谢谢你,我已经把它整理好了。转换了原来用逗号分隔的文件。将逗号改为点号,然后增加了第二列,都是 "uniCSVed"。

现在我知道如何以编程方式进行了。

现在我面临着另一项艰巨的任务:如何用这些数据完成指标?我已经做了一个脚本,它可以正常工作。

但在指标中,为了不出现刹车,我需要以某种方式记住在最后一次迭代中获得数据的那条线。

 
Forexman77:

谢谢你,我已经把它整理好了。转换了原来用逗号分隔的文件。将逗号改为点号,然后增加了第二列,都是 "uniCSVed"。

现在我知道如何以编程方式进行了。

现在我面临着另一项艰巨的任务:如何用这些数据完成指标?我已经做了一个脚本,它可以正常工作。

但在指标中,为了不出现刹车,我需要以某种方式记住在最后一次迭代中获得数据的那条线。

也许,用 FileTell(返回对应的打开文件 的文件指针的当前位置)和 FileSeek(将文件指针的位置按指定的字节数移动到指定的位置)可以做到
 
evillive:
FileTell(返回相应打开文件的文件指针的当前位置)和 FileSeek(将文件指针的位置相对于指定的位置移动指定的字节数)可能会实现

谢谢你!我也注意到了这些功能。 还有FileIsLineEnding。我将进一步考虑如何去做。

 
lexdemon:
我们如何定义Ticket_first_order?

将OrderTicket()的值分配 给一个变量。例如:int Ticket= OrderTicket()。然后在OrderSelect中使用这个值。

OrderSelect(Ticket,SELECT_BY_TICKET); .

我们可以用另一种方式来做。我们不会定义票据,我们只是通过尝试(SELECT_BY_POS)找到订单。

我们将得到它。

 string Symb=Symbol();

for(i=0;i<=OrdersTotal() ;i++)

   if(OrderSelect(i,SELECT_BY_POS)==true)

 {

   if(OrderSymbol()!=Symb)continue;

   if(OrderType()==OP_BUY)

     {

   break;

     }

   }

}

 

  if(OrderOpenPrice()+10*Point<=Ask)

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

 

 
CJIeCaPb:

将OrderTicket()的值分配给一个变量。例如:int Ticket= OrderTicket()。然后在OrderSelect中使用这个值。

OrderSelect(Ticket,SELECT_BY_TICKET); .

我们可以用另一种方式来做。我们不定义票据,只是通过尝试(SELECT_BY_POS)找到订单。

会有结果的。

蛮力法更接近于事实
 

既然这是一个关于初学者问题的话题,我就问一下我的问题......

1.是否有一个下载报价的软件API?最好是一个获取/发布请求。

2.如果没有这种广泛的访问,有哪些最容易解析的平台,可以提供每秒一次的实时访问报价。

3.当然,你可以在任何东西上写自动化。但我还是想知道哪些语言和工具是最方便和最受欢迎的?

 
例如,这里https://iqoption.com/us/options/turbo(如果有人在那里登录)是一个非常好的实时图表。理想情况下,我想对它进行解析,但FireBug没有显示脚本 到哪里去获取引号。图表上每秒钟都有一个点。