Подскажите пожалуйста, как сделать цикл, что бы каждое текущее значение индикатора было больше за предыдущее
При таком цикле ошибка: '[' - 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;), я может не совсем правильно начал возиться с кодом, и сделал примеры, по этому хотелось бы попросить опытных программистов все таки подсказать правильный вариант написания
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Подскажите пожалуйста, как сделать цикл, что бы каждое текущее значение индикатора было больше за предыдущее
При таком цикле ошибка: '[' - array required