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

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

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