[Архив!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 2. - страница 155
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
в определение тренда?
в смене тренда на отрезке времени... См https://www.mql5.com/ru/forum/131277/page148 и https://www.mql5.com/ru/forum/131277/page149
Подскажите почему OrderSelect мне возвращает TRUE даже когда ордера с таким тикетом нет (он удален)?
в смене тренда на отрезке времени...
Подскажите пожалуйста, здесь работает функция установления Tp и Slossa
if (total > 0) AveragePrice = NormalizeDouble(AveragePrice / Count, Digits);
if (NewOrdersPlaced) {
for (cnt = OrdersTotal() - 1; cnt >= 0; cnt--) {
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber) continue;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) {
if (OrderType() == OP_BUY) {
PriceTarget = AveragePrice + TakeProfit * Point;
BuyTarget = PriceTarget;
Stopper = AveragePrice - Stoploss * Point;
flag = TRUE;
}
}
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) {
if (OrderType() == OP_SELL) {
PriceTarget = AveragePrice - TakeProfit * Point;
SellTarget = PriceTarget;
Stopper = AveragePrice + Stoploss * Point;
flag = TRUE;
у меня прокомпилировался нормально
Извини, Индикатор работает - такой он был изначально, а ошибка в тхт-файле - он не компилируется.
а из init нельзя проводить расчёты для индикаторного буффера?
хотел в init пересчитывать все бары кроме нулевого а в start нулевой - не считаются..
Подскажите почему OrderSelect мне возвращает TRUE даже когда ордера с таким тикетом нет (он удален)?
А вы хорошо справку по функции прочитали?
Давайте ещё раз почитаем:
---------------------------------------------------------------------------------------------------------------------------------------------------------------
Параметр pool игнорируется, если ордер выбирается по номеру тикета. Номер тикета является уникальным идентификатором ордера. Чтобы определить, из какого списка выбран ордер, необходимо проанализировать его время закрытия. Если время закрытия ордера равно 0, то ордер является открытым или отложенным и взят из списка открытых позиций терминала. Отличить открытую позицию от отложенного ордера можно по типу ордера. Если время закрытия ордера не равно 0, то ордер является закрытым или удаленным отложенным и был выбран из истории терминала. Отличить закрытый ордер от удаленного отложенного также можно по типу ордера.
SELECT_BY_POS - в параметре index передается порядковый номер позиции в списке,
SELECT_BY_TICKET - в параметре index передается номер тикета.
MODE_TRADES (по умолчанию) - ордер выбирается среди открытых и отложенных ордеров,
MODE_HISTORY - ордер выбирается среди закрытых и удаленных ордеров.
---------------------------------------------------------------------------------------------------------------------------------------------------------------
Вот это:
Параметр pool игнорируется, если ордер выбирается по номеру тикета. Номер тикета является уникальным идентификатором ордера. Чтобы определить, из какого списка выбран ордер, необходимо проанализировать его время закрытия. Если время закрытия ордера равно 0, то ордер является открытым или отложенным и взят из списка открытых позиций терминала.
Вы же делаете что?
Красным я выделил параметр pool, который при выборе по тикету игнорируется, и выбирается ордер из любого списка (открытых, либо закрытых) позиций терминала. Потому-то он вам и возвращает истину. Ведь такой тикет существует и ордер выбран, но из списка закрытых ордеров...
Нужно так:
... или:
... ну, или:
Думаю, понятно объяснил... :)
artmedia70
Спасибо за такой подробный исчерпывающий ответ. Действительно максимально понятно :) THX!!!
artmedia70
Спасибо за такой подробный исчерпывающий ответ. Действительно максимально понятно :) THX!!!
:) Спасибо. Не за что.
Хочу предостеречь о некоей "коварности" выбора открытых позиций по их тикету. Дело в том, что в конце торгового дня при переносе позиции на следующий день, ДЦ делает переоткрытие ордера. Т.е. текущая позиция закрывается и открывается уже другая позиция тем же объёмом, но с новым тикетом с учётом свопа. Поэтому ваш советник должен отслеживать переоткрытие ордеров с запоминанием их новых тикетов, иначе всё "поплывёт" - ордер со старым тикетом окажется в списке закрытых ордеров и вы не сможете по старому тикету выбрать существующую позицию, перенесённую на новый торговый день. Та же участь ожидает и частично закрытые позиции - им также присваивается новый тикет.
Посему, ведите свой строгий учёт всех ордеров советника и вовремя отслеживайте все такие "коварные" изменения.
Хочу предостеречь о некоей "коварности" выбора открытых позиций по их тикету. Дело в том, что в конце торгового дня при переносе позиции на следующий день, ДЦ делает переоткрытие ордера.
это на некоторых ДЦ делается, но подавляющее большинство такой фигней не страдают.
Не является ли правилом "хорошего тона" учесть и такое поведение ДЦ? Ведь ... да, не суть важно... Просто стараюсь учитывать всё, ну... или то, о чём осведомлён.
Предостережён - значит вооружён, а? ;)