А зачем Вы получаете новый бар на через SeriesInfoInteger? Насколько я помню - это очень тормознутая асинхронная функция (может что-то изменилось - не проверял). Как правило все нестыковки и тормоза - это следствие использования асинхронных функций. Избегайте их при возможности. Попробуйте как-то по другому. Например через iTime или iBars. И не забывайте, что OnChartEvent сама является асинхронной и не может вызываться чаще, чем 64 раза в секунду, т.е. максимум один раз за 15.625 миллисекунд.
новый бар через SERIES_LASTBAR_DATE
И не забывайте, что OnChartEvent сама является асинхронной и не может вызываться чаще, чем 64 раза в секунду, т.е. максимум один раз за 15.625 миллисекунд.
как говорят в Китае, хоть фиолетовая, главное приносила прибыль
Какую? Уже давал одну, повторю - если не умете писать индикаторы, не надо утверждать, что они неправильно работают или что вообще подход с индикаторами является плохим, неправильным, нерациональным.
SERIES_LASTBAR_DATE это только Идентификатор, который используется в SeriesInfoInteger.
if(id>=CHARTEVENT_CUSTOM) // Цикл событий по символам
{
static CNewBar M1;
constint number=id-CHARTEVENT_CUSTOM; //приведем в нормальный вид номер символа 0-7//--- проверим новый ли барif(M1.NewBar(number,PERIOD_M1))
//+------------------------------------------------------------------+//| Class Новый бар |//+------------------------------------------------------------------+class CNewBar
{
protected:
datetime oldTime[TRADE_SYMBOLS];
public:
bool NewBar(int number,ENUM_TIMEFRAMES timeframe)
{
//--- создаем переменную newtime(тип время), присваиваем в нее из функции SeriesInfoInteger дату открытия последнего бараdatetime newTime=datetime(SeriesInfoInteger(Symbols[number],timeframe,SERIES_LASTBAR_DATE));
if(newTime!=oldTime[number] && newTime) // проверка на появление нового бара (новое время не равно старому и в newtime есть значение(true))
{
oldTime[number]=newTime; //обновим время прошлого бараreturn(true); // вернем функции NewBar true, появился новый бар//if(MQLInfoInteger(MQL_DEBUG))// Print("Новый бар",newTime,"старый бар",oldTime); // в режиме отладки, будет выводится сообщение о значениях времен баров
}
//--- иначе,return(false); // нового бара еще нет
};
//---- конструктор класса// CNewBar() {oldTime=NULL;}; // вызывается при создании Объекта, проинициализация тут не нужна, что-бы сразу прошел новый бар
};
if(id>=CHARTEVENT_CUSTOM) // Цикл событий по символам
А это что? Какое это может имеет отношение к обычному индикатору? Лепите непонятно что, вместо того, чтобы читать статьи и учиться делать правильно. Потому такая наивность - индикаторы "работают неправильно". Такие креативные все до умопомрачения.
А зачем Вы получаете новый бар на через SeriesInfoInteger?
Насколько я помню - это очень тормознутая асинхронная функция (может что-то изменилось - не проверял).
Как правило все нестыковки и тормоза - это следствие использования асинхронных функций. Избегайте их при возможности.
Попробуйте как-то по другому. Например через iTime или iBars.
И не забывайте, что OnChartEvent сама является асинхронной и не может вызываться чаще, чем 64 раза в секунду, т.е. максимум один раз за 15.625 миллисекунд.
новый бар через SERIES_LASTBAR_DATE
И не забывайте, что OnChartEvent сама является асинхронной и не может вызываться чаще, чем 64 раза в секунду, т.е. максимум один раз за 15.625 миллисекунд.
как говорят в Китае, хоть фиолетовая, главное приносила прибыль
какая наивность...
Дмитрий, можно рекомендацию получить?
новый бар через SERIES_LASTBAR_DATE
SERIES_LASTBAR_DATE это только Идентификатор, который используется в SeriesInfoInteger.
Дмитрий, можно рекомендацию получить?
Какую? Уже давал одну, повторю - если не умете писать индикаторы, не надо утверждать, что они неправильно работают или что вообще подход с индикаторами является плохим, неправильным, нерациональным.
SERIES_LASTBAR_DATE это только Идентификатор, который используется в SeriesInfoInteger.
Вот это вот NewBar - значит больше одной попытки не выполняется.
не понятно что имеется ввиду
как видно, номер символа передается верно, в класс нового бара и правильно обрабатывается тамА это что? Какое это может имеет отношение к обычному индикатору? Лепите непонятно что, вместо того, чтобы читать статьи и учиться делать правильно. Потому такая наивность - индикаторы "работают неправильно". Такие креативные все до умопомрачения.
не понятно что имеется ввиду
И не поймете. NewBar - это диагноз.