Z góry przepraszam, że dokładnie nie przestudiowałem jeszcze funkcji czasu i znowu przychodzę zapewne bez jakiejś podstawowej wiedzy.
Pardon, dużo wiedzy i nowości ostatnio, więc niestety odbywa się to kosztem dokładności mojej nauki.
Ale będę utrwalał wszystko ponownie, taką formę nauki wybrałem - na praktyce.
Kwestia jest taka, że dzisiaj piszę bardzo proste EA, którego zadaniem będzie wysyłanie alertów, jeśli pojawi się sygnał kupna/sprzedaży.
Problem jest taki, że sygnał trwa zazwyczaj przez niecałą minutę, a jako że alerty będą wysyłane mailowo, chodzi mi o to aby poprzestało na wysłaniu jednego maila a nie np 50!
Pomyślałem o ujęciu tego w pętlę w OnInit, która sprawdzi prawdziwość warunków kilkadziesiąt sekund wstecz:
Kod: Zaznacz cały
int OnInit()
{
for (datetime i=TimeCurrent(); i<=TimeCurrent()-75; i--)
{
Print("Badany czas to ", i);
bool S = false; bool L = false;
}
//---
//---
return(INIT_SUCCEEDED);
}
Co tu jest nie tak?
Pewnie trzeba jakoś dodatkowo skonwertować ten czas?
Czy nie mozna używać danych datetime jako licznika pętli?
No, ale skoro wszystko się kompiluje i nie wyświetla błędów?
Bo jednostki czasu chyba użyłem dobrej?
Pewnie coś po chamsku uprościłem jako początkujący "programista"
?
A może to coś nie tak w OnInit ?
Widzę że OnInit ma postać int
A czy nie może to być inny typ danych?
A może po prostu ubrać to w void OnInit(){}?
Na razie nie badałem tego pod kątem funkcji, bo odkryłem że problem tkwi gdzieś indziej:
Wstawiałem tę pętlę w OnTick() również, i tam także nie wyświetla mi wartości czasu z pętli.
Tak więc stawiam na jakąś konwersję
A może ktoś ma namiary na gotową funkcję, która sprawdzi prawdziwość bool wstecz ?
Edit:
StringToTime?
O to chodzi?