Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 1219

 

As variáveis estáticas declaradas em uma função de classe são pass-through para todas as instâncias dessa classe?

Por alguma razão, eu esperava que fosse diferente para cada instância.

A alternativa são apenas variáveis de nível de classe ou existem outras formas complicadas?

 

Olá! Preciso especificar o caminho para salvar o arquivo. mais precisamente o histórico do tick. Ajude a resolver este problema )

//------------------------------------------------------------------
#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);
}
 

@NeuralNetwork

FileOpen

O arquivo é aberto na pasta do terminal do cliente na subpasta MQL5\Files (ou Agent_folder\MQL5\Files em caso de teste).

Se FILE_COMMON for especificado entre as bandeiras, o arquivo é aberto na pasta comum de todos os terminais do cliente Arquivos Comuns.

--

para outro local apenas através de "ligação simbólica".

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



 
NeuralNetwork:
Muito obrigado! Mas, eu quero definir o caminho para salvar o arquivo especificando outra unidade ou pasta. Eu não posso fazer isso ...

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

3 linhas

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

@NeuralNetwork

FileOpen

O arquivo é aberto na pasta do terminal do cliente na subpasta MQL5\Files (ou Agent_folder\MQL5\Files em caso de teste).

Se FILE_COMMON for especificado entre as bandeiras, o arquivo é aberto na pasta comum de todos os terminais do cliente Arquivos Comuns.

--

para outro local apenas através de "ligação simbólica".



Muito obrigado!
 
Roman Shiredchenko:


como os administradores e os moderadores resolverão o problema de um robô mal escrito?

 

Por favor, informe se é possível obter valores RSI para o período de tempo semanal no código Expert Advisor, mas para calcular os valores para a semana, começando não a partir de segunda-feira, mas por exemplo a partir de quarta-feira (isto é, para a semana de quarta-feira até a próxima quarta-feira). Entendo que não funcionará com iRSI, porque são necessárias barras semanais, e elas começam na segunda-feira.

Até agora, vejo apenas uma maneira de calculá-la. Existe uma solução mais simples ou uma solução pronta?

 
Roman Shiredchenko:

Gritar, gritar, amaldiçoar, não querer fazer seu próprio código funcionar, culpar moderadores e administradores, insultar moderadores e administradores...

Em geral - o pacote completo. Eu lhe darei uma semana para se acalmar e resolver seus erros. Pensante!

 
Valeriy Yastremskiy:

Para contabilizar um bilhete.

Ao abrir um pedido, o bilhete deve ser memorizado.

Obrigado
 
Valeriy Yastremskiy:

As bandeiras ou controlam o número de tipos de ordem ou, se houver um controle de ingressos, o tempo de fechamento da ordem de mercado, se não for igual a zero, então a ordem fechou e a bandeira de abertura da ordem é falsa.

Obrigado, já o tenho, as pessoas o sugeriram 😃😃😃😃😃😃😃😃😃😃😃😃😃😃😃😃😃😃😃😃😃😃😃😃😃))))))))))))))))))))))))))))
Razão: