[АРХИВ!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 4. - страница 564
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Добрый вечер! Подскажите, как понять
размер маржи, необходимой для указанного типа ордера на текущем счете и при текущем рыночном окружении без учета текущих отложенных ордеров и открытых позиций.
Може те ли приблизительно указать существующую функцию?
Ещё Стал вместо лота использовать такую функцию
Сплош и рядом пишет OrderSend error 131 - неправильный обьём. При начальном депо 10000 начальный лот 1. Однако, что-то не фурычит..
Какое-то время пытаюсь переделать блок закрытие buy позиции чтобы закрыть только две последние buy позиции, но не получается. Можете подсказать как переделать блок?
Ещё Стал вместо лота использовать такую функцию
Сплош и рядом пишет OrderSend error 131 - неправильный обьём. При начальном депо 10000 начальный лот 1. Однако, что-то не фурычит..
Я использую это. подправьте под себя и попробуйте.(поменять AccountBalance() на AccountFreeMargin(),поставить свою перем. LotsDigits) )
Подскажите что может быть не правильно в этом коде? Это подобие трейлингстопа, но при тестировании выдаёт ошибку 1, при модификации. Почему не модифицируется ордер?
При чём когда исправлял эту ошибку (пока неудачно), при компиляции стало возвращать ошибку из основного кода эксперта в функцию print, пишет что не хватает кавычек, при чём всё там поставлено верно, и что бы исправить эту ошибку приходиться убирать и ставить заново кавычку..
Подскажите что может быть не правильно в этом коде? Это подобие трейлингстопа, но при тестировании выдаёт ошибку 1, при модификации. Почему не модифицируется ордер?
При чём когда исправлял эту ошибку (пока неудачно), при компиляции стало возвращать ошибку из основного кода эксперта в функцию print, пишет что не хватает кавычек, при чём всё там поставлено верно, и что бы исправить эту ошибку приходиться убирать и ставить заново кавычку..
Ошибка 1 это не ошибка. это значит, что ордер уже модифицирован . вставьте проверку параметров модификации перед OrderModify() (если стоплосс ордера не равен стоплосс , (ND(Bid-StopLevel*Point)или ND(Ask+StopLevel*Point) ) , тогда OrderModify() , иначе -- return).
Ошибка 1 это не ошибка. это значит, что ордер уже модифицирован . вставьте проверку параметров модификации перед OrderModify() (если стоплосс ордера не равен стоплосс , (ND(Bid-StopLevel*Point)или ND(Ask+StopLevel*Point) ) , тогда OrderModify() , иначе -- return).
Дак эта проверка стоит выше: if ((Bid-OrderStopLoss())>(StopLevel*Point)), или я не правильно вас понял
при чём тестировал на резком движении, там даже визуально, явно видно что стоп лоз ордера и выражения не равны
Навскидку, что вижу, в функции закрытия ордеров нужно выбрать ордер по тикету OrderSelect(Ticket, SELECT_BY_TICKET), количество лотов указать не переменной Lts, она ведь каждый раз пересчитывается, а использовать OrderLots() И еще одно- вы продолжаете работать на 0-м баре, соответственно, критерии наодном баре могут появляться пропадать, ваши ордера могут открываться не там, где хотелось бы. Замените в параметрах индикатора бар 0 на 1, 1 на 2
Огромное спасибо за ответ), но вот критерии снова работают не так как нужно, на скрине это видно (не по всем пересечениям стохастика работают ордера( ), и хотел бы все таки работать на 0 баре, но для этого как я понял нужно доп. условие: после открытия ордера на текущем баре, ничего не делать пока бар не закроется, но как это реализовать не знаю (может через масивы таймсерий???) Подскажите пож.
Дак эта проверка стоит выше: if ((Bid-OrderStopLoss())>(StopLevel*Point)), или я не правильно вас понял
при чём тестировал на резком движении, там даже визуально, явно видно что стоп лоз ордера и выражения не равны
Проблема в следующем: так как у вас в этой функции нет OrderSelect(), видимо она используется где то в цикле с перебором ордеров. Если этот цикл организует перебор от нулевого ордера к последнему, то после модификации первого ордера или если на этом тике например был зарыт какой либо ордер при следующем вызове ф-и OrderSelect() порядок следования ордеров меняется и функция может выбрать для модификации ордер, который уже модифицирован. Поэтому надо проверять не равно ли значение стоплосса ордера тому, которое мы передаем в функцию OrderModify()