Цикл(Для гуру)
Подскажите пожалуйста, как сделать цикл, что бы каждое текущее значение индикатора было больше за предыдущее
При таком цикле ошибка: '[' - array required
Для корректного ответа не хватает информации
Для корректного ответа не хватает информации
какой информации не хватает?
какой информации не хватает?
Что такое PriceLow?
Кстати, А кто такие "Гуру"?
Все хотел познакмиться
Все хотел познакмиться
Ня
Что такое 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
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); }
как-то так.
PriceLow это нижняя граница стороннего индикатора
Фишка какая, советник покупает у нижней границы индикатора, а продает у верхней, а этот цикл что надо добавить чтобы определит направление тренда по наклону этой границы
функция
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;), я может не совсем правильно начал возиться с кодом, и сделал примеры, по этому хотелось бы попросить опытных программистов все таки подсказать правильный вариант написания
Подскажите пожалуйста, как сделать цикл, что бы каждое текущее значение индикатора было больше за предыдущее
При таком цикле ошибка: '[' - array required