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

 

Господа, как в МКЛ объявить функцию, которая принимает указатель (ссылку в мкл) на всё что угодно (аналог void* в С/С++ )? Я не имею в виду каст по генеалогическое древу, а каст по несвязанным между собой типами. Хотя бы принять массив любого типа.

void f(... &...) {}

void mql_main()
{
  int i[2];
  double d[2];
  f(i);
  f(d);
}
Всякие грабли связанные с "type aliasing" и оптимизациями компилятора понимаю.
 
pavlick_:

Господа, как в МКЛ объявить функцию, которая принимает указатель (ссылку в мкл) на всё что угодно (аналог void* в С/С++ )? Я не имею в виду каст по генеалогическое древу, а каст по несвязанным между собой типами. Хотя бы принять массив любого типа.

Всякие грабли связанные с "type aliasing" и оптимизациями компилятора понимаю.
По-моему, сделать то, что Вы хотите сделать, можно только через методы класса в MQL5. Хотя подождите ещё ответов, у меня не так много опыта.
 
pavlick_:

Господа, как в МКЛ объявить функцию, которая принимает указатель (ссылку в мкл) на всё что угодно (аналог void* в С/С++ )? Я не имею в виду каст по генеалогическое древу, а каст по несвязанным между собой типами. Хотя бы принять массив любого типа.

Всякие грабли связанные с "type aliasing" и оптимизациями компилятора понимаю.

Так вроде ж добавили указатели void * уже. А кроме того можно пользоваться шаблонами, типа

template<typename T>

void f(T &parameter)

{

 
Stanislav Korotky:

Так вроде ж добавили указатели void * уже. А кроме того можно пользоваться шаблонами, типа

template<typename T>

void f(T &parameter)

{

МКЛ указатели (описатели) сразу отпадают. Проблема была в декларации импортируемой из dll функции, шаблоны там не прикутить. Я обнаружил, что можно сделать так:

#import ...
  int send(..., char &buf[], ...);
  int send(..., short &buf[], ...);
#import
и всё будет слинковано с одной функцией. Мою проблему это решает. Благодарю откликнувшимся за ответ.
 
Itum:
Подскажите пожалуйста как найти максимальную просадку в Екселе... Дайте формулу...
Если как в тестере по эквити, то в экселе сложно, так как тестер учитывает не только отрицательное отклонение, но и положительное отклонение - недополученную потенциальную прибыль.
 
-Aleks-:
Если как в тестере по эквити, то в экселе сложно, так как тестер учитывает не только отрицательное отклонение, но и положительное отклонение - недополученную потенциальную прибыль.
Ничего там сложного нет. В первом столбце - значения эквити, во втором - максимум эквити с первого по текущий ряд, в третьем - просадка, разница между вторым и первым столбцами. Ну и взять максимум из третьего столбца.
 
Sergei Vladimirov:
Ничего там сложного нет. В первом столбце - значения эквити, во втором - максимум эквити с первого по текущий ряд, в третьем - просадка, разница между вторым и первым столбцами. Ну и взять максимум из третьего столбца.
Такие вычисление не будут соответствовать данным тестера. Надо учитывать изменение эквити с момента открытие до закрытия позиции - максимальное изменение эквити нужно выносить в отдельный столбец и учитывать модуль, и уже потом из этого столбца выбирать максимум. Это если прибыльная торговля, а иначе надо ещё определять максимальную точку прибыли по эквити и делать относительно неё вычисления....
 
-Aleks-:
Такие вычисление не будут соответствовать данным тестера. Надо учитывать изменение эквити с момента открытие до закрытия позиции - максимальное изменение эквити нужно выносить в отдельный столбец и учитывать модуль, и уже потом из этого столбца выбирать максимум. Это если прибыльная торговля, а иначе надо ещё определять максимальную точку прибыли по эквити и делать относительно неё вычисления....
При чём тут тестер? Вопрос был про эксель. Только непонятно, с какой стати в этой ветке. А по существу - никакой модуль не нужен, просадка = последний максимум минус текущее значение, результат всегда будет неотрицательным. Ну, или наоборот, текущее значение минус последний максимум, тогда всегда будет отрицательным или нулевым. В первом случае взять максимум столбца, во втором - минимум.
 
Sergei Vladimirov:
При чём тут тестер? Вопрос был про эксель. Только непонятно, с какой стати в этой ветке. А по существу - никакой модуль не нужен, просадка = последний максимум минус текущее значение, результат всегда будет неотрицательным. Ну, или наоборот, текущее значение минус последний максимум, тогда всегда будет отрицательным или нулевым. В первом случае взять максимум столбца, во втором - минимум.
Просадка в тестере = максимум - минимум, при этом не важно в какой момент была закрыта позиция. Т.е. если позиция с начало пошла в вашу сторону, но закрылась в противоположную, то прасадкой по эквити считается именно отрезок от максимума до минимума, а не от цены открытия позиции до закрытия позиции. В MT4 так.
 
-Aleks-:
Просадка в тестере = максимум - минимум, при этом не важно в какой момент была закрыта позиция. Т.е. если позиция с начало пошла в вашу сторону, но закрылась в противоположную, то прасадкой по эквити считается именно отрезок от максимума до минимума, а не от цены открытия позиции до закрытия позиции. В MT4 так.
Я ничего не писал про цены открытия и закрытия.
Причина обращения: