Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Поправил слегка - для вашей ситуации
Учту. А что скажете по коду? Это только пример, но я хочу понять в чём ошибка.
Видимо ошибка в строках:
SELECT_BY_POS - в параметре index передается порядковый номер позиции в списке,
SELECT_BY_TICKET - в параметре index передается номер тикета.
Источник данных для выбора. Используется, когда параметр select равен SELECT_BY_POS. Mожет быть одной из следующих величин:
MODE_TRADES (по умолчанию) - ордер выбирается среди открытых и отложенных ордеров,
MODE_HISTORY - ордер выбирается среди закрытых и удаленных ордеров.
это не ошибка - он ловит конкретные тикеты
так что все верно у него в коде, у него логика ошибочная была
2008.05.26 17:23:52 2008.05.26 00:39 Tester: order #1 is closed
2008.05.26 17:23:48 2008.05.26 00:00 Tester: order #1, sell 0.10 EURUSD is opened at 1.5767
2008.05.26 17:23:48 2008.05.26 00:00 $ EURUSD,M1: Открыт 2 4 1.5773
2008.05.26 17:23:48 2008.05.26 00:00 $ EURUSD,M1: open #2 buy stop 0.10 EURUSD at 1.5773 ok
2008.05.26 17:23:48 2008.05.26 00:00 $ EURUSD,M1: Открыт 1 5 1.5767
2008.05.26 17:23:48 2008.05.26 00:00 $ EURUSD,M1: open #1 sell stop 0.10 EURUSD at 1.5767 ok
2008.05.26 17:23:48 $ started for testing
В принтах деиствительно sellstop стал sell. Наверно ошибка в этой строке:
if (OrderSelect(TICKET_BUYSTOP,SELECT_BY_TICKET)==true && OrderType()<2)Print("OrderType ",OrderType());
Я ещё учусь и ошибку в упор не вижу. Если отложник сработал то должно выполнятся
Print("OrderType ",OrderType());
Поправил слегка - для вашей ситуации
Проверил. Почему-то всё равно Print("OrderType ",OrderType()); /// ура сработал
не работает.
if ( OrderSelect(TICKET_SELLSTOP,SELECT_BY_TICKET)==true && OrderType() <2 )
тут действительно смотришь вроде как срабатывать должно
тут два условия!
но последовательность проверки может давать ложь
// потому лучше последовательность задавать явно... так и код читается лучше
// к тому же лучше явно указать откуда вы хотите читать ордер т к если вы прийдете сюда с процедуры которая рылась по истории
// вы можете получить не то что хотели
if (OrderSelect(TICKET_SELLSTOP,SELECT_BY_TICKET, MODE_TRADES )==true )
{
// и только теперь смотреть тип ордера, так надежней и нет причин мучаться а что первым отработало КАКОЕ из условий}
Я продажи сделал вот так:
Аналогично делайте для покупок. А вот записи из журнала:
if ( OrderSelect(TICKET_SELLSTOP,SELECT_BY_TICKET)==true && OrderType() <2 )
тут действительно смотришь вроде как срабатывать должно
тут два условия!
но последовательность проверки может давать ложь
// потому лучше последовательность задавать явно... так и код читается лучше
// к тому же лучше явно указать откуда вы хотите читать ордер т к если вы прийдете сюда с процедуры которая рылась по истории
// вы можете получить не то что хотели
if (OrderSelect(TICKET_SELLSTOP,SELECT_BY_TICKET, MODE_TRADES )==true )
{
// и только теперь смотреть тип ордера, так надежней и нет причин мучаться а что первым отработало КАКОЕ из условий}
Согласен, лучше сначала выделить с помощью OrderSelect(TICKET_SELLSTOP,SELECT_BY_TICKET,MODE_TRADES)
а потом проверять, но ведь всёравно не работает.
В журнале печатает 2008.05.26 17:23:48 2008.05.26 00:00 Tester: order #1, sell 0.10 EURUSD is opened at 1.5767
отложник исполнился а Print("OrderType ",OrderType()); не выполняется, даже в исправленном варианте.
Проверьте может у вас получается?
Проверил. Почему-то всё равно Print("OrderType ",OrderType()); /// ура сработал
не работает.
фантастика - но жизнь слишком разнообразна
распринтовку!
Косяк нас может подстерегать если БРОКЕР присваивает ордерам новые ТИКЕТЫ
при частичном закрытии так и происходит
потому я бы на самом деле предпочел с тикетом работать ЛИШЬ в ситуации "ПОКА ОРДЕР ЖИВЕТ в своем неизменном состоянии"
т е зная - предполагая, что ордер отложенный ЕСТЬ, я ищу его по тикетукак тока он сработал я предпочту запомнить новый тикет
распринтовка покажет что к чему