Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Сань, это то понятно...
вопрос вот вчем: мы знаем что Step=MarketInfo(Symbol(),MODE_LOTSTEP);
а также Lots=(сложные вычесления)=0.6346
теперь надо привести Lots (нормализовать) до количества занков в Step... для разных ДЦ он (Step) разный... у когото 0.1, у когото 0.01 и нужно -
Lots=(Некая функция(Lots,Step));
Некая функция
Normalize(0.6346,0.1)==0.6
Normalize(0.6346,0.01)==0.63
:)
Некая функция
Normalize(0.6346,0.1)==0.6
Normalize(0.6346,0.01)==0.63
:)
это понятно
Рассчитываемые значения StopLoss, TakeProfit, а также значения цены открытия отложенных ордеров должны быть нормализованы с точностью, значение которой хранится в предопределенной переменной Digits.
тему можно закрыть... хоят разнообразие таких функций есть хорошо... :)
я может что-то путаю, но
Сравнивает значение выражения с константами во всех вариантах case и передает управление оператору, который соответствует значению выражения. Каждый вариант case может быть помечен целой константой, символьной константой или константным выражением. Константное выражение не может включать переменные или вызовы функций. Выражение оператора switch должно быть целого типа.
А собственно что смущает? Целый тип? Если это так, то могу сказать однозначно - передаю дробное значение лота на вход оператора switch и проблем нет ни каких - работает как часики.
Вообще, тут не понятно, что имеется ввиду под термином "целого типа". Дело в том, что такого типа данных в языке нет. Есть целочисленый, но не целый. И тут же в справке метаэдитора приводится пример использования оператора switch, в котором на вход подаётся не переменная, содержащая целочисленное значение, а переменная, содержащая строковое значение.
А собственно что смущает? Целый тип? Если это так, то могу сказать однозначно - передаю дробное значение лота на вход оператора switch и проблем нет ни каких - работает как часики.
Вообще, тут не понятно, что имеется ввиду под термином "целого типа". Дело в том, что такого типа данных в языке нет. Есть целочисленый, но не целый. И тут же в справке метаэдитора приводится пример использования оператора switch, в котором на вход подаётся не переменная, содержащая целочисленное значение, а переменная, содержащая строковое значение.
Есть целочисленый, но не целый. И тут же в справке метаэдитора приводится пример использования оператора switch, в котором на вход подаётся не переменная, содержащая целочисленное значение, а переменная, содержащая строковое значение.Не подскажите ссылку на такой советник (или скрипт автомат):
Работаю на снове Parabolic. Как только происходит перелом тренда по Р. (точка перескакивает верх или вниз), открываю сделку. ТР не ставлю, SL=значение параболика. SL передвигаю за каждой свечкой. Закрываю сделку при переломе тренда. На 15-ти минутах и выше работает нормально не жалуюсь. Но тупо сидеть ждать перелома...
Чего хотелось бы:
1. Чтобы советник хотя бы крякнул при переломе.
2. Скрипт автомат выше изложенное делал сам.
Заранее благодарен.
это понятно
Рассчитываемые значения StopLoss, TakeProfit, а также значения цены открытия отложенных ордеров должны быть нормализованы с точностью, значение которой хранится в предопределенной переменной Digits.
Саш, прочти внимательней... автор не использует NormalizeDouble, он пишет свою функцию Normalize :) а ключевая строка в ней MathRound(lots/step)*step
что есть следующее Lots (типа double) делиться на Step, т.е. умножается на 10^x, округляем полученый результат до ближайшего целого и делим на 10^х, получаем размер лота с точным количеством знаков после запятой, что и требовалось получить...
MathRound(0.6346/0.01)=63;
63*0.01=0.63
имхо самый красивый вариант... и простой... :)
Саш, прочти внимательней... автор не использует NormalizeDouble, он пишет свою функцию Normalize :) а ключевая строка в ней MathRound(lots/step)*step
что есть следующее Lots (типа double) делиться на Step, т.е. умножается на 10^x, округляем полученый результат до ближайшего целого и делим на 10^х, получаем размер лота с точным количеством знаков после запятой, что и требовалось получить...
MathRound(0.6346/0.01)=63;
63*0.01=0.63
тему можно закрыть... хоят разнообразие таких функций есть хорошо... :)
Ну зачем-же закрывать, а пофлудить :)
Если уж сильно охота получить точность в количественно выражении (и как я понял в этом и есть вся проблема), то можно конечно перебором 0.1, 0.01 и т.д.
Можно строчки поразбирать (и такие исходники видел), а можно вспомнить школьный курс математики.
Precision(1)==0;
Precision(0.1)==1;
Precision(0.01)==2; и т.д.