포럼을 어지럽히 지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 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 --

" Alert "가 있는 줄은 제거할 수 있습니다.

논리적으로 표시기에서 날짜를 가져와 파일과 비교하고 일치하면 버퍼에 값을 할당해야 합니다.

그러나 각 막대에서 데이터가 이미 고려된 파일의 시작 부분에서 검색을 시작하면 매우 비쌀 것이라고 생각합니다.

문제는 표시기에서 파일의 처리된 줄을 수정하고 그 이후에 검색을 시작하는 방법입니다.

 
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_of_the_first_order를 결정하는 방법은 무엇입니까?

OrderTicket() 함수 의 값 을 변수에 할당합니다. 예: int Ticket= OrderTicket(). 그런 다음 OrderSelect에서 이 값을 사용합니다.

OrderSelect(티켓,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(티켓,SELECT_BY_TICKET); .

다른 방법으로 가능합니다. 티켓을 정의하지 않고 단순히 열거 방식(SELECT_BY_POS)을 사용하여 주문을 찾습니다.

얻다:

열거 방식은 이미 진실에 가깝다
 

이것은 초보자 질문에 대한 주제이므로 내 자신의 질문을 할 것입니다 ...

1. 견적 다운로드를 위한 소프트웨어 API가 있습니까? 이상적으로는 요청을 얻거나 게시하십시오.

2. 폭넓은 접근을 위한 그런 것이 없다면, 어떤 플랫폼이 분석하기 가장 쉽고 1초에 한 번 실시간 시세에 대한 접근을 제공할 수 있는지.

3. 물론 무엇이든 자동화를 작성할 수 있습니다. 그러나 여전히 어떤 언어와 도구가 가장 편리하고 인기가 있는지 알고 싶습니다.

 
예를 들어 여기 https://iqoption.com/us/options/turbo(등록된 사람이 있는 경우) 그래프가 실시간으로 매우 잘 표시됩니다. 이상적으로는 구문 분석되지만 FireBug는 스크립트가 따옴표를 가져오는 위치를 표시하지 않습니다. 거기에서 1초마다 그래프에 점이 그려집니다.