Logo

Вход

Войти с помощью соц. сетей
X
 
  • Фильтр
  • Время
  • Показать
Очистить всё
новые сообщения
  • #1 Свернуть

    Как осуществить трехуровневое вычисление в индикаторе

    Сам я пока несправлюсь, плохо знаком с языком, подскажите в что не так и что поправить?

    Индикатор будет работать с ценовыми отметками и я хочу протестировать различные уровнения для поиска наилучшего результата, и по результатам допилить индикатор до ума! Индикатор будет просчитывать бары в зависимости от условий и работать с предыдущими значениями..

    В зависимости от показателей бара подбирает нужное уравнение, подсчитывает его, усредняет с предыдущим значением и сохраняет новое значение для дальнейшей работы и возможности обратиться к функции за значением. Я плоховато пока понимаю, не ругайте если что...
    Вот как я это понял:
    MQL код:

    int OnCalculate(const int rates_total,
    const int prev_calculated,
    const datetime &time[],
    const double &open[],
    const double &high[],
    const double &low[],
    const double &close[],
    const long &tick_volume[],
    const long &volume[],
    const int &spread[])
    {
    //---
    int i, pull = prev_calculated == 0 ? rates_total-1 : prev_calculated;
    double A;
    for(i = 0; i < pull; i++) // первый цикл
    {
    if(open[i] < close[i])
    {
    A = (high[i]+low[i]+close[i])/3.0; // Пример уравнения
    }
    else if(open[i] > close[i])
    {
    A = (high[i]+low[i]+close[i])/3.0; // Пример уравнения
    }
    else
    {
    A = (high[i]+low[i]+close[i])/3.0; // Пример уравнения
    }
    double bulls;
    buffer = (Bulls + A)/2.0; // Усреднение (buffer - это буфер первой линии индикатора)
    }
    //--- return value of prev_calculated for next call
    return(Bulls);
    }


    Конечно я тут начибучил, подскажите как правильно?
X