Цикл(Для гуру)

 

Подскажите пожалуйста, как сделать цикл, что бы каждое текущее значение индикатора было больше за предыдущее

int UPTREND()
{
   int i=0;
   while(i<=TrendBars)
   {
      trendUP=PriceLow>=PriceLow[i];      
      i++;
   }
   return(i);
}

При таком цикле ошибка: '[' - array required

 
_MorPHeuS_:

Подскажите пожалуйста, как сделать цикл, что бы каждое текущее значение индикатора было больше за предыдущее

При таком цикле ошибка: '[' - array required


Для корректного ответа не хватает информации
 
Кстати, А кто такие "Гуру"?
 
Vinin:

Для корректного ответа не хватает информации


какой информации не хватает?
 
_MorPHeuS_:


какой информации не хватает?

Что такое PriceLow?
 
Vinin:
Кстати, А кто такие "Гуру"?

Все хотел познакмиться
 
Vinin:

Все хотел познакмиться

Ня

 

 
Vinin:

Что такое PriceLow?


PriceLow это нижняя граница стороннего индикатора

Фишка какая, советник покупает у нижней границы индикатора, а продает у верхней, а этот цикл что надо добавить чтобы определит направление тренда по наклону этой границы


double UPTREND()
{
   for(int i = 0; i<=TrendBars; i++)
   {
      double PriceLowT = iCustom(Symbol(), 0, "TMA", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPeriod, Interpolate, 2, i);
      double PriceLowPred = iCustom(Symbol(), 0, "TMA", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPeriod, Interpolate, 2, i++);
      if(PriceLowT>=PriceLowPred) trendUP = 1;
   }
   return(trendUP);
}
Вот так компилирует без ошибок, но проверяет только два последних значения, текущий бар и предыдущий, а надо что бы проверяло значение i <= TrendBars
 
_MorPHeuS_:


PriceLow это нижняя граница стороннего индикатора

Фишка какая, советник покупает у нижней границы индикатора, а продает у верхней, а этот цикл что надо добавить чтобы определит направление тренда по наклону этой границы

Вот так компилирует без ошибок, но проверяет только два последних значения, текущий бар и предыдущий, а надо что бы проверяло значение i <= TrendBars

Если я правильно понял, нужно найти "ямку" на участке от текущего бара до TrendBars:

bool UPTREND()
{
    double lda_Price[3];
    for (int i = 1; i <= TrendBars; i++)
    {
        for (int k = 0; k < 3; k++) lda_Price[k] = iCustom (Symbol(), 0, "TMA", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPeriod, Interpolate, 2, i + (k - 1));
        if (lda_Price[0] > lda_Price[1] && lda_Price[1] < lda_Price[2]) return (true);
    }
    return (false);
}

как-то так.

 
_MorPHeuS_:


PriceLow это нижняя граница стороннего индикатора

Фишка какая, советник покупает у нижней границы индикатора, а продает у верхней, а этот цикл что надо добавить чтобы определит направление тренда по наклону этой границы


Вот так компилирует без ошибок, но проверяет только два последних значения, текущий бар и предыдущий, а надо что бы проверяло значение i <= TrendBars


функция 

bool UPTREND()

 не понятна, пока не указать что в глобальных приравнивается trendUP=1;

 TrendBars не более двух последних значений(чему оно может ровнятся), через принты ищите ошибку. что и почему вывести и слип 2 сек. 

//+------------------------------------------------------------------+
bool UPTREND()
  {
   bool trendUP=false;
   for(int i=0; i<=/*TrendBars*/50; i++)
     {
      double PriceLowT=iCustom(Symbol(),0,"TMA"/*, TimeFrame, HalfLength, Price, ATRMultiplier, ATRPeriod, Interpolate*/,2,i);
      double PriceLowPred=iCustom(Symbol(),0,"TMA"/*, TimeFrame, HalfLength, Price, ATRMultiplier, ATRPeriod, Interpolate*/,2,i++);
      if(PriceLowT>=PriceLowPred) {trendUP=true; break;}// прервать цикл, нет trendUP=false...если да, тренд ап, нет, скажет нет.
     }
   return(trendUP);
  }
//+------------------------------------------------------------------
 

По сути надо так:

PriceLow1=iCustom(Symbol(),0,"TMA", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPeriod, Interpolate, 2, 1);
PriceLow2=iCustom(Symbol(),0,"TMA", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPeriod, Interpolate, 2, 2);
PriceLow3=iCustom(Symbol(),0,"TMA", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPeriod, Interpolate, 2, 3);
PriceLow4=iCustom(Symbol(),0,"TMA", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPeriod, Interpolate, 2, 4);
PriceLow5=iCustom(Symbol(),0,"TMA", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPeriod, Interpolate, 2, 5);
PriceLow6=iCustom(Symbol(),0,"TMA", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPeriod, Interpolate, 2, 6);
PriceLow7=iCustom(Symbol(),0,"TMA", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPeriod, Interpolate, 2, 7);
PriceLow8=iCustom(Symbol(),0,"TMA", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPeriod, Interpolate, 2, 8);
PriceLow9=iCustom(Symbol(),0,"TMA", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPeriod, Interpolate, 2, 9);
PriceLow10=iCustom(Symbol(),0,"TMA", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPeriod, Interpolate, 2, 10);

(PriceLow1>PriceLow2>PriceLow3>PriceLow4>PriceLow5>PriceLow6>PriceLow7>PriceLow8>PriceLow9>PriceLow10) == true, trandUP == 1 // если правда получаем значение 1, если лож 0
передаем это в условие открытия сделки, если 1 то покупаем




if (Ask <= PriceLow && CountBuy() == 0 && UPTREND() >= 1)  //  Условие открытия сделки, значение UPTREND мы получаем с цикла

Это же можно через цикл сделать(что бы PriceLow принемало значение  i, где i<=extern int TrendBars;), я может не совсем правильно начал возиться с кодом, и сделал примеры, по этому хотелось бы попросить опытных программистов все таки подсказать правильный вариант написания