[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 60
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Вспомнил! Особенность реализации строк. После ресайза массива по нему надо пройтись и обнулить:
Могу ошибаться, но должно помочь.Спасибо за ответ. Попробовал, но к сожалению не помогло. Обнуление действует до того, как мы что-то начинаем делать с массивом. И обнуление делается через явное присваивание строкового ЗНАЧЕНИЯ, а вот в том случае, который я указал, элементам массива присваивается результат ф-ии (которая должна по идее возвращать ЗНАЧЕНИЕ типа string), но фактически возвращает ССЫЛКУ на адрес строки в памяти, что на мой взгляд некорректно. Причем результат с одинаковыми значениями получается потому, что ф-ия вызывается несколько раз подряд и после каждого вызова фактически последующий вызов использует ту же самую память, помещая туда новые данные. Если м-у вызовами сделать какие-то манипуляции (вызовы каких ниб. ф-ий, объявление переменных, etc) то скорее всего результат будет еще плачевней а имеенно значения элементом строкового массива будут указаывать на мусор в памяти.
Просьба к разработчикам mql4 по возможности прокомментировать данную ситуацию и если возможно разъяснить, как правильно работать со строковыми массивами.
есть какая-то ошибка?
У вас перед формированием сигнала на открытие идёт выбор последнего закрывшегося ордера из истории и присвоение его типа переменной ORDtype. Т.е. если история непустая, то ORDtype уже будет явно не равно -1. Поэтому условие на появление сигнала не выполняется, поскольку
if ((ORDtype==-1)&&(...))
У вас перед формированием сигнала на открытие идёт выбор последнего закрывшегося ордера из истории и присвоение его типа переменной ORDtype. Т.е. если история непустая, то ORDtype уже будет явно не равно -1. Поэтому условие на появление сигнала не выполняется, поскольку
if ((ORDtype==-1)&&(...))
а как должно быть? логически я думал определить ORDtype до формирования сигнала. в противном случае каким образом он будет учтен в торговых критериях. и еще одна загвоздка - позиции не открываются даже с пустой историей((
Спасибо за ответ. Попробовал, но к сожалению не помогло. Обнуление действует до того, как мы что-то начинаем делать с массивом. И обнуление делается через явное присваивание строкового ЗНАЧЕНИЯ, а вот в том случае, который я указал, элементам массива присваивается результат ф-ии (которая должна по идее возвращать ЗНАЧЕНИЕ типа string), но фактически возвращает ССЫЛКУ на адрес строки в памяти, что на мой взгляд некорректно. Причем результат с одинаковыми значениями получается потому, что ф-ия вызывается несколько раз подряд и после каждого вызова фактически последующий вызов использует ту же самую память, помещая туда новые данные. Если м-у вызовами сделать какие-то манипуляции (вызовы каких ниб. ф-ий, объявление переменных, etc) то скорее всего результат будет еще плачевней а имеенно значения элементом строкового массива будут указаывать на мусор в памяти.
Просьба к разработчикам mql4 по возможности прокомментировать данную ситуацию и если возможно разъяснить, как правильно работать со строковыми массивами.
Попробуйте так:
Огород, конечно, но должно получиться...
А что значит в МТ4 в тестетре -Оптимизация, где нужно галочку поставить ? Что эта за функция? Он что настраивает советник под какие-то заданные настройки(стандартные) или показывает на каком периоде(TФ) он лучше работает? или что то еще?
А что значит в МТ4 в тестетре -Оптимизация, где нужно галочку поставить ? Что эта за функция? Он что настраивает советник под какие-то заданные настройки(стандартные) или показывает на каком периоде(TФ) он лучше работает? или что то еще?
Эту галочку можно трогать только после нажатия клавиши F1 и тщательного изучения раздела "Автотрейдинг".
Попробуйте так:
Огород, конечно, но должно получиться...
Позавчера пробовал. Результат такой же. Фактически копируется ссылка сначала в temp str, а затем она же перекопируется в элемент массива :(
Позавчера пробовал. Результат такой же. Фактически копируется ссылка сначала в temp str, а затем она же перекопируется в элемент массива :(
В функции объявите возвращаемую строку статической, только тогда инициализацию надо делать после объявления.
Есть ли индикатор, который считает волатильность, например дневную. Но не такой, что неопределенное число выдает типа 0,34. А так чтоб он считал количесво тиков свечи в день и делил напримеер на заданный период (количество дней), чтоб можно было знать среднее значение. Пример: открытие 100, закрытие 200; второй день - открытие 200, закрытие 250. Средняя волатильность за эти 2 дня = ((200-100)+(250-200))/2дня=(100+50)/2=75
Где скачать, если есть.
В функции объявите возвращаемую строку статической, только тогда инициализацию надо делать после объявления.
Пробовал и этот вариант. Результат такой же, т.е. возвращается ссылка на память а не значение.