[АРХИВ!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 4. - страница 411
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
нет
здесь проблема просто в цикле. перебор идет по i от 0 до 2. а надо от 2 до 0.
Покажите пример пожалуйста, я сделал Не помогло
sss2019:
Покажите пример пожалуйста, я сделал Не помогло
Сделал скрипт вот таким
В итоге Print выводит следующее
0 4
1 4
И все, почему то цикл не выводит
2 4
3 4
Добавил в цикл OrderSelect(i, SELECT_BY_POS, MODE_TRADES вместо I 0, то есть чтобы всегда выбирался первый ордер и скрипт заработал. Получается что когда цикл удалит два ордера, пытается выбрать третий ордер, когда в списке всего два ордера.
Сделал скрипт вот таким
В итоге...
Покажите пример пожалуйста, я сделал
Не помогло
потому как думалку еще включать надо
Помогите решить еще вот эту дилему
Скрипт ищет максимальное расстояние между линиями. По результатам выводил все значения на всех барах, максимальным расстоянием получается когда на одном баре 1.6235, а на другом 1.6208.
Пытаюсь вывести Print(maxrange); выводит 0.086, вообще не пойму почему, я же делаю деление на Point
Помогите решить еще вот эту дилему
Скрипт ищет максимальное расстояние между линиями. По результатам выводил все значения на всех барах, максимальным расстоянием получается когда на одном баре 1.6235, а на другом 1.6208.
Пытаюсь вывести Print(maxrange); выводит 0.086, вообще не пойму почему, я же делаю деление на Point
Это не дилема. Дилема, это когда не знаешь, какое из двух решений лучше выбрать.
Ну во-первых, в функции iMA() не шесть, а семь параметров. Во-вторых, строкой int i Вы объявили переменную. А далее переменная i ни где не проинициализирована значением. В результате она либо ноль, либо содержит хлам ячеек оперативной памяти, оставшийся в ячейках от предыдущей деятельности. И в-третьих, цикл while организован не верно. Ну допустим, переменная i после инициализации равна нулю. Допустим так же, что и выражение Ma1 > Ma2 так же истинно. В результате строка while(Ma1 > Ma2) запустит цикл в работу. На очередной итерации цикла выяснится, что выражение (Ma1 > Ma2) перестало быть истинным и цикл прервётся. В переменных МА1 и МА2 будет не то расстояние, которое является максимальным - максимальное было когда-то. Это условие лишь покажет, что МА1 сейчас стало менее или равно МА2.
Далее, переменная maxrange у Вас инициализируется значением только в строке range = (Ma1 - Ma2)/Point; Ну а что если условие if(range > maxrange) ни когда не выполнится, ведь ни где ранее в коде Вы не инициализируете переменную maxrange значением? Получается, что Вы сравниваете между собой результат вычислений и хлам ячеек оперативной памяти. Вот Вам и непонятные принты в результате исполнения кода.
if(range > maxrange) maxrange = range;
Так в том то и дело что я делал вывод всех значений МА в цикле, и все значения выводятся верно, то есть все значения МА за этот период были перебраны. Но подсчет почему то неверный вот в этом месте range = (Ma1 - Ma2)/Point;
if(range > maxrange) maxrange = range;
*Point
range = (Ma1 - Ma2)*Point
*Point
range = (Ma1 - Ma2)*Point
Так в том то и дело что я делал вывод всех значений МА в цикле, и все значения выводятся верно, то есть все значения МА за этот период были перебраны. Но подсчет почему то неверный вот в этом месте range = (Ma1 - Ma2)/Point;
if(range > maxrange) maxrange = range;
Ну дык нужно проверить что поступает на вход. Какие именно значения переменных участвуют в вычислениях?