Если речь идет о тиках, то можно написать код сохраняющий днные файл, но в експерте нужно будет сделать загрузку из файла. Может есть смысл просто не выключать комп?
Видимо следует задействовать второй вариант. Спасибо, BBSL.
Знаете, при наличии только одного ордера, может и пойдёт, но вот если ручками ещё открывать, то будет всё уже не так. Номер тикета нужно сохранять в переменной, а после выбора ордера сравнивать его тикет с запомненным:
if (OrderTicket()==number_ticket) {
// ... код для работы с выбранным ордером при совпадении тикетов
}
А вообще, выбор ордеров нужно проводить ф-цией OrderSelect() в цикле:
for (i=0; i<OrdersTotal(); i++) { // цикл по всем рыночным ордерам терминалаif (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { // Если выбран любой рыночный ордер с индексом iif (OrderSymbol()!=Symbol()) continue; // Если символ не текущего графика, переходим к выбору следующего ордераif (OrderMagicNumber()!=Magic) continue; // Если его магик не совпадает с магиком советника - переходим к выбору следующего//... далее можно проверять другие параметры выбранного ордера, но в этом месте уже есть выбранный ордер текущего графика и номером магика советникаif (OrderTicket()==number_ticket) { // проверяем тикет выбранного ордера и, если есть совпадение, выполняем с ним дальнейшие действия// ... код, выполняющий дальнейшие действия с найденным нужным ордером ...
}
}
elseif (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) // Иначе, если не удалось выбрать ордерPrint ("Ошибка при выборе ордера из списка рыночных ордеров = ", GetLastError()); // Выведем сообщение об ошибке и её номер в журнал.
}
Это только пример для понимания, а не законченный рабочий код, если что... :)
Знаете, при наличии только одного ордера, может и пойдёт, но вот если ручками ещё открывать, то будет всё уже не так. Номер тикета нужно сохранять в переменной, а после выбора ордера сравнивать его тикет с запомненным:
А вообще, выбор ордеров нужно проводить ф-цией OrderSelect() в цикле:
Это только пример для понимания, а не законченный рабочий код, если что... :)
При закрытии ордеров, если ордер не один, нужно использовать такой цикл:
int i, k=OrdersTotal();
for (i=k-1; i>=0; i--) {
//...
Подскажите плиз, почему не работает OrderOpenPrice ? Задача - ищем в пуле ордер выставленный по определенной цене, если его там нет, ставим ордер и ставим флаг что он установлен.
Подскажите плиз, почему не работает OrderOpenPrice ? Задача - ищем в пуле ордер выставленный по определенной цене, если его там нет, ставим ордер и ставим флаг что он установлен.
Если речь идет о тиках, то можно написать код сохраняющий днные файл, но в експерте нужно будет сделать загрузку из файла. Может есть смысл просто не выключать комп?
Странно вы как-то делаете... При открытии позиции номер тикета присваиваете одной переменной, а проверяете совсем другую...
При этом OrderSend() в случае неудачи возвращает -1 (минус один), а вы проверяете на меньше единицы, когда нужно на меньше ноля
Это первое, что в глаза бросается. Но, думаю, у вас там много всего интересного... :)
У-га-га, да приколов много... Особенно когда начинаешь проверять))
Давайте, еще раз... Нужно так,
Открываю ордер:
Закрываю ордер:
Правильно, при условии одного единственного ордера?))
Видимо следует задействовать второй вариант. Спасибо, BBSL.
Пожалуйста, надеюсь это действительно Вам поможет))
Странно вы как-то делаете... При открытии позиции номер тикета присваиваете одной переменной, а проверяете совсем другую...
При этом OrderSend() в случае неудачи возвращает -1 (минус один), а вы проверяете на меньше единицы, когда нужно на меньше ноля
Это первое, что в глаза бросается. Но, думаю, у вас там много всего интересного... :)
Я понял, номер тикита нужно получать вот так:
Странно вы как-то делаете... При открытии позиции номер тикета присваиваете одной переменной, а проверяете совсем другую...
При этом OrderSend() в случае неудачи возвращает -1 (минус один), а вы проверяете на меньше единицы, когда нужно на меньше ноля
Это первое, что в глаза бросается. Но, думаю, у вас там много всего интересного... :)
Respect, свасибо!))
Я понял, номер тикита нужно получать вот так:
Знаете, при наличии только одного ордера, может и пойдёт, но вот если ручками ещё открывать, то будет всё уже не так. Номер тикета нужно сохранять в переменной, а после выбора ордера сравнивать его тикет с запомненным:
А вообще, выбор ордеров нужно проводить ф-цией OrderSelect() в цикле:
Это только пример для понимания, а не законченный рабочий код, если что... :)
Знаете, при наличии только одного ордера, может и пойдёт, но вот если ручками ещё открывать, то будет всё уже не так. Номер тикета нужно сохранять в переменной, а после выбора ордера сравнивать его тикет с запомненным:
А вообще, выбор ордеров нужно проводить ф-цией OrderSelect() в цикле:
Это только пример для понимания, а не законченный рабочий код, если что... :)
При закрытии ордеров, если ордер не один, нужно использовать такой цикл:
При закрытии ордеров, если ордер не один, нужно использовать такой цикл:
Читайте последнюю строку моего поста. Кто сказал, что я писал пример для закрытия?
Остальное - прописные истины. Напишите свой учебник.
Подскажите плиз, почему не работает OrderOpenPrice ? Задача - ищем в пуле ордер выставленный по определенной цене, если его там нет, ставим ордер и ставим флаг что он установлен.
Подскажите плиз, почему не работает OrderOpenPrice ? Задача - ищем в пуле ордер выставленный по определенной цене, если его там нет, ставим ордер и ставим флаг что он установлен.
Нельзя сравнивать действительные числа.