Np. jesli nasz wskaznik wykorzystuje MA 100 a na ekranie miesci sie nam kolejne 100 swiec, to wystarczy moze poprzez petle typu:
Kod: Zaznacz cały
for(int i=0; i<201;i++)
fakeVal=Open[i];
Kod: Zaznacz cały
for(int i=0; i<201;i++)
fakeVal=Open[i];
Kod: Zaznacz cały
int tick = 0;
void init()
{
tick = 0;
}
void start()
{
if (tick <= 10) { tick++;Refreshrates();retun;}
//dalsza czesc kodu
}
Kod: Zaznacz cały
#include <WinUser32.mqh>int tick = 0;
void init()
{
tick = 0;
}
void start()
{
if (tick <= 10) { tick++;Refreshrates();WindowRedraw_();retun;}
//dalsza czesc kodu
}
void WindowRedraw_()
{
int hwnd = WindowHandle(Symbol(), Period());
if(hwnd != 0) PostMessageA(hwnd, WM_COMMAND, 0x822c, 0) ;
}
Kod: Zaznacz cały
//-------------------------------------------------------------------+
#include <WinUser32.mqh>
//-------------------------------------------------------------------+
void WindowRedraw_()
{
int hwnd = WindowHandle(Symbol(), Period());
if(hwnd != 0) PostMessageA(hwnd, WM_COMMAND, 0x822c, 0) ;
}
//-------------------------------------------------------------------+
//-------------------------------------------------------------------+
bool IsNewBar()
{
static datetime prevTime = -1;
static int tick = 0 ;
if (tick <= 2)
{
tick++;RefreshRates();
WindowRedraw_();
return(true);
}
if(Time[0]!=prevTime)
{
prevTime=Time[0];
return(true);
}
return(false);
}
//-------------------------------------------------------------------+
tzn. miałem na myśli pytanie, gdzie to wstawić, gdybym chciał to rozwiązanie zastosować do istniejącego EA, gdzie sekcje init, start istnieją.mike_05 pisze:W której sekcji to by należało wstawić?
Nie ważne .Chodziło mi jedynie o moment uruchamiania platformy .Pierz Andrzej pisze:ja bym sie tu nie zgodzildulf pisze:bo nie trzeba po każdym init wykonywane przy zmianie TF tikować .
a co gdy przelaczysz na nowy TF ktory tez nie ma zaciagnietych danych ??
Zbierz czs ze wszytkich wykresow. Dalej w init day while (z jakis sleepem) poki czas nie bedze wszedzie rowny najwiekszemu.dulf pisze:Fajny ten ticker ale nie poradzi.
Sprawa wygląda chyba tak - po uruchomieniu MT4 zaczyna ładować wskaźniki zanim uzupełni dane .
Funkcja IsNewBar wykona się i w kolejnych wywołaniach start zwróci false .
Pierwsze wywołanie jednak jest w czasie gdy brakuje pełnych danych dla wykresu ,więc wskaźnik wymaluje to co jest z historii .
Nie jest to problem np. na M5 bo wskaźnik odświeży się na kolejnej świecy ,ale już na większych TF trzeba "przeładować" wykres .
Nie pasuje mi odświeżanie wszystkich wykresów co 5 min bo wskaźniki zawierają dużo obliczeń i strasznie muli gdy wszystkie się dorwą do odświeżania.
Tak że nic nie wymyśliłem konkretnego .