И не могу сделать так, чтобы индикатор к примеру работал до определённой даты, а дальше просто переставал.
Может быть есть универсальный кусочек кода, в котором этот момент можно прописать?
Ну а что тут думать?
if (TimeCurrent() >= D'<date>') return 0;
Вставить в начало OnCalculate().
Вот так сделайте:
double iNoLagMa(double &_alpha[], double &price[], int forvalue, int length, int i, int r) { int forValue = forvalue-1; if (length<3) return(price[r]); // // // // // if (ArrayRange(values,0)<(forValue+1) || values[forValue][_length] != length) { double Cycle = 4.0; double Coeff = 3.0*Pi; int Phase = length-1; if (ArrayRange(values,0)<forValue+1) ArrayResize(values,forValue+1); values[forValue][_length] = length; values[forValue][_len] = length*4 + Phase; values[forValue][_weight] = 0; ArrayResize(_alpha,values[forValue][_len]); for (int k=0; k<values[forValue][_len]-1; k++) { if (k<=Phase-1) double t = 1.0 * k/(Phase-1); else t = 1.0 + (k-Phase+1)*(2.0*Cycle-1.0)/(Cycle*length-1.0); double beta = MathCos(Pi*t); double g = 1.0/(Coeff*t+1); if (t <= 0.5 ) g = 1; _alpha[k] = g * beta; values[forValue][_weight] += _alpha[k]; } } // // // // // if (values[forValue][_weight]>0) { int len = values[forValue][_len]; double sum = 0; for (k=0; k < len-1; k++) sum += _alpha[k]*price[r-k]; return( sum / values[forValue][_weight]); } else return(0); }
Про альфу спасибо! Пропала ошибка.
Но про время не совсем понял.
OnCalculate такого нет в индикаторе и как правильно дату указать, чтобы в этот день перестал работать?
if (TimeCurrent() >= D'<date>') return 0;
разве назначать переменную DATE не надо?
Вас не затруднит в том индикаторе этот момент прописать?
Про альфу спасибо! Пропала ошибка.
Но про время не совсем понял.
OnCalculate такого нет в индикаторе и как правильно дату указать, чтобы в этот день перестал работать?
В показанном коде функция называется start. Это устаревшее название. Эту функцию нужно заменить на событие OnCalculate
разве назначать переменную DATE не надо?
<date> - это дата, которую хотите использовать. Например:
if (TimeCurrent() >= D'2022.05.01 13:48') return 0;
в вашем примере 1 мая к примеру индикатор не будет работать?
Заметьте, что не просто с 1-го мая, а именно с 13:48 по времени сервера.
а как можно добавить сообщение ещё? помню только что через print делается.
Еще через Alert и Comment можно. Но для вывода сообщения придется запомнить факт его выдачи. Иначе сообщение будет отображаться на каждом тике, спамя таким образом.
У OnCalculate есть свой синтаксис:
int OnCalculate (const int rates_total, // размер входных таймсерий const int prev_calculated, // обработано баров на предыдущем вызове const datetime& time[], // Time const double& open[], // Open const double& high[], // High const double& low[], // Low const double& close[], // Close const long& tick_volume[], // Tick Volume const long& volume[], // Real Volume const int& spread[] // Spread )
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Всем доброго времени суток!
Индикатор стал писать предупреждение о глобальной переменной.
И не могу сделать так, чтобы индикатор к примеру работал до определённой даты, а дальше просто переставал.
Может быть есть универсальный кусочек кода, в котором этот момент можно прописать?