Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 1132

 
Vladimir:
Где-то в справке разработчики сообщали, что никакая упорядоченность не гарантируется.

По тикету всегда упорядоченность есть. Никогда тикет более позднего ордера не будет меньше, чем у более раннего (по времени открытия).

А если искать среди незакрытых ордеров, то и просто по порядку - с порядковым номером 0 - самый старый ордер, а с номером OrdersTotal()-1 будет самый свежий ордер  (опять же по времени открытия), без учёта типа.

В истории закрытых ордеров, там да, ещё зависит от сортировки на вкладке истории в окне терминала.

 

Пришлось искать. В справке по MQL5 не нашел, нашел в справке по OrderSelect для MQL4:

"При последовательном выборе ордеров с помощью параметра SELECT_BY_POS информация отдаётся в том порядке, в котором она поступила с торгового сервера. Никакая сортировка полученного списка ордеров не гарантируется."

Вообще-то я систематически контролирую, есть ли в используемых мной списках упорядоченность по номеру тикета. Случаев ее отсутствия не было. Но и со справкой спорить нельзя, нет аргументов. Никакая так никакая...

 
Vladimir:

Пришлось искать. В справке по MQL5 не нашел, нашел в справке по OrderSelect для MQL4:

"При последовательном выборе ордеров с помощью параметра SELECT_BY_POS информация отдаётся в том порядке, в котором она поступила с торгового сервера. Никакая сортировка полученного списка ордеров не гарантируется."

Вообще-то я систематически контролирую, есть ли в используемых мной списках упорядоченность по номеру тикета. Случаев ее отсутствия не было. Но и со справкой спорить нельзя, нет аргументов. Никакая так никакая...

Что значит "никакая"? По тикету сортируйте - всегда будет порядок и с документацией никаких противоречий, там про сортировку по порядковому номеру написано, а не по тикету, это разные вещи.
 
ребят подскажите как правильно тестировать с новыми билдами они всегда меняются и то что работало теперь не работает тестирую так скачиваю котировки с тикстори лайт импортирую в терминал на билдах1010 все нормально а новом1045 эта вся тема не прокатывает в чем проблема может кто знает?или может есть какой то универсальный вариант тестирования не подверженный изменнения в билдах терема кто знает подскажите?
 
Vitalie Postolache:
Что значит "никакая"? По тикету сортируйте - всегда будет порядок и с документацией никаких противоречий, там про сортировку по порядковому номеру написано, а не по тикету, это разные вещи.
А где-то в документации написано про упорядоченность по номеру тикета? Подскажите, не знаю.
 
Vitaly Muzichenko:

Запустите этот код, и почитайте журнал

bool flag=true;

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 часа, если свободная маржа на счете привесила определенное значение.

В тему сообщения нужно написать название брокера и торгуемую пара, а в тело сообщения "Опасность! Просадка привысила допустимое значение. Примите необходимые меры"

Компилятор ругается, с английском не дружу и не могу понять в чем ошибка!

input  double MessageMail     = 50.0;
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: Может в целом есть проще решение для такой задачи, но я пока ее вижу только так) 

 
Подскажите, чайнику. Как открыть реальный счёт ?
 
Anton Sokolov:

Еще столкнулся с одной проблемкой! Не судите строго, язык изучаю недели 2-3, может просто туплю!

Задача на советнике, уведомить трейдера через почту каждые 4 часа, если свободная маржа на счете привесила определенное значение.

В тему сообщения нужно написать название брокера и торгуемую пара, а в тело сообщения "Опасность! Просадка привысила допустимое значение. Примите необходимые меры"

Компилятор ругается, с английском не дружу и не могу понять в чем ошибка!

input  double MessageMail     = 50.0;
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ı 


 

Причина обращения: