Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 1111

 
Roman Sharanov:

Ничего не изменилось, так же показывает e+321

Вы не показали полный код. Неизвестно что за массив и какой он размерности в который Вы получаете данные с индикатора. 

 
Ай это я сильно тупанул, сделал ошибку глупую в инициализации и поэтому все не работало, спасибо за помощь
 
Vitaly Muzichenko:

Работает, это самое простое решение!

void OnStart()
{
  double d = 1.5;
  
  Print((long)d == d ? (string)(long)d : (string)d);
}
 
Roman Sharanov:

Вот пример: копирует три элемента - с бара #0, с бара #1 и с бара #2 со всех индикаторных буферов.

Выводит на печать с каждого буфера значение с бара #0:

//+------------------------------------------------------------------+
//|                                           Simple Heiken_Ashi.mq5 |
//|                              Copyright © 2019, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2019, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.000"
/*
   barabashkakvn Trading engine 3.025
*/
int    handle_iCustom;              // variable for storing the handle of the iCustom indicator 
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- create handle of the indicator iCustom
   handle_iCustom=iCustom(Symbol(),Period(),"Examples\\Heiken_Ashi");
//--- if the handle is not created 
   if(handle_iCustom==INVALID_HANDLE)
     {
      //--- tell about the failure and output the error code 
      PrintFormat("Failed to create handle of the iCustom indicator for the symbol %s/%s, error code %d",
                  Symbol(),
                  EnumToString(Period()),
                  GetLastError());
      //--- the indicator is stopped early 
      return(INIT_FAILED);
     }
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   double heiken_ashi_open[],heiken_ashi_high[],heiken_ashi_low[],heiken_ashi_close[];
   ArraySetAsSeries(heiken_ashi_open,true);
   ArraySetAsSeries(heiken_ashi_high,true);
   ArraySetAsSeries(heiken_ashi_low,true);
   ArraySetAsSeries(heiken_ashi_close,true);
   int start_pos=0,count=3;
   if(!iGetArray(handle_iCustom,0,start_pos,count,heiken_ashi_open) || 
      !iGetArray(handle_iCustom,1,start_pos,count,heiken_ashi_high) || 
      !iGetArray(handle_iCustom,2,start_pos,count,heiken_ashi_low) || 
      !iGetArray(handle_iCustom,3,start_pos,count,heiken_ashi_close))
     {
      return;
     }
   Comment(DoubleToString(heiken_ashi_open[0],Digits()),"\n",
           DoubleToString(heiken_ashi_high[0],Digits()),"\n",
           DoubleToString(heiken_ashi_low[0],Digits()),"\n",
           DoubleToString(heiken_ashi_close[0],Digits()));
  }
//+------------------------------------------------------------------+
//| TradeTransaction function                                        |
//+------------------------------------------------------------------+
void OnTradeTransaction(const MqlTradeTransaction &trans,
                        const MqlTradeRequest &request,
                        const MqlTradeResult &result)
  {
//--- 

  }
//+------------------------------------------------------------------+
//| Get value of buffers                                             |
//+------------------------------------------------------------------+
double iGetArray(const int handle,const int buffer,const int start_pos,
                 const int count,double &arr_buffer[])
  {
   bool result=true;
   if(!ArrayIsDynamic(arr_buffer))
     {
      Print("This a no dynamic array!");
      return(false);
     }
   ArrayFree(arr_buffer);
//--- reset error code 
   ResetLastError();
//--- fill a part of the iBands array with values from the indicator buffer
   int copied=CopyBuffer(handle,buffer,start_pos,count,arr_buffer);
   if(copied!=count)
     {
      //--- if the copying fails, tell the error code 
      PrintFormat("Failed to copy data from the indicator, error code %d",GetLastError());
      //--- quit with zero result - it means that the indicator is considered as not calculated 
      return(false);
     }
   return(result);
  }
//+------------------------------------------------------------------+
Файлы:
 
fxsaber:

Это то, что нужно, очень "лёгкое". Спасибо!

 

Подскажите путь к папке общей для терминалов МТ5

//--- открытие файла для записи, с флагом совестного пользования для чтения
   int han=FileOpen(subfolder+"\\experts\\files\\"+folder+".csv",FILE_WRITE|FILE_SHARE_READ|FILE_ANSI,",");
   if(han!=INVALID_HANDLE)// если файл открыт удачно
     {
      //ЗДЕСЬ ПРОЦЕДУРА ЗАПИСИ В ФАЙЛ
     }
 
yiduwi:

Подскажите путь к папке общей для терминалов МТ5

Флаг FILE_COMMON отвечает за общую папку всех клиентских терминалов.

Документация по MQL5: Константы, перечисления и структуры / Константы ввода/вывода / Флаги открытия файлов
Документация по MQL5: Константы, перечисления и структуры / Константы ввода/вывода / Флаги открытия файлов
  • www.mql5.com
Файл открывается для чтения. Флаг используется при открытии файлов (FileOpen()). При открытии файла обязательно должен быть указан флаг FILE_WRITE и/или флаг FILE_READ Файл открывается для записи. Флаг используется при открытии файлов (FileOpen()). При открытии файла обязательно должен быть указан флаг FILE_WRITE и/или флаг FILE_READ Файл...
 
yiduwi:

Подскажите путь к папке общей для терминалов МТ5

флаг добавьте FILE_COMMON

https://www.mql5.com/ru/docs/constants/io_constants/fileflags

найти папку: в терминале: файл- открыть каталог данных - в проводнике Виндовс на уровень вверх и будет папка \Common\Files

 
Спасибо 
 
Доброго времени суток, товарищи программисты! Прошу простить меня за тупейший вопрос, но это не дает мне покоя. Как выполняется программа, или точнее как терминал читает строчки, какова последовательность их выполнения??? или есть какой нибудь видос чтобы посмотреть и понять как это все происходит? Ато изучая язык не зная как он читается программой сложновато!!!