Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Мне нужно было вызвать модификацию ордера из функции "int start()", когда вызывается и "If(IsNewCandle())". Таким образом, на КАЖДОМ закрытии часа, "void OrderModify", который модифицирует отложенный ордер, если orderstoploss > iMA-ATR, будет модифицирован и откалиброван соответствующим образом.
Так что теперь это делает свою работу должным образом :) Теперь буду читать, пока глаза не начнут кровоточить... :)
Это проблема ... (аналогично для OP_SELL)
... и когда вы получаете ошибку 1, это потому, что OrderStopLoss() == BuyStopPrice, поэтому вы изменяете ордер, чтобы иметь то же значение StopLoss, отсюда и ошибка 1, и теперь вы задаетесь вопросом, как с одной стороны OrderStopLoss() == BuyStopPrice, а с другой стороны OrderStopLoss() < BuyStopPrice.
Вы перешли по ссылке в посте и читали его до крови? Держу пари, что нет... https://www. mql5.com/en/forum/146380 если вы будете продолжать игнорировать эту проблему, она будет продолжать вас ловить, и вы будете продолжать терять время... разберитесь с ней, поймите ее, не страдайте от нее больше, будьте счастливы.
кроме как с нулем никогда не сравнивайте двойки на равенство < Может это то, что я искал по WHRoeder...?
if (a > b)
if (a >= b)
if (a != b)
кроме как с нулем, никогда не сравнивать двойники на равенство < Может быть, это то, что я искал по WHRoeder...?
Честно говоря, я не понимаю... Хотя я экспериментировал с записью и распечаткой сравнений...
1.51234000001 - это не то же самое, что 1.51234000002, но с точки зрения цены они оба равны 1.51234, поэтому они одинаковы... поэтому они одинаковы, но одно больше другого. Все это связано с тем, как числа с плавающей запятой представлены в двоичном формате, это неточно, поэтому обычно есть небольшая ошибка. . .
Взгляните на это: числа с плавающей запятой
Но почему бы NormalizedDouble, Digits не разобраться с этим? Зачем включать лишние ненужные знаки после запятой? Я понимаю, что не нужно использовать NormalizeDouble для предопределенных переменных, но какой смысл использовать NormalizeDouble для не предопределенных переменных, а затем пытаться сравнить их, если они никогда не совпадут :s?
Странно!
Если бы я хотел сделать "If(Bid > OrderOpenPrice())", это бы не сработало? Нужно ли мне делать правила, указанные выше, для каждого оператора сравнения, т.е. "If(Bid - OrderOpenPrice() > Point / 2.)"?
О, и что If(Bid == OrderOpenPrice()), есть ли что-то, что мне нужно сделать с этим утверждением?
Но почему бы NormalizedDouble, Digits не разобраться с этим? Зачем включать лишние ненужные знаки после запятой? Я понимаю, что вам не нужно использовать NormalizeDouble для предопределенных переменных, но какой смысл использовать NormalizeDouble для не предопределенных переменных, а затем пытаться сравнить их, если они никогда не совпадут :s?
NormalizeDouble не исправляет проблему, он не превращает 1 .51234000001 в 1.51234, он просто "возится" с ним по-другому... поэтому, используя его, вы надеетесь, что он возится со всеми вашими значениями одинаково.
Если бы я хотел сделать "If(Bid > OrderOpenPrice())", это бы не сработало? Нужно ли мне делать правила, указанные выше, для каждого оператора сравнения, т.е. "If(Bid - OrderOpenPrice() > Point / 2.)"?
Да, если вы хотите быть уверены, что ваше сравнение дает вам точный результат, то да.
О, и что If(Bid == OrderOpenPrice()), есть ли что-то, что мне нужно сделать с этим утверждением?
Ок, спасибо - я значительно уменьшил количество ошибок OrderModify error 1 - однако, я все еще получаю немного время от времени? Похоже, что это из-за пустоты MA_trail? Также, как мне правильно написать "If(Bid == OrderOpenPrice())?
Ваши глаза недостаточно кровоточат...
Вы можете сделать что-то вроде этого:
!( MathAbs(FirstPrice - SecondPrice) > HalfAPoint )
будьте осторожны !
Отсюда: https://www.mql5.com/en/forum/136997/page4#781986