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

 

Всем привет, есть ли готовая команда вывода истории сделок на экран?

аналогично тому что тащим сделку из истории на график



как бы можно по истории сделок пройтись и поприсваивать объектов, но думаю есть уже готовый способ

 
Mickey Moose:

Всем привет, есть ли готовая команда вывода истории сделок на экран?

аналогично тому что тащим сделку из истории на график

То же самое, только с зажатой управляющей клавишей. То-ли Ctrl, то-ли Shift - не помню - с мобильного пишу.
 
Artyom Trishkin:
То же самое, только с зажатой управляющей клавишей. То-ли Ctrl, то-ли Shift - не помню - с мобильного пишу.



хочу этот кусок встроить в своего неторгующего робота. чтоб поставить на график и смотреть что и как

чтоб поставить его на график и смотреть сколько лосей выращено  к примеру за год на данном инструменте
 
Ihor Herasko:

Через MQL никак не получить такие сведения. Нужно использовать доступ к контролам DateTimePricker, что делается через WinAPI.

Спасибо, сообразил!

Может кому пригодится:

#import "user32.dll"
   int      SendMessageA(int hWnd,int Msg,int wParam,int &lParam[]);
#import

#define DTM_GETSYSTEMTIME 0x1001

int SystemTime[4];

.....

//+------------------------------------------------------------------+
//|          Функция преобразования в формат datetime                |
//+------------------------------------------------------------------+
datetime FormatDateTime(int &DT[]){
   string sMonth,sDay,sHour,sMin,sSec;
      int nYear,nMonth,nDay,nHour,nMin,nSec;   
      
   //---- parse date and time from array
         nYear=DT[0]&0x0000FFFF;
         nMonth=DT[0]>>16;
         nDay=DT[1]>>16;
         nHour=DT[2]&0x0000FFFF;
         nMin=DT[2]>>16;
         nSec=DT[3]&0x0000FFFF;
         
   //---- format date and time items
         sMonth=100+nMonth;
         sMonth=StringSubstr(sMonth,1);
         sDay=100+nDay;
         sDay=StringSubstr(sDay,1);
         sHour=100+nHour;
         sHour=StringSubstr(sHour,1);
         sMin=100+nMin;
         sMin=StringSubstr(sMin,1);
         sSec=100+nSec;
         sSec=StringSubstr(sSec,1);

   //----
         return(StrToTime(StringConcatenate(nYear,".",sMonth,".",sDay," ",sHour,":",sMin,":",sSec)));
  }
  
void OnInit(void){
  if (IsTesting()){
    SendMessageA(0x0000000000010288,DTM_GETSYSTEMTIME,0, SystemTime);
    Print("date From: ",TimeToString(FormatDateTime(SystemTime)));
    
    SendMessageA(0x000000000001028E,DTM_GETSYSTEMTIME,0, SystemTime);
    Print("date To: ",TimeToString(FormatDateTime(SystemTime)));
  }
  .....
}

void OnTick(void){
  .....
}
//+------------------------------------------------------------------+
 
mrumskiy:

Спасибо, сообразил!

Может кому пригодится:

Тогда встречный вопрос: Зачем нужно получать дату интервала тестирования, где это может пригодится? 

 
Artyom Trishkin:

Если i кратно двум.

Это остаток от деления i на 2

Спасибо. Как, в индикаторе, исключить из расчётов свечки с 19 до 11 часов?

 
PolarSeaman:

Спасибо. Как, в индикаторе, исключить из расчётов свечки с 19 до 11 часов?

Смотреть время и пропускать если не в заданных пределах - просто же.

Логика-то простая: вы знаете, что с 14:00 до 15:00 магазин закрыт на обед. Глядите на часы, и не идёте в магазин если время обеденное. А почему тогда тут встаёте в ступор? В чём разница?

 
Здравствуйте, хочу создать условие, при котором
В период времени 0-8    step будет равен 5 пунктов, в остальное время 10. Но если есть ордера, открытые с прошлого дня, то в период времени 0-8 step тоже равен 10 пунктов. 


 
Artyom Trishkin:

Смотреть время и пропускать если не в заданных пределах - просто же.

Логика-то простая: вы знаете, что с 14:00 до 15:00 магазин закрыт на обед. Глядите на часы, и не идёте в магазин если время обеденное. А почему тогда тут встаёте в ступор? В чём разница?

В том что если задать интервал времени как в советнике

if(Hour()>=17&&Hour()<=11)return(0);

, то индикатор просто не будет работать в это время, а мне нужно в истории исключить, свечки находящиеся в интервале, из расчётов.

 
Tigerfreerun:
Здравствуйте, хочу создать условие, при котором
В период времени 0-8    step будет равен 5 пунктов, в остальное время 10. Но если есть ордера, открытые с прошлого дня, то в период времени 0-8 step тоже равен 10 пунктов. 


Возможно так:

  if(Hour()>=0&&Hour()<=8&&OrdersTotal()==0)step = 5; else step =10;
Причина обращения: