Любые вопросы новичков по 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);
}
 

@NeuralNetwork

FileOpen

Файл открывается в папке клиентского терминала в подпапке MQL5\Files (или каталог_агента_тестирования\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:

@NeuralNetwork

FileOpen

Файл открывается в папке клиентского терминала в подпапке MQL5\Files (или каталог_агента_тестирования\MQL5\Files в случае тестирования).

Если среди флагов указан FILE_COMMON, то файл открывается в общей папке всех клиентских терминалов \Terminal\Common\Files.

--

в другое место только через "символическая ссылка" 



Большое вам спасибо !
 
Roman Shiredchenko:


как интересно админы и модераторы решат проблему криво написанного робота ?

 

Уважаемые профи, подскажите пожалуйста, можно в ли коде советника каким-то образом получить значения RSI для недельного таймфрейма, но чтобы значения рассчитывались за неделю, начинающуюся не с понедельника, а например со среды(то есть за  неделю со среды до след среды).  С помощью iRSI, как я понимаю это не получится, так как там в рассчете берутся недельные бары, а они начинаются с понедельника.

Пока я вижу только способ самой писать код для рассчета. А есть ли более простое или уже готовое решение?

 
Roman Shiredchenko:

Крики, вопли, брань, нежелание сделать собственный код работоспособным, взваливание своей вины на модераторов с админами, оскорбление модераторов с админами...

В общем - полный набор. Недельку даю на остывание и разборку своих ошибок. Вдумчивую!

 
Valeriy Yastremskiy:

Для учета по тикету. 

При открытии ордера необходимо запомнить тикет.

Благодарю 
 
Valeriy Yastremskiy:

Флаги или контроль количества типов ордеров или если тикет есть контроль времени закрытия рыночного ордера, если не равно нулю, то ордер закрылся и флаг открытия ордера ложь.

Спасибо , получилось уже , люди подсказали )))))))😃😃😃😃😃😃😃😃😃😃😃😃😃😃😃😃😃😃😃😃😃😃😃😃😃
Причина обращения: