Ошибки, баги, вопросы - страница 1015

 

Подскажите, пожалуйста.
Есть код советника:

string symbol="GBPUSD";
//+------------------------------------------------------------------+
void OnInit()
{
   long chartid=ChartOpen(symbol,_Period);
   int handle=iMACD(symbol,_Period,12,26,9,PRICE_CLOSE);
   ChartIndicatorAdd(chartid,1,handle);
   ChartRedraw(chartid);
}
//+------------------------------------------------------------------+

Если закрыть вновь открытое окно, то все закрывается нормально и быстро.

Модифицируем код:

string symbol="GBPUSD";
//+------------------------------------------------------------------+
void OnInit()
{
   long chartid=ChartOpen(symbol,_Period);
   int handle=iCustom(symbol,_Period,"Examples\\MACD",12,26,9,PRICE_CLOSE);
   ChartIndicatorAdd(chartid,1,handle);
   ChartRedraw(chartid);
}
//+------------------------------------------------------------------+

И при закрытии окна терминал подвисает на секунду или около того.

Почему iCustom подвисает?

 

У меня вопрос. Про организацию оптимизации в тестере стратегий. Предусмотрено ли сохранение результатов работы оптимизации, чтобы потом можно было возобновить. На случай если оптимизировать долго, не один день.

 
Stasikusssss:

У меня вопрос. Про организацию оптимизации в тестере стратегий. Предусмотрено ли сохранение результатов работы оптимизации, чтобы потом можно было возобновить. На случай если оптимизировать долго, не один день.

Если не ошибаюсь, такая функция предусмотрена - логи тестирования сохраняются, однако, если вы скомпилировали советник после теста еще раз, даже если изменений не было - лог обнуляется
 
A100:

При использовании параметрической формы допускается не более 8 параметров.  Но тут вроде как 3 параметра!?

У тебя тупо одна закрывающая скобка пропущена в макросе.
 
Кто-то может помочь с моим вопросом?
 
fyords:
Кто-то может помочь с моим вопросом?

Только разработчики.  В сервисдеск.

// Не призываешь же ты меня хакнуть терминал, чтоб узнать как работает iCustom() и чем его вызов отличается от других.. ?

;)

 
MetaDriver:
Только разработчики.  В сервисдеск.
Спасибо. Думал тут быстрее будет.
 
MetaDriver:
У тебя тупо одна закрывающая скобка пропущена в макросе.

Да, спасибо, я ошибся при упрощении исходного кода - сейчас переписал ошибку по-другому

#define F1( N, X ) ((X) + (N))
#define F2( X, N ) F1( N, X )

#define FF( N, X, F )    F( N, F( N, X ))
#define FFF( N, X, F )   F( N, F( N, F( N, X )))
#define FFFF( N, X, F )  F( N, F( N, F( N, F( N, X ))))
#define FFFFF( N, X, F ) F( N, F( N, F( N, F( N, F( N, X )))))

void OnStart()
{
Print( FF( 1, 1, F2 ) ); // нормально
Print( FFF( 1, 1, F2 ) ); // нормально
Print( FFFF( 1, 1, F2 ) ); // ошибка компиляции
Print( FFFFF( 1, 1, F2 ) ); // ошибка компиляции
} 
Предыдущее удалил, чтобы не путаться. Из примера видно, что ошибка компиляции возникает при оределенном уровне вложенности
 
A100:

Да, спасибо, я ошибся при упрощении исходного кода - сейчас переписал ошибку по-другому

Предыдущее удалил, чтобы не путаться

Это ужасно.  Действительно ругается.  Как страшно жить...

--

Слух, а оно тебе нахрена?  Ежели не секрет.

На Лиспе советник пишешь?  Я канешна снимаю шляпу, но таки советую перейти на Хаскел.

;-)

 
MetaDriver:

Слух, а оно тебе нахрена?  Ежели не секрет.

Просто в MQL5 нет inline функций (по форме) и я использую вместо них - параметрические макросы, что в общем не совсем правильно, поскольку отсутствует контроль типов