Пришлось искать. В справке по MQL5 не нашел, нашел в справке по OrderSelect для MQL4:
"При последовательном выборе ордеров с помощью параметра SELECT_BY_POS информация отдаётся в том порядке, в котором она поступила с торгового сервера. Никакая сортировка полученного списка ордеров не гарантируется."
Вообще-то я систематически контролирую, есть ли в используемых мной списках упорядоченность по номеру тикета. Случаев ее отсутствия не было. Но и со справкой спорить нельзя, нет аргументов. Никакая так никакая...
Что значит "никакая"? По тикету сортируйте - всегда будет порядок и с документацией никаких противоречий, там про сортировку по порядковому номеру написано, а не по тикету, это разные вещи.
ребят подскажите как правильно тестировать с новыми билдами они всегда меняются и то что работало теперь не работает тестирую так скачиваю котировки с тикстори лайт импортирую в терминал на билдах1010 все нормально а новом1045 эта вся тема не прокатывает в чем проблема может кто знает?или может есть какой то универсальный вариант тестирования не подверженный изменнения в билдах терема кто знает подскажите?
Vitalie Postolache: Что значит "никакая"? По тикету сортируйте - всегда будет порядок и с документацией никаких противоречий, там про сортировку по порядковому номеру написано, а не по тикету, это разные вещи.
А где-то в документации написано про упорядоченность по номеру тикета? Подскажите, не знаю.
Еще столкнулся с одной проблемкой! Не судите строго, язык изучаю недели 2-3, может просто туплю!
Задача на советнике, уведомить трейдера через почту каждые 4 часа, если свободная маржа на счете привесила определенное значение.
В тему сообщения нужно написать название брокера и торгуемую пара, а в тело сообщения "Опасность! Просадка привысила допустимое значение. Примите необходимые меры"
Компилятор ругается, с английском не дружу и не могу понять в чем ошибка!
inputdouble MessageMail = 50.0; double Sag;
voidOnTick() { Sag = NormalizeDouble(100-100*(AccountInfoDouble(ACCOUNT_FREEMARGIN)/AccountInfoDouble(ACCOUNT_BALANCE)), 1); //находим процент просадки и округляем до 1 знака if(Sag > MessageMail && iVolume(NULL,PERIOD_H4,0)<3) //если просадка больше заданного и начата новая свеча на 4ч таймфрейме { Alert(Symbol(), ": Просадка = ", Sag, " % ", " > ", MessageMail, " % "); //вывести предупреждение в терминале //Сюда нужно вставить команду SendMail для отправки сообщения, а что и как не понятно // пробовал bool SendMail( AccountInfoString(ACCOUNT_COMPANY)|Symbol, "Опасность! Просадка привысила допустимое значение. Примите необходимые меры") //что то не выходит } }
PS: Может в целом есть проще решение для такой задачи, но я пока ее вижу только так)
Еще столкнулся с одной проблемкой! Не судите строго, язык изучаю недели 2-3, может просто туплю!
Задача на советнике, уведомить трейдера через почту каждые 4 часа, если свободная маржа на счете привесила определенное значение.
В тему сообщения нужно написать название брокера и торгуемую пара, а в тело сообщения "Опасность! Просадка привысила допустимое значение. Примите необходимые меры"
Компилятор ругается, с английском не дружу и не могу понять в чем ошибка!
inputdouble MessageMail = 50.0; double Sag;
voidOnTick() { Sag = NormalizeDouble(100-100*(AccountInfoDouble(ACCOUNT_FREEMARGIN)/AccountInfoDouble(ACCOUNT_BALANCE)), 1); //находим процент просадки и округляем до 1 знака if(Sag > MessageMail && iVolume(NULL,PERIOD_H4,0)<3) //если просадка больше заданного и начата новая свеча на 4ч таймфрейме { Alert(Symbol(), ": Просадка = ", Sag, " % ", " > ", MessageMail, " % "); //вывести предупреждение в терминале //Сюда нужно вставить команду SendMail для отправки сообщения, а что и как не понятно // пробовал bool SendMail( AccountInfoString(ACCOUNT_COMPANY)|Symbol, "Опасность! Просадка привысила допустимое значение. Примите необходимые меры") //что то не выходит } }
PS: Может в целом есть проще решение для такой задачи, но я пока ее вижу только так)
Пришлось искать. В справке по MQL5 не нашел, нашел в справке по OrderSelect для MQL4:
"При последовательном выборе ордеров с помощью параметра SELECT_BY_POS информация отдаётся в том порядке, в котором она поступила с торгового сервера. Никакая сортировка полученного списка ордеров не гарантируется."
Вообще-то я систематически контролирую, есть ли в используемых мной списках упорядоченность по номеру тикета. Случаев ее отсутствия не было. Но и со справкой спорить нельзя, нет аргументов. Никакая так никакая...
Что значит "никакая"? По тикету сортируйте - всегда будет порядок и с документацией никаких противоречий, там про сортировку по порядковому номеру написано, а не по тикету, это разные вещи.
Запустите этот код, и почитайте журнал
void OnTick()
{
//--
if(flag)
{
for(int i=0; i<OrdersTotal(); i++)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
Print(i," = ",OrderOpenTime());
}
}
flag=false;
}
//-
}
Еще столкнулся с одной проблемкой! Не судите строго, язык изучаю недели 2-3, может просто туплю!
Задача на советнике, уведомить трейдера через почту каждые 4 часа, если свободная маржа на счете привесила определенное значение.
В тему сообщения нужно написать название брокера и торгуемую пара, а в тело сообщения "Опасность! Просадка привысила допустимое значение. Примите необходимые меры"
Компилятор ругается, с английском не дружу и не могу понять в чем ошибка!
double Sag;
void OnTick()
{
Sag = NormalizeDouble(100-100*(AccountInfoDouble(ACCOUNT_FREEMARGIN)/AccountInfoDouble(ACCOUNT_BALANCE)), 1); //находим процент просадки и округляем до 1 знака
if(Sag > MessageMail && iVolume(NULL,PERIOD_H4,0)<3) //если просадка больше заданного и начата новая свеча на 4ч таймфрейме
{
Alert(Symbol(), ": Просадка = ", Sag, " % ", " > ", MessageMail, " % "); //вывести предупреждение в терминале
//Сюда нужно вставить команду SendMail для отправки сообщения, а что и как не понятно
// пробовал bool SendMail( AccountInfoString(ACCOUNT_COMPANY)|Symbol, "Опасность! Просадка привысила допустимое значение. Примите необходимые меры")
//что то не выходит
}
}
PS: Может в целом есть проще решение для такой задачи, но я пока ее вижу только так)
Еще столкнулся с одной проблемкой! Не судите строго, язык изучаю недели 2-3, может просто туплю!
Задача на советнике, уведомить трейдера через почту каждые 4 часа, если свободная маржа на счете привесила определенное значение.
В тему сообщения нужно написать название брокера и торгуемую пара, а в тело сообщения "Опасность! Просадка привысила допустимое значение. Примите необходимые меры"
Компилятор ругается, с английском не дружу и не могу понять в чем ошибка!
double Sag;
void OnTick()
{
Sag = NormalizeDouble(100-100*(AccountInfoDouble(ACCOUNT_FREEMARGIN)/AccountInfoDouble(ACCOUNT_BALANCE)), 1); //находим процент просадки и округляем до 1 знака
if(Sag > MessageMail && iVolume(NULL,PERIOD_H4,0)<3) //если просадка больше заданного и начата новая свеча на 4ч таймфрейме
{
Alert(Symbol(), ": Просадка = ", Sag, " % ", " > ", MessageMail, " % "); //вывести предупреждение в терминале
//Сюда нужно вставить команду SendMail для отправки сообщения, а что и как не понятно
// пробовал bool SendMail( AccountInfoString(ACCOUNT_COMPANY)|Symbol, "Опасность! Просадка привысила допустимое значение. Примите необходимые меры")
//что то не выходит
}
}
PS: Может в целом есть проще решение для такой задачи, но я пока ее вижу только так)
Грехов нет, на что ругается.
Какие ошибки компилятора
prıvet .podskajıte pojalusta pochemu na demo schete ne mogu otkrıt zdelkı
prıvet .podskajıte pojalusta pochemu na demo schete ne mogu otkrıt zdelkı
trade is disablet .oshıbka