찻주전자의 질문 - 페이지 85

 
AUser :

데이터를 파일에 저장하는 방법을 알아내려고 합니다. 이 코드를 작성했습니다:

마지막 가격 값만 파일에 저장됩니다. 열에 가격 값이 필요합니다. 무엇이 잘못되었나요?

MQL5 참조 / 표준 상수, 열거 및 구조 / 입력/출력 상수/ 파일 열기 플래그의 "읽기 및 쓰기 플래그 지정 시 작업의 특성" 참조
 

나는 특히 바보입니다)) 조언을 듣고 더 일찍 코드를 다시 작성했지만 왜 그랬는지 이해하지 못합니다 .. 어쨌든 아무것도 변경되지 않았습니다. 이론상으로 파일에 무언가를 쓰기 위한 가장 기초적인 프로그램이라 제가 벙어리입니다..))

 void OnInit ()
{
double BID = SymbolInfoDouble ( _Symbol , SYMBOL_BID );
int FILE = FileOpen ( "FILE" , FILE_WRITE | FILE_CSV , '\t' ,CP_ACP);
FileIsEnding (FILE);
FileWrite (FILE,BID);
}
void OnDeinit ( const int reason)
{
int FILE = FileOpen ( "FILE" , FILE_WRITE | FILE_CSV , '\t' ,CP_ACP);
FileClose (FILE);
}

다시 말하지만, 저는 파일에 틱을 저장 하는 프로그램을 작성 하려고 합니다. 어떤 이유로 마지막 틱만 저장합니다.

 
AUser :

나는 특히 바보입니다)) 조언을 듣고 더 일찍 코드를 다시 작성했지만 왜 그랬는지 이해하지 못합니다 .. 어쨌든 아무것도 변경되지 않았습니다. 이론상으로 파일에 무언가를 쓰기 위한 가장 기초적인 프로그램이라 제가 벙어리입니다..))

다시 말하지만, 저는 파일에 틱을 저장하는 프로그램을 작성하려고 합니다. 어떤 이유로 마지막 틱만 저장합니다.

기능
 FileIsEnding (FILE);

의도한 대로 파일 커서를 파일 끝에 전혀 설정하지 않습니다.

그것을 처리하고 행복이 올 것입니다. :)

 
AUser :

나는 특히 바보입니다)) 조언을 듣고 더 일찍 코드를 다시 작성했지만 왜 그랬는지 이해하지 못합니다 .. 어쨌든 아무 것도 변경되지 않았습니다. 이론상으로 파일에 무언가를 쓰기 위한 가장 기초적인 프로그램이라 제가 벙어리입니다..))

다시 말하지만, 저는 파일에 틱을 저장하는 프로그램을 작성하려고 합니다. 어떤 이유로 마지막 틱만 저장합니다.

대략 그래야 하는 대로

 int FILE;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
//---
   FILE = FileOpen ( "FILE" , FILE_WRITE | FILE_CSV , '\t' ,CP_ACP);
//---
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
//---
   FileClose (FILE);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
//---
   double BID = SymbolInfoDouble ( _Symbol , SYMBOL_BID );
   FileWrite (FILE,BID);
  }
//+------------------------------------------------------------------+
 
sergey1294 :

대략적으로

바로, 감사합니다))
 
ZahvatkiN :

사람들은 거래를 열기 전에 MT4에서 손절매 수준을 설정하고 이익을 얻는 것이 가능하지만 MT5에서는 이것이 없거나 가능하지만 어떻게 든 다르게는 것을 알아 차렸습니다.

 
sergeev :

자바트킨 :

사람들은 거래를 열기 전에 MT4에서 손절매 수준을 설정하고 이익을 얻는 것이 가능하지만 MT5에서는 이것이 없거나 가능하지만 어떻게 든 다르게는 것을 알아 차렸습니다.


https://www.mql5.com/en/forum/1111/page561에서 논의되었습니다.
 

Hello.Code.Working TF M15.Open-Close 블록으로의 전환은 새 막대에서 발생합니다.

예를 들어 인용으로 인해 포지션이 열리지 않으면 다음 바에만 포지션을 다시 입력합니다.

그리고 진입 기준(이전 막대의 OHLC 참조)이 사라지면 포지션이 열리지 않습니다.

내가 올바르게 이해하고 있습니까?

추신: 최소한 새로운 1분을 입력하는 것이 합리적일 것입니다.

 void OnTick ()
  { CopyTime ( _Symbol , PERIOD_M15 , 0 , 1 ,time);
   if (lastbar==time[ 0 ]) return ;
   lastbar=time[ 0 ];
   
  SearchForExit();
  SearchForEnter();
 
   return ;
  }
 

동료 여러분, 벤치마킹 없이 직접 말할 수 있습니까? 전체 기록의 CopyTime() 을 한 번만 실행하거나 전체 기록의 Bars()보다 적은 수의 막대에서만 매번 그리고 Arr에 단 하나의 시간 값을 복사하십시오 - 현재 - 막대?

벤치마크를 뒤돌아보지 않고 지식을 바탕으로 논리적으로 추론한다면 어떻게 답을 정당화할 수 있습니까? ...내가 알기로는 이미 C/C++의 방향으로 ...

 
올바른 접근 방식은 호출당 적절한 깊이를 요청하는 것입니다. 또한 전체 깊이에 대한 전체 쿼리를 수행할 필요가 없습니다. 중요한 점 - 기록은 언제든지 비동기식으로 다운로드할 수 있습니다.