Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 533

 

Ciao a tutti, c'è un comando pronto per visualizzare la cronologia delle transazioni sullo schermo?

simile a trascinare un accordo dalla storia al grafico



sarebbe possibile passare attraverso la storia degli scambi e assegnare gli oggetti, ma penso che ci sia un modo pronto

 
Mickey Moose:

Ciao a tutti, c'è un comando pronto per visualizzare la cronologia delle transazioni sullo schermo?

simile a trascinare un trade dalla storia al grafico

Lo stesso, ma con il tasto di controllo premuto. Ctrl o Shift - non ricordo - sto scrivendo da un telefono cellulare.
 
Artyom Trishkin:
Lo stesso, ma con il tasto di controllo premuto. Non riesco a ricordare se è Ctrl o Shift - sto scrivendo da un cellulare.



Voglio mettere questo pezzo nel mio robot non di trading per metterlo su un grafico e vedere cosa sta succedendo.

Per metterlo sul grafico e vedere quanti dadi sono stati prodotti all'anno per questo simbolo
 
Ihor Herasko:

Non c'è modo di ottenere queste informazioni attraverso MQL. È necessario accedere ai controlli DateTimePricker, il che viene fatto tramite WinAPI.

Grazie, ho capito!

Può essere utile per qualcuno:

#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:

Grazie, ho capito!

Potrebbe tornare utile a qualcuno:

Poi una contro-domanda: perché è necessario ottenere la data dell'intervallo di prova, dove può tornare utile?

 
Artyom Trishkin:

Se i è un multiplo di due.

Questo è il resto di i diviso per 2

Grazie. Come, nell'indicatore, escludere dai calcoli le candele dalle 19 alle 11?

 
PolarSeaman:

Grazie. Come può l'indicatore escludere dai suoi calcoli le candele tra le 19 e le 11?

Guardare il tempo e saltare se non rientra nei limiti stabiliti è facile.

La logica è semplice: sai che il negozio è chiuso per pranzo tra le 14 e le 15. Guardi l'orologio e non vai al negozio se è ora di pranzo. Allora perché ti confondi qui? Qual è la differenza?

 
Ciao, vorrei creare una condizione per cui
Durante il periodo di tempo 0-8 il passo sarà uguale a 5 pips, durante il resto della giornata 10 pips. Ma se ho ordini che sono stati aperti dal giorno precedente, allora nel periodo di tempo 0-8 il passo sarà anche 10 pips.


 
Artyom Trishkin:

Guardare il tempo e saltare se non è nei limiti stabiliti è facile.

La logica è semplice: sapete che tra le 14:00 e le 15:00 il negozio è chiuso per pranzo. Guardi l'orologio e non vai al negozio se è ora di pranzo. Allora perché ti confondi qui? Qual è la differenza?

Il punto è che se si imposta un intervallo di tempo come nell'EA

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

Ho bisogno di escludere dalla storia le candele che si trovano nell'intervallo, dai calcoli.

 
Tigerfreerun:
Salve, vorrei creare una condizione per cui
Durante il periodo di tempo 0-8 passo sarà pari a 5 pips, durante il resto della giornata 10 pips. Ma se ci sono ordini aperti dal giorno precedente, allora nel periodo di tempo 0-8 passo sarà anche uguale a 10 pips.


Questo può essere il caso:

  if(Hour()>=0&&Hour()<=8&&OrdersTotal()==0)step = 5; else step =10;
Motivazione: