Но необходимо отредактировать и шапку индикатора. Что бы все буферы могли хранить значение
И неплохо было бы сделать расчет истории, но это конечно дело вкуса. И работу с объектами более корректно сделать. На каждом тике создаются (или формируют ошибку) объекты с теми же именами.
Попробуйте словами описать то, что вы тут написали:
Лично для меня на самый первый взгляд оказалось головоломкой ваша затея: Если единица не равна единице, то закрыть ордер...
Остальное после этого смотреть не стал...
ЗЫ и не пытайтесь, даже не думайте, что в одном цикле возможно написать нормальный советник...
Идея такова:
Точка входа в рынок: в любое время, если нет никаких ни отложенных, ни, тем более открытых позиций.
Робот открывает 2 отложенные позы, СС БС на одинаковом расстоянии в пунктах от текущей цены (это пользовательская переменная PriceDistance).
Отложники оба с одинаковыми ТП, СЛ, ТС (как в зеркальном отражении от текущей цены.
И оба на одинаковое время (в перспективе переменная "TimeStop").
Всё....
На практике: закрываются предыдущие позиции (либо обе с истечением времени, либо об СЛ или ТП- не важно), терминал освободился, сразу после этого открываются такие же с теми же параметрами, но, отталкиваясь от текущей цены, в новом диапазоне. Далее- по циклу.
Идея примитивна, 100% сливатор, но я планирую в этом направление двинуть и подвязать к прочим сигналам, например Вольюмс при определенных значениях на определенных таймфреймах....
Доброго вечера! Написал тут прастейшую конструкцию, для подсчета имеющегося профита, на каждом тике. Так вот, она не работает! 10 минут смотрел,ел код глазами . Ошибки не вижу. Вот код
Магик нумбер верный, четырежды провирял. Скобки,все чего мог догадаться посмотреть- все вроде же верно. Может, я ордертипе не так пишу/сравниваю? Справку смотрел. Короче,помогите пожалуста! Без вас никак!! Разьясните, что же может быть???
dkfl.zrjdktdbx: Доброго вечера! Написал тут прастейшую конструкцию, для подсчета имеющегося профита, на каждом тике. Так вот, она не работает! 10 минут смотрел,ел код глазами . Ошибки не вижу. Вот код Магик нумбер верный, четырежды провирял. Скобки,все чего мог догадаться посмотреть- все вроде же верно. Может, я ордертипе не так пишу/сравниваю? Справку смотрел. Короче,помогите пожалуста! Без вас никак!! Разьясните, что же может быть???
"Легко заметить, что порядок вычисления выражений в программе аналогичен порядку подобных вычислений в математике, но отличается вычислением типов значений промежуточных выражений, что существенно влияет на конечный результат вычислений. В частности (в отличие от правил, принятых в математике), немаловажное значение имеет порядок операндов в выражении. Чтобы продемонстрировать это, рассмотрим небольшой пример. Задача 6. Вычислить значения выражений А/В*С и А*С/В для целых чисел А, В и С.
Интуитивно ожидается, что результат вычислений в обоих случаях будет одинаковым. Однако это утверждение справедливо только в отношении действительных чисел. При вычислении значений выражений, составленных из операндов целого типа, очень важен промежуточный результат. В таком случае последовательность операндов имеет принципиальное значение:
int A = 3; // Значение целого типаint B = 5; // Значение целого типаint C = 6; // Значение целого типаint Res_1 = A/B*C; // Результат 0 (ноль)int Res_2 = A*C/B; // Результат 3 (три)
Проследим процесс вычисления выражения A/B*C:
1. Сначала (слева направо) будет вычислено значение выражения A/B. В соответствии с указанными выше правилами значением выражения (3/5) будет целое значение 0 (ноль).
2. Вычисление выражения 0*С (ноль умножить на С). Результат - целое значение 0 (ноль).
3. Общий результат (значение переменной Res_1) - целое значение 0 (ноль).
Теперь посмотрим, как будут развиваться события при вычислении выражения A*C/B.
1. Вычисление A*C. Значением этого выражения будет целое число 18 (3*6=18).
2. Вычисление выражения 18/B. Ответ очевиден: (18/5) после отбрасывания дробной части получится целое число 3(три).
3. Общий результат (значение переменной Res_2) - целое значение 3 (три).
В данном примере рассмотрен небольшой фрагмент программы, в котором вычисляются значения переменных целого типа. Если эти переменные заменить константами, но использовать при этом те же их значения, то конечный результат от этого не изменится. При вычислении выражений, в которых используются целые числа, необходимо проявлять повышенное внимание к содержанию программных строк. В противном случае в программе может возникнуть ошибка, которую впоследствии (особенно в больших программах) очень трудно обнаружить. При вычислениях, в которых участвуют только действительные числа, подобная проблема не возникает. Но если в сложном выражении употребляются операнды разных типов, то конечный результат может полностью зависеть от случайно составленного фрагмента, где происходит деление целых чисел.
В разделе Операторы рассматривается понятие и общие свойства операторов, в главе Операторы раскрываются собственные свойства каждого оператора."
Но необходимо отредактировать и шапку индикатора. Что бы все буферы могли хранить значение
И неплохо было бы сделать расчет истории, но это конечно дело вкуса. И работу с объектами более корректно сделать. На каждом тике создаются (или формируют ошибку) объекты с теми же именами.
шапку исправил.
с буфером:
догодался.
Огромное спасибо за помощь.
А на счет ваших предложений, я бы непротив их сделать. но я сам их не сделаю к сожелению.
Попробуйте словами описать то, что вы тут написали:
Лично для меня на самый первый взгляд оказалось головоломкой ваша затея: Если единица не равна единице, то закрыть ордер...
Остальное после этого смотреть не стал...
ЗЫ и не пытайтесь, даже не думайте, что в одном цикле возможно написать нормальный советник...
Идея такова:
Точка входа в рынок: в любое время, если нет никаких ни отложенных, ни, тем более открытых позиций.
Робот открывает 2 отложенные позы, СС БС на одинаковом расстоянии в пунктах от текущей цены (это пользовательская переменная PriceDistance).
Отложники оба с одинаковыми ТП, СЛ, ТС (как в зеркальном отражении от текущей цены.
И оба на одинаковое время (в перспективе переменная "TimeStop").
Всё....
На практике: закрываются предыдущие позиции (либо обе с истечением времени, либо об СЛ или ТП- не важно), терминал освободился, сразу после этого открываются такие же с теми же параметрами, но, отталкиваясь от текущей цены, в новом диапазоне. Далее- по циклу.
Идея примитивна, 100% сливатор, но я планирую в этом направление двинуть и подвязать к прочим сигналам, например Вольюмс при определенных значениях на определенных таймфреймах....
Поэтому прога нужна по-зарез....
Вот и задался написанием...
Доброго вечера! Написал тут прастейшую конструкцию, для подсчета имеющегося профита, на каждом тике. Так вот, она не работает! 10 минут смотрел,ел код глазами . Ошибки не вижу. Вот код Магик нумбер верный, четырежды провирял. Скобки,все чего мог догадаться посмотреть- все вроде же верно. Может, я ордертипе не так пишу/сравниваю? Справку смотрел. Короче,помогите пожалуста! Без вас никак!! Разьясните, что же может быть???
Несколько скобок не хватает
Вроде бы так. Хотя лучше делать проще
Возник вот такой вопрос - в МТ4: (2/3*9 == 2*9/3) ?
Спасибо!
Возник вот такой вопрос - в МТ4: (2/3*9 == 2*9/3) ?
Спасибо!
А в чем дело?
Проверьте на калькуляторе - узнаете.
См. в документации - порядок вычисления выражений.
Вы бы хоть учебник почитали...
"Легко заметить, что порядок вычисления выражений в программе аналогичен порядку подобных вычислений в математике, но отличается вычислением типов значений промежуточных выражений, что существенно влияет на конечный результат вычислений. В частности (в отличие от правил, принятых в математике), немаловажное значение имеет порядок операндов в выражении. Чтобы продемонстрировать это, рассмотрим небольшой пример. Задача 6. Вычислить значения выражений А/В*С и А*С/В для целых чисел А, В и С.
Интуитивно ожидается, что результат вычислений в обоих случаях будет одинаковым. Однако это утверждение справедливо только в отношении действительных чисел. При вычислении значений выражений, составленных из операндов целого типа, очень важен промежуточный результат. В таком случае последовательность операндов имеет принципиальное значение:
Проследим процесс вычисления выражения A/B*C:
1. Сначала (слева направо) будет вычислено значение выражения A/B. В соответствии с указанными выше правилами значением выражения (3/5) будет целое значение 0 (ноль).
2. Вычисление выражения 0*С (ноль умножить на С). Результат - целое значение 0 (ноль).
3. Общий результат (значение переменной Res_1) - целое значение 0 (ноль).
Теперь посмотрим, как будут развиваться события при вычислении выражения A*C/B.
1. Вычисление A*C. Значением этого выражения будет целое число 18 (3*6=18).
2. Вычисление выражения 18/B. Ответ очевиден: (18/5) после отбрасывания дробной части получится целое число 3(три).
3. Общий результат (значение переменной Res_2) - целое значение 3 (три).
В данном примере рассмотрен небольшой фрагмент программы, в котором вычисляются значения переменных целого типа. Если эти переменные заменить константами, но использовать при этом те же их значения, то конечный результат от этого не изменится. При вычислении выражений, в которых используются целые числа, необходимо проявлять повышенное внимание к содержанию программных строк. В противном случае в программе может возникнуть ошибка, которую впоследствии (особенно в больших программах) очень трудно обнаружить. При вычислениях, в которых участвуют только действительные числа, подобная проблема не возникает. Но если в сложном выражении употребляются операнды разных типов, то конечный результат может полностью зависеть от случайно составленного фрагмента, где происходит деление целых чисел.
В разделе Операторы рассматривается понятие и общие свойства операторов, в главе Операторы раскрываются собственные свойства каждого оператора."
А в чем дело?
Проверьте на калькуляторе - узнаете.
Проверил - и Casio, и даже Майкрософтовкий калькулятор говорят что 2/3*9=6.
Проверил - и Casio, и даже Майкрософтовкий калькулятор говорят что 2/3*9=6.
Ну. Проблема-то в чем?