Нестандартные графики - страница 3

 

2006.05.09 17:02:29 period_converter EURUSD,M1: expert stopped
2006.05.09 17:02:29 period_converter EURUSD,M1: dll calls are not allowed; 'user32.dll'-'PostMessageA'

Вот и ответ.
Надо разрешить вызовы dll в свойствах скрипта.


А где и как это сделать?
 
Либо изначально поставить такую галку в настройках терминала. Главное меню - Сервис - Настройки - вкладка "Эксперты" - галка "разрешить dll"

Либо при запуске скрипта в общих свойствах (это - отдельная вкладка) скрипта проставить аналогичную галку
 
Ага... Уже нашел в настройках - подключил и, действительно, все заработало. Это хорошо... ;)
 
Вот еще такой вопрос появился. Сделал я свой скрипт, который собирает файл истории индекса. История корректная, график выводится, но не хочет обновляться даже из менюшки, не говоря уже, чтобы из скрипта его обновлять.

Файл истории лежит здесь http://forum.viac.ru/download.php?id=7982

Скрипт выглядит так:

//+------------------------------------------------------------------+
//|                                                       xBuild.mq4 |
//|                                                          VIAC.RU |
//|                                               http://www.viac.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2005, VIAC & Co"
#property link      "http://forum.viac.ru/viewtopic.php?t=3950"
#property show_inputs
#include <WinUser32.mqh>

extern string Curency   = "EUR"; // По какой валюте формируем индекс
extern string NameInd   = "xCurency"; // на основе какого индикатора
extern int    PeriodCur = 60; // Период формирования файла.
extern double K         = 1; // коэффициент преобразования - для файлов = 1.0
extern double xK        = 1; // коэффициент преобразования - для файлов = 1.0

