Seleziona un ordine per lavorare ulteriormente con esso. Restituisce true quando la funzione viene completata con successo. Restituisce false se la funzione fallisce. È necessario chiamare la funzioneGetLastError() per ottenere informazioni sull'errore.
Il metodoOrderSelect( ulong ticket// Ticket l'ordine );
Parametri
biglietto
[Il biglietto dell'ordine.
Come viene assegnato questo biglietto? Dove posso trovarlo? O come posso impostarlo?
Nell'aiuto si dice
OrderGetTicket
Restituisce il biglietto dell'ordine corrispondente e seleziona automaticamente l'ordine per ulteriori manipolazioni tramite funzioni. Dobbiamo guardare tutti gli ordini per indice e ottenere un biglietto, se necessario. Anche se questa funzione selezionerà anche l'ordine stesso. Il biglietto è fissato dal broker e non possiamo cambiarlo.
ulongOrderGetTicket(
int index // номер в списке ордеров
);
Ho scritto una funzione che dovrebbe disegnare ogni giorno sul grafico il "fuso orario non commerciale". Ma qui c'è un problema - quando lo avvio, il modulo OnInit, disegna come dovrebbe essere ma quando lo attivo nel modulo OnTimer per qualche motivo sconosciuto la variabile data mantiene i valori che sono stati assegnati nel modulo OnInit.
Domanda: Perché?
intOnInit()
{
EventSetTimer(1);
MqlDateTime date;
TimeLocal(date);
offtimeCreate(date); // Рисуем на графике заполненный прямоугольник (не торговая зона) с 21:00 до 23:59 в день указанный в переменной datereturn(INIT_SUCCEEDED);
}
...
void onTimer()
{
MqlDateTime date;
TimeLocal(date);
if (date.hour==9 && date.min==0 && date.sec==0) offtimeCreate(date); // Каждое утро, в 9:00, рисуем новую "не торговую зону" для дня указанного в переменной date
}
...
Ho scritto una funzione che dovrebbe disegnare un "fuso orario non commerciale" su un grafico ogni giorno. Ma c'è un problema - quando viene eseguito nel modulo OnInit disegna la data come dovrebbe essere ma quando viene eseguito nel modulo OnTimer per qualche motivo sconosciuto la variabile data mantiene i valori che sono stati assegnati nel modulo OnInit.
Perché A) vedo visivamente, il "fuso orario" non è disegnato oggi dalle 21:00 alle 23:59, ma da ieri 21:00 a oggi 23:59
B) Se apro le proprietà dell'oggetto grafico (rettangolo ombreggiato - "fuso orario"), vedo che la prima variabile non è cambiata, cioè ha lo stesso valore delle 21:00 di ieri
INGFX: Beh sì OnTimer, ha fatto un errore quando riscritto qui ... il codice stesso è corretto
Avresti controllato il tuo codice. Stanco di cucire insieme i tuoi pezzi - quindi ecco, controlla il codice. In OnTimer sostituisci la tua ora locale e confronta le stampe all'inizializzazione e nel timer:
//+------------------------------------------------------------------+//| TestEA.mq5 |//| Copyright 2015, MetaQuotes Software Corp. |//| https://www.mql5.com |//+------------------------------------------------------------------+#property copyright"Copyright 2015, MetaQuotes Software Corp."#property link"https://www.mql5.com"#property version"1.00"//+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+intOnInit()
{
EventSetTimer(1);
MqlDateTime date;
TimeLocal(date);
offtimeCreate(date); // Рисуем на графике заполненный прямоугольник (не торговая зона) с 21:00 до 23:59 в день указанный в переменной datereturn(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+voidOnTimer()
{
MqlDateTime date;
TimeLocal(date);
if(date.hour==22 && date.min==33 && date.sec==00)
offtimeCreate(date); // Каждое утро, в 9:00, рисуем новую "не торговую зону" для дня указанного в переменной date
}
//+------------------------------------------------------------------+/*void offtimeCreate(MqlDateTime &struct_date)
{
string text="";
text=IntegerToString(struct_date.hour)+":"+
IntegerToString(struct_date.min)+":"+
IntegerToString(struct_date.sec);
Comment(text);
//ChartRedraw();
}*///+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+bool offtimeCreate(MqlDateTime &stm)
{
color clr=Black;
datetime tm1,tm2;
tm1 = StringToTime((string)stm.year+"."+(string)stm.mon+"."+(string)stm.day+" 21:00");
tm2 = StringToTime((string)stm.year+"."+(string)stm.mon+"."+(string)stm.day+" 23:59");
Print(tm1+" "+tm2);
//RectangleCreate(0,"offtime",0,tm1,0,tm2,200,clr); // chrart_id,object_name,sub_window,time1,price1,time2,price2,colorreturn(true);
}
//+------------------------------------------------------------------+
C'è un modo per controllare se gli script di apertura funzionano nel fine settimana?
Solo l'indicatore gestisce tutti i tick in OnCalculate(). Senza salti.
No. E sbaglia. Ma meno di altri. Ma salta.
Bene, grazie.
Un'altra domanda:
OrderSelect
Seleziona un ordine per lavorare ulteriormente con esso. Restituisce true quando la funzione viene completata con successo. Restituisce false se la funzione fallisce. È necessario chiamare la funzioneGetLastError() per ottenere informazioni sull'errore.
Il metodoOrderSelect(
ulong ticket// Ticket l'ordine
);
Parametri
biglietto
[Il biglietto dell'ordine.
Come viene assegnato questo biglietto? Dove posso trovarlo? O come posso impostarlo?
OrderGetTicket
Restituisce il biglietto dell'ordine corrispondente e seleziona automaticamente l'ordine per ulteriori manipolazioni tramite funzioni. Dobbiamo guardare tutti gli ordini per indice e ottenere un biglietto, se necessario. Anche se questa funzione selezionerà anche l'ordine stesso. Il biglietto è fissato dal broker e non possiamo cambiarlo.
Ciao a tutti!
Ho scritto una funzione che dovrebbe disegnare ogni giorno sul grafico il "fuso orario non commerciale".
Ma qui c'è un problema - quando lo avvio, il modulo OnInit, disegna come dovrebbe essere ma quando lo attivo nel modulo OnTimer per qualche motivo sconosciuto la variabile data mantiene i valori che sono stati assegnati nel modulo OnInit.
Domanda: Perché?
Ciao a tutti!
Ho scritto una funzione che dovrebbe disegnare un "fuso orario non commerciale" su un grafico ogni giorno.
Ma c'è un problema - quando viene eseguito nel modulo OnInit disegna la data come dovrebbe essere ma quando viene eseguito nel modulo OnTimer per qualche motivo sconosciuto la variabile data mantiene i valori che sono stati assegnati nel modulo OnInit.
Domanda: Perché?
Forum sul trading, sistemi di trading automatico e test di strategia
Bug, bug, domande
Karputov Vladimir, 2016.01.09 20:51
Cosa vi fa pensare che nella variabile timer date venga passato il valore precedentemente definito in OnInit()?
Devi guardare la tua funzione che disegna la zona.
Completato:
Correttamente sarebbe OnTimer, non onTimer.
Forum sul trading, sistemi di trading automatico e test di strategie di trading
Bug, bug, domande
INGFX, 2016.01.09 21:20
Perché A) vedo visivamente, il "fuso orario" non è disegnato oggi dalle 21:00 alle 23:59, ma da ieri 21:00 a oggi 23:59
B) Se apro le proprietà dell'oggetto grafico (rettangolo ombreggiato - "fuso orario"), vedo che la prima variabile non è cambiata, cioè ha lo stesso valore delle 21:00 di ieri
Beh sì OnTimer, ha fatto un errore quando riscritto qui ... il codice stesso è corretto
Avresti controllato il tuo codice. Stanco di cucire insieme i tuoi pezzi - quindi ecco, controlla il codice. In OnTimer sostituisci la tua ora locale e confronta le stampe all'inizializzazione e nel timer:
Avresti controllato il tuo codice.
Vladimir, grazie per la tua pazienza e il tuo aiuto!
Davvero fatto un errore nel codice ...
Starò più attento d'ora in poi.