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

 
Heroix:

Это 2 терминала на 1 компьютере. На все предложения со стороны терминала обновиться - отвечаю "да".

Файл перенес на флеш с другого комьютера в виде .mql5, его открывал и компилировал разными эдиторами двух терминалов. 

В общем, как понял, нужно обновить МТ.. 

При ручном апгрейде нужно также переносить папку /MQL5, так как она содержит огромное количество стандартных библиотек, которыми Вы пользуетесь.

Так как Вы перенесли только исполнимые файлы и свой исходник в виде mq5 файла, то совершили ошибку.

 
OrderLots() и iClose как можно в MQL 5???
 

Обновился до бильда 695. Стала вылезать ошибка при компилировании инклуда Object.mqh.


 
denkir:

Обновился до бильда 695. Стала вылезать ошибка при компилировании инклуда Object.mqh.

Автоматически штатно обновились или просто файлы перенесли?

Если штатно при хранении файлов в UserData, то скопируйте каталог /MQL5 из корня программы в каталог данных (он открывается из меню Файл).

 
Разработчикам

А что случилось с экономическим календарем, он существует?

дополнительный вопрос: На основе каких данных он формировался и как его в ДЦ "подключить"?

 
papaklass: Данные не совпадают, а должны совпадать, т.к. второй и третий случаи являюся отдельными частями первого условия. Не могу понять в чем проблема.

 Вот это условие

if( mn < STP || mn >= STP )

- оно по какой причине сформулировано таким образом? В нынешнем виде оно сработает при любом mn  и STP. Зачем тогда его вообще вводить? А следующие два варианта - там идёт конкретное отсечение отдельных ситуаций.

А так вроде всё логично: one + two == tri (не вдаваясь в подробности расчётов one, two и tri) во всех трёх вариантах.

 
papaklass:

 Об этом и речь. Я хочу общее пространство ( случай 1) разделить на две группы (случаи 2 и 3). По логике должно быть верно выражение one + two == tri, а у меня оно не выполняется. В первом условии one=148,а во-втором 172. Тоже не севпадение и для two и для tri. И в чем проблема не могу понять.

Может проблема в общем условии? Этот код еще от чего-то зависит?

Просто банальный пример:

условие (а): открываемся, если бар на H1 возрастает. TP=SL=100

условие (б): открываемся, если бар на H1 убывает. TP=SL=100

дополнительное условие: второй раз условия не проверяем, если уже есть позиция.

Тогда при включении (а) плюс (б) мы будем открываться каждый раз как только сработал TP/SL.

если включим (а) мы будем открываться во всех первых случаях плюс (!!!!) еще несколько раз, когда мы не открывались потому, что до этого открылись по условию (б)

и для включения только условия (б) аналогично

 
papaklass:  По логике должно быть верно выражение one + two == tri, а у меня оно не выполняется.

Да посмотрите внимательнее: как раз-таки это сравнение (one + two == tri) и выполняется, для каждого из вариантов.

papaklass: В первом условии one=148,а во-втором 172.

Ну так это совсем другой вопрос, а именно: почему значение one из первого варианта не равно значению one из второго и третьего вариантов.

Вы во втором и третьем вариантах вводите ограничительное условие по сравнению с первым вариантом. Продумайте, почему, например, во втором варианте значение one увеличивается по сравнению с первым вариантом. Из приведённой части кода это пока не понятно.

 
papaklass:

К предыдущему посту.

В третьем случае: one=0, two=124, tri=124. 

Данные не совпадают, а должны совпадать, т.к. второй и третий случаи являюся отдельными частями первого условия. Не могу понять в чем проблема.

ПС:  input int STP=200; 

Правильный результат при изменяющемся наборе данных, т.к. пространство mn<STP Вы исключили.

if( /*mn < STP || */mn >= STP ){
 
papaklass: В своих примерах я делаю просто выборку:

1. Выбираю и пространство2 (one)  и пространство3 (two); 230 = 148 + 82, т.е. пространство2 (one) = 148, а пространство3 (two)=82.

2. ... Должно остаться 148, а стало 172.

3. ... Должно остаться 82, а становится 124. 

Я об этом и говорю: вопрос для Вас состоит в том, почему значение one из первого варианта не равно значению one из второго и третьего вариантов.

papaklassЗначения пространств2 и пространства3 должны быть постоянными, т.к. условия получения этих пространств неизменны во всех трех примерах, которыя я привел в предыдущих постах. 

Чтобы найти ошибку в этом логическом допущении, предлагаю сделать очень просто: вывести на печать каждый случай увеличения "пространствХ" во всех трёх вариантах, сравнить результаты и проанализировать, по какой именно причине "значения пространств2 и пространства3" не являются одинаковыми.

 

Дополнение. ilunga уже намекнул, что при переходе от одного варианта к другому могут быть потеряны те или иные сделки. Ведь у Вас же в тело оператора if() включена убойная по своей силе функция/метод OpenPosition(). И в зависимости от условия, которое проверяется оператором if(),  она срабатывает в разное время. 

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