int        ExtHandle=-1;
//+------------------------------------------------------------------+
//| Запуск функции скрипта                                           |
//+------------------------------------------------------------------+
int start()
  {
   int    i, start_pos, i_time, time0, last_fpos, periodseconds;
   double d_open, d_low, d_high, d_close, d_volume, last_volume;
   int    hwnd=0,cnt=0;
//---- Заголовок истории 
   int    version=400;
   string c_copyright;
   string c_symbol=Curency;
   int    i_period=PeriodCur;
   int    i_digits=Digits;
   int    i_unused[13];
//----  
   ExtHandle=FileOpenHistory(c_symbol+i_period+".hst", FILE_BIN|FILE_WRITE);
   if(ExtHandle < 0) return(-1);
//---- записываем заголовок файла
   c_copyright="(C)opyright 2003, MetaQuotes Software Corp.";
   FileWriteInteger(ExtHandle, version, LONG_VALUE);
   FileWriteString(ExtHandle, c_copyright, 64);
   FileWriteString(ExtHandle, c_symbol, 12);
   FileWriteInteger(ExtHandle, i_period, LONG_VALUE);
   FileWriteInteger(ExtHandle, i_digits, LONG_VALUE);
   FileWriteInteger(ExtHandle, 0, LONG_VALUE);       //timesign
   FileWriteInteger(ExtHandle, 0, LONG_VALUE);       //last_sync
   FileWriteArray(ExtHandle, i_unused, 0, 13);
//---- записываем историю
   start_pos=900; // Bars-1;
   for(i=start_pos;i>=0; i--)
     {
      d_open   = iCustom(NULL, PeriodCur, NameInd, Curency, K, xK, 2, i);
      d_low    = iCustom(NULL, PeriodCur, NameInd, Curency, K, xK, 0, i);
      d_high   = iCustom(NULL, PeriodCur, NameInd, Curency, K, xK, 1, i);
      d_close  = iCustom(NULL, PeriodCur, NameInd, Curency, K, xK, 3, i);
      d_volume = iCustom(NULL, PeriodCur, NameInd, Curency, K, xK, 4, i);
      i_time=iTime(Symbol(),PeriodCur,i);

      last_fpos=FileTell(ExtHandle);
      FileWriteInteger(ExtHandle, i_time, LONG_VALUE);
      FileWriteDouble(ExtHandle, d_open, DOUBLE_VALUE);
      FileWriteDouble(ExtHandle, d_low, DOUBLE_VALUE);
      FileWriteDouble(ExtHandle, d_high, DOUBLE_VALUE);
      FileWriteDouble(ExtHandle, d_close, DOUBLE_VALUE);
      FileWriteDouble(ExtHandle, d_volume, DOUBLE_VALUE);
      FileFlush(ExtHandle);
      cnt++;
     } 
   FileFlush(ExtHandle);
   Print(cnt,"Файл "+c_symbol+i_period+".hst записал"); //----
//---- collect incoming ticks
   int last_time=LocalTime()-5;
   while(IsStopped()==false)
     {
      int cur_time=LocalTime();
      //---- check for new rates
      if(RefreshRates())
        {
         time0=Time[0];
         FileSeek(ExtHandle,last_fpos,SEEK_SET);
         //---- is there current bar?
      i_time=iTime(Symbol(),PeriodCur,0);
      d_open   = iCustom(NULL, PeriodCur, NameInd, Curency, K, xK, 2, 0);
      d_low    = iCustom(NULL, PeriodCur, NameInd, Curency, K, xK, 0, 0);
      d_high   = iCustom(NULL, PeriodCur, NameInd, Curency, K, xK, 1, 0);
      d_close  = iCustom(NULL, PeriodCur, NameInd, Curency, K, xK, 3, 0);
      d_volume = iCustom(NULL, PeriodCur, NameInd, Curency, K, xK, 4, 0);

         //----
         FileWriteInteger(ExtHandle, i_time, LONG_VALUE);
         FileWriteDouble(ExtHandle, d_open, DOUBLE_VALUE);
         FileWriteDouble(ExtHandle, d_low, DOUBLE_VALUE);
         FileWriteDouble(ExtHandle, d_high, DOUBLE_VALUE);
         FileWriteDouble(ExtHandle, d_close, DOUBLE_VALUE);
         FileWriteDouble(ExtHandle, d_volume, DOUBLE_VALUE);
         FileFlush(ExtHandle);
         //----
         if(hwnd==0)
           {
            hwnd=WindowHandle(c_symbol,i_period);
            if(hwnd!=0) Print("Chart window detected");
           }
         //---- refresh window not frequently than 1 time in 2 seconds
         if(hwnd!=0 && cur_time-last_time>=2)
           {
            PostMessageA(hwnd,WM_COMMAND,33324,0);
            last_time=cur_time;
           }
        } 
     }      
//----
   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void deinit()
  {
    if(ExtHandle>=0) { FileClose(ExtHandle); ExtHandle=-1; }
  }
//+------------------------------------------------------------------+
 
В экспертном логе появляется сообщение "chart window detected"?
 
В экспертном логе появляется сообщение "chart window detected"?


Да, появляется.

2006.05.10 14:28:53 xBuild++ EURUSD,H1: Chart window detected
2006.05.10 14:28:40 xBuild++ EURUSD,H1: 901Файл EUR60.hst записал
2006.05.10 14:28:39 xCurency EURUSD,H1: initialized
2006.05.10 14:28:39 xCurency EURUSD,H1: loaded successfully
2006.05.10 14:28:36 xBuild++ EURUSD,H1: loaded successfully

Вроде как, все работает, но окно EUR,H1 мертвое и история записанная в файл не выводится даже из менюшки по нажатию на "Обновление". После смены профиля окно обновляется и показывает то, что было записано в файл
 
Какие стоят ограничения по количеству баров в истории и на графике?
(главное меню - Сервис - Настройки - вкладка Графики)
 
Макс.баров в истории 1000000
макс.баров в окне 32768
 
Я не могу воспроизвести проблему.

Похоже, надо точно воспроизводить все условия. Для точного воспроизведения мне не хватает индикатора "xCurency". Не могли бы Вы прислать его на stringo AT metaquotes DOT ru?

Конфиденциальность индикатора гарантирую.
 
Я не могу воспроизвести проблему.

Похоже, надо точно воспроизводить все условия. Для точного воспроизведения мне не хватает индикатора "xCurency". Не могли бы Вы прислать его на stringo AT metaquotes DOT ru?

Конфиденциальность индикатора гарантирую.


Ой! Извинясь... Забыл ;) http://forum.viac.ru/viewtopic.php?p=77091#77091 - вот тут последнии версии индикатора и скриптов с описаниями и выше вся история их создания. Чтобы индикатор правильно работал - его надо сажать на дему от FxTeam http://www.fxteam.ru/ , так как там есть все необходимые кроссы для индикатора.

Параллельно выслал индикатор и скрипты письмом.
Причина обращения: