Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 2285

 
Aleksei Stepanenko #:

У меня стоит 10000000 :)

Поставил и забыл. Не совсем понял, зачем уменьшать.

В этом проблемы нет сколько там стоит! Мне просто стало интересно! Есть такая возможность или нет?! 

 
А понял, думаю, что напрямую нет. Это состояние окружения терминала, только для чтения. Хотя, могу ошибаться.
 

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам

Valeriy Yastremskiy, 2023.09.27 15:54

Как в тестере 5ке поставить спред 0? в спецификации плавающий, ставлю ноль, не воспринимает. Печатаю бид аск, спред плавающий) тест по по ОХЛС М1

Может все таки кто знает? в 4ке знаю, а вот в 5ке что то сходу не нашел?

 

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам

Valeriy Yastremskiy, 2023.09.26 14:48

Такое неудобство возникло, пишу в файл и индикаторе, который вызывается советником. В терминале в чарте отрабатывает открытие и закрытие файла в индикаторе в ОнДеинит индикатора. А в тестере ОнДеинит индикатора по окончании теста не отрабатывает, у эксперта отрабатывает. Закрытие в окне теста этого индикатора тоже не помогает, только закрыть терминал и тогда файл становится свободным. 

Как то можно закрыть файл? к тому же он пишется по пути 

C:\Users\....\AppData\Roaming\MetaQuotes\Tester\.......FF075\Agent-127.0.0.1-3000\MQL5\Files

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

#property indicator_chart_window
#property indicator_plots 0
#property indicator_buffers 1

int HandleFile ; // Файловый описатель
uint Qnt_Symb;                           // Количество записанных симв.
string File_Name="TestFileInd.csv";        // Имя файла
double BufferTest[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
  SetIndexBuffer(0,BufferTest);
//--- indicator buffers mapping
    HandleFile=FileOpen(File_Name,FILE_CSV|FILE_WRITE,";");//Открытие файла
   if(HandleFile==-1) // Неудача при открытии файла
     {
      Alert("Ошибка при открытии файла. ",File_Name,// Сообщение об ошибке
            "Возможно, файл занят другим приложением, handle",HandleFile);
      Alert("Код ошибки ",GetLastError());}
//---
   return(INIT_SUCCEEDED);
  }
  
  void OnDeinit(const int reason)
  {
//---

   FileClose(HandleFile);                  // Закрываем файл
   Print("Файл ",File_Name," закрыт.");// Сообщение

   
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
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 &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+

// Эксперт

int Handle;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+

int OnInit()
  {
//---
  Handle=iCustom(NULL,0,"TestIndFile");
    if(Handle==INVALID_HANDLE)
     {
      //--- сообщим о неудаче и выведем номер ошибки
      PrintFormat("Не удалось создать хэндл индикатора TestIndFile для пары %s/%s, код ошибки %d",
                  _Symbol,
                  EnumToString(_Period),
                  GetLastError());
//---
  }  
  return(INIT_SUCCEEDED);
  }
Понимаю что вопрос сложный, и возможно без решения в 5ке, может кто знает?
 
Valeriy Yastremskiy #:
Понимаю что вопрос сложный, и возможно без решения в 5ке, может кто знает?

в советнике в вызове iCustom(... "my indic" )

заменить на 

// делаем имя индикатора "не константной строкой"

string myIndic="  my Indic  "; StringTrim(myIndic);

handle = iCustom(... myIndic );

и в OnDeinit советника IndicatorRelease(handle)

Может помочь

 
Aleksei Stepanenko #:
А понял, думаю, что напрямую нет. Это состояние окружения терминала, только для чтения. Хотя, могу ошибаться.

Спасибо!

 
Maxim Kuznetsov #:
string myIndic="  my Indic  "; StringTrim(myIndic);
string myIndic="  my Indic  "; StringTrim(myIndic);

пробелы удалить конечно можно, но   IndicatorRelease(handle) в тестере 5ки не работает, так доки говорят. Да и как то идею не понимаю, хендл же получен, имя уже не при чем в дальнейшем, константное оно или через переменную подставлено. попробую)

 
Valeriy Yastremskiy #:

пробелы удалить конечно можно, но   IndicatorRelease(handle) в тестере 5ки не работает, так доки говорят. Да и как то идею не понимаю, хендл же получен, имя уже не при чем в дальнейшем, константное оно или через переменную подставлено. попробую)

помнится(хотя память может и изменить) было где-то property или свойство советника отвечающее за "отображать/нет индикаторы советника по завершению"..

что-то беглый поиск по справке показывает что нет такого, возможно в процессе "делаем терминал лучше", получилось как всегда :-)

у вас выходит что в тестере советник-то работу завершил, но хендл индикатора использует ещё и сам тестер для отображения результатов и DeInit индикатора не вызывается.

 
Подскажите, пожалуйста, как можно подписаться на статьи человека? В ленту новостей не все статьи приходят.
 
Maxim Kuznetsov #:

помнится(хотя память может и изменить) было где-то property или свойство советника отвечающее за "отображать/нет индикаторы советника по завершению"..

что-то беглый поиск по справке показывает что нет такого, возможно в процессе "делаем терминал лучше", получилось как всегда :-)

у вас выходит что в тестере советник-то работу завершил, но хендл индикатора использует ещё и сам тестер для отображения результатов и DeInit индикатора не вызывается.

Да, так и есть, именно ДеИнит индикатора не вызывается, вот про хендл не скажу, вроде как по закрытию окна тестера должен сбросится. Но файл остается привязанным к терминалу, (открытым терминалом) и остается только закрывать терминал.

Причина обращения: