[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 60

 
TheXpert >>:

Вспомнил! Особенность реализации строк. После ресайза массива по нему надо пройтись и обнулить:

Могу ошибаться, но должно помочь.

Спасибо за ответ. Попробовал, но к сожалению не помогло. Обнуление действует до того, как мы что-то начинаем делать с массивом. И обнуление делается через явное присваивание строкового ЗНАЧЕНИЯ, а вот в том случае, который я указал, элементам массива присваивается результат ф-ии (которая должна по идее возвращать ЗНАЧЕНИЕ типа string), но фактически возвращает ССЫЛКУ на адрес строки в памяти, что на мой взгляд некорректно. Причем результат с одинаковыми значениями получается потому, что ф-ия вызывается несколько раз подряд и после каждого вызова фактически последующий вызов использует ту же самую память, помещая туда новые данные. Если м-у вызовами сделать какие-то манипуляции (вызовы каких ниб. ф-ий, объявление переменных, etc) то скорее всего результат будет еще плачевней а имеенно значения элементом строкового массива будут указаывать на мусор в памяти.


Просьба к разработчикам mql4 по возможности прокомментировать данную ситуацию и если возможно разъяснить, как правильно работать со строковыми массивами.

 
xruss писал(а) >>
есть какая-то ошибка?

У вас перед формированием сигнала на открытие идёт выбор последнего закрывшегося ордера из истории и присвоение его типа переменной ORDtype. Т.е. если история непустая, то ORDtype уже будет явно не равно -1. Поэтому условие на появление сигнала не выполняется, поскольку

if ((ORDtype==-1)&&(...))

 
Everlost >>:

У вас перед формированием сигнала на открытие идёт выбор последнего закрывшегося ордера из истории и присвоение его типа переменной ORDtype. Т.е. если история непустая, то ORDtype уже будет явно не равно -1. Поэтому условие на появление сигнала не выполняется, поскольку

if ((ORDtype==-1)&&(...))

а как должно быть? логически я думал определить ORDtype до формирования сигнала. в противном случае каким образом он будет учтен в торговых критериях. и еще одна загвоздка - позиции не открываются даже с пустой историей((

 
Yug >>:

Спасибо за ответ. Попробовал, но к сожалению не помогло. Обнуление действует до того, как мы что-то начинаем делать с массивом. И обнуление делается через явное присваивание строкового ЗНАЧЕНИЯ, а вот в том случае, который я указал, элементам массива присваивается результат ф-ии (которая должна по идее возвращать ЗНАЧЕНИЕ типа string), но фактически возвращает ССЫЛКУ на адрес строки в памяти, что на мой взгляд некорректно. Причем результат с одинаковыми значениями получается потому, что ф-ия вызывается несколько раз подряд и после каждого вызова фактически последующий вызов использует ту же самую память, помещая туда новые данные. Если м-у вызовами сделать какие-то манипуляции (вызовы каких ниб. ф-ий, объявление переменных, etc) то скорее всего результат будет еще плачевней а имеенно значения элементом строкового массива будут указаывать на мусор в памяти.


Просьба к разработчикам mql4 по возможности прокомментировать данную ситуацию и если возможно разъяснить, как правильно работать со строковыми массивами.

Попробуйте так:

string tmp = func();
array[0] = tmp;

Огород, конечно, но должно получиться...

 

А что значит в МТ4 в тестетре -Оптимизация, где нужно галочку поставить ? Что эта за функция? Он что настраивает советник под какие-то заданные настройки(стандартные) или показывает на каком периоде(TФ) он лучше работает? или что то еще?

 
rafex >>:

А что значит в МТ4 в тестетре -Оптимизация, где нужно галочку поставить ? Что эта за функция? Он что настраивает советник под какие-то заданные настройки(стандартные) или показывает на каком периоде(TФ) он лучше работает? или что то еще?

Эту галочку можно трогать только после нажатия клавиши F1 и тщательного изучения раздела "Автотрейдинг".

 
komposter >>:

Попробуйте так:

Огород, конечно, но должно получиться...

Позавчера пробовал. Результат такой же. Фактически копируется ссылка сначала в temp str, а затем она же перекопируется в элемент массива :(

 
Yug >>:

Позавчера пробовал. Результат такой же. Фактически копируется ссылка сначала в temp str, а затем она же перекопируется в элемент массива :(

В функции объявите возвращаемую строку статической, только тогда инициализацию надо делать после объявления.

 
Многоуважаемые эксперты, не игнорируйте мой вопрос пожалуйста.

Есть ли индикатор, который считает волатильность, например дневную. Но не такой, что неопределенное число выдает типа 0,34. А так чтоб он считал количесво тиков свечи в день и делил напримеер на заданный период (количество дней), чтоб можно было знать среднее значение. Пример: открытие 100, закрытие 200; второй день - открытие 200, закрытие 250. Средняя волатильность за эти 2 дня = ((200-100)+(250-200))/2дня=(100+50)/2=75
Где скачать, если есть.
 
TheXpert >>:

В функции объявите возвращаемую строку статической, только тогда инициализацию надо делать после объявления.

Пробовал и этот вариант. Результат такой же, т.е. возвращается ссылка на память а не значение.

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