Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 103

DenZell
17
DenZell  
trader781:
кидай весь файлом
Alexey Viktorov:
1. При открытии ордера записать тикет в переменную глобального уровня или static, и дальше мониторить этот ордер до посинения, ой, пока не закроется сравнением OrderCloseTime() > 0. Если время закрытия больше нуля, значит ордер закрыт.

2. Замена оператору GOTO есть гораздо эффективней. Читай в документации о функциях.

Можно как то на каком то примере показать?  Как мне дождаться закрытие предыдущей сделки. 

 

double Lot = 0.1;      

double loss = 100;  



int start()

  {

  int order;

    if(OrdersTotal()==0)                            

    {                  

      order = OrderSend(Symbol(),OP_BUY,Lot,Ask,1*Point,Ask-loss*Point,Ask+loss*Point);   // Вверх

      order = OrderSend(Symbol(),OP_SELL,Lot,Bid,1*Point,Bid+loss*Point,Bid-loss*Point);    // Вниз

    }



   return(0);

  }

//+------------------------------------------------------------------+

Alexey Viktorov
30023
Alexey Viktorov  
DenZell:

Можно как то на каком то примере показать?  Как мне дождаться закрытие предыдущей сделки. 

 

double Lot = 0.1;      

double loss = 100;  



int start()

  {

  int order;

    if(OrdersTotal()==0)                            

    {                  

      order = OrderSend(Symbol(),OP_BUY,Lot,Ask,1*Point,Ask-loss*Point,Ask+loss*Point);   // Вверх

      order = OrderSend(Symbol(),OP_SELL,Lot,Bid,1*Point,Bid+loss*Point,Bid-loss*Point);    // Вниз

    }



   return(0);

  }

//+------------------------------------------------------------------+

Вариантов несколько.

Самый простой это последовательность действий. Сначала пытаемся что-то сделать с уже открытым ордером, а потом при условии что открытого ордера нет попытаемся его установить.

Разделить сопровождение позиции и открытие нового ордера на две отдельные пользовательские функции. Дальше в функции OnTick() проверять наличие открытых ордеров и в соответствии с полученным результатом обращаться к одной или другой функции.

На словах это выглядит так:

void OnTick()
{
if(OrdersTotal() > 0)
  открытие();
else
  сопровождение();
}

bool открытие()
{
// здесь код открытия
}

bool сопровождение()
{
// здесь код сопровождения
}
Ну и ещё сложней это проверка конкретного ордера на OrderCloseTime() > 0

Это в том случае если на счёте предусмотрено, а чаще всего это так, работа других советников или открытие ордеров вручную.
Pavel Verveyko
5022
Pavel Verveyko  
можно ли программно выбрать дату начала истории счёта в терминале?
Artyom Trishkin
Модератор
60775
Artyom Trishkin  
Money_Maker:
можно ли программно выбрать дату начала истории счёта в терминале?
Можно. Это будет самый первый ордер в истории с типом 6 - балансная операция. Время открытия этого ордера и будет началом истории счёта.
Pavel Verveyko
5022
Pavel Verveyko  
Artyom Trishkin:
Можно. Это будет самый первый ордер в истории с типом 6 - балансная операция.
мне не нужен первый ордер в истории .. история и так на максимум открывается мне нужна история с определённой даты .. которую я выставлю программно (видимо вопрос за счёт деталей оказался обтекаемым)
Artyom Trishkin
Модератор
60775
Artyom Trishkin  
Money_Maker:
мне не нужен первый ордер в истории .. история и так на максимум открывается мне нужна история с определённой даты .. которую я выставлю программно (видимо вопрос за счёт деталей оказался обтекаемым)
Ответ тоже - можно.

Но всё равно вопрос так и остаётся "обтекаемым", поэтому скажу, что нужно пропускать ордера, время открытия которых ранее этой самой "определённой даты"
Pavel Verveyko
5022
Pavel Verveyko  
Artyom Trishkin:
Ответ тоже - можно.

Но всё равно вопрос так и остаётся "обтекаемым", поэтому скажу, что нужно пропускать ордера, время открытия которых ранее этой самой "определённой даты"
поставить фильтр по дате мне конечно в голову правда не пришло .. но за 7 лет очень много ордеров получается .
на скришоте вопрос подчёркнут красным туда нужно вставить определённую дату.. так вопрос не обтекаемый? 
Artyom Trishkin
Модератор
60775
Artyom Trishkin  
Money_Maker:
поставить фильтр по дате мне конечно в голову правда не пришло .. но за 7 лет очень много ордеров получается .
на скришоте вопрос подчёркнут красным туда нужно вставить определённую дату.. так вопрос не обтекаемый? 
Не понятен ваш вопрос :(

Что именно вы хотите сделать программно?
Pavel Verveyko
5022
Pavel Verveyko  
Artyom Trishkin:
Не понятен ваш вопрос :(

Что именно вы хотите сделать программно?
там где подчёркнуто красным вписать дату и по сути нажать ок.. она определяет глубину истории в отчёте
Artyom Trishkin
Модератор
60775
Artyom Trishkin  
Money_Maker:
там где подчёркнуто красным вписать дату и по сути нажать ок.. она определяет глубину истории в отчёте
Программно на чистом mql нельзя. Через WinAPI нужно окно это искать и дату я думаю.