MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 1219

 

클래스 함수에서 선언된 정적 변수 는 해당 클래스의 모든 인스턴스에 전달됩니까?

어떤 이유에서인지 각 인스턴스에 고유한 인스턴스가 있을 것으로 예상했습니다.

대안이 있습니까 - 클래스 수준의 변수만 있습니까? 아니면 다른 까다로운 방법이 있습니까?

 

안녕하세요 ! 파일을 저장할 경로를 지정해야 합니다. 보다 구체적으로, 틱 기록 . 이 문제를 해결하는 데 도움을 주세요)

 //------------------------------------------------------------------
#property copyright "www.forex-tsd.com"
#property link        "www.forex-tsd.com"
//------------------------------------------------------------------
#property indicator_chart_window

//
//
//
//
//

extern string FileName   = "Ticks.csv" ;
extern bool    SaveVolume = true ; 
int fileHandle;

MqlBookInfo book[];

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

int    OnInit ()                   
{ 
   MarketBookAdd ( _Symbol ); 
      fileHandle = FileOpen ( Symbol ()+ " - " +FileName, FILE_WRITE | FILE_SHARE_READ | FILE_ANSI | FILE_CSV ); 
       return ( 0 ); 
}
void OnDeinit ( const int reason) 
{
   MarketBookRelease ( _Symbol );
   FileClose (fileHandle);
}

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

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 &TickVolume[], const long &Volume[], const int &Spread[])
{                
   if (fileHandle < 0 )
   {
       static bool alerted = false ;
         if (!alerted)
         {
             Alert ( "File : " + Symbol ()+ " - " +FileName+ " could not be opened" ); alerted = true ;
         }
         return ( 0 );
   }         

   //
   //
   //
   //
   //
   
   bool bget = MarketBookGet ( _Symbol ,book);
   int bidVolume = 0 ;
   int askVolume = 0 ;

       if (bget)
      {
         int     size = ArraySize (book);
         string info = "\n" ;
             for ( int i= 0 ; i<size; i++)
               {
                   if (book[i].type== BOOK_TYPE_SELL ) askVolume += ( int )book[i].volume;
                   if (book[i].type== BOOK_TYPE_BUY )  bidVolume += ( int )book[i].volume;
               }                  
      }            
      
   if ( FileSize (fileHandle) == 0 )
         FileWriteString (fileHandle, "date and time,bid,ask,bid volume,ask volume\n" );
         if (SaveVolume)
               FileWriteString (fileHandle, TimeToString ( TimeCurrent (), TIME_DATE | TIME_SECONDS )+ "," + DoubleToString ( SymbolInfoDouble ( _Symbol , SYMBOL_BID ), _Digits )+ "," + DoubleToString ( SymbolInfoDouble ( _Symbol , SYMBOL_ASK ), _Digits )+ "," + DoubleToString (bidVolume, 0 )+ "," + DoubleToString (askVolume, 0 )+ "\n" );
         else    FileWriteString (fileHandle, TimeToString ( TimeCurrent (), TIME_DATE | TIME_SECONDS )+ "," + DoubleToString ( SymbolInfoDouble ( _Symbol , SYMBOL_BID ), _Digits )+ "," + DoubleToString ( SymbolInfoDouble ( _Symbol , SYMBOL_ASK ), _Digits )+ "\n" );
         FileFlush (fileHandle);
   return ( 0 );
}
 

@신경망

파일 열기

파일은 MQL5\Files 하위 폴더(또는 테스트의 경우 testing_agent_directory\MQL5\Files)의 클라이언트 터미널 폴더에서 열립니다.

플래그 중 FILE_COMMON을 지정하면 모든 클라이언트 터미널 \ Terminal\Common\Files의 공통 폴더에서 파일이 열립니다.

--

"심볼릭 링크"를 통해서만 다른 위치로

      fileHandle = FileOpen ( Symbol ()+ " - " +FileName, FILE_WRITE | FILE_SHARE_READ | FILE_ANSI | FILE_CSV );    // FILE_COMMON 



 
NeuralNetwork :
매우 감사합니다 ! 하지만 다른 드라이브나 폴더를 지정하여 파일을 저장할 경로를 설정하고 싶습니다. 이것은 나를 위해 작동하지 않습니다 ...

https://www.mql5.com/ru/docs/files

3줄

Документация по MQL5: Файловые операции
Документация по MQL5: Файловые операции
  • www.mql5.com
Из соображений безопасности в языке MQL5 строго контролируется работа с файлами. Файлы, с которыми проводятся файловые операции средствами языка MQL5, не могут находиться за пределами файловой "песочницы". общая папка всех установленных на компьютере терминалов  – обычно расположена в каталоге C:\Documents and Settings\All Users\Application...
 
Fast235 :

@신경망

파일 열기

파일은 MQL5\Files 하위 폴더(또는 테스트의 경우 testing_agent_directory\MQL5\Files)의 클라이언트 터미널 폴더에서 열립니다.

플래그 중 FILE_COMMON을 지정하면 모든 클라이언트 터미널 \ Terminal\Common\Files의 공통 폴더에서 파일이 열립니다.

--

"심볼릭 링크"를 통해서만 다른 위치로



매우 감사합니다 !
 
Roman Shiredchenko :


관리자와 중재자는 비뚤어진 로봇 의 문제를 얼마나 흥미롭게 해결할 수 있습니까?

 

친애하는 전문가 여러분, EA 코드에서 주간 시간 프레임에 대한 RSI 값을 어떻게든 얻을 수 있는지 알려주십시오. 그러나 값이 월요일부터 시작하는 주에 대해 계산되지 않고 예를 들어 수요일( 즉, 수요일부터 다음 수요일까지의 주). iRSI의 도움으로 주간 막대가 계산에 고려되고 월요일에 시작되기 때문에 이것이 작동하지 않습니다.

지금까지는 계산을 위한 코드를 직접 작성하는 방법만 보았습니다. 더 간단하거나 기성품 솔루션이 있습니까?

 
Roman Shiredchenko :

소리지르고, 비명을 지르고, 욕하고, 자신의 코드를 작동 가능하게 만들기를 꺼리고, 관리자를 관리자로 비난하고, 관리자를 모욕하고...

일반적으로 - 완전한 세트. 나는 일주일을 식히고 실수를 정리합니다. 인정 있는!

 
Valeriy Yastremskiy :

티켓 계산용.

주문을 열 때 티켓을 기억해야 합니다.

덕분에
 
Valeriy Yastremskiy :

주문 유형 수의 플래그 또는 제어 또는 티켓이 시장 주문 마감 시간의 제어인 경우 0이 아니면 주문이 마감되고 주문을 열기 위한 플래그가 false입니다.

감사합니다. 이미 밝혀졌습니다. 사람들이 제안했습니다.)))))))