Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 1132
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Пришлось искать. В справке по 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